# RViz、Gazebo 和 MATLAB Simulink 到底有什么区别?机器人仿真与调试工具对比
在 ROS 机器人开发中,很多初学者会同时听到 RViz、Gazebo 和 MATLAB Simulink。这三个工具都能和机器人开发产生关系,但它们的定位完全不同。
一句话概括:
RViz:看数据
Gazebo:造虚拟环境
Simulink:设计控制算法
如果把机器人系统看成一个完整开发链路,那么三者的位置大概是:
Simulink 设计控制器/算法
↓
ROS 节点通信
↓
Gazebo 仿真机器人和环境
↓
RViz 可视化传感器、地图、路径、TF
↓
真实硬件验证
一、先看三张软件界面图
下面先放三张真实的软件界面图。三者看起来都和“机器人开发/仿真/调试”有关,但实际关注点完全不同。
1. RViz:ROS 数据可视化界面

RViz 更像一个 ROS 数据监视器,用来显示 TF、机器人模型、地图、点云、路径、雷达等信息。上图是实际屏幕拍摄的 RViz 界面,可以看到左侧显示配置、中央三维坐标/网格视图和右侧视角参数。
2. Gazebo:三维物理仿真环境

Gazebo 更像一个虚拟实验场,可以搭建三维世界、机器人模型、传感器、地面、障碍物,并模拟物理运动。上图左侧是 Gazebo 中的三维仿真场景,右侧是 RViz 中显示的二维地图和路径规划结果,体现了两者经常配合使用。
3. Simulink:控制系统建模与仿真界面

