架构
Ubuntu 22.04
│
├── ROS2 Humble
│ │
│ ├── RViz2(可视化)
│ ├── Nav2(导航)
│ ├── SLAM Toolbox
│ ├── MoveIt2(机械臂)
│ └── rosbag
│
├── Gazebo Sim
│ │
│ ├── 小车仿真
│ ├── 激光雷达
│ ├── 摄像头
│ └── IMU
│
├── OpenCV / YOLO
│
├── CUDA
│
└── Isaac Sim(后期)
安装 ROS2 Humble
设置 locale
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
添加源
sudo apt install software-properties-common
sudo add-apt-repository universe
添加 ROS key
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
安装
sudo apt update
sudo apt install ros-humble-desktop -y
环境变量
echo "source /opt/ros/humble/setup.bash" >> ~/.bashrc
source ~/.bashrc
测试 ROS2
ros2 run demo_nodes_cpp talker
另开终端:
ros2 run demo_nodes_py listener
能通信说明 OK。
安装 Gazebo 仿真
sudo apt install ros-humble-gazebo-* -y
测试 Gazebo
gazebo

安装 TurtleBot3
这是 ROS 世界 Hello World。
安装
sudo apt install ros-humble-turtlebot3* -y
设置型号
echo 'export TURTLEBOT3_MODEL=burger' >> ~/.bashrc
source ~/.bashrc
清理环境
执行:
pkill -9 gzserver
pkill -9 gzclient
pkill -9 ros2
然后:
ps -ef | grep gz
确保没有:
gzserver
启动仿真
ros2 launch turtlebot3_gazebo empty_world.launch.py
启动直接报错了,显卡驱动不兼容, 上述方案已经不可行
新老架构仿真
| 老 | 新 |
|---|---|
| Gazebo Classic | Gazebo Harmonic |
| gzserver | gz sim |
| gzclient | 内置GUI |
| OGRE1 | OGRE2 |
| ROS插件 | ros_gz_bridge |
| 容易崩 | 稳很多 |
切换到新架构
移除旧架构
sudo apt remove gazebo* libgazebo* -y
安装 Harmonic
sudo apt update
sudo apt install gz-harmonic -y
测试
gz sim

安装 ROS2 Bridge
sudo apt install ros-humble-ros-gzharmonic -y
Webots
| 维度 | Webots | Gazebo Harmonic | Isaac Sim |
|---|---|---|---|
| 上手难度 | ⭐ 最容易 | 中等 | 最难 |
| 安装体验 | ⭐⭐⭐⭐⭐ | ⭐⭐⭐ | ⭐⭐ |
| 稳定性 | ⭐⭐⭐⭐⭐ | ⭐⭐⭐⭐ | ⭐⭐⭐ |
| ROS2集成 | ⭐⭐⭐⭐ | ⭐⭐⭐⭐⭐ | ⭐⭐⭐⭐ |
| 学习ROS友好 | ⭐⭐⭐⭐⭐ | ⭐⭐⭐⭐ | ⭐⭐ |
| GUI体验 | ⭐⭐⭐⭐ | ⭐⭐⭐⭐ | ⭐⭐⭐⭐⭐ |
| RTX利用 | 一般 | 一般 | ⭐⭐⭐⭐⭐ |
| 视觉仿真 | 中等 | 中等 | ⭐⭐⭐⭐⭐ |
| 物理精度 | 中等 | 较强 | ⭐⭐⭐⭐⭐ |
| AI训练 | 一般 | 一般 | ⭐⭐⭐⭐⭐ |
| 自动驾驶 | 一般 | 强 | ⭐⭐⭐⭐⭐ |
| 工业趋势 | 中等 | 强 | ⭐⭐⭐⭐⭐ |
| 文档友好 | ⭐⭐⭐⭐⭐ | ⭐⭐⭐ | ⭐⭐ |
| 环境踩坑 | 很少 | 中等 | 非常多 |
| 硬件要求 | 低 | 中 | 高 |
| 适合初学者 | ⭐⭐⭐⭐⭐ | ⭐⭐⭐ | ⭐ |
安装
sudo snap install webots
sudo apt install ros-humble-webots-ros2
Webots 是谁维护的?
瑞士机器人仿真公司: Cyberbotics
| 时间 | 事件 |
|---|---|
| 1996 | 在 EPFL 开始研发 |
| 1998 | Cyberbotics 商业化维护 |
| 2018 | 开源(Apache 2) |
| 现在 | ROS2 官方支持之一 |
为什么中国没有这种仿真平台
像 Webots、Gazebo、Isaac Sim 这种平台,本质上已经不是普通软件了,而是:
- 机器人操作系统生态的一部分
- AI 数据生成平台
- 自动驾驶验证平台
- 数字孪生平台
- 学术标准平台
这背后需要非常长时间的生态积累。
做仿真平台比做机器人还难
| 模块 | 难度 |
|---|---|
| 3D 引擎 | 极高 |
| 物理引擎 | 极高 |
| 传感器模拟 | 极高 |
| ROS 接口 | 极高 |
| 时间同步 | 极高 |
| GPU 渲染 | 极高 |
| 多机器人调度 | 极高 |
| AI 数据生成 | 极高 |
| 跨平台 GUI | 极高 |
中国长期更偏“工程落地”
欧美机器人:
- 强调研究平台
- 强调通用性
- 强调标准化
- 强调开源生态
中国过去更偏:
- 能跑就行
- 快速交付
- 项目制
- 客户定制
于是大量公司:自己魔改一个内部仿真器
而不是:做一个全球开发者都能用的平台
这和中国软件行业很多领域类似
官方推荐
| ROS2版本 | 官方推荐 |
|---|---|
| Humble | gazebo11 |
| Jazzy | Harmonic |
| Kilted | Harmonic |
新版本
| 老时代 | 新时代 |
|---|---|
| ROS1 | ROS2 |
| gazebo11 | Harmonic |
| gazebo_ros | ros_gz |
| OGRE1 | OGRE2 |
| Ubuntu 20.04 | Ubuntu 24.04 |
注意: 安装Jazzy新版本必须是ubuntu 24.04
启动仿真
由于 Humble + Gazebo Harmonic 采用了全新的架构,启动仿真的逻辑与传统的 Gazebo 11 完全不同。你不再通过 gazebo_ros 插件直接通信,而是通过 ros_gz 桥接器。
以下是启动一个无人车(以官方示例为例)并进行控制的完整流程:
在新时代架构中,ROS 2 和 Gazebo 是平级的,它们之间靠一个“翻译官”(Bridge)传递消息。
- Gazebo Harmonic: 负责物理计算和渲染。
- ros_gz_bridge: 负责把 Gazebo 的 gz.msgs 翻译成 ROS 2 的 geometry_msgs 等。
- ROS 2: 负责发送控制指令(如键盘控制)。
第一步:启动仿真世界
打开第一个终端,启动一个带有无人车的演示世界。Gazebo Harmonic 内置了一个名为 diff_drive.sdf 的简单差速小车示例:
# 启动 Gazebo 并加载差速小车模型
gz sim -r diff_drive.sdf

