笔记参考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则是储存在参数服务器中,可以被节点使用。