ROS2(Robot Operating System 2)是用于机器人开发的开源中间件框架。相比 ROS1,ROS2 的核心改进:
| 特性 | ROS1 | ROS2 |
|---|---|---|
| 通信协议 | 自定义 TCP/UDP | DDS(Data Distribution Service) |
| 操作系统 | 仅 Ubuntu | Ubuntu / Windows / macOS |
| 实时性 | 不支持 | 支持 Real-Time |
| 多机器人 | 需额外配置 | 原生支持分布式 |
| 节点生命周期 | 无管理 | Managed nodes |
Node A (Publisher) ──Topic(/turtle1/cmd_vel)──▶ Node B (Subscriber)
│
Node C (Service Server) ◀─── Service Call ─── Node D (Client)
使用鱼香ROS一键安装脚本(国内推荐,自动处理依赖和镜像源):
# 下载安装脚本
wget http://fishros.com/install -O fishros
# 运行安装(选择 ROS2 Humble)
bash fishros
# 配置环境变量
source ~/.bashrc
💡 为什么选 Humble? Humble Hawksbill 是 ROS2 的 LTS(长期支持)版本,支持 Ubuntu 22.04,社区生态最完善。后续 Iron 版本引入了更多新特性,但 Humble 仍是课程推荐版本。
# 检查 ROS2 环境
echo $ROS_DISTRO # 应输出 humble
# 查看 ROS2 版本
ros2 --version
# 运行第一个 ROS2 节点
ros2 run turtlesim turtlesim_node
turtlesim 是 ROS2 内置的教学仿真器,用于学习话题通信、服务调用等核心概念。
# 启动小乌龟仿真器(节点1)
ros2 run turtlesim turtlesim_node
# 新终端:键盘遥控(节点2)
ros2 run turtlesim turtle_teleop_key
# 查看当前运行的节点列表
ros2 node list
# 查看节点信息(订阅/发布的话题、提供的服务)
ros2 node info /turtlesim
# 查看所有活跃的话题
ros2 topic list
# 查看话题的发布频率和数据
ros2 topic echo /turtle1/pose
# 查看话题的消息类型
ros2 topic info /turtle1/cmd_vel
/turtle1/cmd_vel 话题使用 geometry_msgs/msg/Twist 类型:
Vector3 linear:
float64 x # 线速度 x (前进/后退)
float64 y # 线速度 y (左右平移)
float64 z
Vector3 angular:
float64 x
float64 y
float64 z # 角速度 z (左右转向)

| 问题 | 原因 | 解决方案 |
|---|---|---|
ros2: command not found |
未 source 环境变量 | 执行 source /opt/ros/humble/setup.bash 或重开终端 |
| 小乌龟窗口闪退 | X11 显示未配置 | WSL2 需安装 VcXsrv 或使用 export DISPLAY=:0 |
bash fishros 下载慢 |
网络问题 | 挂代理或手动从清华镜像安装 |
| WSL2 中 GUI 不显示 | 缺少图形转发 | 安装 sudo apt install x11-apps 并配置 DISPLAY |
本周掌握了 ROS2 的核心入门技能:
ros2 node/topic 命令行工具完成了第一个仿真实验这些基础为后续的机器人运动学、传感器数据处理和仿真实验提供了命令行的交互基础。