ROS参数服务器(Parameter Server)
操作演示,对参数服务器的理解:点击打开链接
rosparam使得我们能够存储并操作ROS 参数服务器(Parameter Server)上的数据。参数服务器能够存储整型、浮点、布尔、字符串、字典和列表等数据类型。rosparam使用YAML标记语言的语法。一般而言,YAML的表述很自然:1 是整型, 1.0 是浮点型, one是字符串, true是布尔, [1, 2, 3]是整型列表, {a: b, c: d}是字典.
1. 使用 rosparam
1.1 rosparam list
启动 master,开启终端,输入 roscore,运行 turtle 节点,rosrun turtlesim turtlesim_node,新开启一个终端,输入
rosparam list
看到如下结果:
发现其中有三个参数是修改背景颜色的。
1.2 rosparam 设置 and rosparam 获取
在终端中输入:
rosparam set background_r
然后继续输入:
rosservice call clear
发现背景颜色由
变为
获取背景绿色通道的值
rosparam get background_g
利用
rosparam get /
获取所有参数的值
1.3 rosparam dump
将所有的参数写入 params.yaml 文件
在终端输入:
rosparam dump params.yaml
将yaml文件重载入新的命名空间,比如说copy空间:
rosparam load params.yaml copy rosparam get copy/
运行结果:
2. 使用 rqt_console 和 roslaunch
2.1 使用 rqt_console
先运行:
sudo apt-get install ros-<distro>-rqt ros-<distro>-rqt-common-plugins ros-<distro>-turtlesim
确保已经安装了所需要的包。
rqt_console 属于ROS日志框架(logging framework)的一部分,用来显示节点的输出信息。rqt_logger_level 允许修改节点运行时输出信息的日志等级(logger levels)(包括 DEBUG、WARN、INFO和ERROR)。
继续运行小乌龟节点,输入:
rosrun rqt_console rqt_console
得到:
新开一个终端:输入:
rosrun rqt_console rqt_console
得到:
再次启动:
rosrun turtlesim turtlesim_node
然后 refresh 一下 rqt_logger_level 窗口 并将日志等级修改为 warn
再开启一个终端,运行:
rostopic pub /turtle1/cmd_vel geometry_msgs/Twist -r -- '[2.0, 0.0, 0.0]' '[0.0, 0.0, 0.0]'
可见:
2.2 日志等级说明
Fatal是最高优先级,Debug 是最低优先级。通过设置日志等级可以获取该等级及其以上优先等级的所有日志消息。比如,将日志等级设为Warn时,会得到 Warn、Error和 Fatal 这三个等级的所有日志消息
2.3 使用roslaunch
关闭 turtlesim 节点。
进入
cd ~/catkin_ws/src/beginner_tutorials/ mkdir launch cd launch/ vim turtlemimic.launch
将以下代码写入:
<launch>
<group ns="turtlesim1">
<node pkg="turtlesim" name="sim" type="turtlesim_node"/>
</group>
<group ns="turtlesim2">
<node pkg="turtlesim" name="sim" type="turtlesim_node"/>
</group>
<node pkg="turtlesim" name="mimic" type="mimic">
<remap from="input" to="turtlesim1/turtle1"/>
<remap from="output" to="turtlesim2/turtle1"/>
</node>
</launch>
运行:
roslaunch beginner_tutorials
下面对 launch 文件进行介绍:
<launch>
以launch标签开头以表明这是一个launch文件
<group ns="turtlesim1">
<node pkg="turtlesim" name="sim" type="turtlesim_node"/>
</group> <group ns="turtlesim2">
<node pkg="turtlesim" name="sim" type="turtlesim_node"/>
</group>
创建了两个节点分组并以'命名空间(namespace)'标签来区分,其中一个名为turtulesim1,另一个名为turtlesim2,两个组里面都使用相同的turtlesim节点并命名为'sim'。这样可以同时启动两个turtlesim模拟器而不会产生命名冲突
<node pkg="turtlesim" name="mimic" type="mimic">
<remap from="input" to="turtlesim1/turtle1"/>
<remap from="output" to="turtlesim2/turtle1"/>
</node>
在这里启动模仿节点,并将所有话题的输入和输出分别重命名为turtlesim1和turtlesim2,这样就会使turtlesim2模仿turtlesim1
</launch>
结束标签
在一个新终端中输入:
rostopic pub /turtlesim1/turtle1/cmd_vel geometry_msgs/Twist -r -- '[2.0, 0.0, 0.0]' '[0.0, 0.0, -1.8]'
虽然发布命令只是给turtlesim1发送了速度设定消息,会看到两个turtlesims会同时开始移动
ROS参数服务器(Parameter Server)的更多相关文章
- ROS学习笔记(一) # ROS参数服务器
参考 roscpp/Overview/Parameter Server 0. 概述 ROS参数服务器能够保存 string, int, float, double, bool, list, dicti ...
- ROS学习笔记7-理解服务(services)和参数(parameter)
本文内容来自官方wiki:http://wiki.ros.org/ROS/Tutorials/UnderstandingServicesParams ROS服务(service)服务也是ROS中一种通 ...
- Parameter server(参数服务器)
特殊点在于参数服务器是节点存储参数的地方. 用于配置参数, 全局共享参数. 参数服务器使用互联网传输, 在节点管理器中运行, 实现整个通信过程. 1.命令行维护 load&&dump文 ...
- ROS理解参数服务器param demo
param 是一个字典,存储一些变量 param_demo.cpp #include<ros/ros.h> int main(int argc, char **argv){ ros::in ...
- 参数探测(Parameter Sniffing)影响存储过程执行效率解决方案
如果SQL query中有参数,SQL Server 会创建一个参数嗅探进程以提高执行性能.该计划通常是最好的并被保存以重复利用.只是偶尔,不会选择最优的执行计划而影响执行效率. SQL Server ...
- 【分布式计算】MapReduce的替代者-Parameter Server
原文:http://blog.csdn.net/buptgshengod/article/details/46819051 首先还是要声明一下,这个文章是我在入职阿里云1个月以来,对于分布式计算的一点 ...
- MXNet之ps-lite及parameter server原理
MXNet之ps-lite及parameter server原理 ps-lite框架是DMLC组自行实现的parameter server通信框架,是DMLC其他项目的核心,例如其深度学习框架MXNE ...
- 转:Parameter Server 详解
Parameter Server 详解 本博客仅为作者记录笔记之用,不免有很多细节不对之处. 还望各位看官能够见谅,欢迎批评指正. 更多相关博客请猛戳:http://blog.csdn.net/c ...
- [Distributed ML] Parameter Server & Ring All-Reduce
Resource ParameterServer入门和理解[较为详细,涉及到另一个框架:ps-lite] 一文读懂「Parameter Server」的分布式机器学习训练原理 并行计算与机器学习[很有 ...
随机推荐
- IEEE754浮点数
前言 Go语言之父Rob Pike大神曾吐槽:不能掌握正则表达式或浮点数就不配当码农! You should not be permitted to write production code if ...
- <a>的javascript+jquery编程实例之删除(定位节点与事件绑定)
相关jquery方法 parent(), remove() //上传图片 article_create.js article_edit.js function uploadAttachment() { ...
- 伪静态 net-IIS伪静态配置,使用URLRewriter实现伪静态
https://www.cnblogs.com/zhenzaizai/p/10364343.html 前段时间开发公司官网,用到了URLRewriter实现伪静态,在VS调试模式下没有任何问题,部署到 ...
- Ubuntu install android studio
Ubuntu install android studio 1. 安装 openjdk8,并在配置文件 /etc/profile 中,追加如下内容: sudo aptitude install ope ...
- Java 之 字符输入流[Reader]
一.字符输入流 java.io.Reader 抽象类是表示用于读取字符流的所有类的超类,可以读取字符信息到内存中. 它定义了字符输入流的基本共性功能方法. public void close() :关 ...
- 【亲测有效】vs2017无法断点
解决方案: 一:设置为Debug模式 二:[工具]--[选项]--[调试]--[常规],取消打钩[要求源文件与原始版本完全匹配]
- php框架——laravel
准备工作:见php语法篇末尾环境部署 一.[创建一个表+插入数据]:手动创建或者执行sql语句 DROP TABLE IF EXISTS `tb_business`; CREATE TABLE IF ...
- Vue指令之`v-bind`的三种用法及v-on事件指令
v-bind:是 Vue中,提供的用于绑定属性的指令 1. 直接使用指令`v-bind` 2. 使用简化指令`:` 3. 在绑定的时候,拼接绑定内容:`:title="btnTitle + ...
- PHP变量的范围
1.局部变量 function test(){ $a=1;//局部变量$a,尽在这个函数内部有效 } echo $a; 2.全局变量 $i=10;//全局变量(外部变量) define('MY_NAM ...
- Android笔记(十三) Android中的基本组件——文本
Android中常用的文本组件有 普通文本框(TextView)和编辑框(EditText)两种 EditText是TextView的子类,作用就是在界面上显示文本,区别是EditText允许用户编辑 ...