launch文件的概念和作用
launch 文件是一个 XML 格式的文件,可以启动本地和远程的多个节点,还可以在参数服务器中设置参数。
launch文件的作用是:简化节点的配置与启动,提高ROS程序的启动效率。
使用场景
launch文件在ros中使用还是比较广泛的,比如:一个程序中可能需要启动多个节点。ROS 内置的小乌龟案例,如果要控制乌龟运动,要启动多个窗口,分别启动 roscore、乌龟界面节点、键盘控制节点。如果每次都调用 rosrun 逐一启动,显然效率低下,这个时候就可以使用launch文件进行优化。
launch的创建
工程中创建一个 launch 文件夹,里面存储项目的launch文件
由于launch文件不牵扯到编译,所以更改完launch文件,其实不用编译,直接运行命令:
source ./devel/setup.bash
更新环境,然后运行 roslaunch 项目名 launch文件:
roslaunch launch_base test01.launch
launch文件中的层级结构和命令
1 根标签launch
launch标签是所有 launch 文件的根标签,充当其他标签的容器。
属性:
deprecated = “弃用声明” 告知用户当前 launch 文件已经弃用。运行时,会有红色的警告信息,说此文件已经过时或者弃用。
2 node标签
node标签用于指定 ROS 节点,是最常见的标签,需要注意的是: roslaunch 命令不能保证按照 node 的声明顺序来启动节点(节点的启动是多进程的)
属性:
pkg=“包名” 节点所属的包
type=“nodeType” 节点类型(与之相同名称的可执行文件)
name=“nodeName” 节点名称(在 ROS 网络拓扑中节点的名称)
args=“xxx xxx xxx” (可选) 将参数传递给节点
machine=“机器名” 在指定机器上启动节点
respawn=“true | false” (可选) 如果节点退出,是否自动重启
respawn_delay=" N" (可选) 如果 respawn 为 true, 那么延迟 N 秒后启动节点
required=“true | false” (可选) 该节点是否必须,如果为 true,那么如果该节点退出,将杀死整个 roslaunch
ns=“xxx” (可选) 在指定命名空间 xxx 中启动节点
clear_params=“true | false” (可选) 在启动前,删除节点的私有空间的所有参数
output=“log | screen” (可选) 日志发送目标,可以设置为 log 日志文件,或 screen 屏幕,默认是 log
子级标签
env 环境变量设置
remap 重映射节点名称
rosparam 参数设置
param 参数设置
3 include标签
include标签用于将另一个 xml 格式的 launch 文件导入到当前文件
属性
file=“$(find 包名)/xxx/xxx.launch” 要包含的文件路径
ns=“xxx” (可选) 在指定命名空间导入文件
<launch>
<include file="$(find launch所在项目名)/launch/***.launch"/>
</launch>
子级标签
env 环境变量设置
arg 将参数传递给被包含的文件
4 remap 标签
该标签用于话题的重命名。有时候某些话题需要与其他话题进行同步,则需要该命令进行重新映射。
属性
from=“xxx” 原始话题名称
to=“yyy” 目标名称
子级标签 不含
示例:
本例子中将小乌龟案例中的 /turtle1/cmd_vel 话题映射到 /cmd_vel ,所以该话题可以使用 ROS中内置的 teleop_twist_keyboard 进行小乌龟速度的控制
<node pkg="turtlesim" type="turtlesim_node" name="myTurtle" output="screen">
<remap from="/turtle1/cmd_vel" to="/cmd_vel"/>
</node>
将remap注释掉后,再开启teleop_twist_keyboard就发现一直在等待订阅 /cmd_vel 的内容
5 param标签
param标签主要用于在参数服务器上设置参数,参数源可以在标签中通过 value 指定,也可以通过外部文件加载,在node标签中时,相当于私有命名空间
属性
name=“命名空间/参数名” 参数名称,可以包含命名空间
value=“xxx” (可选) 定义参数值,如果此处省略,必须指定外部文件作为参数源
type=“str | int | double | bool | yaml” (可选) 指定参数类型,如果未指定,roslaunch 会尝试确定参数类型,规则如下:如果包含 ‘.’ 的数字解析未浮点型,否则为整型"true" 和 “false” 是 bool 值(不区分大小写),其他是字符串
子级标签 不含
示例文章来源:https://www.toymoban.com/news/detail-462121.html
<launch>
<param name="param_A" type="int" value="100"/>
<node pkg="turtlesim" type="turtlesim_node" name="myTurtle" output="screen">
<param name="param_A" type="int" value="100"/>
</node>
</launch>
6 rosparam标签
rosparam 标签可以从 YAML 文件导入参数,或将参数导出到 YAML 文件,也可以用来删除参数,rosparam标签在node标签中时被视为私有。
属性
command=“load | dump | delete” (可选,默认 load) 加载、导出或删除参数
file=“$(find xxxxx)/xxx/yyy…” 加载或导出到的 yaml 文件
param=“参数名称”
ns=“命名空间” (可选)
子级标签 不含
示例
可以发现 rosparam 在node节点中会增加该节点对应的命名空间
<launch>
<!-- 测试rosparam load 加载yaml文件 -->
<rosparam command="load" file="$(find launch_base)/launch/param.yaml"/>
<node pkg="turtlesim" type="turtlesim_node" name="myTurtle" output="screen">
<rosparam command="load" file="$(find launch_base)/launch/param.yaml"/>
</node>
</launch>
测试 dump 和 delete
<launch>
<rosparam command="dump" file="$(find launch_base)/launch/param_out.yaml"/>
<rosparam command="delete" param="bg_R"/>
</launch>
7 group标签
group标签可以对节点分组,具有 ns 属性,可以让节点归属某个命名空间
属性
ns=“名称空间” (可选)
clear_params=“true | false” (可选)
启动前,是否删除组名称空间的所有参数(慎用…此功能危险)
子级标签
除了launch 标签外的其他标签
示例
相当于启动了两个小乌龟节点
<launch>
<group ns="first">
<node pkg="turtlesim" type="turtlesim_node" name="myTurtle" output="screen" />
<node pkg="turtlesim" type="turtle_teleop_key" name="myTurtleCon" output="screen" />
</group>
<group ns="second">
<node pkg="turtlesim" type="turtlesim_node" name="myTurtle" output="screen" />
<node pkg="turtlesim" type="turtle_teleop_key" name="myTurtleCon" output="screen" />
</group>
</launch>
8 arg标签
arg标签是用于动态传参,类似于函数的参数,可以增强launch文件的灵活性
属性
name=“参数名称”
default=“默认值” (可选)
value=“数值” (可选) 不可以与 default 并存
doc=“描述” 参数说明
子级标签 不含
示例
<launch>
<!-- 类似声明固定的参数 -->
<arg name="car_len" default="15"/>
<param name="A" value="$(arg car_len)"/>
<param name="B" value="$(arg car_len)"/>
<param name="C" value="$(arg car_len)"/>
</launch>
命令文章来源地址https://www.toymoban.com/news/detail-462121.html
roslaunch hello.launch car_len:=值
到了这里,关于【ROS学习】节点运行管理launch文件的基本操作的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!