ROS环境下launch文件格式说明

XML语法提要

roslaunch文件的本质是xml文件,首先要简单了解一些xml相关语法:
1、标签必须闭合

         //成对的标签闭合,中间可以写内容
          //当没有中间内容需要写时,也可使用自闭合标签,此时仍然可以为标签添加属性,XXXX内容就代表属性部分

    1
    2

2、使用注释

    1

标签

标签是所有roslaunch文件的根元素。它写在最外层,目的是作为其他元素的容器。其中可以包含多种元素标签:
——————————————常用———————————-
启动节点
包含其他的roslaunch文件
对参数服务器进行参数设置
launch文件内部使用的参数
声明映射名
共享一个名称空间或重新映射组封闭元素
使用rosparam文件启动设置ROS参数
常用元素标签
1、 启动节点,这是最常用的标签


    1
    2

name是给这个节点起的名字,pkg是工作空间中节点包的名称,type是包中需要运行的具体节点,其指向的文件必须有对应的可执行文件。
2、包含其它launch文件,被包含的launch文件将会被一同启动。

    1

3、 对参数服务器进行参数设置,示例如下


         

    1
    2
    3

laser_scan_publisher这个节点程序设置了一个可让用户更改的参数,为了传递这个参数,使用标签,name是参数在程序内部的名称,value是给对应参数赋值。
4、 声明映射名,示例如下


   
   
   
 

    1
    2
    3
    4
    5

上述代码启动了一个turtlebot_teleop节点,该节点原本发布了一个消息叫做turtlebot_teleop_keyboard/cmd_vel, 其实这个话题与cmd_vel话题中的消息类型是完全一样的,因为能够发送cmd_vel话题的节点太多了,为了区分,程序设计时使用了节点名称+话题名的方式,此时为了方便订阅,需要将这种话题做一次重映射,使用标签将turtlebot_teleop_keyboard/cmd_vel话题映射为cmd_vel话题,这样,其他要订阅该话题的节点只需订阅cmd_vel话题即可。
5、 使用rosparam文件启动设置ROS参数,示例如下


   
   
   
   
   
 

    1
    2
    3
    4
    5
    6
    7

当参数特别多时,全部写在launch文件里就不方便了,为此,可以通过加载文件来传递参数,上述代码从4个文件加载了参数,其中costmap_common_params.yaml文件中的参数值被传递到两个不同的命名空间中。
6、 launch文件内部参数,启动参数。

这个标签与上述标签翻译完全一致,都是“参数”,但所设置的参数是可以在ros参数服务器中查看并设置的,而只是当前launch文件所使用的内部参数,外部不可见。
比如,gmapping.launch中有这样一句:


 
…………

    1
    2
    3
    4

其中,scan_topic这个参数就是说,使用roslaunch启动这个launch文件时,可以传递一个参数,该参数可以让用户指定一个话题名称,如果用户传递了话题参数,则新的话题参数将取代scan,若果没传递参数,scan_topic取默认值scan,你可以这样写:

roslaunch ~/文件路径/gmapping.launch scan_topic:=abc

    1

此时,标签往往与&(arg scan_topic)相配合使用,该launch文件中凡是出现&(arg scan_topic)的地方,均会被替换为abc,即完成了用户向launch文件传递,比如下面这一句:

 

    1

上述代码是gmapping.launch中的语句,若用户传递了自定义的参数,则scan会被映射为指定的话题名称,使得gmapping接收的激光话题名称为用户指定的名称。
7、分组标签。

启动节点多了可以分分组,不同组可以使用不同的命名空间,使得节点参数不冲突。该标签套在标签外。
中常用的属性

属性是写在标签里的,比如


    1
    2

pkg =“mypackage” 是catkin空间中节点的名称。
type =“nodetype” 节点下的程序名称,必须有一个具有相同名称相应的可执行文件,catkin编译后可自动产生该可执行文件。
name =“nodename” 用户给该节点起的名称。
respawn =“true” 如果节点退出,则自动重新启动节点。
output=“screen”; 将对应node的输出信息打印在屏幕上,如果不写这一句,所有程序中的输出将存在home/.ros/log目录下。
若想显示所有nodes的输出,启动launch文件时还可以添加–screen参数

`roslaunch --screen package_name launch_file_name  //此时所有输出会显示在终端

    1

小提示

使用roslaunch时,是不用启动roscore,roscore自动启动

原文:https://blog.csdn.net/lingchen2348/article/details/79661114  
版权声明:本文为博主原创文章,转载请附上博文链接!

你可能感兴趣的:(ROS环境下launch文件格式说明)