当前位置: 首页 > news >正文

ROS 2官方文档(基于humble版本)学习笔记(二)

ROS 2官方文档(基于humble版本)学习笔记(二)

      • 理解节点(node)
        • ros2 run
        • ros2 node list
        • 重映射(remap)
        • ros2 node info
      • 理解话题(topic)
        • rqt_graph
        • ros2 topic list
        • ros2 topic echo
        • ros2 topic info
        • ros2 interface show
        • ros2 topic pub
        • ros2 topic hz
        • Clean up

今天继续总结CLI 工具章的学习

理解节点(node)

ROS 2图是一个ROS 2元件同时处理数据的网络,如果将它们全部映射并可视化它们,则包括所有可执行文件以及它们之间的连接。
Alt
ROS中的每个节点(node)都应该只为了单个的、模块化的目的而设计的,例如控制车轮电动机或从激光测距仪发布传感器数据。每个节点都可以通过主题(topic),服务(service),动作(action)或参数(parameters)从其他节点发送和接收数据。在ROS 2中,一个可执行程序(c++或python程序)可以包含一个或多个节点(node)。

ros2 run

此命令启动一个包中的可执行程序:

ros2 run <package_name> <executable_name>

ros2 node list

此命令展示所有运行中的节点的名字。常用来查找你想要交互或跟踪的节点。

ros2 node list

重映射(remap)

此参数用来重新定义默认的节点属性(比如节点名,话题名,服务名)为用户指定的值。

ros2 node info

此命令用于获取节点更多信息。通常包括订阅消息者们(subscriber),发布消息者(publiser),服务(service)和动作(action)。

ros2 node info <node_name>

/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

理解话题(topic)

话题是ROS图的一个至关重要的元素,扮演着节点间用于交换信息的总线的角色。
Alt

rqt_graph

在一个终端执行rqt_graph或者执行rqt后选择菜单Plugins > Introspection > Node Graph
Alt
上图描述了/turtlesim节点和/teleop_turtle节点如何在一个话题上通信的。/teleop_turtle节点发布数据到/turtle1/cmd_vel话题,/turtlesim节点订阅这个话题来接收数据。

ros2 topic list

此命令用于显示当前活动的所有话题。加上-t参数会在[]中显示话题的类型。

hugo@vm-ubuntu1:~$ ros2 topic list -t
/parameter_events [rcl_interfaces/msg/ParameterEvent]
/rosout [rcl_interfaces/msg/Log]
/turtle1/cmd_vel [geometry_msgs/msg/Twist]
/turtle1/color_sensor [turtlesim/msg/Color]
/turtle1/pose [turtlesim/msg/Pose]

ros2 topic echo

此命令用来查看正在被发布的话题数据。
如下图所示,刚开始没有输出任何数据,他在等待/teleop_turtle发布信息。在运行turtle_teleop_key的终端按键控制乌龟运动,这时echo的终端就会输出信息了。

ros2 topic echo <topic_name>

Alt
在rqt_graph界面去掉工具栏中Hide:Debug前面的勾,就可以看到以/_ros2cli_开头的一个节点就是刚才执行的echo命令。
Alt

ros2 topic info

此命令也可以显示话题的类型、订阅者数量和发布者数量。

hugo@vm-ubuntu1:~$ ros2 topic info /turtle1/cmd_vel
Type: geometry_msgs/msg/Twist
Publisher count: 1
Subscription count: 2

ros2 interface show

此命令用于查看消息类型的具体定义。

hugo@vm-ubuntu1:~$ ros2 interface show geometry_msgs/msg/Twist
# This expresses velocity in free space broken into its linear and angular parts.Vector3  linearfloat64 xfloat64 yfloat64 z
Vector3  angularfloat64 xfloat64 yfloat64 z

ros2 topic pub

此命令用于直接发布一个话题消息。
–once 是可选参数,意思是”发布一个消息然后退出“。

ros2 topic pub <topic_name> <msg_type> '<args>'

Alt
–rate 1参数表示以1Hz的稳定频率发布命令。效果如下图:
Alt
可以使用如下命令查看乌龟的位置信息,可以看出是由turtlesim发布,echo命令订阅的。

ros2 topic echo /turtle1/pose

Alt

ros2 topic hz

此命令用来查看正在发布数据的频率。

ros2 topic hz /turtle1/pose

Alt
可以在一个终端执行刚才的发布/turtle1/cmd_vel,在另一个终端打印发布频率。
Alt

Clean up

在每个命令行窗口执行Ctrl+C终结他们。

http://www.lryc.cn/news/149898.html

相关文章:

  • excel中公式结合实际的数据提取出公式计算的分支
  • 3D模型优化实战:LowPoly、纹理烘焙及格式转换
  • genome comparison commend 2 MCMCtree
  • Linux安装JenkinsCLI
  • Midjourney学习(一)prompt的基础
  • 12 权重衰退
  • 简化测试流程,提供卓越服务:TestComplete+Salesforce满足不断发展的企业的需求
  • kafka 命令脚本说明以及在java中使用
  • Qt应用开发(基础篇)——文件选择对话框 QFileDialog
  • 图像OCR转文字,验证码识别技术太疯狂-UI软件自动化
  • Docker:自定义镜像
  • 【Nginx22】Nginx学习:FastCGI模块(四)错误处理及其它
  • 轮毂电机单位换算-米每秒/转每分
  • 博流RISC-V芯片BL616开发环境搭建
  • Weblogic漏洞(三)之 Weblogic 弱口令、任意文件读取漏洞
  • 15 mysql tiny/meidum/long blob/text 的数据存储
  • 【方案】基于视频与AI智能分析技术的城市轨道交通视频监控建设方案
  • mysql8 修改数据存储位置
  • Qt QSlider样式
  • Redis五大数据类型
  • chatGPT训练过程
  • 原神角色数据分析项目说明文档
  • 【Qt】QML-04:自定义变量(属性)property
  • 基于Cadence Allegro无盘设计操作流程
  • 微信小程序 - 2023年最新版手机号快捷登录详细教程
  • Spring_Bean的自动装配
  • 使用boost::geometry::union_ 合并边界(内、外)- 方案一
  • 面向高速公路车辆切入场景的自动驾驶测试用例生成方法
  • Java:SpringBoot整合SSE(Server-Sent Events)实现后端主动向前端推送数据
  • cmd命令行设置 windows 设置环境变量