45. 仿真与 Gazebo¶
45.1 学习目标¶
用仿真验证 ROS 接口、Launch、TF、导航参数和算法流程,同时明确哪些结论必须回到实机重测。
仿真(Simulation)用软件模型代替真实机器人和场地。Gazebo Simulation Platform(Gazebo)是机器人仿真平台,可以计算刚体运动、碰撞和传感器数据,并通过插件与 ROS 2 节点交换消息。仿真适合提前检查软件链路,但其结论受模型精度限制。
45.2 适用范围¶
适用于已经具备 Gazebo 模型或仿真功能包的 WHEELTEC 机器人。本章以 ROS 2 为运行环境;ROS 1 模型需要先完成包结构、插件接口和启动方式的迁移。
45.3 操作前检查¶
- 仿真包与 ROS/Gazebo 版本匹配。
- 不与实机底盘节点共用同一命名空间和速度话题。
- 记录模型轮径、质量、惯量、摩擦和传感器参数。
45.4 工作原理¶
Gazebo 中的世界(World)描述地面、墙体和障碍物,机器人模型描述连杆、关节、质量、惯量与碰撞形状,插件(Plugin)把轮子或虚拟传感器接到 ROS 2 接口。模型可以近似底盘和传感器,却不会自动复现 USB 掉线、电池压降、编码器噪声、轮胎形变和现场光照。
45.5 操作步骤¶
- 只启动世界和机器人模型,检查模型是否掉落、抖动或穿透地面。
- 检查 TF、关节状态和仿真时间。
- 发布小速度,确认轮子、里程计和坐标方向。
- 加载雷达与相机插件,检查话题类型和频率。
- 再接入 SLAM/Nav2,保存参数和结果。
- 为实机列出必须重测的项目:制动距离、转向极限、传感器盲区、速度上限和故障停止。
45.6 验收标准¶
- 模型与真实底盘自由度一致。
- 话题、TF 和命名空间不会与实机冲突。
- 仿真速度与里程计方向正确。
- 算法流程可运行,实机待验证项有清单。
45.7 故障排查¶
| 现象 | 检查 |
|---|---|
| 模型弹飞 | 惯量、碰撞体和初始姿态 |
| 轮子转但车不走 | 摩擦、关节轴、插件和控制接口 |
| 时间戳异常 | /use_sim_time 和 /clock |
| 仿真能导航、实机不能 | 回到传感器、TF、里程计和制动能力 |
代码资源边界
教材源码仓库没有与本章绑定的完整 Gazebo 世界、模型和插件组合;仿真配置应来自读者当前工程。