第二步:建立消息桥接(关键点)
# 创建桥接:将 ROS 2 的 /cmd_vel 转发给 Gazebo 小车
ros2 run ros_gz_bridge parameter_bridge /model/vehicle_blue/cmd_vel@geometry_msgs/msg/Twist]gz.msgs.Twist
这个命令的意思是:监听 ROS 2 的 /model/diff_drive/cmd_vel 话题,并将其翻译为 Gazebo 能懂的 Twist 消息。
第三步:发布控制命令
打开第三个终端,你可以直接用键盘控制小车移动:
# 安装并运行键盘控制节点
sudo apt install ros-humble-teleop-twist-keyboard
ros2 run teleop_twist_keyboard teleop_twist_keyboard --ros-args -r /cmd_vel:=/model/vehicle_blue/cmd_vel
# 模拟键盘发个手动指令
ros2 topic pub --once /model/vehicle_blue/cmd_vel geometry_msgs/msg/Twist "{linear: {x: 0.5, y: 0.0, z: 0.0}, angular: {x: 0.0, y: 0.0, z: 0.0}}"
查看topic
lxg@lxg:~$ gz topic -l
/clock
/gazebo/resource_paths
/gui/camera/pose
/gui/currently_tracked
/gui/track
/model/vehicle_blue/odometry
/model/vehicle_blue/tf
/model/vehicle_green/odometry
/model/vehicle_green/tf
/stats
/world/diff_drive/clock
/world/diff_drive/dynamic_pose/info
/world/diff_drive/pose/info
/world/diff_drive/scene/deletion
/world/diff_drive/scene/info
/world/diff_drive/state
/world/diff_drive/stats
/world/shapes/clock
/world/shapes/dynamic_pose/info
/world/shapes/pose/info
/world/shapes/scene/deletion
/world/shapes/scene/info
/world/shapes/state
/world/shapes/stats
/world/sonoma/clock
/world/sonoma/stats
/model/vehicle_blue/cmd_vel
/model/vehicle_blue/enable
/model/vehicle_green/cmd_vel
/model/vehicle_green/enable
/world/diff_drive/light_config
/world/diff_drive/material_color
/world/shapes/light_config
/world/shapes/material_color
仿真

Topic

键盘控制

官方模型库
bcr_bot
一个“完整的 ROS2 无人车仿真参考项目”
- 机器人模型
- Gazebo 仿真
- 深度相机
- 激光雷达
- IMU
- Nav2
- SLAM
- RViz
- ros2_control
- Isaac Sim
由:Black Coffee Robotics 维护。这是一家机器人公司。
仿真运行
cd /home/lxg/code/github/bcr_bot/scripts
./run_bcr_bot_sim.sh --clean --world warehouse --with-rviz --follow-camera --drive-demo --drive-seconds 3 --drive-speed 0.4

深度相机视角

rbot
An open-source Autonomous Mobile Robot simulation stack for ROS 2 Jazzy and Gazebo Harmonic.
| 项目 | 定位 |
|---|---|
| BCR Bot | “现代 ROS2 学习型 AMR” |
| rbot | “企业级 AMR baseline” |