告别Gazebo11!在Ubuntu 20.04上保姆级安装Gazebo Garden(附ROS1兼容性说明)

张开发
2026/4/4 16:22:18 15 分钟阅读
告别Gazebo11!在Ubuntu 20.04上保姆级安装Gazebo Garden(附ROS1兼容性说明)
从Gazebo11到Gazebo GardenUbuntu 20.04迁移全指南与ROS1兼容策略当我在实验室第一次尝试将机器人仿真环境从Gazebo11迁移到Gazebo Garden时遭遇了令人头疼的依赖冲突问题。那次经历让我深刻认识到版本升级不仅仅是执行几条安装命令那么简单而是一个需要全面考量的技术决策过程。对于仍在使用Ubuntu 20.04和ROS1的开发者来说Gazebo Garden提供了一个体验新架构的机会但也带来了兼容性挑战。1. 版本选择为什么要在Ubuntu 20.04上安装Gazebo GardenGazebo作为机器人仿真领域的标杆工具其版本演进路线常常让开发者感到困惑。在决定是否迁移前我们需要先理清各版本的核心差异主流Gazebo版本对比特性Gazebo11Gazebo GardenGazebo Harmonic架构旧架构新架构过渡版新架构正式版渲染引擎OGRE升级版OGREVulkan/OpenGL物理引擎ODE/BulletODE/BulletPhysXROS1支持✔️❌❌ROS2支持有限✔️✔️维护状态已停止2024年停止长期支持选择Gazebo Garden的三大理由技术前瞻性体验新一代仿真架构为未来迁移到Harmonic做准备性能优化虽然仍使用OGRE渲染但内部架构已针对现代硬件优化功能扩展支持更多新型传感器模型和物理效果模拟注意如果你的项目严重依赖ROS1建议暂缓升级或考虑双系统方案。我在处理一个工业机械臂项目时就曾因为过早迁移导致控制接口全部需要重写。2. 彻底卸载Gazebo11避免残留引发的幽灵问题许多安装失败案例都源于旧版本卸载不彻底。以下是经过实战验证的完整清理流程2.1 精准卸载核心组件# 移除主程序及开发文件 sudo apt purge gazebo11 libgazebo11-dev # 清理SDF格式支持包 sudo apt purge libsdformat9 sdformat9-sdf # 删除共享资源 sudo apt purge gazebo11-common2.2 深度清理依赖关系执行基础卸载后还需要处理潜在的依赖残留# 自动移除不再需要的依赖 sudo apt autoremove # 特别检查这些常见残留包 sudo apt purge python3-gazebo11 gazebo11-plugin-base2.3 清除配置和数据文件手动删除以下目录谨慎操作/usr/share/gazebo-11//var/lib/gazebo/~/.gazebo/提示删除用户目录下的.gazebo前建议备份你的世界文件和模型库。3. Gazebo Garden安装详解超越官方指南的最佳实践官方安装步骤虽然简单但缺乏对国内开发者的网络优化。以下是优化后的安装方案3.1 软件源配置优化# 使用国内镜像加速下载以清华源为例 sudo wget https://mirrors.tuna.tsinghua.edu.cn/osrf/gazebo/gazebo.gpg -O /usr/share/keyrings/pkgs-osrf-archive-keyring.gpg echo deb [arch$(dpkg --print-architecture) signed-by/usr/share/keyrings/pkgs-osrf-archive-keyring.gpg] https://mirrors.tuna.tsinghua.edu.cn/osrf/gazebo/ubuntu-stable $(lsb_release -cs) main | sudo tee /etc/apt/sources.list.d/gazebo-stable.list3.2 分阶段安装策略为避免网络中断导致安装失败建议分步执行先安装基础工具集sudo apt install gz-tools2再安装开发库sudo apt install libgz-sim7-dev最后安装主程序sudo apt install gz-garden3.3 验证安装完整性完整的验证应该包括三个层面版本检查gz sim --version图形界面测试gz simAPI功能验证import gz.msgs print(gz.msgs.StringMsg(dataHello Gazebo Garden))4. ROS1兼容方案在过渡期保持生产力虽然Gazebo Garden不直接支持ROS1但我们仍可通过桥接方案实现有限集成4.1 网络桥接方案# 安装ROS1-ROS2桥接包 sudo apt install ros-noetic-ros1-bridge # 启动桥接服务 ros2 run ros1_bridge dynamic_bridge4.2 文件格式转换工具开发一个简单的转换脚本处理SDF差异import sdformat13 as sdf13 import sdformat9 as sdf9 def convert_sdf9_to_sdf13(input_file): root9 sdf9.Root() root9.load(input_file) # 转换逻辑... return root13.to_xml_string()4.3 混合开发环境配置在~/.bashrc中添加智能切换function set_gz_env() { case $1 in garden) unset GAZEBO_MASTER_URI export GZ_VERSIONgarden ;; classic) export GAZEBO_MASTER_URIhttp://localhost:11345 unset GZ_VERSION ;; esac }5. 常见问题排错指南Q1启动时报GLX相关错误解决方案安装最新显卡驱动或尝试export LIBGL_ALWAYS_SOFTWARE1Q2模型下载失败替代方案手动下载后放入~/.gz/fuel/Q3与ROS2通信延迟高优化建议调整QoS策略qos reliabilitybest_effort/reliability durabilityvolatile/durability /qos迁移到Gazebo Garden后最让我惊喜的是其改进的物理仿真精度。在测试一个四足机器人时新版对地面摩擦力的模拟明显更加真实。不过要提醒的是在项目关键阶段进行迁移仍需谨慎评估最好先在独立环境中充分测试。

更多文章