什么是ROS2 nodes

先了解一下ROS2 graph。ROS2 graph是一个ROS2元素同时处理数据的网络。它包含了所有可执行程序和它们之间的连接。

ROS中每个负责单独功能的模块叫做节点(node)(例如,一个节点用于控制轮子电机,一个节点用于控制激光测距等)。每个节点可以通过topics(话题)、services(服务)、actions(动作)或parameters(参数)向其它节点发送和接收数据。

如以下动图所示,包含3个节点,通过话题和服务进行数据传输。

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

节点里面有啥?

在上一篇学习笔记里我已经安装了ROS2,并且可以正常运行海龟模拟器(turtlesim)。那就通过turtlesim来学一下节点。

运行turtlesim

打开一个终端,先加载ROS2环境source /opt/ros/galactic/setup.bash(每次打开新的terminal必 先source一下 )。然后运行命令:

ros2 run turtlesim turtlesim_node

看到海龟模拟器窗口

查看节点列表

可以通过以下命令才查看当前系统中正在运行的节点。新开一个终端输入:

ros2 node list

终端返回:

/turtlesim

说明当前节点列表中只有一个叫/turtlesim的节点。

再开一个新的终端,运行海龟控制键盘:

ros2 run turtlesim turtle_teleop_key

然后在前一个终端重新查看以下节点列表。

终端返回:

/turtlesim

/teleop_turtle

可以看到现在节点列表中有两个节点。

查看节点信息

通过ros2 node list命令可以知道当前运行中的节点个数和名称,现在可以用以下命令来看关于节点的更多信息

ros2 node info <node_name>

比如我要查看/turtlesim这个节点,在终端输入

ros2 node info /turtlesim

终端返回下面这一大串的信息,有订阅者列表,发布者列表,服务列表和动作列表。

/turtlesimSubscribers:/parameter_events: rcl_interfaces/msg/ParameterEvent/turtle1/cmd_vel: geometry_msgs/msg/TwistPublishers:/parameter_events: rcl_interfaces/msg/ParameterEvent/rosout: rcl_interfaces/msg/Log/turtle1/color_sensor: turtlesim/msg/Color/turtle1/pose: turtlesim/msg/PoseService Servers:/clear: std_srvs/srv/Empty/kill: turtlesim/srv/Kill/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/turtlesim/describe_parameters: rcl_interfaces/srv/DescribeParameters/turtlesim/get_parameter_types: rcl_interfaces/srv/GetParameterTypes/turtlesim/get_parameters: rcl_interfaces/srv/GetParameters/turtlesim/list_parameters: rcl_interfaces/srv/ListParameters/turtlesim/set_parameters: rcl_interfaces/srv/SetParameters/turtlesim/set_parameters_atomically: rcl_interfaces/srv/SetParametersAtomicallyService Clients:Action Servers:/turtle1/rotate_absolute: turtlesim/action/RotateAbsoluteAction Clients:

再来看一下海龟操控键盘节点/teleop_turtle的信息:

/teleop_turtleSubscribers:/parameter_events: rcl_interfaces/msg/ParameterEventPublishers:/parameter_events: rcl_interfaces/msg/ParameterEvent/rosout: rcl_interfaces/msg/Log/turtle1/cmd_vel: geometry_msgs/msg/TwistService Servers:/teleop_turtle/describe_parameters: rcl_interfaces/srv/DescribeParameters/teleop_turtle/get_parameter_types: rcl_interfaces/srv/GetParameterTypes/teleop_turtle/get_parameters: rcl_interfaces/srv/GetParameters/teleop_turtle/list_parameters: rcl_interfaces/srv/ListParameters/teleop_turtle/set_parameters: rcl_interfaces/srv/SetParameters/teleop_turtle/set_parameters_atomically: rcl_interfaces/srv/SetParametersAtomicallyService Clients:Action Servers:Action Clients:/turtle1/rotate_absolute: turtlesim/action/RotateAbsolute

可以看到/turtlesim/teleop_turtle里有几个相同的信息。比如/turtlesim节点的订阅者列表里有/turtle1/cmd_vel,而/teleop_turtle节点的发布者列表也有/turtle1/cmd_vel。比如/turtlesim节点的动作服务端里/turtle1/rotate_absolute,而/teleop_turtle节点的动作客户端里也有/turtle1/rotate_absolute

再看一下,我们启动海龟键盘turtle_teleop_key程序的时候,会返回这一段操作帮助信息:

Reading from keyboard
---------------------------
Use arrow keys to move the turtle.
Use G|B|V|C|D|E|R|T keys to rotate to absolute orientations. 'F' to cancel a rotation.
'Q' to quit.

是不是可以想到键盘控制海龟行走的控制数据就是通过两个节点中相同的信息建立数据连接通信的呢?

关于ROS2 节点的学习就先到这吧。

参考:
  • ROS 2 Documentation:https://docs.ros.org/en/galactic/index.html

