ROS launch 启动文件

本文介绍了ROS启动文件的多个关键特性,包括控制台信息输出、节点复位与必要节点配置、包含其他启动文件的方法以及启动参数的设定技巧。此外,还详细讲解了如何向被包含的启动文件传递参数。
<launch>
<node
pkg="turtlesim"
type="turtlesim_node"
name="turtlesim"
respawn="true"
/>
<node
pkg="turtlesim"
type="turtle_teleop_key"
name="teleop_key"
required="true"
/>

<node
pkg="subpose"
type="subpose"
name="pose_subscriber"
output="screen"
/>


</launch>
一.信息的输出
在控制台中输出信息 对于某个单独的节点,只需在节
点元素中配置 output 属性就可以达到该目的:
output=”screen”
 
除了影响单个节点输出信息的 output 属性之外,我们还可以
使用--screen 命令行选项来令 roslaunch 在控制台中显示所有节点
的输出:
roslaunch –screen package-name launch-file-name
 
 
二.请求复位 在启动了启动文件中所有的请求节点之后,roslaunch
会监视每一个节点,记录哪一个节点是活跃的。对于每个节点,
我们可以设置 respawn 属性为真,这样当节点停止的时候,
roslaunch 会重新启动该节点。
respawn=”true”
这个功能是有意义的,比如在某个节点因为软件崩溃或硬件109
故障以及其他原因导致过早退出系统的时候会起到作用。
 
三.必要节点(requiring node复位之外的另一种策略是将一个节
点声明为必要节点。
required=”true”
当一个必要节点终止的时候,roslaunch 会终止所有其他活跃
节点并退出。当出现(1)某个节点非常重要,此节点的故障会导致
整个 ROS 会话的瘫痪;(2)节点即便设置了复位属性也不能很好地
重启的时候,该需求属性的作用就会体现出来。
 
四.包含其他文件
如果想在启动文件中包含其他启动文件的内容(包括所有的
节点和参数),可以使用包含(include)元素 
<include file=”path-to-launch-file”>
此处 file 属性的值应该是我们想包含的文件的完整路径。由
于直接输入路径信息很繁琐且容易出错,大多数包含元素都使用
查找(find)命令搜索功能包的位置来替代直接输入路径:
<include file=”$(find package-name)/launch-file-name”>
 
五.启动参数
 
参数赋值 启动文件中的每一个参数都要进行赋值。赋值有很多种
方法,例如可以像下面在 roslaunch 命令行中提供该值:
roslaunch package-name launch-file-name arg-name:=arg-value
除此之外,你也可以使用以下两种语法,将参数值作为 arg
声明的一部分:
<arg name=”arg-name” default=”arg-value”/>
<arg name=”arg-name” value=”arg-value”/>
两者的唯一区别在于命令行参数可以覆盖默认值 default,但
是不能覆盖参数值 value。在示例中,use_sim3 有默认值 0,但是
可以用如下命令行对参数值进行修改:
roslaunch agitr riplesim.launch use_sim3:=1
如果我们想修改启动文件,用 value 替换 default,那么该命
令会产生错误,因为由 value 设置的参数值是不能更改的。
获取参数值 一旦参数值被声明并且被赋值,你就可以利用下面的
arg 替换(arg substitution)语法来使用该参数值了:
$(arg arg-name)
每个该替换出现的地方,roslaunch 都将它替换成参数值
 
 
向包括的启动文件中发送参数值 目前已介绍的参数设定技巧的
局限在于,它并未提供任何方法将参数传递到通过包含元素导入
的次级启动文件中去。这一点很重要,因为像局部变量一样,参
数仅定义在对其进行声明的启动文件中,而不能被包含的启动文
继承
123该问题的解决方案就是将 arg 元素作为一个包含元素的子元
素,如下所示:
<incluce file=”path–to-launch-file”>
<arg name=”arg-name” value=”arg-value”/>
</include>
请注意,该 arg 元素的用法和之前我们看到的 arg 声明是不
同的。在 include 标签之间的参数是属于被包含文件的,而不是它
们出现的启动文件。因为目的是为被包括的启动文件设置响应的
参数值,所以该处需要使用 value 属性。
一种常见的情况是两个启动文件(包含文件和被包含文件)
有一些共同的参数,在这种情况下,我们希望参数在传递的时候
不会改变。这样的元素在两个地方使用相同的参数名:
<arg name=”arg-name” value=”$(arg arg-name)”>
在该例子中,第一个参数名字通常是指被包含文件中的参数,
第二个参数名是指当前文件中的参数。这样做之后,给定参数在
两个启动文件中有相同的值。
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值