欢迎光临
我们一直在努力

史上最全 ROS2 常用命令保姆级教程:节点、话题、消息结构、参数、服务和动作一篇讲透

目录

摘要

一、ROS2 常用命令整体认识

1.1ROS2 不是单个程序,而是多个节点组成的系统

1.2 ROS2 常用命令分类

1.3 哪些命令最常用?

(1)如果只讲话题通信

(2)如果扩展到完整 ROS2 工程开发

二、节点与话题调试命令:ros2 node 和 ros2 topic

2.0 先理解节点和话题的关系

(1)节点是干活的程序,话题是传数据的通道

(2)Publisher 把消息发布到话题,Subscriber 从话题接收消息

(3)话题名和消息类型必须一致

(4)一个节点可以同时发布或订阅多个话题

(5)节点和话题总结表格

2.1 ros2 node list:查看当前有哪些节点

2.2 ros2 node info:查看某个节点详细信息

2.3 ros2 topic list:查看当前有哪些话题

2.4 ros2 topic info:查看话题消息类型

2.5 ros2 topic echo:查看话题实时数据

2.6 手动发布话题消息

(1)使用 ros2 topic pub

(2)只发布一次

2.7 ros2 topic hz:查看话题发布频率

2.8 ros2 topic 常用命令总结

三、消息结构查看命令:ros2 interface

3.1 ros2 interface 用来查看消息、服务、动作结构

3.2 查看消息字段结构:ros2 interface show

(1)Twist 字段结构

(2)继续查看 Vector3 字段结构

3.4 ros2 interface list:查看系统中所有接口

3.5 ros2 interface 常用命令总结

四、工程运行与参数调试命令:ros2 run、ros2 launch、ros2 param

4.1 ros2 run:运行单个节点

4.2 ros2 pkg executables:查看某个包有哪些可执行节点

4.3 ros2 launch:启动复杂工程

(1)为什么需要 launch?

(2)基本格式

4.4 ros2 run 和 ros2 launch 的区别

4.5 ros2 param:查看和修改参数

(1)ros2 param list 查看某个节点有哪些参数

(2)ros2 param get 查看某个参数值

(3)ros2 param set 修改参数值

(4)ros2 param dump/load 保存和加载参数

五、服务、动作与完整调试流程:ros2 service、ros2 action

5.1 ros2 service:调试服务通信

(1)ros2 service list:查看服务列表

(2)ros2 service type:查看服务类型

(3)ros2 service call:调用服务

5.2 ros2 action:调试动作通信

(1)ros2 action list :查看 Action 列表:

(2)ros2 action info :查看 Action 信息:

(3)ros2 action send_goal :发送 Action 目标:

六、本文总结

6.1 常用命令最终对比表

6.2 一句话记忆

6.3 ROS2 完整调试流程总结

(1)第一步,查看节点是否启动:

(2)第二步,查看话题是否存在:

(3)第三步,查看话题类型和连接数量:

(4)第四步,查看消息字段结构:

(5)第五步,查看实时数据:

(6)第六步,手动发布消息测试:

(7)第七步,查看节点参数:

(8)第八步,运行单个节点测试:

(9)第九步,启动完整工程:


摘要

本篇是 ROS2 保姆级入门到工程实战 专栏中的第三篇文章。

前两篇文章已经分别讲解了 ROS2 常见消息类型,以及 Publisher 发布器、Subscriber 订阅器的基本写法。

第一篇:ROS2 常见消息类型保姆级教程

ROS2 常见消息类型保姆级教程-CSDN博客https://blog.csdn.net/m0_58954356/article/details/161693378?spm=1001.2014.3001.5501第二篇:ROS2 话题通信实战:消息对象、Publisher 发布器与 Subscriber 订阅器保姆级教程

ROS2 话题通信实战:消息对象、Publisher 发布器与 Subscriber 订阅器保姆级教程-CSDN博客https://blog.csdn.net/m0_58954356/article/details/161702288?spm=1001.2014.3001.5501这一篇开始讲 ROS2 话题通信中非常重要的一部分:ROS2 常用命令。

