【ROS2入门】理解 ROS 2 节点

阿里云国内75折 回扣 微信号:monov8
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6

        大家好我是虎哥从今天开始我将花一段时间开始将自己从ROS1切换到ROS2在上一篇中我们依托Turtlesim演示节点来逐步展开介绍了rqt工具这一章我们将围绕ROS2中主要的概念“节点”展开了解ROS 2中节点的功能以及与之交互的工具 。

目录

The ROS 2 graph

一、ROS2中节点Nodes in ROS 2

先决条件

1、ROS2 RUN

2、ros2 node list

3、Remapping

4、 ros2 node info

5、总结


The ROS 2 graph

  • 在接下来的几个教程中您将了解一系列核心ROS2概念这些概念构成了所谓的“ROS2图”。

  • ROS图是ROS 2元素同时处理数据的网络。它包含所有可执行文件以及它们之间的连接如果您要将它们全部映射并可视化的话。

一、ROS2中节点Nodes in ROS 2

ROS中的每个节点应负责单个模块用途例如一个节点用于控制车轮电机一个用于控制激光测距仪等。每个节点都可以通过主题、服务、操作或参数向其他节点发送和接收数据。

        一个完整的机器人系统由许多协同工作的节点组成。在ROS 2中单个可执行文件C++程序、Python程序等可以包含一个或多个节点。

先决条件

上一个教程向您展示了如何安装此处使用的turtlesim包。一如既往不要忘记在您打开的每一个新终端中提供ROS 2。

1、ROS2 RUN

从包中启动可执行文件

ros2 run <package_name> <executable_name>

例如我们之前启动turtlesim

ros2 run turtlesim turtlesim_node

如您在上一教程中所见将打开 turtlesim。这里包名为turtlesim可执行文件名为turtle sim_node。

然而我们仍然不知道节点名称。可以使用ros2 node list查找节点名称.

2、ros2 node list

ros2 node list将显示所有正在运行的节点的名称。当您想要与一个节点交互时或者当您的系统运行多个节点并且需要跟踪它们时这尤其有用。打开一个新终端同时在另一个终端上运行turtlesim然后输入以下命令

ros2 node list

打开另一个新终端并使用以下命令启动遥操作节点

ros2 run turtlesim turtle_teleop_key

继续使用ros2 node list 查看节点列表

3、Remapping

重新映射允许您将默认节点属性如节点名称、主题名称、服务名称等重新分配给自定义值。在上一个教程中您使用了对turtle_teleop_key的重新映射来更改要控制的默认海龟。

现在让我们重新分配/turtlesim节点的名称。在新终端中运行以下命令

ros2 run turtlesim turtlesim_node --ros-args --remap __node:=my_turtle

由于您再次调用 ros2 run在turtlesim另一个turtlesim将打开。然而现在如果您返回到运行ros2节点列表的终端并再次运行它您将看到三个节点名称

4、 ros2 node info

现在你知道了节点的名称可以通过以下方式访问有关它们的更多信息

ros2 node info <node_name>

用你最后的命令为例子my_turtle 执行如下命令

ros2 node info /my_turtle

会得到如下回复

nvidia@ubuntu:~$ ros2 node info /my_turtle
/my_turtle
  Subscribers:
    /parameter_events: rcl_interfaces/msg/ParameterEvent
    /turtle1/cmd_vel: geometry_msgs/msg/Twist
  Publishers:
    /parameter_events: rcl_interfaces/msg/ParameterEvent
    /rosout: rcl_interfaces/msg/Log
    /turtle1/color_sensor: turtlesim/msg/Color
    /turtle1/pose: turtlesim/msg/Pose
  Service Servers:
    /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/TeleportAbsolute
    /turtle1/teleport_relative: turtlesim/srv/TeleportRelative
  Service Clients:
​
  Action Servers:
    /turtle1/rotate_absolute: turtlesim/action/RotateAbsolute
  Action Clients:

现在尝试查看节点 teolep_turtle 运行相同的命令看看它的连接与my_turtle有何不同。

5、总结

        节点是一个基本的ROS 2元素在机器人系统中用于单一的模块化目的。在本教程中通过运行可执行文件turtlesim_node和turtle_teleop_key您利用了从turtlesim包创建的节点。您学习了如何使用ros2 node list 来发现活动节点名称和ros2 node info。这些工具对于理解复杂的真实世界机器人系统中的数据流至关重要。

以上就是我今天要分享的内容。纠错,疑问,交流: 911946883@qq.com

阿里云国内75折 回扣 微信号:monov8
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6