1. 项目背景与核心目标
最近在帮实验室搭建新一代移动机器人开发平台时,决定全面转向ROS2和Gazebo Harmonic这套工具链。本以为只是简单的版本升级,结果从模型导入到物理引擎配置踩了无数坑。这里记录下如何从零构建符合SLAM要求的仿真环境,顺便梳理ROS与Gazebo的版本演进路线。
这个项目的核心诉求很明确:
- 创建带真实传感器配置的差分驱动机器人模型
- 搭建包含典型障碍物的仿真世界场景
- 确保Gazebo Harmonic与ROS2的通信兼容性
- 为后续的Cartographer和Nav2部署打好基础
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 开发环境配置避坑指南
2.1 工具链版本选择
当前最稳定的组合是:
- ROS2 Humble + Gazebo Harmonic(官方推荐组合)
- Ubuntu 22.04 LTS(必须匹配)
重要提示:Gazebo Classic与Gazebo Harmonic的插件机制完全不同,切勿混用
安装时建议使用以下命令避免依赖冲突:
bash复制sudo apt install ros-humble-desktop \
ros-humble-gazebo-ros-pkgs \
ros-humble-cartographer \
ros-humble-nav2-bringup
2.2 模型文件结构规范
正确的工程目录应该包含:
code复制/my_robot/
├── models/
│ ├── my_car/
│ │ ├── meshes/ # 存放STL/DAE文件
│ │ ├── model.sdf
│ │ └── model.config
├── worlds/
│ └── slam_world.world
└── launch/
└── slam_demo.launch.py
3. 机器人模型深度定制
3.1 差分驱动底盘建模
在model.sdf中需要明确定义:
xml复制<joint name="left_wheel_joint" type="revolute">
<parent>base_link</parent>
<child>left_wheel</child>
<axi
