尧图网站建设 尧图网络
  • 首页
  • 关于我们
  • 服务项目
  • 案例展示
  • 建站流程
  • 资讯中心
  • 联系我们
首页/资讯中心/详情

Prometheus 无人机仿真平台 Ubuntu 18.04 部署:3个关键编译报错与解决方案

Prometheus 无人机仿真平台 Ubuntu 18.04 部署:3个关键编译报错与解决方案
📅 发布时间:2026/7/8 21:49:22

Prometheus无人机仿真平台Ubuntu 18.04部署:3个关键编译报错与解决方案

在无人机开发领域,仿真环境搭建是算法验证和系统测试的关键环节。Prometheus作为国内知名的开源无人机仿真平台,集成了PX4飞控、ROS通信和Gazebo物理引擎,为开发者提供了完整的仿真解决方案。然而,在Ubuntu 18.04系统上部署Prometheus时,开发者常会遇到各种编译问题,这些问题往往成为阻碍项目快速推进的"拦路虎"。

本文将聚焦三个最具代表性的编译报错,通过深入分析问题根源,提供经过验证的解决方案。不同于线性的安装教程,我们将从问题排查的角度切入,帮助开发者快速定位和解决部署过程中的核心障碍。无论您是刚开始接触无人机仿真的研究生,还是需要快速搭建测试环境的工程师,都能从本文找到实用参考。

1. CMake版本冲突引发的Gazebo编译失败

1.1 问题现象描述

在编译prometheus_px4时,执行make amovlab_sitl_default gazebo_p450命令后,终端输出如下错误:

[813/817] Linking CXX executable bin/px4 FAILED: external/Stamp/sitl_gazebo/sitl_gazebo-build ninja: build stopped: subcommand failed. Makefile:231: recipe for target 'px4_sitl' failed make: *** [px4_sitl] Error 1

1.2 根因分析

该问题通常由以下两个因素共同导致:

  1. CMake版本不兼容:PX4 Gazebo仿真需要特定版本的CMake(3.17-3.19),而Ubuntu 18.04默认安装的CMake 3.10无法正确处理某些编译选项
  2. Python包安装位置错误:当系统安装了Anaconda时,相关Python包(如toml、empy)可能被安装到conda虚拟环境而非系统路径

1.3 解决方案

步骤1:安装指定版本CMake
wget https://cmake.org/files/v3.17/cmake-3.17.2-Linux-x86_64.sh sudo chmod +x cmake-3.17.2-Linux-x86_64.sh sudo ./cmake-3.17.2-Linux-x86_64.sh --prefix=/usr/local --exclude-subdir
步骤2:修正Python包安装路径
sudo -H python3 -m pip install --user toml empy jinja2 packaging -i https://pypi.douban.com/simple
步骤3:验证CMake版本
cmake --version # 应显示3.17.x

注意:完成安装后需要重新打开终端使环境变量生效

1.4 补充说明

如果仍遇到编译错误,可尝试清理编译缓存:

cd prometheus_px4 make clean rm -rf build/

2. 子模块下载失败问题

2.1 问题现象

执行git submodule update --init --recursive时,出现如下错误:

fatal: unable to access 'https://github.com/aquynh/capstone.git/': Failed to connect to github.com port 443: Connection timed out fatal: clone of 'https://github.com/aquynh/capstone.git' into submodule path '/tmp/bloaty/third_party/capstone' failed

2.2 根因分析

主要原因是:

  • 国内网络环境访问GitHub不稳定
  • 部分子模块仓库体积较大(如gazebo模型库)
  • 子模块依赖链复杂,单个失败会导致整个流程中断

2.3 解决方案

方法一:使用Gitee镜像(推荐)
# 修改.gitmodules文件中的URL sed -i 's/github.com/gitee.com/g' .gitmodules
方法二:手动下载子模块
  1. 从错误信息中获取失败的子模块URL
  2. 通过代理或镜像站下载对应仓库ZIP包
  3. 解压到指定路径(如/tmp/bloaty/third_party/capstone)
方法三:分步更新子模块
# 先更新主要子模块 git submodule update --init Tools/setup git submodule update --init src/modules # 再更新其他非必要子模块

2.4 验证方法

成功更新所有子模块后,应能在以下目录找到对应内容:

prometheus_px4/Tools/setup/ prometheus_px4/src/modules/

3. 权限问题导致的编译中断

3.1 问题现象

编译过程中出现如下权限错误:

CMake Error at cmake/px4_add_module.cmake:102 (file): file cannot create directory: /usr/local/share/... Permission denied

3.2 根因分析

Ubuntu系统默认权限限制导致:

  1. 普通用户无权写入系统目录(如/usr/local)
  2. 部分脚本未正确处理sudo权限
  3. 编译中间文件生成失败

3.3 解决方案

