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