launch文件笔记

ROS的launch文件用于配置和启动多节点,可自动启动ROS master,无需roscore。主要包含<node>、<machine>、<include>、<remap>、<param>、<rosparam>和<arg>等标签,分别用于启动节点、指定机器、包含其他launch文件、重映射ROS资源、设置参数、加载参数文件和定义局部变量。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

笔记参考wiki.ros.org

Launch文件是通过.xml文件来实现多节点的配置与启动的文件,可以自动启动ROS master,不需要使用roscore命令启动ROS master。一个launch文件里也可以引用其他.launch文件。

launch文件一般包含以下几个部分:

(1)< node > 标签:启动节点,取消节点(取消??)。所以启动的节点以任意顺序启动。

Attributes:
pkg =“ mypackage” 节点包。
type =“ nodetype” 节点类型。必须有一个具有相同名称的对应可执行文件。
name =“ nodename” 节点名称。注意:名称不能包含名称空间。请改用ns属性。
args =“ arg1 arg2 arg3” (可选)将参数传递给节点。
machine =“机器名” (可选,请参见)在指定机器上启动节点。
respawn =“ true” (可选,默认值:False)如果退出,则自动重新启动该节点。
respawn_delay =“ 30” (可选,默认为0) ROS indigo的新增功能,如果respawn为true,请在检测到节点故障后等待respawn_delay几秒钟,然后再尝试重新启动。
required =“ true” (可选)ROS 0.10:如果节点死亡,则杀死整个roslaunch。
ns =“ foo” (可选)在“ foo”名称空间中启动节点。
clear_params =“ true | false” (可选)在启动之前,删除节点的私有名称空间中的所有参数。
output =“ log | screen” (可选)如果为“ screen”,则来自该节点的stdout / stderr将被发送到屏幕。如果为’log’,则stdout / stderr输出将发送到$ ROS_HOME / log中的日志文件中,并且stderr将继续发送到屏幕上。默认值为“ log”。
cwd =“ ROS_HOME | node” (可选)如果为“ node”,则该节点的工作目录将设置为与该节点的可执行文件相同的目录。在C Turtle中,默认值为“ ROS_HOME”。在Box Turtle(ROS 1.0.x)中,默认值为“ ros-root”。C Turtle不建议使用“ ros-root”。
launch-prefix =“前缀参数” (可选)用于添加到节点的启动参数的命令/参数。这是一项强大的功能,使您能够启用gdb,valgrind,xterm,nice或其他方便的工具

(2)< machine >标签

name =“机器名” 分配给机器的名称。这对应于标记的machine属性所使用的名称。
default =“ true | false |从不” (可选)将此机器设置为默认的节点分配节点。默认设置仅适用于稍后在同一作用域中定义的节点。注意:如果没有默认计算机,则使用本地计算机。您可以通过设置default =“ never”来防止选择计算机,在这种情况下,只能显式分配计算机。
user =“用户名” (可选)用于登录计算机的SSH用户名。如果不需要,可以省略。
password =“ passwhat”(强烈建议)SSH密码。强烈建议您改为配置SSH密钥和SSH代理,以便可以改为使用证书登录。
timeout =“ 10.0” (可选)在此计算机上启动rosrosnch之前经过的秒数被视为无法启动。默认情况下,这是10秒。

(3)< include >标签

包含其他launch文件。

<include file="$(arg custom_amcl_launch_file)">  <!--启动amcl节点并配置参数-->
    <arg name="initial_pose_x" value="$(arg initial_pose_x)"/>  <!--位置初始化在这个地方设置,前面的都会被覆盖-->
    <arg name="initial_pose_y" value="$(arg initial_pose_y)"/>
    <arg name="initial_pose_a" value="$(arg initial_pose_a)"/>
  </include>

第一行是include所包含的其他launch文件路径,后面的name和value是参数名和参数值。

(4)< remap >标签

重映射ROS计算图资源的命名。 < remap >标签适用于其范围(< launch >,< node >或< group >)中的所有后续声明。

<remap from="chatter" to="hello"/>

from:原命名
to:映射之后的命名
注意是想要重映射到哪

(5)< param >标签

设置ROS系统运行中的参数,存储在参数服务器中。Parameter Server
name =“名称空间/名称” 参数名称。命名空间可以包含在参数名称中,但应避免使用全局指定的名称。
value =“ value” (可选)定义参数的值。如果省略此属性,则必须指定binfile,textfile或command。
type =“ str | int | double | bool | yaml” (可选)指定参数的类型。如果您未指定类型,roslaunch将尝试自动确定类型。这些规则非常基本:带“。”的数字是浮点数,否则为整数;“ true”和“ false”是布尔值(不区分大小写)。所有其他值是字符串
textfile =“ $ (查找pkg名称)/path/file.txt” (可选)
文件的内容将被读取并存储为字符串。该文件必须是本地可访问的,但是强烈建议您使用相对于软件包的$(find)/file.txt语法指定位置。
binfile = “ $(查找pkg名称)/path/file ” (可选)
该文件的内容将被读取并存储为base64编码的XML-RPC二进制对象。该文件必须是本地可访问的,但是强烈建议您使用相对于软件包的 $(find)/file.txt语法指定位置。
command =“ $ (查找pkg名称)/ exe’ $ (查找pkg名称)/arg.txt’” (可选)
命令的输出将被读取并存储为字符串。强烈建议您使用相对于软件包的 $(find)/file.txt语法指定文件参数。由于XML转义的要求,您还应该使用单引号对文件参数进行引用。

(6)< rosparam >标签

加载参数文件(yaml)中的多个参数

<rosparam file=”params.yama" command="load" ns="params"/>

< rosparam >标签允许使用rosparam YAML文件从ROS参数服务器加载和转储参数。 它也可以用来删除参数。 < rosparam >标签可以放在< node >标签中,在这种情况下,参数被视为一个私有名称。

<rosparam command="load" file="$(find rosparam)/example.yaml" />
<rosparam command="delete" param="my/param" />
( 7 ) < arg >标签

Launch文件内部的局部变量,仅限于Launch文件使用。

<arg name="odom_frame_id" default="odom"/>

name:参数名
value:参数值,不能与default属性结合使用
default:参数的默认值,不能与value属性结合使用
arg标签用来在launch文件中定义参数,arg和param在ROS里有根本性的区别,就像局部变量和全局变量的区别一样。arg不储存在参数服务器中,不能提供给节点使用,只能在launch文件中使用。param则是储存在参数服务器中,可以被节点使用。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值