ROS2学习笔记(2)什么是ROS2 nodes
什么是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相关推荐
- ROS2学习笔记(十)-- ROS2 launch启动文件
简介:接触过ROS1的同学对launch肯定不陌生,在ROS1中,我们常用launch实现node和master同时启动.多节点同时启动配置等功能,ROS2中的launch也是用于多节点启动.配置功能 ...
- ROS2学习笔记(八)-- ROS2参数应用实现道路识别调试
简介:参数也是ROS2系统中很重要的一项功能,主要是用来对节点进行配置,一般用在调试过程中,通过命令行的方式修改节点的一些配置,用以辅助调试,另外节点参数也支持导入和导出,调试好的参数可以导出到本地保 ...
- ROS2学习笔记(十一)-- ROS2 bag数据记录与回放
简介:ROS2提供了ros2 bag命令,可以记录指定主题的数据到文件中,也可以将记录下的内容再发布出来,相当于是数据的回放,除了通过命令行的方式实现数据记录以外,也可以通过编程实现主题数据记录以及而 ...
- ROS2学习笔记(3)什么是ROS2 topics
什么是ROS2 topics 上一篇笔记学习了节点,ROS2正是帮我们可以把一个复杂的系统分解成很多个模块化的节点. topics(话题)是ROS的重要元素,它的作用就充当这些模块化的节点之间交换信息 ...
- ROS2学习笔记2--介绍小乌龟教程和rqt
概要:这篇主要介绍小乌龟教程和rqt 环境:ubuntu20.04,ros2-foxy,vscode 2.1.2介绍小乌龟教程和rqt(原文:https://docs.ros.org/en/foxy/ ...
- ROS2学习笔记22--使用launch启动/监听多个node节点
概要:这篇内容主要介绍如何使用launch启动/监听多个node节点 环境:ubuntu20.04,ros2-foxy,vscode 最后如果没有陈述实操过程中碰到问题的话,则表示该章节都可被本人正常 ...
- ROS2学习笔记(三)-- 采集虚拟仿真环境图像并发布
简介:ROS2功能的学习我们还是在基于OpenAI的gym虚拟仿真环境中来完成,gym虚拟仿真环境安装请参考另一篇教程,这里不再重复说明,接下来我们开始创建一个ROS2的功能节点,并发布虚拟仿真环境小 ...
- ROS2学习笔记之turtlesim(小乌龟)介绍
Turtlesim Turtlesim 是一个用于学习 ROS 2 的轻量级模拟器,因为其有个乌龟,所以也经常被称为小乌龟. turtlesim package 默认并不在 ROS 系统中,需要额外安 ...
- ROS2学习笔记(一)——安装ROS2和简介
一.简介 ROS是一种基于匿名发布/订阅机制的中间件,允许不同ROS进程之间的消息传递. 在任何ROS 2系统的核心是ROS图.ROS图是指ROS系统中的节点网络和它们之间的连接. 所 ...
最新文章
- QIIME 2教程. 12数据筛选Filtering data(2020.11)
- 从京东裸辞 2 年后,我的一些改变
- MySQL开启federated引擎实现数据库表映射
- c# xml html标签,XML文件到html表(循环)C#
- infomix数据库版本sql_数据库周刊31丨华为openGauss 正式开源;7月数据库排行榜发布...
- Spring MVC3 Hibernate CRUD示例应用程序
- 第一类第二类丢失更新
- [LeetCode]819. 最常见的单词
- Vue3学习笔记01:使用NPM方法安装Vue3
- 计算机应用有那些技校好,技校都有哪些专业? 就业前景好的有哪些
- Python中第三方库Requests库的高级用法详解
- 书单丨成为全栈工程师的5种硬实力
- ArcMAP 使用绘图工具添加注记
- 计算机模块word2003和2007,Office2003 2007
- ppt设置外观样式_ppt设置主题样式的方法步骤详解
- 调查问卷设计的一般步骤与方法
- win7 linux 虚拟机共享文件夹,Win7主机和虚拟机Linux Virtualbox共享文件夹设置教程...
- 阿里云疯狂促销 公有云之战刚鸣枪
- 微信小程序评分功能(一)
- ELK安装经常遇到的问题
热门文章
- 【2021】13 年终总结
- 如何实现 Linux + Windows 双系统启动
- Error converting data type...
- 常规创业公司股权分配参考
- 在Excel中选取一行中的最大数值进行标题匹配
- 【SCSS】1300- 这些 SCSS 使用技巧真好用~
- antd 覆盖css样式不生效(antd避坑)
- java word合并单元格_java使用freemarker模板导出word(带有合并单元格)文档
- Windows10数据线连接坚果手机SmartisanTNT
- 解决 Minecraft 官方启动器 报错找不到 launcher.dll / LoadErrorNotPresent 的解决方法