Simulink 更像控制算法实验室,常用于搭建控制系统模型、调 PID、做电机模型、状态机、滤波器和代码生成。上图是 MATLAB/Simulink 相关的 Mechanics Explorer 机械仿真界面,用于展示机构模型和运动仿真效果。
在这样的实际项目里:
- RViz 关注“数据看得对不对”;
- Gazebo 关注“机器人在虚拟环境里跑得对不对”;
- Simulink 关注“控制算法和系统模型设计得对不对”。
所以三者不是互相替代关系,而是处在机器人开发流程的不同位置。
二、三者核心定位对比
| 工具 | 核心定位 | 主要解决什么问题 |
|---|---|---|
| RViz | ROS 数据可视化工具 | 我现在的机器人状态、传感器数据、地图、路径对不对 |
| Gazebo | 三维物理仿真器 | 机器人在虚拟世界中运动、碰撞、感知是否正常 |
| Simulink | 控制系统建模与仿真平台 | 控制算法、动力学模型、滤波器、状态机设计是否合理 |
更直观一点:
RViz 像示波器/监视器
Gazebo 像虚拟实验场
Simulink 像控制算法实验室
三、RViz:不是仿真器,而是 ROS 数据显示器
RViz 的全称可以理解为 ROS Visualization,它的重点是 显示 ROS 中正在发布的数据。
常见显示内容包括:
- 机器人模型
RobotModel - 坐标变换
TF - 激光雷达数据
LaserScan - 点云
PointCloud2 - 地图
Map - 规划路径
Path - 导航目标点
Pose - 相机图像
Image
RViz 本身不会模拟机器人,也不会计算碰撞、摩擦、重力。它只是把 ROS 系统里的数据可视化出来。
例如你做 SLAM 建图时,RViz 可以显示:
激光雷达扫描线
实时地图
机器人当前位置
TF 坐标系
导航规划路径
但 RViz 不负责让机器人动起来,也不负责生成激光雷达数据。数据必须来自真实机器人、Gazebo、仿真节点或其他 ROS 节点。
RViz 适合做什么?
- 检查 TF 坐标系是否正确;
- 看激光雷达数据是否方向反了;
- 看建图效果是否正常;
- 看路径规划是否绕开障碍物;
- 看机器人模型和关节状态是否正确;
- 调试导航、SLAM、机械臂规划等 ROS 数据链路。
四、Gazebo:真正的三维物理仿真环境
Gazebo 的作用是构建一个虚拟世界,让机器人在里面“像真实环境一样”运动。
它可以模拟:
- 重力;
- 碰撞;
- 摩擦;
- 地形;
- 关节运动;
- 轮子与地面的接触;
- 激光雷达、相机、IMU、深度相机等传感器;
- 障碍物、墙壁、坡道、桌面等环境。
Gazebo 和 RViz 最大的区别是:
Gazebo 负责产生仿真世界和虚拟传感器数据
RViz 负责显示这些 ROS 数据
例如在 Gazebo 中放一辆带激光雷达的小车,小车运动时,Gazebo 可以模拟雷达扫描到墙壁后的数据,然后通过 ROS 话题发布出去。RViz 再订阅这些话题,把雷达线、地图、路径显示出来。
Gazebo 适合做什么?
- 在没有真实机器人的情况下测试算法;
- 测试小车导航、避障、路径规划;
- 测试机械臂运动、碰撞和抓取;
- 模拟传感器数据;
- 搭建虚拟实验环境;
- 验证 ROS 控制器、运动学和动力学模型。
五、Simulink:更偏控制算法和系统建模
Simulink 是 MATLAB 生态中的图形化建模与仿真工具。它和 RViz、Gazebo 的思路不一样。
Simulink 更关注:
- 控制器设计;
- PID 调参;
- 状态空间模型;
- 电机模型;
- 传感器滤波;
- 控制逻辑状态机;
- 车辆动力学;
- 代码生成;
- 与 ROS/Gazebo/硬件联调。
如果你做的是控制系统,比如小车速度控制、机械臂关节控制、无人机姿态控制,Simulink 很有优势。
例如你可以在 Simulink 里搭建:
目标速度 -> PID 控制器 -> 电机模型 -> 编码器反馈 -> 闭环控制
然后把控制量通过 ROS 话题发送给 Gazebo 中的虚拟机器人,也可以后续生成 C/C++ 代码部署到真实硬件。
Simulink 适合做什么?
- 设计 PID、LQR、MPC 等控制算法;
- 建立电机、车辆、机械臂、飞行器动力学模型;
- 做控制器参数调试;
- 做传感器融合和滤波;
- 与 ROS 通信,发送
/cmd_vel、关节控制量等; - 自动生成 C/C++ 代码;
- 做硬件在环、模型在环、软件在环测试。
六、详细对比表
| 对比项 | RViz | Gazebo | Simulink |
|---|---|---|---|
| 核心功能 | 可视化 ROS 数据 | 三维物理仿真 | 控制系统建模与算法仿真 |
| 是否有物理引擎 | 没有 | 有 | 可建模型,但不是三维物理场景核心 |
| 是否能模拟传感器 | 不能,只显示数据 | 能模拟雷达、相机、IMU 等 | 可以建立传感器模型 |
| 是否能显示地图和路径 | 很适合 | 可以,但不如 RViz 专业 | 不是主要用途 |
| 是否适合 SLAM 调试 | 很适合 | 作为数据来源 | 一般不作为主工具 |
| 是否适合导航仿真 | 辅助观察 | 很适合 | 可做控制器部分 |
| 是否适合 PID 调参 | 不适合 | 可观察效果 | 很适合 |
| 是否适合动力学建模 | 不适合 | 适合机器人刚体/关节仿真 | 很适合控制系统建模 |
| 是否适合代码生成 | 不适合 | 不是主要功能 | 很适合 |
| 和 ROS 的关系 | ROS 可视化工具 | 可通过插件接入 ROS | 可通过 ROS Toolbox 接入 ROS |
| 典型用户 | ROS 调试、SLAM、导航开发 | 机器人仿真开发 | 控制算法、车辆、机械臂、飞控开发 |
七、用小车项目举例
假设你要做一辆 ROS 小车,带有电机、编码器、激光雷达、IMU 和控制板。
1. 使用 Gazebo 做虚拟小车
你可以在 Gazebo 中创建:
- 小车模型;
- 轮子和底盘;
- 激光雷达;
- IMU;
- 房间、墙壁、障碍物;
- 轮子摩擦和碰撞。
这样即使真实小车还没焊好,也可以先测试导航算法。
2. 使用 RViz 看 ROS 数据
小车运行时,RViz 可以显示:
- 雷达扫描;
- 地图;
- 小车位姿;
- 规划路径;
- TF 坐标系;
- 导航目标点。
如果小车在 Gazebo 里撞墙、定位飘了、路径绕错了,RViz 是非常直接的调试窗口。
3. 使用 Simulink 设计控制器
Simulink 可以用来设计:
- 速度闭环控制;
- 转向控制;
- 电机模型;
- 编码器反馈;
- 轨迹跟踪;
- PID 参数;
- 状态机逻辑。
设计完成后,可以通过 ROS Toolbox 把速度指令发给 ROS:
Simulink 控制器
↓
发布 /cmd_vel
↓
Gazebo 小车执行运动
↓
RViz 查看路径和状态
八、什么时候选哪个?
只想看 ROS 数据
选 RViz。
典型场景:
- 看雷达;
- 看地图;
- 看 TF;
- 看路径;
- 看机器人模型;
- 调试 SLAM 和导航。
想搭一个虚拟机器人环境
选 Gazebo。
典型场景:
- 没有真实机器人,先做算法验证;
- 测试避障和导航;
- 模拟相机、雷达、IMU;
- 测试机械臂抓取;
- 测试机器人在不同环境中的表现。
想设计控制算法
选 Simulink。
典型场景:
- 调 PID;
- 设计电机控制;
- 做飞控姿态控制;
- 做车辆动力学;
- 做机械臂控制;
- 做传感器融合;
- 生成嵌入式代码。
九、三者如何配合使用?
一个比较完整的机器人开发流程可以是:
1. 在 Simulink 中设计控制算法
2. 通过 ROS Toolbox 发布控制指令
3. Gazebo 接收指令,驱动虚拟机器人运动
4. Gazebo 生成虚拟传感器数据
5. RViz 显示雷达、地图、路径和 TF
6. 算法稳定后迁移到真实硬件
7. 用 RViz 继续观察真实机器人数据
对应到真实控制板开发:
EDA 设计控制板
↓
焊接调试真实硬件
↓
Simulink / ROS 节点设计控制算法
↓
Gazebo 先做仿真验证
↓
RViz 观察数据
↓
真实小车或机器人上机测试
十、常见误区
误区 1:RViz 可以替代 Gazebo
不可以。RViz 只是显示数据,不模拟物理世界。
误区 2:Gazebo 可以替代 RViz
也不完全可以。Gazebo 看的是仿真世界,RViz 看的是 ROS 数据流。调 TF、SLAM、路径规划时,RViz 更直接。
误区 3:Simulink 是机器人仿真软件
Simulink 可以做机器人相关仿真,但它更偏控制系统、数学模型和算法验证。三维场景、碰撞和传感器仿真通常 Gazebo 更合适。
误区 4:有 Gazebo 就不需要真实硬件
Gazebo 可以降低试错成本,但不能完全替代真实硬件。电源噪声、线束接触、传感器误差、机械松动、焊接问题,都需要实物测试。
十一、总结
RViz、Gazebo、Simulink 的关系可以总结为:
| 工具 | 一句话总结 |
|---|---|
| RViz | 用来观察 ROS 数据,适合调试传感器、地图、路径和 TF |
| Gazebo | 用来搭建虚拟机器人和物理环境,适合仿真导航、运动和传感器 |
| Simulink | 用来设计和验证控制算法,适合控制器建模、调参和代码生成 |
最终选择哪个工具,取决于你当前要解决的问题:
看数据:RViz
做虚拟场景:Gazebo
设计算法:Simulink
做完整机器人项目:三者配合使用
在真实项目中,推荐的学习顺序是:
先会 RViz 看懂数据
再用 Gazebo 搭建仿真
最后用 Simulink 做控制算法和工程化验证
这样就能从“看懂机器人数据”,逐步过渡到“仿真机器人系统”,再到“设计可部署的控制算法”。
更多推荐



所有评论(0)