在 ROS2 学习和调试过程中,最常用的并不是只会写代码,而是要会通过终端命令查看系统状态。例如:

  • 当前有哪些节点?
  • 当前有哪些话题?
  • 某个话题是什么消息类型?
  • 消息里面有哪些字段?
  • 话题里有没有实时数据?
  • 如何运行一个节点?
  • 如何启动一个 launch 工程?
  • 如何查看和修改参数?
  • 如何调用 service?
  • 如何发送 action 目标?
  • 本文将围绕 ros2 node、ros2 topic、ros2 interface、ros2 run、ros2 launch、ros2 param、ros2 service、ros2 action 等常用命令,系统整理 ROS2 开发中最常见的终端调试方法,帮助初学者从“只会写代码”逐步过渡到“会查看、会分析、会调试完整 ROS2 工程”。


    一、ROS2 常用命令整体认识

    1.1ROS2 不是单个程序,而是多个节点组成的系统

    普通 C++ 程序运行时,通常只关注一个可执行文件。

    但是 ROS2 不一样。

    ROS2 系统中经常会同时运行多个节点,例如:

  • 键盘控制节点
  • 底盘控制节点
  • 雷达驱动节点
  • IMU 节点
  • 里程计节点
  • TF 坐标变换节点
  • 导航节点
  • 建图节点
  • 这些节点之间通过:

  • Topic 话题
  • Service 服务
  • Action 动作
  • Parameter 参数
  • TF 坐标变换
  • 进行通信和协作。

    所以 ROS2 调试时不能只看代码,还要会查看整个系统当前状态。

    这些问题都需要通过 ROS2 命令来排查。


    1.2 ROS2 常用命令分类

    ROS2 中常用命令可以先分成下面几类:

    命令主要作用常见用途
    ros2 node 查看节点 查看当前有哪些节点、某个节点有哪些话题
    ros2 topic 查看和调试话题 查看话题列表、话题类型、实时数据、手动发布消息
    ros2 interface 查看接口结构 查看消息、服务、动作里面有哪些字段
    ros2 service 调试服务通信 查看服务列表、调用服务
    ros2 action 调试动作通信 查看动作列表、发送动作目标
    ros2 param 查看和修改参数 查看节点参数、修改参数
    ros2 run 运行单个节点 运行某个功能包里的某个可执行节点
    ros2 launch 启动复杂工程 一次启动多个节点、参数、配置和模型

    总结一下:

    ros2 node 看节点
    ros2 topic 看话题
    ros2 interface 看消息结构
    ros2 service 看服务
    ros2 action 看动作
    ros2 param 看参数
    ros2 run 跑单个节点
    ros2 launch 启动一套工程


    1.3 哪些命令最常用?

    (1)如果只讲话题通信

    如果只围绕 Publisher 和 Subscriber 话题通信,那么最常用的是:

    ros2 topic
    ros2 interface

    其中:

    ros2 topic

    主要用于查看和调试话题通信。

    例如:

    ros2 topic list
    ros2 topic info /cmd_vel
    ros2 topic echo /cmd_vel
    ros2 topic pub /cmd_vel …

    而:

    ros2 interface

    主要用于查看消息结构。

    例如:

    ros2 interface show geometry_msgs/msg/Twist


    (2)如果扩展到完整 ROS2 工程开发

    如果是完整 ROS2 工程开发,还会经常用到:

    ros2 node
    ros2 run
    ros2 launch
    ros2 param
    ros2 service
    ros2 action

    例如:

    ros2 node list
    ros2 run turtlesim turtlesim_node
    ros2 launch nav2_bringup navigation_launch.py
    ros2 param list
    ros2 service list
    ros2 action list


    二、节点与话题调试命令:ros2 node 和 ros2 topic

    2.0 先理解节点和话题的关系

    (1)节点是干活的程序,话题是传数据的通道

    在 ROS2 中,节点 Node 可以理解为一个具体干活的程序单元。

    比如:

  • 键盘控制节点
  • 速度发布节点
  • 底盘控制节点
  • 雷达节点
  • IMU 节点
  • 里程计节点
  • 导航节点
  • 每个节点负责完成自己的功能。

    例如:

  • 键盘控制节点负责读取键盘输入;
  • 速度发布节点负责发布速度命令;
  • 底盘控制节点负责接收速度并控制电机;
  • 雷达节点负责发布激光雷达数据;
  • 里程计节点负责发布机器人位置和速度信息。
  • 但是节点之间并不是直接互相调用函数,而是通过 话题 Topic 进行通信。

    可以简单理解为:

  • 节点负责处理功能;
  • 话题负责传输数据。

  • (2)Publisher 把消息发布到话题,Subscriber 从话题接收消息

    在话题通信中,一般有两个角色:

    Publisher 发布者
    Subscriber 订阅者

    例如速度控制话题:

    /cmd_vel

    发布器节点会把速度消息发布到 /cmd_vel:

    Publisher 节点 —> /cmd_vel 话题

    订阅器节点会从 /cmd_vel 中接收速度消息:

    /cmd_vel 话题 —> Subscriber 节点

    合起来就是:

    Publisher 节点 —> Topic 话题 —> Subscriber 节点

    例如:

    键盘控制节点 —> /cmd_vel —> 底盘控制节点

    这表示:

  • 键盘控制节点发布速度命令;
  • /cmd_vel 负责传递速度消息;
  • 底盘控制节点订阅 /cmd_vel 并控制机器人运动。

  • (3)话题名和消息类型必须一致

    节点之间想要通过话题正常通信,必须满足两个条件:

    1. 话题名一致 2. 消息类型一致

    例如发布器写的是:

    this->create_publisher<geometry_msgs::msg::Twist>("/cmd_vel", 10);

    订阅器也必须订阅同一个话题:

    this->create_subscription<geometry_msgs::msg::Twist>("/cmd_vel", 10, callback);

    这里有两个关键点:

    话题名:/cmd_vel
    消息类型:geometry_msgs::msg::Twist

    如果发布器发布到 /cmd_vel,订阅器却订阅 /cmd_vel2,那么收不到消息。

    如果发布器发布的是 geometry_msgs::msg::Twist,订阅器却用 std_msgs::msg::String 接收,也无法正常通信。


    (4)一个节点可以同时发布或订阅多个话题

    一个 ROS2 节点并不一定只对应一个话题。

    一个节点可以:

  • 发布一个话题;
  • 订阅一个话题;
  • 同时发布多个话题;
  • 同时订阅多个话题;
  • 既发布话题,又订阅话题。
  • 例如一个机器人底盘节点可能会:

    订阅 /cmd_vel,接收速度控制命令;
    发布 /odom,输出里程计信息;
    发布 /tf,输出坐标变换关系。

    也就是说:

  • 节点是功能单元;
  • 话题是通信通道;
  • 消息类型规定了话题里传输的数据格式。

  • (5)节点和话题总结表格

    概念作用示例
    Node 节点 执行具体功能的程序单元 键盘节点、底盘节点、雷达节点
    Topic 话题 节点之间传输数据的通道 /cmd_vel、/odom、/scan
    Message 消息 话题中传输的数据格式 Twist、Odometry、LaserScan
    Publisher 发布器 向话题发送消息 发布 /cmd_vel
    Subscriber 订阅器 从话题接收消息 订阅 /cmd_vel


    2.1 ros2 node list:查看当前有哪些节点

    最常用命令是:

    ros2 node list

    它可以查看当前 ROS2 系统中正在运行的节点。

    例如可能输出:

    /cmd_vel_publisher
    /cmd_vel_subscriber
    /turtlesim
    /robot_state_publisher

    这说明当前系统中有这些节点正在运行。

    如果你写了一个节点,但是 ros2 node list 里面看不到,通常说明:

  • 程序没有运行
  • 节点启动失败
  • 环境没有 source
  • 节点名字写错了
  • 程序运行后立刻退出了

  • 2.2 ros2 node info:查看某个节点详细信息

    例如查看 /cmd_vel_publisher 节点信息:

    ros2 node info /cmd_vel_publisher

    可能会看到类似信息:

    /cmd_vel_publisher
    Subscribers:

    Publishers:
    /cmd_vel: geometry_msgs/msg/Twist
    /parameter_events: rcl_interfaces/msg/ParameterEvent
    /rosout: rcl_interfaces/msg/Log

    Service Servers:
    /cmd_vel_publisher/describe_parameters
    /cmd_vel_publisher/get_parameters
    /cmd_vel_publisher/set_parameters

    这里重点看:

    Publishers
    Subscribers
    Service Servers

    如果一个节点是发布器节点,就应该能在 Publishers 下面看到它发布的话题。

    如果一个节点是订阅器节点,就应该能在 Subscribers 下面看到它订阅的话题。


    2.3 ros2 topic list:查看当前有哪些话题

    最常用命令是:

    ros2 topic list

    如果机器人或仿真环境已经启动,可能会看到:

    /cmd_vel
    /odom
    /scan
    /imu
    /tf
    /tf_static

    这些都是移动机器人中非常常见的话题。

    话题名常见含义
    /cmd_vel 速度控制话题
    /odom 里程计话题
    /scan 二维激光雷达话题
    /imu IMU 数据话题
    /tf 动态坐标变换话题
    /tf_static 静态坐标变换话题

    2.4 ros2 topic info:查看话题消息类型

    例如查看 /cmd_vel 话题:

    ros2 topic info /cmd_vel

    可能会看到:

    Type: geometry_msgs/msg/Twist
    Publisher count: 1
    Subscription count: 1

    其中:

    Type: geometry_msgs/msg/Twist

    表示 /cmd_vel 话题使用的是 Twist 消息。

    Publisher count: 1

    表示当前有 1 个发布者。

    Subscription count: 1

    表示当前有 1 个订阅者。

    如果发布器和订阅器通信不成功,可以先看这里。

    如果:

    Publisher count: 0

    说明没有节点正在发布这个话题。

    如果:

    Subscription count: 0

    说明没有节点正在订阅这个话题。


    2.5 ros2 topic echo:查看话题实时数据

    如果想查看 /cmd_vel 话题里面正在传输的数据,可以输入:

    ros2 topic echo /cmd_vel

    可能会看到:

    linear:
    x: 0.1
    y: 0.0
    z: 0.0
    angular:
    x: 0.0
    y: 0.0
    z: 0.0

    这说明当前 /cmd_vel 中正在发布一条速度消息。

    它对应代码中的:

    vel_cmd.linear.x = 0.1;
    vel_cmd.angular.z = 0.0;

    也就是说,ros2 topic echo 可以直接看到话题中实时流动的数据。


    2.6 手动发布话题消息

    (1)使用 ros2 topic pub

    除了写 C++ 程序发布消息,也可以直接在终端里手动发布消息。

    例如发布一条速度消息:

    ros2 topic pub /cmd_vel geometry_msgs/msg/Twist "{linear: {x: 0.2, y: 0.0, z: 0.0}, angular: {x: 0.0, y: 0.0, z: 0.0}}"

    这表示向 /cmd_vel 发布一条 Twist 消息。

    其中:

    linear.x = 0.2

    表示机器人向前运动。

    angular.z = 0.0

    表示机器人不旋转。


    (2)只发布一次

    如果只想发布一次,可以加上:

    –once

    例如:

    ros2 topic pub –once /cmd_vel geometry_msgs/msg/Twist "{linear: {x: 0.2}, angular: {z: 0.0}}"

    如果想让机器人停止,可以发布零速度:

    ros2 topic pub –once /cmd_vel geometry_msgs/msg/Twist "{linear: {x: 0.0}, angular: {z: 0.0}}"

    实际机器人控制中,想让机器人停止,最好主动发布零速度消息,而不是直接关闭程序。


    2.7 ros2 topic hz:查看话题发布频率

    有时候我们不仅想知道话题有没有数据,还想知道它的发布频率。

    可以使用:

    ros2 topic hz /cmd_vel

    如果是雷达话题,可以查看:

    ros2 topic hz /scan

    它会显示话题数据发布频率。

    例如:

    average rate: 10.000

    表示该话题大约以 10Hz 的频率发布。

    这个命令在调试传感器时非常有用,比如:

    • 雷达数据是否稳定?
    • IMU 是否在持续发布?
    • 相机帧率是否正常?
    • 里程计频率是否符合预期?

    2.8 ros2 topic 常用命令总结

    命令作用示例
    ros2 topic list 查看当前有哪些话题 ros2 topic list
    ros2 topic info

    查看话题类型、

    发布者数量、订阅者数量

    ros2 topic info /cmd_vel
    ros2 topic echo 查看话题实时数据 ros2 topic echo /cmd_vel
    ros2 topic pub 手动发布话题消息 ros2 topic pub –once /cmd_vel geometry_msgs/msg/Twist "{linear: {x: 0.2}}"
    ros2 topic hz 查看话题发布频率 ros2 topic hz /scan

    三、消息结构查看命令:ros2 interface

    3.1 ros2 interface 用来查看消息、服务、动作结构

    ROS2 中不只有消息,还有服务和动作。

    它们都属于 interface,也就是接口。

    常见接口包括:

  • Message 消息
  • Service 服务
  • Action 动作
  • 所以 ros2 interface 可以查看:

  • 某个消息里面有哪些字段
  • 某个服务的请求和响应是什么
  • 某个动作的目标、结果、反馈是什么

  • 3.2 查看消息字段结构:ros2 interface show

    (1)Twist 字段结构

    例如想知道 Twist 里面有什么字段,可以输入:

    ros2 interface show geometry_msgs/msg/Twist

    通常会看到:

    Vector3 linear
    Vector3 angular

    这说明 Twist 里面有两个成员:

    linear
    angular

    它们都是 Vector3 类型。


    (2)继续查看 Vector3 字段结构

    因为 Twist 里面的 linear 和 angular 都是 Vector3 类型,所以继续查看:

    ros2 interface show geometry_msgs/msg/Vector3

    通常会看到:

    float64 x
    float64 y
    float64 z

    所以最终在 C++ 代码里才可以写:

    vel_cmd.linear.x
    vel_cmd.linear.y
    vel_cmd.linear.z

    vel_cmd.angular.x
    vel_cmd.angular.y
    vel_cmd.angular.z

    也就是说:

    vel_cmd.linear.x

    不是随便写出来的,而是由消息结构决定的。


    3.4 ros2 interface list:查看系统中所有接口

    可以使用:

    ros2 interface list

    这个命令会列出当前 ROS2 环境中所有接口,包括:

    • 消息message 接口
    • 服务service 接口
    • 动作action 接口

    如果只想查找 geometry_msgs 相关接口,在 Linux 中可以写:

    ros2 interface list | grep geometry_msgs

    如果是在 Windows PowerShell 中,可以写:

    ros2 interface list | Select-String geometry_msgs

    可能会看到:

    geometry_msgs/msg/Twist
    geometry_msgs/msg/Pose
    geometry_msgs/msg/PoseStamped
    geometry_msgs/msg/Point
    geometry_msgs/msg/Quaternion
    geometry_msgs/msg/Vector3
    geometry_msgs/msg/TransformStamped


    3.5 ros2 interface 常用命令总结

    命令作用示例
    ros2 interface list 查看所有接口 ros2 interface list
    ros2 interface show 查看接口字段结构 ros2 interface show geometry_msgs/msg/Twist
    ros2 interface package 查看某个包里的接口 ros2 interface package geometry_msgs
    ros2 interface packages 查看有哪些接口包 ros2 interface packages

    其中初学最常用的是:

    ros2 interface show geometry_msgs/msg/Twist

    它能帮助你判断字段应该怎么写。


    四、工程运行与参数调试命令:ros2 run、ros2 launch、ros2 param

    4.1 ros2 run:运行单个节点

    ros2 run 用来运行某个功能包中的某个可执行节点。

    基本格式是:

    ros2 run 功能包名 可执行文件名

    例如:

    ros2 run turtlesim turtlesim_node

    表示运行 turtlesim 功能包中的 turtlesim_node 节点。

    再比如:

    ros2 run turtlesim turtle_teleop_key

    表示运行键盘控制节点。

    如果是自己写的功能包,也可以这样运行:

    ros2 run my_robot_pkg cmd_vel_publisher

    这里:

    my_robot_pkg

    是功能包名。

    cmd_vel_publisher

    是可执行节点名。


    4.2 ros2 pkg executables:查看某个包有哪些可执行节点

    有时候不知道某个包里有哪些节点可以运行,可以输入:

    ros2 pkg executables turtlesim

    可能会看到:

    turtlesim draw_square
    turtlesim mimic
    turtlesim turtle_teleop_key
    turtlesim turtlesim_node

    然后就可以使用:

    ros2 run turtlesim turtlesim_node

    运行对应节点。

    这个命令虽然不是你前面表格里的核心命令,但实际开发中非常实用。


    4.3 ros2 launch:启动复杂工程

    (1)为什么需要 launch?

    ros2 run 一次只能运行一个节点。

    但是实际机器人系统中,往往需要同时启动多个节点,例如:

  • 机器人模型发布节点
  • 雷达节点
  • IMU 节点
  • 里程计节点
  • TF 节点
  • 导航节点
  • RViz 可视化节点
  • 如果每个节点都单独开一个终端运行,会非常麻烦。

    这时就需要:

    ros2 launch


    (2)基本格式

    ros2 launch 的基本格式是:

    ros2 launch 功能包名 launch文件名

    例如:

    ros2 launch my_robot_bringup robot.launch.py

    或者导航中常见:

    ros2 launch nav2_bringup navigation_launch.py

    它的作用是:

    一次性启动多个节点,并加载参数、配置文件和相关资源。


    4.4 ros2 run 和 ros2 launch 的区别

    命令作用适合场景
    ros2 run 运行单个节点 测试某个节点、单独运行一个程序
    ros2 launch 启动多个节点组成的系统 启动机器人完整工程、导航、建图、仿真

    可以简单理解为:

  • ros2 run 适合单点测试;
  • ros2 launch 适合整套系统启动。

  • 4.5 ros2 param:查看和修改参数

    (1)ros2 param list 查看某个节点有哪些参数

    ROS2 节点通常会有参数,例如:

  • 速度限制
  • 坐标系名称
  • 是否使用仿真时间
  • 雷达配置
  • 导航参数
  • 控制器参数
  • 查看所有节点参数可以用:

    ros2 param list

    如果想看某个节点的参数,可以看到类似:

    /turtlesim:
    background_b
    background_g
    background_r
    use_sim_time


    (2)ros2 param get 查看某个参数值

    例如查看 /turtlesim 节点的背景颜色参数:

    ros2 param get /turtlesim background_r

    可能输出:

    Integer value is: 69


    (3)ros2 param set 修改参数值

    例如修改背景颜色:

    ros2 param set /turtlesim background_r 255

    如果参数支持动态修改,就会生效。


    (4)ros2 param dump/load 保存和加载参数

    保存参数:

    ros2 param dump /turtlesim

    加载参数:

    ros2 param load /turtlesim params.yaml

    在 Nav2、机器人底盘、传感器驱动等工程中,参数文件非常重要。


    五、服务、动作与完整调试流程:ros2 service、ros2 action

    5.1 ros2 service:调试服务通信

    Topic 话题适合连续数据,比如:

  • 速度
  • 雷达
  • IMU
  • 里程计
  • 图像
  • Service 服务更像是一次请求和一次响应。

    例如:

  • 请求清除地图
  • 请求保存地图
  • 请求重置机器人
  • 请求生成路径
  • 请求某个计算结果
  • 它的通信模式是:

  • 客户端发送请求
  • 服务端返回响应

  • (1)ros2 service list:查看服务列表

    查看当前有哪些服务:

    ros2 service list

    可能会看到:

    /clear
    /reset
    /spawn
    /turtle1/set_pen
    /turtlesim/get_parameters


    (2)ros2 service type:查看服务类型

    如果想查看服务类型,可以用:

    ros2 service type /spawn

    可能输出:

    turtlesim/srv/Spawn


    (3)ros2 service call:调用服务

    服务调用格式通常是:

    ros2 service call 服务名 服务类型 "请求内容"

    例如 turtlesim 中生成一只新乌龟:

    ros2 service call /spawn turtlesim/srv/Spawn "{x: 2.0, y: 2.0, theta: 0.0, name: 'turtle2'}"

    这表示向 /spawn 服务发送请求,请求生成一个新的 turtle。


    5.2 ros2 action:调试动作通信

    Action 动作适合耗时任务,例如:

  • 导航到某个目标点
  • 机械臂执行抓取动作
  • 机器人执行巡航任务
  • 路径跟踪任务
  • 和 Service 相比,Action 的特点是:

  • 可以发送目标
  • 可以持续反馈进度
  • 可以得到最终结果
  • 可以取消任务
  • 所以 Nav2 导航中经常会用到 Action。


    (1)ros2 action list :查看 Action 列表:

    ros2 action list


    (2)ros2 action info :查看 Action 信息:

    ros2 action info /navigate_to_pose


    (3)ros2 action send_goal :发送 Action 目标:

    ros2 action send_goal 动作名 动作类型 "目标内容"

    例如导航相关动作常见形式类似:

    ros2 action send_goal /navigate_to_pose nav2_msgs/action/NavigateToPose "{pose: {header: {frame_id: 'map'}, pose: {position: {x: 1.0, y: 2.0, z: 0.0}, orientation: {w: 1.0}}}}"

    这个命令比较长,初学阶段先理解它的作用即可:

    向导航系统发送一个目标点,让机器人导航过去。


    六、本文总结

    6.1 常用命令最终对比表

    命令一句话理解最常用场景
    ros2 node 查看节点 看节点是否启动、节点发布/订阅了什么
    ros2 topic 查看话题 看话题是否存在、类型是否正确、有没有数据
    ros2 interface 查看接口结构 看消息、服务、动作里面有哪些字段
    ros2 service 调试服务 查看服务、调用服务
    ros2 action 调试动作 查看动作、发送目标
    ros2 param 查看和修改参数 查看节点参数、修改运行参数
    ros2 run 运行单个节点 单独测试一个节点
    ros2 launch 启动完整工程 一次启动多个节点和配置

    6.2 一句话记忆

    ros2 node 看节点;
    ros2 topic 看话题;
    ros2 interface 看消息结构;
    ros2 service 调服务;
    ros2 action 发目标;
    ros2 param 改参数;
    ros2 run 跑单个节点;
    ros2 launch 启动整套工程。


    6.3 ROS2 完整调试流程总结

    实际项目中,如果发现程序不正常,可以按照下面顺序排查。

    (1)第一步,查看节点是否启动:

    ros2 node list

    (2)第二步,查看话题是否存在:

    ros2 topic list

    (3)第三步,查看话题类型和连接数量:

    ros2 topic info /cmd_vel

    (4)第四步,查看消息字段结构:

    ros2 interface show geometry_msgs/msg/Twist

    (5)第五步,查看实时数据:

    ros2 topic echo /cmd_vel

    (6)第六步,手动发布消息测试:

    ros2 topic pub –once /cmd_vel geometry_msgs/msg/Twist "{linear: {x: 0.2}, angular: {z: 0.0}}"

    (7)第七步,查看节点参数:

    ros2 param list

    (8)第八步,运行单个节点测试:

    ros2 run 功能包名 可执行文件名

    (9)第九步,启动完整工程:

    ros2 launch 功能包名 launch文件名

    赞(0)
    未经允许不得转载:171主机测评 » 史上最全 ROS2 常用命令保姆级教程:节点、话题、消息结构、参数、服务和动作一篇讲透
    分享到: 更多 (0)

    评论 抢沙发

    • 昵称 (必填)
    • 邮箱 (必填)
    • 网址