ROS 2边学边练(3)-- 何为节点(nodes)

        在接触节点这个概念之前,我们先来看看下面这张动态图,更方便我们理解一些概念和交互过程。

(相信大家的英文基础哈)

概念

        如上图所示,这里面其实涉及到了三个概念(功能),分别是节点、服务和主题。左边一个大圆(内书NODE),右侧上下各一小圆(同样内书NODE),没错,这3个圆代表的就是3个节点,这个概念暂可以理解为一种负责单一功能的、模块化的进程(感觉还是没有解释好),比如只负责发布雷达数据的一个节点,它只管发布实时的雷达数据出去,订阅者节点将实时接收这些数据进行其他的功能处理。每个节点可以通过主题、服务、动作、参数获取到这些数据(上图描述了通过主题和服务两种方式来获取数据)。一个完整的机器人系统会包含很多节点,它们各司其职,共同维护、执行指定的任务。

动动手      

启动节点

        我们可以通过如下命令格式启动节点(运行package_name功能包路径下的executable_name节点文件):

$ros2 run <package_name> <executable_name>

        上一篇我们已经通过小海龟的例子启动了2个节点,一个是小海龟节点(ros2 run turtlesim turtlesim_node),一个是控制小海龟的节点(ros2 run turtlesim turtle_teleop_key),如果我们想了解当前运行的所有活动节点,可以执行下面命令进行查看:

$ros2 node list

命令终端将返回如下信息(如果小海龟节点和控制节点都在运行的话):

/turtlesim
/teleop_turtle

重映射

        这个功能有点强,可以重新自定义分配默认节点的属性(主题名称、服务名称、节点名称等),比如我们可以重映射当前活动节点(小海龟)的名称为my_turtle(这会启动一个名为my_turtle的节点):

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

效果如下(启动另外一只小海龟窗口):

查看节点列表(ros2 node list),你会发现多出一个名为my_turtle的节点,

节点信息

        如果想要深入了解某个节点的完整信息,我们可以通过如下命令进行查看:

$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
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值