ROS2入门教程—理解节点(Node)

本文介绍ROS2中的节点概念,包括如何使用ros2run启动节点、查看运行中的节点、重映射节点名称及获取节点详细信息的方法。通过实例操作加深理解。


  和ROS1一样,ROS2中的各项资源也是通过计算图(“ ROS (2) graph”)联系到一起的。计算图是一个由各种ROS2元素组成的网络,共同完成数据的传输,其中每一个完成具体功能的模块称之为“节点”(Node)。ROS中的每个节点应负责一个单一的模块用途(例如,一个节点用于控制车轮电机,一个节点用于控制激光测距仪等)。节点之间通过话题(Topic)、服务(Service)、动作(Actions)或者参数(Parameter)实现数据的收发。

在这里插入图片描述

  一个完整的机器人系统就是由多个节点组成的,每个节点各司其职,完成自己的工作。在ROS2中,每一个可执行程序(C++、Python)可以包含1个或者多个节点,这是与ROS1中不同的。 接下来还是在小海龟例程中继续熟悉下节点相关的命令。

1 ros2 run

  ros2 run相当于ROS1中的rosrun,主要作用是运行某个功能包中的可执行程序,使用语法如下:

ros2 run <package_name> <executable_name>

  比如小海龟仿真界面就是节点的执行程序,位于turtlesim功能包中,启动它的命令是:

ros2 run turtlesim turtlesim_node

运行上述命令之后,小海龟就会出现在界面上了:
在这里插入图片描述

  但是大家需要注意,这里的turtlesim是功能包名字,而turtlesim_node只是可执行文件的名字,并不是节点名,想要知道节点叫什么,我们需要运行如下命令。

2 ros2 node list

  ros2 node list将显示所有正在运行的节点的名称,相当于ROS1中的rosnode list。当您想要与一个节点交互,或者当您的系统运行许多节点并且需要跟踪它们时,这一点特别有用。 启动海龟仿真器之后,打开一个终端输入如下指令:

ros2 node list

终端将返回节点名称:

/turtlesim

  重新打开一个终端,输入以下命令来启动键盘控制乌龟仿真器:

ros2 run turtlesim turtle_teleop_key

重新运行ros2 node list之后,可以发现多了一个正在运行的节点:

/turtlesim
/teleop_turtle

3 重映射(Remapping)

  ROS中的重映射机制可以帮助我们重定义节点的属性,比如节点名称、话题名称、服务名称等。比如我们想修改看到的节点名turtlesim,那就可以这样:

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

  既然你又在turtlesim上调用ros2 run,另一个小海龟的仿真界面将打开。但是,现在如果您返回到运行ros2 node list的终端,然后再次运行它,您将看到三个节点名称:

/my_turtle
/turtlesim
/teleop_turtle

在这里之所以没有冲突,是因为新启动的仿真节点叫做“my_turtle”,并不是默认的“turtlesim”。

4 ros2 node info

  现在已经知道了节点的名称,可以通过以下方式访问有关节点的更多信息:

ros2 node info <node_name>

  要检查您的最新节点my_turtle,请运行以下命令:

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:
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Roar冷颜

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值