ROS——launch文件

一、基本元素

首先看一个简单的launch文件:

<launch>
    <node pkg="turtlesim" name="sim1" type="turtlesim_node"/>
    <node pkg="turtlesim" name="sim2" type="turtlesim_node"/>
</launch>

1、<launch>

XML文件必须要包含一个根元素,launch中的根元素采用<launch>标签定义。

2、<node>

启动文件的核心是启动ros节点,采用node标签定义:

pkg表示包的名称,name表示运行节点的名称,type表示可执行文件名称。

上面三个属性使我们最常用到的属性,在某些情况下,我们还会用到以下属性:

output = "screen" //将节点的输出打印到屏幕终端,默认输出为日志文档。
launch-prefix = "gnome-terminal -e"  //为该节点保留一个独立的终端
respawn = "true"  //复位属性,该节点停止时,会自动重启,默认为false。
required = "true"  //必要节点,该节点终止时,launch文件中的其他节点也会被终止。
ns = "namespace"  //命名空间,为节点内的相对名称添加命名空间前缀。
args = "arguments"  //节点需要的输入参数

二、参数设置

1、<param>

parameter是ROS系统运行中的参数,存储在参数服务器中。launch文件中通过<param>元素加载parameter;launch文件执行后,parameter就加载到了ROS的参数服务器上。每个活跃的节点都可以通过ros::param::get()接口来获取parameter的值,用户也可以在终端通过rosparam命令获得parameter的值。

<param>方法使用如下:

<param name="my_value" value="1.0"/>

这样就把参数值为1.0 的参数my_value放入了ros参数服务器。

获取该参数可以使用ros::param::get()接口,也可以使用:

nodehandle.param<double>("my_value", my_value_,1.1);来获取

注意参数依次为:参数类型,参数服务器中参数名称,定义的存放参数的名称,默认值

但是在很多复杂的系统中参数的数量很多,如果这样一个一个地设置非常麻烦,ROS提供了另外一种类似的参数加载方式:

<rosparam file="/my_param.yaml" command="load"/>

需要设置command属性为load;

2、<arg>

argument是另外一个概念,类似于launch文件内部的局部变量,仅限于launch文件使用,便于launch文件的重构,和ROS内部节点实现没有关系。语法如下:

<arg name="my_value" default="1.0"/>

如果在launch文件内部需要使用到argument的时候,调用方法如下:

<arg name="my_value" default="1.0"/>
<param name="param_name" value="$(arg my_value)"/>
<node pkg="my_pkg" name="my_name" type="my_type" args="$(arg my_value)"/>

三、重映射机制

ROS的设计目标是提高代码的复用率,ROS社区中很多功能包可以拿过来直接使用,而不需要关心功能包的内部实现。那么问题就来了,别人功能包的接口和我们的系统不一定兼容?

ROS提供了一种重映射机制,简单来说就是起别名,类似于C++的别名机制,我们不需要修改别人功能包的接口,只需要将接口名称重映射一下,起个别名,系统就认识了。

例如:turtlebot键盘控制节点,发布的速度控制指令话题可能是/turtlebot/cmd_vel,但是我们自己的机器人订阅的话题是/cmd_vel,这时候<remap>就可以轻松解决问题,把/turtlebot/cmd_vel重映射为/cmd_vel,我们的机器人就可以接受速度控制指令了。

<remap from="/turtlebot/cmd_vel" to="/cmd_vel"/>

重映射机制在ROS中使用十分广泛,方法不止这一种,也可以在终端rosrun中实现重映射。

四、嵌套复用

简单点说,就是在一个launch文件中启动别的launch文件,使用<include>标签

<include file="/other.launch"/>

 

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值