ROS2学习笔记(2)什么是ROS2 nodes相关推荐

  1. ROS2学习笔记(十)-- ROS2 launch启动文件

    简介:接触过ROS1的同学对launch肯定不陌生,在ROS1中,我们常用launch实现node和master同时启动.多节点同时启动配置等功能,ROS2中的launch也是用于多节点启动.配置功能 ...

  2. ROS2学习笔记(八)-- ROS2参数应用实现道路识别调试

    简介:参数也是ROS2系统中很重要的一项功能,主要是用来对节点进行配置,一般用在调试过程中,通过命令行的方式修改节点的一些配置,用以辅助调试,另外节点参数也支持导入和导出,调试好的参数可以导出到本地保 ...

  3. ROS2学习笔记(十一)-- ROS2 bag数据记录与回放

    简介:ROS2提供了ros2 bag命令,可以记录指定主题的数据到文件中,也可以将记录下的内容再发布出来,相当于是数据的回放,除了通过命令行的方式实现数据记录以外,也可以通过编程实现主题数据记录以及而 ...

  4. ROS2学习笔记(3)什么是ROS2 topics

    什么是ROS2 topics 上一篇笔记学习了节点,ROS2正是帮我们可以把一个复杂的系统分解成很多个模块化的节点. topics(话题)是ROS的重要元素,它的作用就充当这些模块化的节点之间交换信息 ...

  5. ROS2学习笔记2--介绍小乌龟教程和rqt

    概要:这篇主要介绍小乌龟教程和rqt 环境:ubuntu20.04,ros2-foxy,vscode 2.1.2介绍小乌龟教程和rqt(原文:https://docs.ros.org/en/foxy/ ...

  6. ROS2学习笔记22--使用launch启动/监听多个node节点

    概要:这篇内容主要介绍如何使用launch启动/监听多个node节点 环境:ubuntu20.04,ros2-foxy,vscode 最后如果没有陈述实操过程中碰到问题的话,则表示该章节都可被本人正常 ...

  7. ROS2学习笔记(三)-- 采集虚拟仿真环境图像并发布

    简介:ROS2功能的学习我们还是在基于OpenAI的gym虚拟仿真环境中来完成,gym虚拟仿真环境安装请参考另一篇教程,这里不再重复说明,接下来我们开始创建一个ROS2的功能节点,并发布虚拟仿真环境小 ...

  8. ROS2学习笔记之turtlesim(小乌龟)介绍

    Turtlesim Turtlesim 是一个用于学习 ROS 2 的轻量级模拟器,因为其有个乌龟,所以也经常被称为小乌龟. turtlesim package 默认并不在 ROS 系统中,需要额外安 ...

  9. ROS2学习笔记(一)——安装ROS2和简介

    一.简介 ROS是一种基于匿名发布/订阅机制的中间件,允许不同ROS进程之间的消息传递.         在任何ROS 2系统的核心是ROS图.ROS图是指ROS系统中的节点网络和它们之间的连接. 所 ...

最新文章

  1. class h5 点击后样式变化_css实现选中后变色并且效果不消失
  2. Chem. Sci. | 3D深度生成模型进行基于结构的从头药物设计
  3. pyqt webview 执行js
  4. ML-1 逻辑回归和梯度下降
  5. ORACLE常用命令【转】
  6. [C#]最简单的Base64加密解密
  7. dos下操作mysql数据库常用命令
  8. MySQL5.6 更改字段属性仍旧会锁全表,注意这个坑!
  9. idea2020.2中@test是怎么测试的_[翻译]Angular Schematics: 单元测试
  10. list中随机获取n条、随机生成4位6位数工具类,1-n范围随机数,Math.random()生成随机数
  11. python总结之函数定义(一)
  12. windows能装linux系统盘,用U盘安装linux系统(Windows环境下制作启动盘)
  13. Lucas-Kanade算法
  14. js判断字符串字符数(汉字算两个)
  15. 计算机监控系统维护重点,计算机监控系统维护规程
  16. 单片机c语言条件语句,单片机c语言教程:C51复合语句和条件语句
  17. C/C++小写数字转换成大写数字
  18. 网站不加“www”无法访问怎么解决?
  19. 2022-2028全球婴儿护理台行业调研及趋势分析报告
  20. 三星二级菜单_Excel 如何设计带联想的二级下拉菜单?

热门文章

  1. c语言循环菜鸟,C语言菜鸟基础教程之for循环
  2. mysql分组语句的子句_MySQL 中的排序与分组 语句
  3. android 获取通话记录对应卡槽,短信记录对应卡槽
  4. javax.validation
  5. 庖丁解牛Transformer原理
  6. 推荐几款实用的PDF文件压缩大小软件,还不快码住
  7. 小程序报错 TypeError: Cannot read property getPreloadAdUnitIds ?
  8. TASK1_高等数学
  9. 北斗定位,定位追踪,防盗追踪系统设计方案
  10. vue 获取动态域名_vue项目接口域名动态获取操作