ROS学习笔记7~launch启动文件

launch启动文件:通过XML文件实现多节点的配置和启动
启动文件(Launch File )便是 ROS 中一种同时启动多个节点的途径,它还可以自动启动 ROS Master 节点管理器,并且可以实现每个节点的各种配置,为多个节点的操作提供很大便利。
例如:下面就是一个 launch 启动文件
<launch>
  <arg name="scan_topic"  default="scan" />
  <arg name="base_frame"  default="base_footprint"/>
<!--
  <arg name="odom_frame"  default="odom"/>
-->
  <arg name="odom_frame"  default="odom_combined"/>

  <node pkg="gmapping" type="slam_gmapping" name="slam_gmapping" output="screen">
    <param name="base_frame" value="$(arg base_frame)"/>
    <param name="odom_frame" value="$(arg odom_frame)"/>
    <param name="map_update_interval" value="0.01"/>
    <param name="maxUrange" value="4.0"/>
    <param name="maxRange" value="5.0"/>
    <param name="sigma" value="0.05"/>
    <param name="kernelSize" value="3"/>
    <param name="lstep" value="0.05"/>
    <param name="astep" value="0.05"/>
    <param name="iterations" value="5"/>
    <param name="lsigma" value="0.075"/>
    <param name="ogain" value="3.0"/>
    <param name="lskip" value="0"/>
    <param name="minimumScore" value="30"/>
    <param name="srr" value="0.01"/>
    <param name="srt" value="0.02"/>
    <param name="str" value="0.01"/>
    <param name="stt" value="0.02"/>
    <param name="linearUpdate" value="0.05"/>
    <param name="angularUpdate" value="0.0436"/>
    <param name="temporalUpdate" value="-1.0"/>
    <param name="resampleThreshold" value="0.5"/>
    <param name="particles" value="8"/>
  <!--
    <param name="xmin" value="-50.0"/>
    <param name="ymin" value="-50.0"/>
    <param name="xmax" value="50.0"/>
    <param name="ymax" value="50.0"/>
  make the starting size small for the benefit of the Android client's memory...
  -->
    <param name="xmin" value="-1.0"/>
    <param name="ymin" value="-1.0"/>
    <param name="xmax" value="1.0"/>
    <param name="ymax" value="1.0"/>

    <param name="delta" value="0.05"/>
    <param name="llsamplerange" value="0.01"/>
    <param name="llsamplestep" value="0.01"/>
    <param name="lasamplerange" value="0.005"/>
    <param name="lasamplestep" value="0.005"/>
    <remap from="scan" to="$(arg scan_topic)"/>
  </node>
</launch>

在上面的文件中:

1、XML文件必须包含一个根元素,launch文件中的根元素采用 < launch > 标签定义,文件中的其他内容都必须包含在这个标签中。

2、启动文件的核心是启动ROS节点,采用< node >标签定义。

在启动文件中启动一个节点需要三个常用属性:
2.1、pkg:定义节点所在的功能包名称
2.2、type:定义节点的可执行文件名称
pkg 和 type 这两个属性等同于在终端中使用 rosrun 命令执行节点时的输入参数。
2.3、name:定义节点运行的名称,将覆盖节点中init()赋予节点的名称
除了这三个常用属性之外,还可能用到其他属性:
2.4、output = “screen” :将节点的标准输出打印到终端屏幕,默认输出为日志文档
2.5、respawn = “true” : 复位属性,该节点停止时,会自动重启,默认为false
2.6、required = “true” : 必要节点,当该节点终止时,launch文件中的其他节点也被终止。
2.7、ns = “namespace” : 命名空间,为节点内的相对名称添加命名空间前缀
2.8、args = “arguments” : 节点需要的输入参数

3、< param > 代表parameter,parameter是ROS系统运行中的参数,存储在参数服务器中

ROS中还有另外一种参数加载方式: < rosparam > 可以帮助我们将一个 YAML 格式文件中的参数全部加载到 ROS 参数服务器中。

4、< arg >代表argument ,argument是另外一个概念,类似于launch文件内部的局部变量,仅限于launch文件使用,便于launch文件的重构,与ROS节点内部的实现没有关系。

5、重映射机制:launch文件中的< remap >标签可以实现重映射功能。

ROS的设计目标是提高代码的复用率,所以ROS社区的很多功能包我们都可以拿来直接使用,而不需要关注功能包的内部实现。但是别人的功能包接口和我们的系统不一定兼容,因此ROS提供了一种重要的重映射机制,简单来说就是取别名,类似于C++中的别名机制,我们不需要修改别人的功能包的接口,只需要将接口名称重映射一下,取一个别名,我们的系统就可以接受了 ( 接 口 的 数 据 类 型 必 须 相 同 ) \color{red}{(接口的数据类型必须相同)}

重 映 射 机 制 在 R O S 中 使 用 非 常 广 泛 , 也 非 常 重 要 , \color{red}{ 重映射机制在ROS中使用非常广泛,也非常重要,} ROS使广 方法不止这一种,也可以在终端中实现重映射。

< remap >标签允许你以更结构化的方式将名称重新映射参数传递给ROS节点,而不是直接设置<节点>的参数属性。
< remap >标签适用于其范围内的所有后续声明(< launch >、< node >或< group >)。

属性:
from=“original-name”:你重映射的名字

to=“new-name”:目标名字

6、嵌套复用 :launch文件中使用< include >标签包含其他launch文件,这与C语言中的include几乎是一样的。

launch是ROS框架中非常实用、灵活的功能,它类似于一种高级编程语言,可以帮助我们管理启动系统时的方方面面。在使用ROS的过程中,很多情况下我们并不需要编写大量代码,仅需要使用已有的功能包,编辑一下launch文件就可以完成很多机器人功能

以上6种标签是launch文件中使用最常用的标签元素,还有一些更高级的标签元素可以通过访问:http://wiki.ros.org/roslaunch/XML 来学习

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值