ROS实操入门系列(九)Param和Launch的实际应用
param介绍
-
什么是Param
Param是Parameters的简写,意为参数。在ROS种,起到的作用是节点间共享数据。实现的原理是将需要共享的数据存放到ROS Master中,这样所有的节点都可以访问。
-
存储规范
Param存储数据遵循的是YAML规范。如果去简单的理解,可以认为是一个key value的组合,key是string类型,value 的类型可以有多种。value的类型有:
(1)integer: 整数类型
(2)boolean: bool类型
(3)double: 小数类型
(4)list: 集合列表类型
(5)map: 字典类型
(6)binary: 二进制数据类型 -
命令行工具, ROS 提供了命令行工具,供我们对Param进行操作
查询操作,通过list命令,可以查询出当前所有可共享的参数。 rosparam list
通过set命令可以修改参数的值 rosparam set /heihei 123
通过get命令可以获取要获取的值 rosparam get /heihei
可以删除对应的key rosparam delete /heihei
dump命令可以把当前的param导出为一个文件(由内存转为磁盘) 如果重启roscore,内存释放,刚才设置的param就会消失 rosparam dump abc.yml
load命令可以把yml文件导入到param中 rosparam load abc.yml
-
paramAPI访问
launch文件
-
什么是roslaunch
roslaunch 是一个工具,可以帮助我们同时启动多个Node节点,可以为我们设置默认的参数,可以帮助我们重启死掉的进程。launch文件是一个xml文件,用来描述节点启动的
roslaunch使用流程:
(1)在package下新建launch文件夹
(2)在launch文件夹下编写,xxx.launch文件
(3)在.launch文件中编写启动配置 -
节点配置
Node标签属性:
pkg:要启动的 package名称。
type:可执行文件名称
name:可执行文件启动后节点名称
respawn:进程死掉后是否重启。取值为true或false。默认值为false
respawn_delay: 重启的时间间隔。单位为秒,默认值为0
output:将日志输入到什么位置。screen|log。默认值log。
ns: 名称空间rosrun turtlesim turtlesim_node (rosrun 包名 可执行文件名称)
-
之前需要开启两个命令窗口,开启两个节点去操作小乌龟,现在只需要运行 roslaunch hello_driver demo1.launch就可以同时开启两个节点,并且不需要再去开启rosmaster了,之前运行一定要先运行roscore
-
可以更改默认的节点名称(默认的是通过init_node() 设置的)
更改之后:
-
namespace
没加之前 ,使用 rosnode list 打印
加了之后 再使用rosnode list打印
注意加了ns后,使用rosnode info /kaitou/change_turtlesim命令,里面的节点信息除了 /rosout 都会加上ns的名称 -
remap子标签
重新映射
1.修改subscriber的topic
from是原来的名称
to修改后的名称 /hello/vel修改之前 ,运行:roslaunch hello_driver demo2.launch
修改之后 再次运行:roslaunch hello_driver demo2.launch
-
内部param子标签
启动小乌龟节点,后可以通过rosparm list 可以查看到一些背景颜色的参数,修改这些参数查看效果
-
~的使用
-
param全局和内部, 路径名称也不同
-
外部arg的使用
-
通过group可以启动两个小乌龟窗口