恒美微站 Logo 恒美微站
  • 首页
  • 关于我们
  • 建站服务
  • 主题模板
  • 案例展示
  • 资讯中心
  • 联系我们

Ubuntu 18.04下ROS Melodic与Gazebo 9的gazebo_ros_pkgs安装与排错指南

  • 首页
  • 资讯中心
  • /
  • Ubuntu 18.04下ROS Melodic与Gazebo 9的gazebo_ros_pkgs安装与排错指南

相关资讯

S7-1200+TP触摸屏组合式空调控制柜改造:Modbus RTU通讯与PID调节实战 2026/10/12 8:59:18
Kimi K3 OpenAI兼容接入:协议桥接与流式适配实战指南 2026/10/12 8:54:18
0.13秒出图超扩散模型20倍!超大规模GAN图像生成实战复盘 2026/10/12 8:54:18

最新资讯

CMake Windows免安装zip使用指南:从解压配置到避坑实战
Claude Code模板集深度评测:不是智商税,是效率翻三倍的关键
脚本目录重复代码治理:从18个文件到6个模块的重构实践
开放式代码评审框架:从流程搭建到文化落地的完整实践指南
Open Code Review:一种提升协作效率的透明化评审实践
计算机网络协议题库解析:TCP拥塞控制与链路层重传机制深度对比

今日推荐

Debian新手入门:从部署到日常操作的完整指南
MongoDB复制集扩缩容实战:从rs.add到选主事故复盘
条形码目标检测数据集实战:从YOLOv8训练到部署

本周热门

UE动画修改实战:从资产编辑到重定向与蒙太奇驱动
统计随机数生成器攻击下的KLJN安全密钥交换协议Matlab仿真
政务API安全治理:资产测绘、低代码编排与行标对标实践

本月精选

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证
2026 大模型集体涨价:用 Python 做企业 Token 成本测算与选型避坑(附配置)

Ubuntu 18.04下ROS Melodic与Gazebo 9的gazebo_ros_pkgs安装与排错指南

