[ROS学习笔记2]ROS中的launch文件
本文基于Ubuntu18.04
+ ROS1:melodic
launch文件是ROS的关键组件之一,可以通过配置该文件实现多节点的配置和启动。但值得注意的是。launch文件并不能保证节点的启动顺序,因此使用launch文件同时启动的节点必须是先后顺序鲁棒的。
launch文件本质上是XML文件,因此遵循XML语言的规则(XML常用作配置文件,如ROS中的packege.xml也是)。文件中由相互嵌套的标签和属性组成,其常用的标签如下表所示:
launch常用标签及属性
标签 | 用途 | 属性 | 用途 |
launch | 根标签,其他标签均嵌套在其内 | ||
node | 启动节点 | pkg="pkg_name" | 节点所在包名 |
type="XXX.cpp" | 可执行文件名 | ||
name="node_name" | 节点启动之后的名字 | ||
(respawn="true") | 若该节点关闭,是否自动重新启动 | ||
(required="true") | 若该节点关闭,是否关闭其他所有节点 | ||
(launch-prefix="xterm -e") | 是否新开一个窗口执行 | ||
(output="screen") | 默认情况下,launch 启动 node 的信息会存入文件"/.ros/log/run_id/node_name-number-stdout.log" | ||
(ns="namespace") | 将 node 归入不同的 namespace | ||
include | 包含其他launch | "$(find package-name)/launch-file-name" | 文件路径 |
machine | 指定运行的机器 | ||
env-loader | 设置环境变量 | ||
param | 定义参数到参数服务器(与 arg 不同,param 是共享的,并且它的取值不仅限于 value,还可以是文件,甚至是一行命令) | name="param_name" | 参数名 |
(type="type1") | 类型名,可以省略,系统自动判断 | ||
value="val" | 变量值 | ||
(textfile="$(find pkg)/path/file") | 读取 file 存成 string | ||
(command="$(find pkg)/exe '$(find pkg)/arg.txt'") | 找包下面的exe和arg.txt,内容存在param中 | ||
rosparam | 加载yaml文件中的参数到参数服务器(可以批量操作,还包括一些对参数设置的命令,如 dump, delete 等) | command="load" file="$(find rosparam)/example.yaml" | 从 YAML 文件中加载一批 param |
command="delete" param="my_param" | 删除某个 param | ||
[注]rosparam还可以这样赋值: < rosparam param="my_param">[1,2,3,4]< /rosparam> 或< rosparam>a: 1 b: 2< /rosparam> |
|||
arg | 定义变量 | name | 参数名 |
(default="1") | 赋默认值为1 | ||
(value="1") | 赋固定值为1,不可更改 | ||
remap | 设定 topic 映射 | from="origin" to="new" | 从origin映射到new |
group | 设定分组 |
launch文件使用
终端键入命令(如果roscore未启动,roslaunch会自动先启动roscore):
roslaunch pkg_name launchfile_name.launch
或者
roslaunch path_to_launchfile
可选参数
|--screen|令 ros node 的信息输出到屏幕上,而不是保存在log文件,方便调试|
|arg:=value|如果 launch 文件中有待赋值的变量,可以通过这种方式赋值|
本文来自博客园,作者:叶小蜗,转载请注明原文链接:https://www.cnblogs.com/yexiaowo/p/ROS-launch.html