保姆级教程:在Ubuntu 20.04上搞定PX4 v1.33与FlightGear的联合仿真(附常见错误解决)

发布时间:2026/7/28 1:52:08

保姆级教程:在Ubuntu 20.04上搞定PX4 v1.33与FlightGear的联合仿真(附常见错误解决) 从零到一Ubuntu 20.04下PX4与FlightGear联合仿真全攻略第一次接触PX4和FlightGear的联合仿真时我几乎被各种依赖错误和配置问题折磨到崩溃。经过三天的不懈努力和无数次重装系统终于总结出一套真正可行的方案。本文将带你避开所有我踩过的坑用最短的时间搭建起完整的仿真环境。1. 环境准备与基础配置在开始之前确保你的Ubuntu 20.04系统已经更新到最新状态。打开终端执行以下命令sudo apt update sudo apt upgrade -y重要提示建议使用全新的Ubuntu 20.04系统进行安装避免因已有环境导致的冲突问题。我在尝试升级Ubuntu 18.04时遇到了大量兼容性问题最终选择了全新安装。1.1 安装必要依赖PX4和FlightGear需要一系列基础依赖库以下是必须安装的软件包sudo apt install -y git cmake python3-pip python3-dev python3-numpy \ python3-matplotlib python3-yaml python3-empy python3-jinja2 \ python3-argcomplete python3-setuptools python3-wheel \ gcc g make ninja-build protobuf-compiler \ libeigen3-dev libopencv-dev libxml2-utils \ libboost-all-dev libprotobuf-dev libcgal-dev常见问题如果遇到E: Unable to locate package错误可能是你的软件源配置有问题。可以尝试更换为国内镜像源sudo sed -i s/archive.ubuntu.com/mirrors.aliyun.com/g /etc/apt/sources.list sudo apt update1.2 配置Python环境PX4开发环境对Python版本有一定要求建议使用Python 3.8sudo update-alternatives --install /usr/bin/python python /usr/bin/python3.8 1 sudo update-alternatives --config python然后安装必要的Python包pip3 install --upgrade pip pip3 install packaging toml numpy jinja2注意不要使用sudo pip安装这可能导致权限问题。如果遇到权限错误可以添加--user参数。2. FlightGear安装与配置FlightGear是开源的飞行模拟器我们将使用PPA方式安装最新稳定版。2.1 安装FlightGear执行以下命令添加PPA并安装sudo add-apt-repository ppa:saiarcot895/flightgear sudo apt update sudo apt install -y flightgear flightgear-data安装完成后可以运行以下命令测试fgfs --launcher性能优化FlightGear默认会下载地景数据这可能导致首次启动非常缓慢。建议提前下载常用地景sudo apt install -y flightgear-data-aircrafts flightgear-data-base2.2 配置Protocol权限PX4与FlightGear通信需要写入Protocol目录需要设置正确权限sudo chmod aw /usr/share/games/flightgear/Protocol如果找不到该目录可能是安装路径不同可以尝试sudo find / -name Protocol -type d3. PX4固件编译与问题解决PX4是开源的自动驾驶仪软件我们将从GitHub克隆特定版本的代码。3.1 获取PX4源码推荐使用ThunderFly维护的flightgear-multi分支git clone https://github.com/ThunderFly-aerospace/PX4Firmware.git cd PX4Firmware git checkout flightgear-multi替代方案如果网络连接不稳定可以使用Gitee镜像git clone https://gitee.com/mirrors/PX4-Firmware.git cd PX4-Firmware git checkout flightgear-multi3.2 编译PX4进入PX4目录后首先初始化子模块git submodule update --init --recursive然后尝试编译固定翼仿真make px4_sitl_nolockstep flightgear_rascal常见错误及解决方案ignition-math4缺失错误Could not find a package configuration file provided by ignition-math4解决方法sudo apt install -y libignition-math4-devprotobuf版本冲突如果遇到protobuf相关错误可以尝试sudo apt remove libprotobuf-dev pip3 install --user protobuf3.19.4Python包缺失pip3 install --user pyserial cerberus pyulog3.3 测试不同机型PX4支持多种飞行器模型以下是常用命令固定翼飞机make px4_sitl_nolockstep flightgear_rascal旋翼机make px4_sitl_nolockstep flightgear_tf-g1车辆make px4_sitl_nolockstep flightgear_tf-r14. 联合仿真实战与技巧成功编译只是第一步要让仿真真正可用还需要一些技巧。4.1 优化FlightGear性能FlightGear默认设置可能很卡顿可以通过以下参数优化fgfs --launcher --prop:/sim/rendering/multithreading-modeAutomaticSelection \ --prop:/sim/rendering/texture-compressionon \ --prop:/sim/rendering/compressed-textures1 \ --prop:/sim/rendering/shaders/skydomefalse推荐配置参数推荐值说明texture-compressionon启用纹理压缩multithreading-modeAutomaticSelection自动选择多线程模式shaders/skydomefalse禁用复杂天空着色器rendering/quality-level3中等画质4.2 使用QGroundControlQGroundControl是PX4的官方地面站安装方法sudo usermod -a -G dialout $USER sudo apt install -y gstreamer1.0-plugins-bad gstreamer1.0-libav wget https://s3-us-west-2.amazonaws.com/qgroundcontrol/latest/QGroundControl.AppImage chmod x QGroundControl.AppImage ./QGroundControl.AppImage连接仿真器启动PX4仿真打开QGroundControl选择UDP连接方式4.3 飞行控制基础在仿真环境中可以通过MAVLink控制飞行器一键起飞commander takeoff切换飞行模式commander mode altitude降落commander land键盘控制参考W/S升降舵A/D副翼Q/E方向舵R/F油门V切换视角5. 高级调试与问题排查即使按照步骤操作仍可能遇到各种奇怪的问题。以下是我总结的排查方法。5.1 网络问题解决FlightGear需要下载地景数据如果卡在加载界面检查网络连接尝试更换下载服务器fgfs --launcher --prop:/sim/terrasync/scenery-dir/path/to/scenery \ --prop:/sim/terrasync/serverscenery.flightgear.org或者使用离线地景包sudo apt install -y flightgear-data-autogen5.2 编译错误排查如果make失败可以尝试清理编译缓存make clean详细日志输出make px4_sitl_nolockstep flightgear_rascal VERBOSE1检查依赖完整性./Tools/check_submodules.sh5.3 常见错误代码错误代码可能原因解决方案ENOENT文件缺失检查子模块是否初始化EACCES权限问题使用sudo或修复权限ECONNREFUSED连接拒绝检查FlightGear是否运行6. 仿真环境优化建议经过多次尝试我发现以下配置组合效果最佳硬件配置CPU至少4核内存8GB以上显卡支持OpenGL 3.3系统设置sudo sysctl -w vm.swappiness10 sudo echo vm.swappiness10 /etc/sysctl.confPX4参数调整设置SYS_USE_IO为0调整SITL_FRAME匹配你的机型FlightGear渲染设置关闭阴影降低云层细节使用纹理压缩在实际项目中我发现最稳定的组合是PX4 v1.33 FlightGear 2020.3.11。新版本虽然功能更多但往往带来新的兼容性问题。如果只是学习基础飞行控制这套组合已经足够。

相关新闻