发布时间:2026/10/12 8:59:18
Ubuntu 18.04下ROS Melodic与Gazebo 9的gazebo_ros_pkgs安装与排错指南 1. 为什么这个包值得单独拿出来说如果你正在用 Ubuntu 18.04 搭配 ROS Melodic 做机器人仿真大概率会遇到一个情况gazebo_ros_pkgs这个包明明在 ROS 生态里地位很核心但装的时候总是不太顺。要么是apt装完发现版本对不上要么是 Gazebo 启动后 ROS 插件加载不出来机器人模型在仿真环境里纹丝不动。我前后在好几台机器上折腾过这套组合踩过的坑足够写一篇完整的排查笔记。gazebo_ros_pkgs本质上是一组桥接包它把 Gazebo 仿真器和 ROS 的通信机制连在一起。没有它Gazebo 就是一个独立的物理仿真软件ROS 节点根本控制不了里面的机器人有了它你才能在 ROS 里发布/cmd_vel让仿真机器人动起来才能用robot_state_publisher把关节状态同步过去才能订阅 Gazebo 里的激光雷达、摄像头数据。所以做移动机器人、机械臂仿真的朋友这个包是绕不开的基础设施。这篇文章面向的是已经在 Ubuntu 18.04 上装好 ROS Melodic、准备跑 Gazebo 仿真的开发者。不管你是刚接触 ROS 的新手还是换机器重新配环境的老手下面这套流程和排查思路都能直接拿去用。我会把安装路径的选择逻辑、版本匹配的坑、验证是否真正可用的方法以及几个我实际遇到过的典型故障全部拆开讲清楚。2. 安装之前先把版本关系理清楚2.1 ROS Melodic 与 Gazebo 9 的绑定关系很多人装gazebo_ros_pkgs出问题根源不在安装命令本身而在于没搞清楚 ROS Melodic 默认绑定的 Gazebo 版本。ROS Melodic 官方对应的是Gazebo 9这个版本关系是硬性的。你如果系统里已经装了 Gazebo 11 或者其他版本apt安装gazebo_ros_pkgs时依赖解析就会出问题或者装完了运行时报符号找不到的错误。我建议在动手之前先确认当前系统里的 Gazebo 情况gazebo --version如果输出显示的是 9.x那说明版本是对的。如果显示 11.x 或者命令不存在就需要先处理 Gazebo 本身的安装。这里有个细节ROS Melodic 的gazebo_ros_pkgs依赖的是gazebo9这个包名而不是笼统的gazebo。Ubuntu 18.04 的官方源里默认提供的也是 Gazebo 9所以只要没手动加过其他 Gazebo 源一般不会冲突。另一个需要确认的是 ROS 环境本身是否正常。执行echo $ROS_DISTRO应该输出melodic。如果为空或者输出其他值说明 ROS 环境变量没配好后面装什么都会出问题。2.2 apt 安装与源码编译的取舍装gazebo_ros_pkgs有两条路一条是直接用apt装二进制包另一条是从源码编译。这两条路我都走过说说各自的适用场景。apt安装的优势是快、省心一条命令搞定依赖自动处理。对于绝大多数做应用层开发、不需要改gazebo_ros_pkgs源码的人来说这是首选。命令如下sudo apt install ros-melodic-gazebo-ros-pkgs ros-melodic-gazebo-ros-control注意这里我多装了一个ros-melodic-gazebo-ros-control。这个包提供的是gazebo_ros_control插件做机械臂或者需要关节控制器仿真的场景必须用它。很多人只装gazebo-ros-pkgs结果发现ros_control相关的配置加载不了就是漏了这个。源码编译适合什么情况一是你需要修改gazebo_ros_pkgs里的插件行为二是你的 Gazebo 版本不是 9 而是其他版本需要针对性地编译适配。源码编译的流程后面会单独讲但先给个结论如果你没有明确的改源码需求不要走源码编译这条路因为编译过程中的依赖问题和版本冲突比 apt 安装多得多。2.3 安装前的依赖检查清单在敲安装命令之前花两分钟做几个检查能省掉后面大量的排查时间。我整理了一个检查清单检查项命令期望结果ROS 环境echo $ROS_DISTROmelodicGazebo 版本gazebo --version9.xapt 源更新sudo apt update无报错磁盘空间df -h /剩余 5G 以上关键依赖dpkg -lgrep ros-melodic-gazebo磁盘空间这一项容易被忽略。Gazebo 相关的包加上依赖装下来占用的空间不小如果/usr分区空间紧张安装到一半失败会留下损坏的包状态后面处理起来很麻烦。我自己就遇到过一次因为空间不足导致dpkg锁死的情况最后只能手动清理。3. 标准安装流程与逐步验证3.1 用 apt 完成主体安装确认完环境后正式安装分两步走。第一步先更新源并安装核心包sudo apt update sudo apt install ros-melodic-gazebo-ros-pkgs ros-melodic-gazebo-ros-control安装过程中 apt 会自动拉取gazebo9、libgazebo9-dev等依赖。如果这一步报依赖错误大概率是源的问题。检查/etc/apt/sources.list.d/下有没有多余的 Gazebo 源文件有的话先注释掉再重试。第二步安装完成后刷新一下 ROS 的包索引rospack profile这个命令的作用是让 ROS 重新扫描所有包路径。新装的包如果不执行这一步有时候rospack find找不到会让人误以为没装上。3.2 验证包是否真正可用装完不代表能用。我见过太多装上了但跑不起来的情况所以验证环节必须做扎实。验证分三层第一层确认包路径能被 ROS 找到rospack find gazebo_ros rospack find gazebo_ros_pkgs两个命令都应该返回具体的路径比如/opt/ros/melodic/share/gazebo_ros。如果报[rospack] Error: package not found说明包没装好或者环境没刷新。第二层启动一个空的 Gazebo 世界看 ROS 接口是否正常roslaunch gazebo_ros empty_world.launch这个命令会启动 Gazebo 并加载 ROS 插件。如果 Gazebo 窗口正常弹出终端没有红色报错说明桥接是通的。这里有个观察点Gazebo 启动后在另一个终端执行rostopic list应该能看到/gazebo/...系列的话题比如/gazebo/link_states、/gazebo/model_states。这些话题存在才证明gazebo_ros_pkgs真正在工作。第三层加载一个带机器人的世界做实际测试。这一步需要你有 URDF 或者 xacro 模型文件。如果手头没有可以用 ROS 自带的示例roslaunch gazebo_ros willowgarage_world.launch这个示例会加载一个带机械臂的场景。能正常加载并且rostopic list里出现关节相关话题说明gazebo_ros_control也工作正常。3.3 环境变量的持久化配置验证通过之后别忘了把环境变量写进~/.bashrc否则新开终端又要重新 sourceecho source /opt/ros/melodic/setup.bash ~/.bashrc source ~/.bashrc如果你有自己编译的工作空间还要把工作空间的setup.bash也加进去并且注意顺序——工作空间的 source 要放在 ROS 主环境的后面这样自定义包才能覆盖系统包。4. 源码编译路线的完整操作4.1 什么情况下必须走源码编译前面说了 apt 优先但有些场景确实绕不开源码编译。我总结了几种典型情况一是你的项目需要针对gazebo_ros_pkgs打补丁比如修改传感器插件的默认行为二是你用的 Gazebo 版本和 ROS Melodic 默认的不一致需要手动指定编译三是你在做gazebo_ros_pkgs本身的二次开发或者调试。源码编译的目标仓库是gazebo_ros_pkgs这个元包它下面包含gazebo_ros、gazebo_plugins、gazebo_ros_control等子包。编译之前需要先装好编译依赖sudo apt install python-catkin-tools sudo apt install libgazebo9-devlibgazebo9-dev这个开发包必须装源码编译时需要它的头文件和链接库。很多人编译报错找不到gazebo/...头文件就是漏了这个。4.2 创建工作空间并拉取源码源码编译建议单独建一个工作空间不要和你的业务代码混在一起mkdir -p ~/gazebo_ws/src cd ~/gazebo_ws/src拉取源码时要注意分支。ROS Melodic 对应的是melodic-devel分支git clone -b melodic-devel https://github.com/ros-simulation/gazebo_ros_pkgs.git克隆完成后回到工作空间根目录用rosdep安装剩余依赖cd ~/gazebo_ws rosdep install --from-paths src --ignore-src -r -yrosdep这一步如果报错通常是某些依赖包的源没配好。可以加上--osubuntu:bionic明确指定系统版本再试。4.3 编译过程中的常见报错处理编译命令catkin build或者用catkin_make也行看个人习惯。编译过程中最常见的报错有三类第一类是找不到 Gazebo 的头文件报错信息里出现gazebo/gazebo.hh: No such file。这说明libgazebo9-dev没装或者版本不对重新确认一下。第二类是 C 标准不匹配。ROS Melodic 默认用 C14如果你的系统默认编译器版本较新可能会报一些语法警告甚至错误。可以在CMakeLists.txt里显式指定set(CMAKE_CXX_STANDARD 14) set(CMAKE_CXX_STANDARD_REQUIRED ON)第三类是链接阶段找不到gazebo库。这通常是GAZEBO_LIBRARIES变量没被正确设置检查一下find_package(gazebo REQUIRED)是否执行成功。编译通过后source 工作空间source ~/gazebo_ws/devel/setup.bash然后用前面说的三层验证法再走一遍确认源码编译的版本能正常工作。5. 几个我实际踩过的坑和排查过程5.1 Gazebo 启动后 ROS 话题不出现这是最典型的问题。现象是 Gazebo 窗口正常打开但rostopic list里看不到/gazebo/...话题。排查思路是这样的先确认gazebo_ros的插件是否被加载。Gazebo 启动时会读取GAZEBO_PLUGIN_PATH环境变量如果这个变量里没有 ROS 插件的路径插件就不会加载。检查方法echo $GAZEBO_PLUGIN_PATH正常情况下应该包含/opt/ros/melodic/lib。如果没有说明 ROS 环境没 source 到位。这个问题在 apt 安装和源码编译下都可能出现根源都是环境变量。另一个可能的原因是empty_world.launch文件里的world_name参数指向了错误的世界文件。可以手动指定一个绝对路径的世界文件来排除这个因素roslaunch gazebo_ros empty_world.launch world_name:/opt/ros/melodic/share/gazebo_ros/worlds/empty.world5.2 机器人模型加载后关节不动模型能加载进 Gazebo但发/cmd_vel没反应或者关节状态不更新。这个问题通常出在gazebo_ros_control的配置上。首先要确认 URDF 里有没有正确添加gazebo_ros_control插件。一个典型的配置片段是这样的gazebo plugin namegazebo_ros_control filenamelibgazebo_ros_control.so robotNamespace/my_robot/robotNamespace /plugin /gazebo如果这个插件没加Gazebo 里的模型就只是一个纯物理体ROS 控制不了它。加了插件但关节还是不动就要检查ros_control的配置文件里关节名和 URDF 里的关节名是否一致。这个不一致的问题非常隐蔽因为不会报错只是静默地不工作。5.3 版本冲突导致的符号错误有一种报错很吓人启动时提示undefined symbol或者symbol lookup error指向libgazebo_ros_...so。这基本可以断定是版本冲突——系统里存在多个 Gazebo 版本或者 ROS 的gazebo_ros_pkgs和 Gazebo 主版本不匹配。排查方法是列出所有已安装的 Gazebo 相关包dpkg -l | grep gazebo如果看到gazebo11和gazebo9同时存在那就是冲突了。处理方式是卸载掉不匹配的版本只保留 Gazebo 9。卸载时注意连带清理依赖sudo apt remove gazebo11 libgazebo11-dev sudo apt autoremove清理完再重新安装gazebo_ros_pkgs让 apt 重新解析依赖关系。6. 让仿真环境更稳的几个实践建议6.1 固定 Gazebo 版本不要随意升级Gazebo 的版本升级很容易破坏 ROS 的桥接。我建议在项目开发周期内把 Gazebo 版本锁死在 9.x不要执行apt upgrade时顺带升级 Gazebo。可以在/etc/apt/preferences.d/下加一个 pin 文件来锁定版本Package: gazebo9 Pin: version 9.* Pin-Priority: 1001这样即使执行了全局升级Gazebo 也不会被换掉。6.2 用 launch 文件管理仿真启动流程不要每次手动敲一堆命令启动仿真。把 Gazebo 启动、机器人模型加载、控制器启动、RViz 启动全部写进一个 launch 文件里用参数控制不同场景。这样不仅省事更重要的是保证了每次启动的环境一致性减少这次能跑下次不能跑的随机问题。一个典型的仿真 launch 文件结构应该包含gazebo_ros的empty_world.launch引入、robot_description参数加载、spawn_model节点、controller_spawner节点。把这些串起来一条roslaunch命令就能拉起完整仿真环境。6.3 日志和诊断信息的利用Gazebo 和 ROS 的日志是排查问题的金矿。Gazebo 的日志默认在~/.gazebo/下ROS 的日志在~/.ros/log/下。遇到启动失败时先看这两个目录里最新的日志文件比盲目搜索效率高得多。另外roslaunch启动时加上--screen参数可以把所有节点的输出直接打印到终端方便实时观察报错roslaunch my_robot_gazebo my_robot.launch --screen这个习惯我强烈建议养成尤其是调试插件加载问题时--screen能让你第一时间看到插件初始化失败的具体原因而不是对着一堆沉默的进程发呆。6.4 备份可用的环境配置最后说一个看起来笨但极其有效的做法当你的仿真环境终于调通之后把关键配置备份下来。包括~/.bashrc里的环境变量、工作空间的setup.bash、Gazebo 的模型路径配置、以及那个能跑通的 launch 文件。我一般会把这些打包存一份换机器或者重装系统时直接恢复能省掉大量重复排查的时间。这套 Ubuntu 18.04 ROS Melodic Gazebo 9 的组合虽然不算新但在很多实际项目里依然是主力环境。把gazebo_ros_pkgs这一环装稳、验透后面的仿真开发才能少受环境问题的干扰。上面这些步骤和排查思路都是我在实际配置过程中反复验证过的照着走基本能覆盖绝大多数安装场景。

关于恒美微站

恒美微站专注于为个体商户、工作室提供极简自助建站服务,让每个人都能轻松拥有专业网站。

快速链接

  • 关于我们
  • 建站服务
  • 主题模板
  • 案例展示
  • 资讯中心

服务项目

  • 可视化建站
  • 拖拽编辑
  • 主题定制
  • SEO 优化
  • 网站托管

联系方式

  • 📍 地址:北京市朝阳区建国路 88 号
  • 📞 电话:400-888-8888
  • ✉️ 邮箱:info@hmyw.cn
  • 🕐 时间:周一至周日 9:00-18:00

© 2024 恒美微站 hmyw.cn 版权所有 | 京 ICP 备 12345678 号