ROS launch 文件:
为了方便、高效地操作多个节点,可以编写 .launch 文件,然后用 roslaunch 命令运行。
launch文件的格式是:
<launch>
...
<\launch>
文件一般包含以下几部分:
1)< node >
要启动的节点,包含以下参数:
pkg="mypackage"
type="nodetype"
name="nodeneme"
args="arg1 arg2 arg3"
respawn="true"
ns="foo"
output="log | screen"
2) < rosparam>
可以使用 .yaml 文件 load/dump/delete 参数。dump/delete 命令运行的 load 之前,load 命令可以覆盖以前设置的参数。 也可以添加到 中使用。 包含以下参数:
command="load | dump | delete"
file="$(find pkg-name)/path/foo.yaml"
param="param-name"
3)< param>
用来定义一个设置在“参数服务器”的参数,可以添加到 中。 包含以下参数:
name="namespace/name"
value="value"
type="str|int|double|boot"
textfile="$(find pkg-name)/path/file"
binflie="$(find pkg-name)/path/file"
command="(find pkg-name)/exe' $(find pkg-name)/arg.txt"
4)< include>
在当前 launch 文件中调用另一个 launch 文件,方便代码的复用
5)< env>
设置节点的环境变量。可以用在 等。参数如下:
name="environment-variable-name"
value="environment-variable-value"
6)< remap>
将一个参数名映射为另一个参数名。参数如下:
from="original-name'
to="nem=neme"
7)< arg>
定义局部参数。
<arg neme="name" />
<arg neme="name" default="1" />
<arg neme="name" value="value" />
8)< machine>、< test>、< group>
属性:if、unless
if=value (optional)
如果value值为真,包含标签及其内容
unless=value (optional)
除非value为假,包含标签及其内容
<group if="$(arg foo)">
<!-- stuff that will only be evaluated if foo is true -->
</group>
<param name="foo" value="bar" unless="$(arg foo)" /> <!-- This param won't be set when "unless" condition is met -->
unless = if not
参考:
1、陈金宝、韩冬、聂宏、陈萌,ROS开源机器人控制基础,上海交通大学出版社,2016.01
2、(西班牙) Aaron Martinez, Enrique Fern A Ndez著 刘品杰译,ROS机器人程序设计,机械工业出版社,2014.09