别再死磕PX4了!用APM+Gazebo+SITL在Ubuntu 20.04上快速搭建无人机仿真环境(附QGC连接)

张开发
2026/6/9 11:13:13 15 分钟阅读

分享文章

别再死磕PX4了!用APM+Gazebo+SITL在Ubuntu 20.04上快速搭建无人机仿真环境(附QGC连接)
无人机仿真新选择APMGazeboSITL高效搭建指南如果你正在寻找一种比PX4更轻量、更易上手的无人机仿真方案那么APM固件配合Gazebo和SITL的组合可能正是你需要的。与PX4相比APM在某些场景下展现出明显的优势——更低的资源占用、对特定硬件的更好支持以及相对简化的配置流程。本文将带你从零开始在Ubuntu 20.04系统上快速搭建完整的APM仿真环境并实现与QGroundControl地面站的无缝连接。1. 为什么选择APM而非PX4在无人机仿真领域PX4无疑是当前最热门的选择但这并不意味着它适合所有人。APM固件在某些方面具有PX4无法比拟的优势资源占用更低APM的仿真环境对系统资源要求更低特别适合在笔记本电脑或配置较低的机器上运行硬件兼容性更广对于某些特定硬件尤其是老款飞控APM的支持往往更加完善学习曲线更平缓APM的配置过程相对简单特别适合刚接触无人机仿真的开发者社区支持稳定虽然不如PX4活跃但APM社区的问题解答和经验分享往往更加成熟稳定表APM与PX4在仿真环境中的主要差异对比特性APMPX4资源占用低中高硬件支持广度广较窄配置复杂度简单复杂社区活跃度稳定非常活跃文档完整性完善非常完善2. 环境准备与基础配置在开始之前请确保你使用的是Ubuntu 20.04系统。虽然其他版本也可能工作但20.04是目前最稳定的选择。2.1 系统基础依赖安装首先更新系统并安装基础工具sudo apt-get update sudo apt-get upgrade -y sudo apt-get install -y git cmake build-essential python3-dev python3-pip2.2 APM固件获取与初始化APM的官方代码库托管在GitHub上我们可以直接克隆git clone https://github.com/ArduPilot/ardupilot.git cd ardupilot git submodule update --init --recursive提示如果网络状况不佳导致克隆失败可以直接从GitHub下载zip包并解压然后手动初始化子模块。2.3 环境依赖安装APM提供了一个便捷的脚本来自动安装所有依赖Tools/environment_install/install-prereqs-ubuntu.sh -y安装完成后别忘了更新环境变量. ~/.profile3. Gazebo仿真环境搭建Gazebo是无人机仿真的核心组件我们需要专门为APM配置Gazebo环境。3.1 安装Gazebo插件APM有专门的Gazebo插件需要安装git clone https://github.com/SwiftGust/ardupilot_gazebo cd ardupilot_gazebo mkdir build cd build cmake .. make -j$(nproc) sudo make install3.2 常见问题解决在Gazebo安装过程中可能会遇到以下问题CMake找不到Gazebosudo apt-get install ros-noetic-gazebo-devProtobuf版本冲突sudo apt-get remove --purge protobuf-compiler sudo apt-get install libprotobuf-dev protobuf-compiler3.3 环境变量配置为了让系统正确找到Gazebo资源需要添加以下环境变量echo source /usr/share/gazebo/setup.sh ~/.bashrc echo export GAZEBO_MODEL_PATH~/ardupilot_gazebo/models:${GAZEBO_MODEL_PATH} ~/.bashrc echo export GAZEBO_RESOURCE_PATH~/ardupilot_gazebo/worlds:${GAZEBO_RESOURCE_PATH} ~/.bashrc echo export GAZEBO_PLUGIN_PATH~/ardupilot_gazebo/build:${GAZEBO_PLUGIN_PATH} ~/.bashrc source ~/.bashrc4. 运行仿真并连接QGC现在我们已经准备好启动完整的仿真环境了。4.1 启动SITL仿真首先在一个终端中启动APM的SITL仿真cd ~/ardupilot/ArduCopter sim_vehicle.py --map --console4.2 启动Gazebo在另一个终端中启动Gazebogazebo --verbose zephyr_ardupilot_demo.world4.3 连接QGroundControl下载并安装最新版QGroundControl启动QGC后它应该会自动连接到仿真环境如果未能自动连接可以手动添加UDP连接端口号为145504.4 常见连接问题QGC无法发现无人机检查防火墙设置确保UDP端口14550未被阻止Gazebo模型不显示确认GAZEBO_MODEL_PATH环境变量设置正确控制响应延迟可能是系统资源不足尝试关闭不必要的程序5. 高级配置与优化一旦基础仿真环境运行正常你可以尝试以下高级配置5.1 自定义无人机模型APM支持自定义Gazebo无人机模型。要添加自己的模型在ardupilot_gazebo/models目录下创建新文件夹添加模型文件.sdf或.urdf更新模型配置文件5.2 多机仿真APM支持多无人机同时仿真。要启动多机仿真sim_vehicle.py -v ArduCopter -f gazebo-iris --console --map -I0 sim_vehicle.py -v ArduCopter -f gazebo-iris --console --map -I1每个实例需要使用不同的-I参数-I0, -I1等。5.3 添加传感器噪声为了更真实的仿真可以添加传感器噪声模型。在启动SITL时添加参数sim_vehicle.py --add-param-file噪声配置文件路径6. 实际应用场景APM仿真环境可以应用于多种场景算法开发与测试在安全的环境中开发和测试飞行控制算法硬件在环测试连接真实飞控进行硬件在环仿真教育培训用于无人机相关课程的教学演示任务模拟模拟特定飞行任务如航拍、巡检等我在实际项目中使用APM仿真环境时发现对于需要快速验证想法的场景APM的轻量级特性带来了很大便利。相比PX4APM的仿真启动速度更快资源占用更低特别适合在开发初期频繁迭代的阶段使用。

更多文章