学习参考文章:

ROS学习笔记-roslaunch文件的编写&用sh脚本控制launch文件启动顺序_launch文件怎么设置权限-CSDN博客

【ROS】从入门到急眼--launch文件详解_launch文件注释-CSDN博客

[ROS 系列学习教程] launch文件_roslaunch 教程-CSDN博客

4.2.6 launch文件标签之rosparam · Autolabor-ROS机器人入门课程《ROS理论与实践》零基础教程

第三,四个比较直观理解,学习建议直接看第三,四条链接,下面只是自己学习总结加强记忆所书写,主要目的不是为了写给其他人看学习,是为了加强自己记忆;

 

 

launch文件在ROS中帮助一次性启动多个节点,节省了终端多次开启,下面是其中的一些书写格式:

先来看一个示例:

1.

在使用launch时注意写上<launch>,好像与python语言类似,通过缩进表示包含关系,初始打完这个之后下面就是调用的东西了;所有东西都调用完记得要输入</launch>表示关闭;                                                            ps:好像习惯把<>中的类型叫做标签下面也用标签来说明;

 

 

2.

在launch文件中注释的书写格式:
<!--注释内容-->

 

 

 3.标签

launch中开启调用的类型文件不同也有一些细微差别,下面是launch调用的几种常用标签:

①launch标签:父级标签

launch文件的所有内容都包含在<launch> </launch>之间。

②node标签:

格式:
<node 必选项,必选项,必须项,可选,可选  />

node标签也就是节点是ROS中最常见的,node标签里包含ROS图中的节点的名称属性name,该节点所在的包名pgk,以及节点的类型type。

必选:

1.name="NODE_NAME",用于指定节点名称,相当于给这个节点取一个名字,注册到Master的名称;

2.pkg=“package_name”             指定功能包,启动该功能包;

3.type=“file_name”       节点可执行文件的名称,执行该可执行文件;

 相当于启动该节点,这个节点名字被设置为name,执行功能包pkg中的type可执行文件;

可选:

 4.args=“arg1 arg2 arg3”   传递参数给节点;

5.machine=“machine_name”   在指定机器上启动节点,需要先使用 <machine> 指定机器;

 6.respawn=“true|false”    如果节点退出,是否自动重启,默认 false;

7.respawn_delay=“设置时间”  

 8.ns=“namespace_name”     将该组节点分配到指定的命名空间启动。

9.clear_params=“true|false”        在启动前删除节点的私有命名空间中的所有参数,默认为 false

 10.output=“log|screen”     日志发送目标,可以设置为 log 日志文件,或 screen 屏幕,默认是 log

 11.launch-prefix=“prefix arguments”   命令/参数,用于预置到节点的启动参数。这是一项强大的功能,使您能够启用 gdbvalgrindxtermnice 或其他方便的工具。工具具体信息:roslaunch/教程/Valgrind或GDB中的Roslaunch节点 - ROS Wiki

12.if=“true|false”     如果为“true”,则节点将照常启动。如果为 'false',则不会启动节点。可用于评估参数/参数并根据结果运行,而无需每次都修改启动文件。

node的子级标签:

 env标签:

不好解释直接上图:   /*现在还没看见过也不清楚具体干哈怎么样,碰到了再来完善吧*/

 remap标签:
节点的重映射,方便同一个 node 文件被应用到不同的环境中,用 remap 从外部修改一下 topic 即可,不需要改变源文件,感觉相当于节省搜索路径吧

如图:

 param标签:

param标签用于在参数服务器中定义一些参数。可以是bool值、文本文件、二进制文件等。

  • name="命名空间/参数名"

    参数名称,可以包含命名空间

  • value="xxx" (可选)

    定义参数值,如果此处省略,必须指定外部文件作为参数源

  • type="str | int | double | bool | yaml" (可选)

    指定参数类型,如果未指定,roslaunch 会尝试确定参数类型,规则如下:

    • 如果包含 '.' 的数字解析未浮点型,否则为整型

    • "true" 和 "false" 是 bool 值(不区分大小写)

    • 其他是字符串

 rosparam标签:

param与rosparam两个参数调用差不多,都是把launch文件中的一些参数直接设置到rosmaster(ros中的节点管理器)里面以便于各个节点的使用,主要不同在于param只对一个参数进行操作,rosparam可以对多个参数进行操作,前提时把这些参数放到.yaml文件中。

  • command="load | dump | delete" (可选,默认 load)

    加载、导出或删除参数

  • file="$(find xxxxx)/xxx/yyy...."

    加载或导出到的 yaml 文件

  • param="参数名称"

  • ns="命名空间" (可选)

 ③include标签:

<include> 标签将另一个 roslaunch 文件导入到当前文件中。

示例:

 必选:

1.file=“$(find pkg-name)/path/filename.xml”       要包含的文件的名称。

可选:

2.ns=“foo”  与上文中的ns作用大致相同,在指定命名空间导入文件。

3.clear_params=“true|false”    在启动之前删除 <include> 命名空间中的所有参数。此功能非常危险,应谨慎使用。必须指定ns。默认值:false

4.pass_all_args=“true|false”    如果为 true,则当前上下文中设置的所有参数,都将添加到为处理包含的文件而创建的子上下文中。可以执行此操作,而不是显式列出要传递的每个参数。

 include子级标签:

 <env>

 <arg>
 ④remap标签:上面有对应格式忘记了就往上翻翻;
作用:可以对 topic 进行重映射,用于话题重命名。

⑤group标签:

设置命名空间,可以通过设置命名空间ns进行分组,避免调用冲突;

eg:分别将相同的话题放入不同的空间中调用;与remap中的ns感觉差不多;

⑥arg标签:

将参数传递给被包含的文件,标签是用于动态传参,类似于函数的参数,可以增强launch文件的灵活性

下图为其中格式:

 其中:

name="param_name"     定义参数名字

default=“default value”    设置参数的默认值。不能与 value 属性组合(可选)

 value="value"    设置参数值。不能与default属性组合使用  (可选)

doc="参数说明"  有点像注释的感觉。