ROS中launch使用
许多ROS软件包都带有“启动文件”,即launch文件,launch文件是通过
roslaunch功能包运行的,命令行格式如下:
1 | $ roslaunch package_name file.launch |
这些启动文件通常会为软件包提供一组节点,这些节点聚合了一些功能,通过roslaunch命令同时启动这些节点。
文件格式
launch文件采用XML格式书写。
浏览顺序
roslaunch浏览XML文件是一行一行运行的。按深度优先遍历进行处理:标签将按顺序进行浏览,标签值取最后的设定。因此,如果一个参数有多个设置,则将使用为该参数指定为最后一个值。
标签(Tag)
launch文件标签常用的有以下几种:
| 标签 | 描述 |
|---|---|
| launch | 根元素 |
| node | 最常见的标签,用于启动和关闭节点 |
| remap | 节点重映射 |
| group | launch组 |
| arg | 允许在命令行、多个文件中传递参数 |
| param | 参数服务器上设置的参数 |
| rosparam | YAML文件从ROS参数服务器加载和转储参数 |
| include | 导入launch文件 |
属性
属性是标签中带有的键值对,用于指定标签的参数。
如:
1 | <arg name="debug" default="false" /> |
其中标签是 arg,属性是 name 和 default。
node
最常见的标签,用于启动和关闭节点。roslaunch不保证节点开始的顺序。所以无法从外部知道何时完全初始化节点,所有启动的代码都必须能够按任意顺序启动。
例如:
1 | <node name="listener1" pkg="rospy_tutorials" type="listener.py" args="--test" respawn="true" /> |
属性
name节点类型pkg功能包名type功能包中可执行文件
以上是必须参数
args将参数传递给节点respawn如果退出,则自动重新启动该节点。默认为falseoutputlog | screen如果为screen,则来自该节点的stdout/stderr将被发送到屏幕。如果为log,则stdout/stderr输出将发送到$ ROS_HOME/log中的日志文件,并且stderr将继续发送到屏幕。默认值为log
include
该标签可以将另一个roslaunch XML文件导入当前文件。 它将被导入到文档的当前范围内,包括 group 和 remap 标记。 除 master 标记外,将导入引用文件中的所有内容: master 标签仅在顶级文件中服从。
例如:
1 | <include file="$(find eros_moveit_config)/launch/move_group.launch"> |
属性
- file=”$(find pkg-name)/path/filename.launch”。需要嵌套的文件的路径。
param和rosparam
常用方式:
1 | <arg name="ip" default="10.5.5.100"/> |
group、if、unless、arg、include
常用方式:
1 | <arg name="camera" default="false" /> |
这段分别定义了四个arg,均为bool类型
然后再定义了两个group,属性为if和unless
就像 if 和 else 一样,if 表示条件为真时执行下面的内容,unless 表示条件为假时执行下面的内容。
可以参考以上写法进行条件判断和传参
- 标题: ROS中launch使用
- 作者: Camill
- 创建于 : 2024-01-23 15:06:02
- 更新于 : 2025-07-16 09:26:26
- 链接: https://camill.icu/note/launch/
- 版权声明: 本文章采用 CC BY-NC-SA 4.0 进行许可。
评论