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
如果退出,则自动重新启动该节点。默认为falseoutput
log | 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
- 更新于 : 2024-07-25 02:50:26
- 链接: https://camill.love/note/launch/
- 版权声明: 本文章采用 CC BY-NC-SA 4.0 进行许可。
评论