1、param 标签的使用:
该标签所设置的参数都是全局参数,保存在参数服务器中,功能节点可以通过参数服务器的相关函数进行读取,可以把该标签的参数理解为功能节点的配置参数,作用于功能,一般不修改其值
<node pkg="功能包名" name="节点名" type="可执行节点名">
<param name="参数名" value="参数值" />
</node >
2、arg 标签:不同于 param 标签,arg 参数作用于 Launch 文件,类似于以往的命令行参数,
也可以理解为 C 语言中的 define 所定义的变量,在执行时会进行替换。因此这类参数并不保存在参数服务器上,而是使用“$(arg 参数名)”的方式来应用变量,使用方法如下
定义个三个参数:
<arg name="speed" default="1" />
<arg name="distance" default="5" />
<arg name="is_forward" default="True" />
定义一个功能节点,并使用 node 标签的 args 属性载入 arg 参数:
<node pkg="功 能 包 名" name="节 点 名" type="可 执 行 节 点 名"
args="$(arg speed) $(arg distance) $(arg is_forward)"/>
需要注意的是,当执行代码 Launch 文件时,功能节点接收到的参数并不是三个参数,而是
六个参数,共三部分组成,第一部分是第一个参数表示当前执行中的可执行节点名的完整路径,第
二部分是 arg 定义的参数列表,第三部分是 node 标签中定义的节点名 name 和该节点运行时的 log 文件存放地址
3、执行Launch文件
roslaunch 功能包名 XXX.launch
等价于如下指令:
rosrun 功能包名 可执行节点名 参数1...参数N 节点名 log文件存放地址