理解ROS节点和在中.launch文件启动节点

理解ROS节点

1.图概念概述

Nodes:节点,一个节点即为一个可执行文件,它可以通过ROS与其它节点进行通信。Messages:消息,消息是一种ROS数据类型,用于订阅或发布到一个话题。
Topics:话题,节点可以发布消息到话题,也可以订阅话题以接收消息。
Master:节点管理器,ROS名称服务 (比如帮助节点找到彼此)。
rosout: ROS中相当于stdout/stderr。
roscore: 主机+ rosout + 参数服务器 (参数服务器会在后面介绍)。

2.节点

一个节点其实只不过是ROS程序包中的一个可执行文件。ROS节点可以使用ROS客户库与其他节点通信。节点可以发布或接收一个话题。节点也可以提供或使用某种服务。
(节点是ros中非常重要的一个概念,为了帮助初学者理解这个概念,这里举一个通俗的例子:
例如,咱们有一个机器人,和一个遥控器,那么这个机器人和遥控器开始工作后,就是两个节点。遥控器起到了下达指 令的作用;机器人负责监听遥控器下达的指令,完成相应动作。从这里我们可以看出,节点是一个能执行特定工作任 务的工作单元,并且能够相互通信,从而实现一个机器人系统整体的功能。在这里我们把遥控器和机器人简单定义为两个节点,实际上在机器人中根据控制器、传感器、执行机构等不同组成模块,还可以将其进一步细分为更多的节点,这个是根据用户编写的程序来定义的。)


launch 文件启动节点

1.node标签

在标签指定一个ROS 节点,这是最常见的roslaunch标签,因为它支持最重要的功能:启动和关闭节点。
roslaunch不保证节点开始的顺序。因为没有办法从外部知道节点何时被完全初始化,所以所有被启动的节点必须是稳健的,以便以任何顺序启动。

2.示例

<node name =“listener1”pkg =“rospy_tutorials”type =“listener.py”args = -  testrespawn =“true”/>

启动“listener1” 节点,使用listener.py从可执行rospy_tutorials 包与所述命令行参数–test。如果节点死亡,它将自动重新生成。

<node name =“bar1” pkg =“foo_pkg” type =“bar” args =“$(find baz_pkg)/resources/map.pgm”/>

从foo_pkg包中启动bar1节点。此示例使用替换参数将可移植引用传递到baz_pkg / resources / map.pgm。

3.属性

pkg =“mypackage”
节点包。

type =“nodetype”
节点类型。必须有一个具有相同名称的相应可执行文件。

name =“nodename”
节点基名称。注意:name不能包含命名空间。请改用ns属性。

args =“arg1 arg2 arg3” (可选)
传递参数到节点。

machine =“machine-name” (可选)
在指定机器上启动节点。

respawn =“true” (可选)
如果节点退出,则自动重新启动节点。

扫描二维码关注公众号,回复: 1476754 查看本文章

respawn_delay =“30” (可选,默认为0)
ROS indigo中的新功能如果respawn为true,请在尝试重新启动之前检测到节点故障后等待respawn_delay秒。

required =“true” (可选)
ROS 0.10:如果节点死亡,杀死整个roslaunch。

ns =“foo” (可选)
在“foo”命名空间中启动节点。

clear_params =“true | false” (可选)
在启动前删除节点的私有命名空间中的所有参数。

output =“log | screen” (可选)
如果’screen’,stdout / stderr从节点将被发送到屏幕。如果是“log”,stdout / stderr输出将被发送到$ ROS_HOME/ log中的日志文件,stderr将继续发送到屏幕。默认值为“log”。

cwd =“ROS_HOME | node” (可选)
如果为“node”,则节点的工作目录将设置为与节点的可执行文件相同的目录。在C Turtle中,默认值为“ROS_HOME”。在Box Turtle(ROS 1.0.x)中,默认值是’ros-root’。使用’ros-root’在C Turtle中已被弃用。

launch-prefix =“prefix arguments” (可选)
用于预先添加到节点的启动参数的命令/参数。这是一个强大的功能,使您能够启用gdb,valgrind,xterm,漂亮或其他方便的工具。

4.元素

您可以在标记中使用以下XML 标签:

<env>

为节点设置环境变量。

<remap>

为此节点设置重新映射参数。

<rosparam>

将rosparam文件加载到此节点的〜 / local命名空间中。

<param>

在节点的〜 / local命名空间中设置一个参数。

猜你喜欢

转载自blog.csdn.net/qq_36764147/article/details/80157148