【ROS2】 命令行工具速查手册:从入门到日常调试必备
【ROS2】 命令行工具速查手册:从入门到日常调试必备
在 ROS2 的开发与调试过程中,命令行工具(CLI)是我们最常用的利器。与 ROS1 不同,ROS2 将所有命令行工具统一整合到了ros2主命令及其子命令下,这使得命令结构更加清晰、规范。
为了方便大家在日常开发中快速查阅,本文将 ROS2 常用命令按功能模块进行了分类整理,建议收藏备用!
🚀 一、 节点运行与工程启动
这是日常开发中最基础的操作,主要用于启动节点或整个机器人系统。
ros2 run <pkg> <node>:运行单个节点。ros2 launch <pkg> <launch_file>:启动 Launch 文件,一次性运行多个节点及配置参数。ros2 pkg executables <pkg>:查看某个功能包下包含哪些可执行节点。
🔍 二、 系统状态查看与调试
当系统出现通信异常或数据流问题时,以下命令是你的“排查神器”。
1. 节点管理 (Node)
ros2 node list:列出当前系统中所有活跃的节点。ros2 node info <node_name>:查看某个节点的详细信息,包括它订阅/发布的话题、提供/调用的服务及动作等。
2. 话题通信 (Topic)
ros2 topic list:列出所有当前活跃的话题。(💡进阶:加上-t参数可同时显示消息类型)ros2 topic echo <topic_name>:实时打印话题中传输的消息内容,调试传感器数据必备。ros2 topic hz <topic_name>:查看话题消息的发布频率(Hz)。ros2 topic pub <topic_name> <msg_type> "<args>":手动向指定话题发布测试消息,用于脱离代码进行硬件或算法测试。ros2 topic info <topic_name>:查看话题的详细信息,如发布者数量、订阅者数量及消息类型。
3. 服务与动作 (Service & Action)
ros2 service list/ros2 action list:列出当前系统中所有可用的服务或动作。ros2 service call <service_name> <type> "<args>":在命令行手动调用服务,快速验证服务端逻辑。ros2 action send_goal <action_name> <type> "<args>":向动作服务器发送目标,测试长耗时任务(如导航、机械臂抓取)。
⚙️ 三、 参数配置 (Parameters)
ROS2 引入了强大的动态参数系统,允许在运行时查看或修改节点的配置。
ros2 param list <node_name>:查看指定节点声明的所有参数。ros2 param get <node_name> <param_name>:获取某个参数的当前运行值。ros2 param set <node_name> <param_name> <value>:动态设置或修改参数值(无需重启节点)。ros2 param dump <node_name>:将节点当前的所有参数导出,通常重定向保存为 YAML 文件,方便后续复用配置。
💾 四、 数据记录与回放 (Bag)
用于录制传感器数据进行离线分析、算法回放测试或问题复现。
ros2 bag record <topic_name>:录制指定话题的数据。(💡进阶:加上-a参数可录制系统中所有话题)ros2 bag play <bag_file>:回放录制好的数据包。ros2 bag info <bag_file>:查看数据包包含的话题列表、消息数量和录制时长等元信息。
🛠️ 五、 接口与环境诊断
ros2 interface show <msg_type>:查看消息、服务或动作的具体字段结构。例如:ros2 interface show geometry_msgs/msg/Twist。ros2 doctor:一键检查 ROS2 环境配置、网络连通性和底层 DDS 是否存在潜在问题,是解决“节点互相找不到”等玄学问题的第一步。
💡 实用小贴士
忘记命令怎么办?
如果你忘记了某个命令的具体用法或参数,可以在任何命令后加上-h参数。例如:ros2 topic -h或ros2 topic echo -h,系统会输出详细的帮助文档和参数说明。
📝 总结
熟练掌握以上 ROS2 命令行工具,能够极大地提升你的开发效率与问题排查速度。建议在日常开发中多使用ros2 topic echo和ros2 node info来验证数据流和节点状态。
如果这篇速查手册对你有帮助,欢迎点赞、收藏、关注!后续将持续更新 ROS2 开发实战技巧。👇
