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会同时开始移动
最新文章
- mybatis调用存储过程 无参、带有输入输出参数,输出游标类型的 存储
- tp框架之函数调用
- 6.1-CALayer 使用
- mysql 根据某字段特定值排序
- 浅谈Excel开发:九 Excel 开发中遇到的常见问题及解决方法
- 关于IE6/7的 inline-block
- andriod
- N的N次方(高校俱乐部)
- iOS工程引入ios-charts-master
- Activity与WindowManagerService服务的连接过程分析
- Android 判断是否联网 是否打开上网
- poj2594
- 分布式统一配置平台-Disconf.Net
- linux下显示不规则图片窗口
- 用wGenerator给编程提速
- 渗透测试_利用Burp爆破用户名与密码
- mouseover与mouseenter,mouseout与mouseleave的区别
- IPython介绍
- Oracle VM VirtualBox CentOS7桥接设置问题解决
- 表单提交的两种请求方式:post与get。post与get两者的对比分析
热门文章
- 安利一下stringstream
- RabbitMQ 应用一
- 我自己用C++写了个GMM(Gaussian mixture model)模型
- iOS - Objective-C 关联(objc_setAssociatedObject、objc_getAssociatedObject、objc_removeAssociatedObjects)
- K2 BPM_当K2遇上医药,用流程打通企业的任督二脉_业务流程管理系统
- iOS-CGContextRef
- ES Client
- Linux下知道一个命令却不知道哪个包提供(解决)
- c# 方法的隐藏
- Java泛型全解析【接口、类、封装类型】