ROS2学习笔记3--认识ros2节点node
Posted 鸿_H
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ROS2学习笔记3--认识ros2节点node相关的知识,希望对你有一定的参考价值。
概要:这篇主要认识ros2节点node
环境:ubuntu20.04,ros2-foxy,vscode
2.1.3认识ros2节点node(原文:https://docs.ros.org/en/foxy/Tutorials/Understanding-ROS2-Nodes.html
)
>>
教程>>
认识ros2节点node
你正阅读的是ros2较老版本(Foxy),但仍然支持的说明文档.想查看最新版本的信息,请看galactic版本链接( https://docs.ros.org/en/galactic/Tutorials.html
)
理解ros2节点node
目标:学习ros2的节点功能,以及相关的工具
课程等级:初级
时长:10min
目录
1.背景
1.1 ros2的曲线图
1.2 ros2的节点
2.先决条件
3.步骤
3.1 ros2 run
3.2 ros2 node list
3.3 ros2 node info
4.总结
5.下一步
6.相关内容
1.背景
1.1 ros2的曲线图
接下来的几节课,所介绍的一系列ros2核心概念,可以使用一个ros2曲线图来表示
ros曲线图表示的是ros2基元(节点,话题,服务等)同一时间处理数据信息的关系网络.如果你想将它们映射出来并可视化,该图应包含所有的执行文件以及基元间相关关系.
1.2 ros2的节点
每个ros节点作用是负责单一模块,例如一个节点控制轮子电机,一个节点控制激光范围探测等等.每个节点可通过话题,服务,动作,参数来传输或接受数据信息到其他节点.
(这是一个动态图,建议查看原文链接)
一个完整的机器人系统包含许多协调工作的节点.在ros2中,一个单一的执行文件,如c++或python项目等等,可包含一个或多个节点.
2.预备知识
前面课程展示了turtulesim
包的安装,这里会用到.
老规矩,别忘记在新打开终端source一下配置文件(环境变量)(个人,如果ros2
的环境变量写到启动脚本.bashrc
里面,没必要再source一次了).
3.步骤
3.1 ros2 run
指令ros2 run
从包中启动一个可执行文件
ros2 run <package_name> <executable_name>
(例如)新开一个终端窗口,输入如下指令,启动小乌龟仿真:
ros2 run turtlesim turtlesim_node
小乌龟仿真窗口启动,正如前面课程所示
这里,包的名字是turtlesim
,可执行文件名字是turtlesim_node
我们还不知节点的名字,然而,你可以使用指令ros2 node list
来找节点名字
3.2 ros2 node list
ros2 node list指令可以告诉你所有运行中的节点名字.当你想使用一个节点时或者当你系统跑着一些节点并且需要跟踪时,这指令是非常有用的.
当turtlesim
在终端运行中,新开一个终端输入如下指令:
ros2 node list
终端会返回一个节点名字:
/turtlesim
新开另一个终端,启动键盘控制节点:
ros2 run turtlesim turtle_teleop_key
这里,我们可以发现包名字是turtlesim
,可执行名字是turtle_teleop_key
回到运行ros2 node list
的终端,再次运行,你这时可以看到两个正在运行的节点名字
/turtlesim
/teleop_turtle
3.2.1 再映射
再映射(https://design.ros2.org/articles/ros_command_line_arguments.html#name-remapping-rules
)可以使你重新分配默认节点属性,例如节点名字,话题名字,服务名字等等,重新指定参数.前面课程(第二节),使用再映射指令turtle_teleop_key
更改所控制的默认小乌龟.
现在,我们重新分配/turtlesim
包节点名字.在新终端输入如下指令:
ros2 run turtlesim turtlesim_node --ros-args --remap __node:=my_turtle
由于你使用ros2 run
重新运行一个turtlesim
,另一个小乌龟仿真窗口会打开.但回到运行ros2 node list
指令窗口,然后再次运行该指令,你会发现有三个节点名字(前面启动一个小乌龟仿真节点和键盘控制节点).
/turtlesim
/teleop_turtle
/my_turtle
3.3 ros2 node info
现在你知道节点名字了,也可以通过下面指令来了解节点更多信息:
ros2 node info <node_name>
为了了解最新开启的my_turtle
节点,运行下面治指令:
ros2 node info /my_turtle
ros2 node info
指令返回的是与节点交互所涉及的订阅者,发布器,服务,动作(ros关系图)的列表.输入例如:
/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
Services:
/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
/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
Action Servers:
/turtle1/rotate_absolute: turtlesim/action/RotateAbsolute
Action Clients:
现在,尝试对节点/teleop_turtle
使用相同指令,可以理解其的关系网络不同于my_turtle
节点的.
在接下来课程,你将会学习更多ros
概念关系图.
4.总结
节点是功能ros2
基元,在机器人系统里面负责单一模块功能作用.
在本课程,通过运行中执行文件turtlesim_node
和turtle_teleop_key
,启动turtlesim
包中的节点.
你学会了使用ros2 node list
来获取活动节点的名字,使用ros2 node info
指令去深入了解某个节点.对于一个复杂真实的机器人系统,这些工具用在了解数据流显得至关重要.
5.下一步
既然你了解了ros2节点,可以开始话题课程学习.话题是一种节点交流的方式.
6.相关内容
这个概念(https://docs.ros.org/en/foxy/Concepts.html#conceptshome
)页面可提供关于节点更多细节信息.
个人认为重点:
node节点可理解为一个负责某一功能,可以进行交流的个体.
ros2 run <package_name> <executable_name> #启动一个执行文件
ros2 node list #罗列所有节点
ros2 run turtlesim turtlesim_node --ros-args --remap __node:=my_turtle #映射节点
ros2 node info <node_name> #查看节点详细信息
其他
这个教程实操是没有碰到复现失败情况.
这课程是在等毕业证那十几天搞的,室友问,现在在线翻译这么强大,为啥还在这里瞎折腾呢?我说,我的目地是好好认真看一下,了解一下,自己折腾,目前是我想到最好的办法来获得最佳效果,即使这翻译有点别扭,哈哈哈.
#####################
不积硅步,无以至千里
好记性不如烂笔头
感觉有点收获的话,麻烦大大们点赞收藏哈
以上是关于ROS2学习笔记3--认识ros2节点node的主要内容,如果未能解决你的问题,请参考以下文章