ROS

ROS2 仿真环境搭建

机器人

Posted by LXG on May 14, 2026

动手学ROS2-鱼香

架构


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

gazebo

安装 TurtleBot3

这是 ROS 世界 Hello World。

TurtleBot3

安装


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

gazebo_harmonic

安装 ROS2 Bridge


sudo apt install ros-humble-ros-gzharmonic -y

Webots

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

gazebo_sim

第二步:建立消息桥接(关键点)


# 创建桥接:将 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

仿真

ros_gazebo

Topic

ros_topic

键盘控制

ros_keyboard

官方模型库

fuel-models

bcr_bot

bcr_bot-github

一个“完整的 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

bcr_bot

深度相机视角

rvix_bcr_bot

rbot

rbot-github

An open-source Autonomous Mobile Robot simulation stack for ROS 2 Jazzy and Gazebo Harmonic.

项目 定位
BCR Bot “现代 ROS2 学习型 AMR”
rbot “企业级 AMR baseline”