ROS 2入门指南:常用命令与ROS 1核心区别总结
本文介绍了ROS 2的核心优势与常用操作指南。主要内容包括: ROS 2相比ROS 1的架构革新,采用分布式DDS通信,支持跨平台和实时性 2026年版本推荐选择ROS 2 Humble(Ubuntu 22.04) 详细的环境安装配置方法,包括一键安装和手动安装步骤 常用命令速查表,涵盖工作空间编译、节点管理、话题操作等核心功能 重点讲解了话题消息的查看方法,包括列出话题、查看类型、实时监控等实用
目录
- ROS 2入门指南:常用命令与ROS 1核心区别总结
1. 前言:为什么现在开始用ROS 2?
随着机器人技术的飞速发展,ROS(机器人操作系统)已经从学术研究的实验工具,蜕变为支撑自动驾驶、人形机器人、数字化工厂的工业级平台。2026年的今天,ROS 2已成为主流选择,而ROS 1正在逐步退出历史舞台。
核心原因:
- ROS 1 Noetic是最后一个ROS 1版本,已于2025年停止维护,不再有新功能、bug修复和安全更新
- Ubuntu 20.04也将在2025年EOL,这意味着整个ROS 1生态已进入"养老"阶段
- ROS 2 Humble支持至2027年,是当前最稳定、社区最活跃的LTS版本
- 工业界已全面转向ROS 2:特斯拉Optimus、各大自动驾驶公司的底层通信都深受ROS 2启发
本文将从零基础入门的角度,总结ROS 2的常用命令,重点讲解话题和消息内容的查看方法,并与ROS 1进行对比,帮助读者快速上手。
2. ROS 2与ROS 1的核心区别
2.1 架构革命:从Master到DDS
| 维度 | ROS 1 | ROS 2 | 核心突破 |
|---|---|---|---|
| 通信架构 | 集中式(依赖Master节点) | 分布式(基于DDS中间件) | 无单点故障,节点间自动发现 |
| 实时性 | 不支持硬实时 | 支持硬实时(QoS策略) | 可进入高精度数控和航天领域 |
| 跨平台 | 主要是Linux | Linux、Windows、macOS、RTOS(QNX) | 真正实现多平台统一 |
| 安全性 | 无内置安全 | SROS 2(集成TLS/加密认证) | 达到金融和军事级通信安全 |
| 数据传输 | 序列化开销大 | 零拷贝(Zero-copy)/共享内存 | 支持4K视频、高密度点云无损传输 |
2.2 通信模型对比
| 通信方式 | ROS 1 | ROS 2 | 命令变化 |
|---|---|---|---|
| 节点管理 | rosnode |
ros2 node |
统一前缀ros2 |
| 话题操作 | rostopic |
ros2 topic |
参数风格略有不同 |
| 服务操作 | rosservice |
ros2 service |
返回值格式变化 |
| 消息查看 | rosmsg |
ros2 interface |
功能整合 |
| 参数操作 | rosparam |
ros2 param |
更规范的参数管理 |
| 数据记录 | rosbag |
ros2 bag |
支持更高效的存储格式 |
2.3 开发体验的变化
| 方面 | ROS 1 | ROS 2 | 备注 |
|---|---|---|---|
| 构建工具 | catkin_make |
colcon build |
更清晰的输出,支持并行编译 |
| 启动文件 | .launch (XML) |
.launch.py (Python为主) |
Python启动文件更灵活 |
| 编程接口 | roscpp/rospy |
rclcpp/rclpy |
API重新设计,更现代化 |
| 质量服务 | 无 | QoS策略 | 可配置可靠性、历史记录等 |
2.4 版本选择指南(2026年)
根据官方支持周期和社区活跃度,推荐如下:
| Ubuntu版本 | 推荐ROS 2版本 | 支持状态 | 适用场景 |
|---|---|---|---|
| Ubuntu 22.04 | Humble Hawksbill | 支持至2027年5月 | 企业新项目首选,最稳定 |
| Ubuntu 22.04 | Iron Irwini | 支持至2024年11月 | 前沿开发,追求新特性 |
| Ubuntu 24.04 | Jazzy Jalisco | 最新LTS | 新硬件、新项目 |
| Ubuntu 20.04 | Foxy Fitzroy | 已终止(2023年) | 不建议新项目使用 |
一句话选型:Ubuntu 22.04 + ROS 2 Humble,这是2026年最稳妥的组合。
3. ROS 2环境安装与配置
3.1 安装前的准备
# 设置编码(确保系统支持UTF-8)
sudo apt update && sudo apt install locales
sudo locale-gen en_US en_US.UTF-8
sudo update-locale LC_ALL=en_US.UTF-8 LANG=en_US.UTF-8
export LANG=en_US.UTF-8
# 添加ROS 2软件源
sudo apt install software-properties-common
sudo add-apt-repository universe
3.2 一键安装(推荐新手)
使用"小鱼一键安装"指令,适合初学者快速搭建环境:
wget http://fishros.com/install -O fishros && bash fishros
根据提示选择ROS 2 Humble版本即可。
3.3 手动安装步骤
# 添加ROS 2 GPG密钥
sudo apt update && sudo apt install curl -y
sudo curl -sSL https://raw.githubusercontent.com/ros/rosdistro/master/ros.key -o /usr/share/keyrings/ros-archive-keyring.gpg
# 添加软件源
echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/ros-archive-keyring.gpg] http://packages.ros.org/ros2/ubuntu $(. /etc/os-release && echo $UBUNTU_CODENAME) main" | sudo tee /etc/apt/sources.list.d/ros2.list > /dev/null
# 安装ROS 2 Humble桌面完整版
sudo apt update
sudo apt install ros-humble-desktop-full
3.4 环境配置
每次打开终端时,需要source ROS 2环境:
# 添加到~/.bashrc,自动生效
echo "source /opt/ros/humble/setup.bash" >> ~/.bashrc
source ~/.bashrc
4. ROS 2常用命令大全
4.1 工作空间与编译
# 创建工作空间
mkdir -p ~/ros2_ws/src
cd ~/ros2_ws
# 编译所有包
colcon build
# 只编译指定包
colcon build --packages-select my_package
# 编译时忽略测试
colcon build --packages-select my_package --cmake-args -DBUILD_TESTING=0
# 安装依赖(从src目录下查找)
rosdep install -i --from-path src --rosdistro humble -y
4.2 节点管理
# 列出所有运行中的节点
ros2 node list
# 查看节点详细信息
ros2 node info /node_name
# 查看节点参数
ros2 param list
4.3 话题操作
# 列出所有话题
ros2 topic list
ros2 topic list -t # 同时显示消息类型
# 查看话题信息
ros2 topic info /topic_name
# 查看话题发布频率
ros2 topic hz /topic_name
# 实时查看话题数据
ros2 topic echo /topic_name
# 查看话题的消息类型
ros2 topic type /topic_name
# 手动发布话题消息
ros2 topic pub /topic_name msg_type '{"field": value}'
4.4 服务操作
# 列出所有服务
ros2 service list
ros2 service list -t # 同时显示服务类型
# 查看服务类型
ros2 service type /service_name
# 查找指定类型的服务
ros2 service find std_srvs/srv/Empty
# 调用服务
ros2 service call /service_name service_type '{"arg": value}'
4.5 接口查看
# 查看消息类型定义
ros2 interface show geometry_msgs/msg/Twist
# 列出所有消息类型
ros2 interface list
# 查看消息类型包含的字段
ros2 interface proto geometry_msgs/msg/Twist
4.6 参数操作
# 列出参数
ros2 param list
# 获取参数值
ros2 param get /node_name parameter_name
# 设置参数值
ros2 param set /node_name parameter_name value
# 保存参数到文件
ros2 param dump /node_name > params.yaml
# 从文件加载参数
ros2 param load /node_name params.yaml
4.7 数据记录与回放
# 记录所有话题
ros2 bag record -a
# 记录指定话题
ros2 bag record /topic1 /topic2
# 记录到指定目录
ros2 bag record -o my_recording /topic1
# 查看包信息
ros2 bag info my_recording
# 回放数据
ros2 bag play my_recording
4.8 Launch文件管理
# 运行launch文件
ros2 launch package_name launch_file.py
# 查看launch文件的参数
ros2 launch package_name launch_file.py --show-args
5. 实战:查看话题消息内容
这是ROS 2开发中最常用的操作,通过一个完整示例演示。
5.1 列出所有话题
首先启动一个示例节点(以小乌龟为例):
# 终端1:启动小乌龟仿真器
ros2 run turtlesim turtlesim_node
# 终端2:启动键盘控制节点
ros2 run turtlesim turtle_teleop_key
查看所有话题:
$ ros2 topic list
/parameter_events
/rosout
/turtle1/cmd_vel
/turtle1/color_sensor
/turtle1/pose
5.2 查看话题类型
$ 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]
5.3 查看消息定义
想看/turtle1/cmd_vel的消息结构:
$ ros2 interface show geometry_msgs/msg/Twist
# This expresses velocity in free space broken into its linear and angular parts.
Vector3 linear # 线速度
float64 x
float64 y
float64 z
Vector3 angular # 角速度
float64 x
float64 y
float64 z
5.4 实时查看消息数据
在键盘控制乌龟移动的同时,查看指令话题数据:
$ ros2 topic echo /turtle1/cmd_vel
linear:
x: 2.0
y: 0.0
z: 0.0
angular:
x: 0.0
y: 0.0
z: 1.8
---
linear:
x: 0.0
y: 0.0
z: 0.0
angular:
x: 0.0
y: 0.0
z: 0.0
---
5.5 手动发布测试消息
不需要键盘控制,直接命令行让乌龟转圈:
ros2 topic pub --rate 1 /turtle1/cmd_vel geometry_msgs/msg/Twist "{linear: {x: 1.0, y: 0.0, z: 0.0}, angular: {x: 0.0, y: 0.0, z: 1.0}}"
参数说明:
--rate 1:每秒发布1次(如果不加,只发布一次)- 后面是消息类型和JSON格式的数据
6. ROS 2常用工具
6.1 rqt_graph:节点关系可视化
ros2 run rqt_graph rqt_graph
图形化显示所有节点和话题的连接关系,是理解系统架构的利器。
6.2 rqt_console:日志查看
ros2 run rqt_console rqt_console
实时查看ROS 2日志,支持过滤不同级别的消息(Debug/Info/Warn/Error)。
6.3 RViz2:数据可视化
ros2 run rviz2 rviz2
强大的3D可视化工具,可以显示机器人模型、激光雷达点云、图像等。
6.4 Gazebo:仿真环境
# 安装Gazebo
sudo apt install ros-humble-gazebo-ros-pkgs
# 启动仿真环境
ros2 launch gazebo_ros gazebo.launch.py
与ROS 2深度集成的物理仿真环境。
7. 总结:快速上手指南
ROS 2常用命令速查表
| 操作 | ROS 1命令 | ROS 2命令 |
|---|---|---|
| 编译 | catkin_make |
colcon build |
| 节点列表 | rosnode list |
ros2 node list |
| 话题列表 | rostopic list |
ros2 topic list |
| 查看话题数据 | rostopic echo /topic |
ros2 topic echo /topic |
| 查看消息定义 | rosmsg show |
ros2 interface show |
| 记录数据 | rosbag record -a |
ros2 bag record -a |
| 启动文件 | roslaunch |
ros2 launch |
学习路径建议
- 环境搭建:Ubuntu 22.04 + ROS 2 Humble
- 基础命令:掌握节点、话题、服务的增删改查
- 核心概念:理解DDS、QoS、节点生命周期
- 编程实践:用rclcpp/rclpy写一个发布订阅程序
- 工具使用:熟练使用rqt、RViz2、Gazebo
- 项目实战:从简单机器人控制开始,逐步深入SLAM和导航
一句话总结
ROS 2不是ROS 1的简单升级,而是一次彻底的架构重构。它抛弃了Master中心化设计,拥抱工业级DDS中间件,解决了实时性、安全性和跨平台问题。2026年的今天,ROS 2 Humble是入门的唯一选择,掌握本文的命令行工具,你就迈出了ROS 2开发的第一步!
技术深度:关于机器人SLAM完整学习路径,我在《机器人工程师带你入门SLAM》专栏中有从理论到实践的系统讲解,欢迎点击查看了解。
DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。
更多推荐

所有评论(0)