ROS-机器人操作系统(ROS)浅析----第六章

本文介绍了ROS中的启动文件使用,包括如何启动多个节点、节点的独立性、启动前缀、命名空间内的节点启动、名称重映射以及参数的设置与管理。强调了设计良好的ROS节点应与其他节点保持独立,启动顺序不应影响节点功能,并展示了如何通过启动文件实现节点的灵活配置。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

博客摘录于:机器人操作系统(ROS)浅析–[美] Jason M. OKane 著–肖军浩 译

启动文件
6.1 使用启动文件
可以启用多个节点。
关于roslaucn工具一个重要但容易忘记的事实是,文件内所有的节点几乎都在同一时刻启动。因此,事实上你无法确定各个节点的启动顺序。不过这并没有什么影响,设计良好的ROS节点是不关心各个节点的启动顺序的。(7.3节会列举一个启动顺序起重要作用的示例)。
该特性也表明,在ROS中,每一个节点都应该和其他节点尽可能保持独立。(回忆一下在2.8节中讨论的节点的松耦合关系)。只有在特定启动顺序下才能运行良好的节点不符合这种模块化思想。因此,这样的节点需要进行重新设计,从而克服启动顺序的约束。

必要节点(requiring node) 复位之外的另一种策略是将一个节点声明为必要节点。required=”true”
当一个必要节点终止的时候,roslaunch会终止所有其他活跃节点并退出。当出现(1)某个节点非常重要,此节点的故障会导致整个ROS会话的瘫痪;(2)节点即便设置了复位属性也不能很好地重启的时候,该需求属性的作用就会体现出来。

由于respawn和required二者的作用是相互矛盾的,因此,如果对一个节点同时配置了这两种属性,roslaunch会报错。

为节点维护独立的窗口:roslaunch提供了一个实现该目的的简洁方法——对节点元素使用启动前缀(launch-prefix)属性:

Launch-prefix=“command-prefix”

事实上,roslaunch在启动节点时的内部工作原理是调用相应的命令行工具,即rosrun。启动前缀的主要思想是在其命令行前面添加给出的命令行前缀。在我们的例子中,遥操作节点使用了这个功能:
launch-prefix=”xetrm-e”
在这个属性的作用下,节点元素和在命令行中输入下面的命令基本上是等价的:
xterm –e rosrun turtlesim turtle_teleop_key
6.3在命名空间内启动节点
ns=”namespace”

6.4 名称重映射


当使用命令行启动节点时,分别给出原始名称和新名称,中间由一个:=分开,如下所示:
original-name := new-name
例如,运行一个turtlesime的实例,如果想要把海龟的姿态 数据发布到话题/tim而不是/turtle1/pose,就可以使用如下命令:
rosrun turtlesim turtlesim_node turtle1/pose:=tim

通过启动文件的方式,只需在启动文件内使用重映射(remap)元素即可:
<remap from=”original-name”to ”new-name”/>
<include file=”$(find package-name)/launch-file-name”>

包含元素同样支持命名空间属性,可以将内容压入一个指定的命名空间中去:
<include file=”…” ns=”namespace”/>
<arg name=”agr-name”>的灵活运用

<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:在include标签之间的参数是属于被包含文件的,而不是它们出现的启动文件。因为目的是为被包括的启动文件设置响应的参数值,所以该处需要使用value属性。
group:组可以把若干个节点放入同一个命名空间内。

6.6展望 下一章我们将介绍参数服务器,向大家展现提供节点部分配置信息的集中式方法。

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值