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

ROS2:命令行学习

ROS2(Robot Operating System 2)作为机器人开发领域的核心工具,其命令行操作是开发者与系统交互的重要桥梁。无论是启动节点、管理话题,还是调试参数、记录数据,ROS2命令行工具都提供了强大的支持。而TogetherROS是基于ROS2深度优化的,很多模块还是会复用ROS2中的功能,所有ROS2的原生功能也可以支持。本文将从整体上学习了解ROS2命令行的功能,并通过详细的示例和解释,深入分析其核心操作,全面掌握ROS2命令行的使用技巧。

ROS2命令行概览

ROS2的命令行工具基于ros2命令,它是ROS2生态系统的核心接口。通过ros2命令,开发者可以完成以下主要任务:

  1. 节点管理:启动、查看和调试节点。
  2. 话题操作:查看话题列表、监听话题消息、发布消息等。
  3. 服务操作:调用服务、查看服务列表。
  4. 参数管理:获取、设置和修改节点参数。
  5. 数据记录与回放:使用ros2 bag工具记录和回放话题数据。
  6. 系统调试:查看节点关系图、监控系统状态。
    在命令行中直接输入ros2,可以看到相关命令的使用介绍。

接下来,我们将以上一节中的publisher_member_function和subscriber_member_function为例,逐步深入分析这些功能。

启动节点

启动Publisher节点

首先,我们启动一个发布者节点:

source /opt/tros/humble/setup.bash
ros2 run examples_rclcpp_minimal_publisher publisher_member_function

其中examples_rclcpp_minimal_publisher是包名,而publisher_member_function是节点名(这里不起作用,节点名实际为minimal_publisher),这个节点会周期性地向/topic话题发布消息。

启动Subscriber节点

接下来,我们启动一个订阅者节点:

source /opt/tros/humble/setup.bash
ros2 run examples_rclcpp_minimal_subscriber subscriber_member_function

其中examples_rclcpp_minimal_subscriber是包名,而subscriber_member_function是节点名(这里不起作用,节点名实际为minimal_subscriber),这个节点会订阅/topic话题,并打印接收到的消息。

节点管理

查看节点列表

启动节点后,可以使用如下命令查看当前运行的节点:

ros2 node list

输出示例:
在这里插入图片描述

这表示当前系统中运行了两个节点:/minimal_publisher和/minimal_subscriber。

查看节点信息

通过如下命令,可以获取节点的详细信息。例如,查看发布者节点的信息:

ros2 node info /minimal_publisher

输出示例:
在这里插入图片描述

这里显示了/minimal_publisher节点的发布者和服务信息。
同样,查看订阅者节点的信息:

ros2 node info /minimal_subscriber

输出示例:
在这里插入图片描述

这里显示了/minimal_subscriber节点的订阅者和服务信息。

话题操作

查看话题列表

使用如下命令可以查看当前所有的话题:

ros2 topic list

输出示例:
在这里插入图片描述

这里列出了系统中所有活跃的话题,包括/topic。

监听话题消息

通过如下命令,可以实时查看某个话题的消息内容。例如,监听/topic话题:

ros2 topic echo /topic

输出示例:
在这里插入图片描述

这里显示了/topic话题上发布的消息内容。

发布消息

使用ros2 topic pub命令,可以手动向某个话题发布消息。例如,向/topic话题发布一条消息:

ros2 topic pub /topic std_msgs/msg/String "{data: 'Hello from CLI'}"

这行命令向/topic话题发布了一条消息,内容为Hello from CLI。在subscriber端我们可以看到,接收到了同样的消息。
在这里插入图片描述

参数管理:配置节点的行为

查看参数列表

使用如下命令可以查看某个节点的所有参数。例如,查看发布者节点的参数:

ros2 param list /minimal_publisher

输出示例:
在这里插入图片描述

获取参数值

通过命令如下,可以获取某个参数的值。例如,获取use_sim_time参数的值:

ros2 param get /minimal_publisher use_sim_time

输出示例:
在这里插入图片描述

设置参数值

使用如下命令,可以修改某个参数的值。例如,将use_sim_time参数设置为True:

ros2 param set /minimal_publisher use_sim_time True

这行命令将/minimal_publisher节点的use_sim_time参数设置为True。
在这里插入图片描述

数据记录与回放

记录话题数据

使用ros2 bag record命令可以记录指定话题的数据。例如,记录/topic话题的数据:

ros2 bag record /topic

这行命令会开始记录/topic话题上的所有消息,并将其保存到一个bag文件中。
在这里插入图片描述

查看bag信息

通过如下命令,可以查看之前记录的bag文件信息:

ros2 bag info rosbag2_2025_02_01-19_50_01

输出示例:
在这里插入图片描述

回放话题数据

通过如下命令,可以回放之前记录的bag文件:

ros2 bag play rosbag2_2025_02_01-19_16_17

这行命令会回放指定bag文件中的数据,模拟话题消息的发布。
在这里插入图片描述

打开另一个终端,使用ros2 topic echo监听/topic话题:

ros2 topic echo /topic

我们可以看到以下的输出

系统调试

查看节点关系图

使用rqt_graph工具可以可视化节点、话题和服务之间的关系:

#安装
sudo apt-get install ros-humble-rqt
sudo apt-get install ros-humble-rqt-common-plugins
#运行
rqt_graph

这个命令会打开一个图形化界面,显示当前系统中所有节点和话题的连接关系。
在这里插入图片描述

监控系统状态

通过ros2 doctor命令,可以检查系统的健康状况:

ros2 doctor

这个命令会生成一份报告,列出系统中可能存在的问题。
在这里插入图片描述

总结

通过本文的详细介绍,我们以publisher_member_function和subscriber_member_function为例,初步探索了ROS2命令行的核心功能。从节点管理到话题操作,从参数配置到数据记录,ROS2命令行工具为开发者提供了强大的支持。

相关文章:

  • AUTOSAR图解==>AUTOSAR_SWS_MemoryMapping
  • sql server分析表大小
  • 《Python星球日记》第27天:Seaborn 可视化
  • 单片机基础知识-STM32
  • [MSPM0开发]之二MSPM0G3507之IOMUX功能概述(基于driverlib库)
  • SPORT(Serial Port)接口
  • 2.4goweb加解密和jwt
  • 物美“外贸转内销”极速绿色通道正式开启
  • ubuntu20.04 openvino的yolov8推理(nncf量化)
  • 【LINUX】学习宝典
  • spring security oauth2.0的四种模式
  • 二战蓝桥杯所感
  • Manus:开启智能新时代的通用型 AI Agent
  • ckeditor4.22版本 ckfinder php8版本下,上传提示400的问题
  • service和endpoints是如何关联的?
  • 信号FFT分析
  • 解决VS2022中scanf报错C4996
  • 创建小红书批量发布笔记RPA机器人并且添加卡密管理系统
  • Python map函数介绍
  • 快速搭建WordPress网站的主题
  • aspnet网站开发实例/企业网站推广方法实验报告
  • 做外贸网站进行销售 需要纳税吗/夸克浏览器网页版入口
  • 将网页加入可信站点/手机广告推广软件
  • 义乌网站建设成都网站设计/不受限制的搜索引擎
  • 做网站还是自媒体更适合赚钱/网站页面分析作业
  • 顺德乐从有做阿里巴巴的网站吗/百度下载安装免费