警告
您正在阅读的 ROS 2 文档版本已达到 EOL(生命周期结束),不再受官方支持。如果您想了解最新信息,请访问 Jazzy.
了解节点
目标 了解 ROS 2 中节点的功能以及与之交互的工具。
辅导水平: 初学者
时间 10 分钟
背景介绍
1 ROS 2 图表
在接下来的几节教程中,您将学习到一系列 ROS 2 核心概念,这些概念构成了所谓的 "ROS (2) 图"。
ROS 图是由同时处理数据的 ROS 2 元素组成的网络。它包括所有可执行文件以及它们之间的连接,如果要将它们全部映射出来并可视化的话。
2 ROS 中的节点 2
ROS 中的每个节点都应负责一个单一的模块目的(例如,一个节点负责控制车轮电机,一个节点负责控制激光测距仪等)。每个节点都可以通过主题、服务、操作或参数向其他节点发送和接收数据。

一个完整的机器人系统由许多协同工作的节点组成。在 ROS 2 中,单个可执行文件(C++ 程序、Python 程序等)可包含一个或多个节点。
先决条件
"(《世界人权宣言》) 上一个教程 向您展示如何安装 海龟
软件包。
与往常一样,别忘了在 您打开的每个新终端.
任务
1 ros2 运行
命令 玫瑰2 运行
启动软件包中的可执行文件。
ros2 运行 <package_name> <executable_name>;
要运行 turtlesim,请打开一个新终端并输入以下命令:
ros2 运行 turtlesim turtlesim_node
将打开 turtlesim 窗口,正如您在 上一个教程.
这里的软件包名称是 海龟
而可执行文件的名称是 海龟模拟节点
.
不过,我们仍然不知道节点名称。您可以使用 玫瑰2 网站 清单
2 ros2 节点列表
玫瑰2 网站 清单
将显示所有运行节点的名称。当你想与某个节点交互时,或者当你有一个运行着许多节点的系统并需要跟踪它们时,这一点尤其有用。
打开一个新的终端,同时 turtlesim 仍在另一个终端中运行,然后输入以下命令:
ros2 节点列表
终端将返回节点名称:
/turtlesim
打开另一个新终端,使用命令启动远程操作节点:
ros2 run turtlesim turtle_teleop_key
在这里,我们搜索 海龟
包,这次是针对名为 乌龟遥控钥匙
.
返回运行 玫瑰2 网站 清单
并再次运行。现在您将看到两个活动节点的名称:
/turtlesim
/teleop_turtle
2.1 重新映射
重新映射 允许您将节点名称、主题名称、服务名称等默认节点属性重新指定为自定义值。在上一教程中,您在 乌龟遥控钥匙
来更改默认控制的乌龟。
现在,让我们将我们的 /turtlesim
节点。在新终端中运行以下命令:
ros2 run turtlesim turtlesim_node --ros-args --remap __node:=my_turtle
既然你说 玫瑰2 运行
再次打开 turtlesim,就会打开另一个 turtlesim 窗口。不过,现在如果你回到运行 玫瑰2 网站 清单
,然后再次运行,就会看到三个节点名称:
/my_turtle
/turtlesim
/teleop_turtle
3 ros2 节点信息
现在您已经知道了节点的名称,可以使用
ros2 节点信息 <node_name>;
检查您的最新节点、 我的乌龟
运行以下命令
ros2 节点信息 /my_turtle
玫瑰2 网站 信息
返回与该节点交互的订阅者、发布者、服务和操作(ROS 图连接)的列表。输出结果应如下所示
/my_turtle
订阅者:
/parameter_events: rcl_interfaces/msg/ParameterEvent
/turtle1/cmd_vel: geometry_msgs/msg/Twist
出版商
/parameter_events: rcl_interfaces/msg/ParameterEvent
/rosout: rcl_interfaces/msg/Log
/turtle1/color_sensor: turtlesim/msg/Color
/turtle1/pose: turtlesim/msg/Pose
服务服务器:
/clear: std_srvs/srv/Empty
/kill: turtlesim/srv/Kill
/my_turtle/describe_parameters: rcl_interfaces/srv/DescribeParameters
/my_turtle/get_parameter_types: rcl_interfaces/srv/GetParameterTypes
/my_turtle/get_parameters: rcl_interfaces/srv/GetParameters
/my_turtle/list_parameters: rcl_interfaces/srv/ListParameters
/my_turtle/set_parameters: rcl_interfaces/srv/SetParameters
/my_turtle/set_parameters_atomically: rcl_interfaces/srv/SetParametersAtomically
/reset: std_srvs/srv/Empty
/spawn: turtlesim/srv/Spawn
/turtle1/set_pen: turtlesim/srv/SetPen
/turtle1/teleport_absolute: turtlesim/srv/TteleportAbsolute
/turtle1/teleport_relative: turtlesim/srv/TteleportRelative
服务客户:
行动服务器:
/turtle1/rotate_absolute: turtlesim/action/RotateAbsolute
行动客户:
现在尝试在 /teleop_turtle
节点,看看它的连接与 我的乌龟
.
您将在接下来的教程中学习到更多有关 ROS 图形连接概念(包括消息类型)的知识。
摘要
节点是 ROS 2 的基本元素,在机器人系统中具有单一的模块化功能。
在本教程中,您将使用从 海龟
运行可执行文件 海龟模拟节点
和 乌龟遥控钥匙
.
您学会了如何使用 玫瑰2 网站 清单
发现活动节点名称和 玫瑰2 网站 信息
对单个节点进行自省。这些工具对于了解复杂的真实机器人系统中的数据流至关重要。
下一步工作
现在您已经了解了 ROS 2 中的节点,可以继续学习 主题教程.主题是连接节点的通信类型之一。