【ROS教程】编写launch文件
@TOC
1.launch文件有哪些标签
node
指定 ROS 节点,是最常见的标签
include
用于将另一个 xml 格式的 launch 文件导入到当前文件
remap
话题重命名
param
在参数服务器上设置参数
rosparam
从 YAML 文件导入参数,或将参数导出到 YAML 文件,也可以用来删除参数
group
可以对节点分组,具有 ns 属性,可以让节点归属某个命名空间
arg
用于动态设置参数,可以增强launch文件的灵活性
env
用于设置环境变量
2.node标签
2.1 必选属性
name="node-name"
节点名称(在 ROS 网络拓扑中节点的名称)
pkg="package-name"
节点所属的包
type="node-type"
节点类型(与之相同名称的可执行文件)
2.2 可选属性
args="arg1 arg2 arg3"
将参数传递给节点
machine="machine-name"
在指定机器上启动节点
respawn="true| false"
如果节点退出,是否自动重启
respawn_delay="n"
如果 respawn 为 true, 那么延迟 N 秒后启动节点
required="true| false"
该节点是否必须,如果为 true,那么如果该节点退出,将杀死整个 roslaunch
ns="namespace"
在指定命名空间中启动节点
clear_params="true| false"
在启动前,删除节点的私有空间的所有参数
output="log| screen"
日志发送目标,可以设置为 log 日志文件,或 screen 屏幕,默认是 log
2.3 可选子级标签
<env>
<remap>
<rosparam>
<param>
3.include标签
3.1 必选属性
file="$(find pkg-name)/path/filename.launch"
要包含的文件路径
3.2 可选属性
ns="namespace"
在指定命名空间导入文件
3.3 可选子级标签
<env>
<arg>
4.remap标签
4.1 必选属性
from="original-name"
原始话题名称
to="new-name"
目标名称
5.param标签
作为
\<node>
子级标签时,相当于私有命名空间。
5.1 必选属性
name="namespace/name"
参数名称,可以包含命名空间
5.2 可选属性
value="value"
定义参数值,如果此处省略,必须指定外部文件作为参数源
type="str|int|double|bool|yaml"
指定参数类型,如果未指定,roslaunch 会尝试确定参数类型
roslaunch 确定参数类型的规则如下:
如果包含 '.' 的数字解析未浮点型,否则为整型
"true" 和 "false" 是 bool 值(不区分大小写)
其他是字符串
6.rosparam标签
6.1 必选属性
file="$(find pkg-name)/path/foo.yaml"
加载或导出到的 yaml 文件
param="param-name"
参数名称
6.2 可选属性
command="load| dump | delete"
加载、导出或删除参数,默认为加载
ns="namespace"
将参数指定到命名空间
7.group标签
7.1 可选属性
ns="namespace"
将该组节点分配到指定的命名空间。命名空间可以是全局的,也可以是相对的,但不鼓励使用全局命名空间。
clear_params="true|false"
在启动前删除组的命名空间中的所有参数。这个功能非常危险,应该谨慎使用。
7.2 可选子级标签
其他所有标签都是其子级标签
8.arg标签
8.1 必选属性
name="arg-name"
欲设置的参数名称
8.2 可选属性
default="default value"
设置参数的默认值。不能与value属性结合。
value="value"
设置参数的值。不能与default属性结合。
doc="description for this arg"
加载、导出或删除参数,默认为加载
8.3 示例
9.env标签
9.1 必选属性
name="environment-variable-name"
所设置的环境变量的名字
value="environment-variable-value"
参数说明
10.全局示例
Last updated