方案一:全局权限修正
# 授予当前用户对Prometheus目录的完全权限 sudo chown -R $USER:$USER /path/to/Prometheus chmod -R 755 /path/to/Prometheus
方案二:指定用户目录安装
# 在CMake命令中添加本地安装路径 cmake -DCMAKE_INSTALL_PREFIX=$HOME/.local ..
方案三:使用sudo编译(不推荐)
sudo make amovlab_sitl_default gazebo_p450

警告:使用sudo编译可能导致后续开发权限混乱,建议作为最后手段

3.4 权限问题检查清单

完成修复后,请确认:

  1. 当前用户对项目目录有读写权限
  2. 所有依赖的安装目录可访问
  3. 环境变量指向正确的路径

4. 其他常见问题与优化建议

4.1 编译加速技巧

# 使用多核编译(根据CPU核心数调整) make -j$(nproc) # 禁用无关模块编译 export DISABLE_MODULES=modules/logger

4.2 依赖管理最佳实践

建议使用以下命令安装系统依赖:

# ROS melodic依赖 sudo apt-get install ros-melodic-mavros ros-melodic-mavros-extras sudo apt-get install ros-melodic-rtabmap* # Gazebo相关依赖 sudo apt-get install libgazebo9-dev

4.3 环境配置检查表

完成安装后,请验证以下关键组件:

组件验证命令预期输出
ROSroscore &无报错启动
Gazebogazebo --version9.x版本
PX4make px4_sitl list_vmd_make_targets显示可用目标

4.4 网络代理配置

如需使用代理,建议配置全局环境变量:

export http_proxy=http://proxy.example.com:8080 export https_proxy=http://proxy.example.com:8080

5. 仿真平台验证与测试

5.1 基础功能测试

# 启动Gazebo仿真环境 roslaunch prometheus_gazebo sitl.launch # 启动QGroundControl地面站 ./QGroundControl.AppImage

5.2 常见测试场景

场景1:基础控制测试
# 示例Python控制脚本 from prometheus_pkg import uav_control uav = uav_control.UAV() uav.takeoff(height=5) uav.go_to_position(x=10, y=10, z=5)
场景2:视觉SLAM测试
roslaunch prometheus_slam rtabmap.launch
场景3:多机协同仿真
# 在终端1启动仿真环境 roslaunch prometheus_gazebo multi_uav.launch # 在终端2启动控制节点 rosrun prometheus_control multi_uav_control.py

5.3 性能优化建议

  1. 关闭不必要的Gazebo插件
  2. 使用简化模型替代高精度模型
  3. 在~/.bashrc中添加以下优化参数:
export GAZEBO_RESOURCE_PATH=/usr/share/gazebo-9 export GAZEBO_MODEL_PATH=~/.gazebo/models

相关新闻

  • 3种车牌定位方案对比:OpenCV 颜色分割 vs 边缘检测 vs 形态学操作
  • Linux 到 Windows 10 系统迁移实战:3 种启动盘制作与 5 个常见安装报错解决
  • Cockpit 项目 363 版本:CentOS 8/Ubuntu 22.04 双平台部署与 5 大核心模块配置

最新新闻

  • 【对比评测】SendTomo与主流文件传输工具深度对比评测
  • WarcraftHelper:魔兽争霸3实用技巧与高效优化方法深度解析
  • 稳健性设计实战:3步正交实验法降低产品性能变异系数 20%
  • 3种机器学习算法对比:SVM、ML与MD在湿地分类中的97.2%精度差异分析
  • 随机森林 vs 梯度提升树:5个回归任务实测,R²与训练速度对比
  • PyTorch 2.0 实战:CIFAR-10 图像分类,5个Epochs实现85%+准确率

日新闻

  • PROPKA 3深度解析:蛋白质pKa预测的实战指南与算法原理
  • 微信小程序 globalData 监听:基于 Object.defineProperty 的 3 种实现方案对比
  • MySQL 8.0 数据清洗实战:3类异常值识别与 UPDATE/DELETE 批量处理

周新闻

  • 基于YOLOv12的番茄成熟度智能检测系统开发
  • 终极RimWorld模组管理指南:用RimSort告别模组冲突烦恼
  • AI Agent框架开发:从理论到实践的完整指南

月新闻

  • 2026年6月公司网站搭建最新热门渠道测评:四大低成本/零代码平台对比+避坑
  • 【Linux】Linux arm 编译QT程序,出现expected “}“报错
  • 【MATLAB例程】四基站二维AOA定位与距离辅助增强对比仿真。基于角度观测和测距修正的固定目标平面定位精度分析

关于尧图

  • 公司简介
  • 团队介绍
  • 企业文化
  • 荣誉资质

服务项目

  • 定制开发
  • 电商建站
  • UI 设计
  • 运维服务

快速链接

  • 案例展示
  • 建站流程
  • 常见问题
  • 资讯中心

联系方式

  • 📍北京市朝阳区互联网产业园 A 座 10 层
  • 📞400-888-8888
  • ✉️contact@rkmt.cn
  • 🕐周一至周日 9:00-21:00

© 2024 北京尧图网络科技有限公司 版权所有 | 京 ICP 备 XXXXXXXX 号