[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 文件中有待赋值的变量,可以通过这种方式赋值|

posted @ 2021-07-26 10:33  叶小蜗  阅读(569)  评论(0编辑  收藏  举报