用PX4 SITL和Gazebo搭建你的第一架仿真无人机(保姆级图文教程)

张开发
2026/5/3 18:44:54 15 分钟阅读
用PX4 SITL和Gazebo搭建你的第一架仿真无人机(保姆级图文教程)
用PX4 SITL和Gazebo从零搭建仿真无人机全流程指南在无人机开发领域仿真环境的重要性不亚于实体飞行测试。一个稳定可靠的仿真平台不仅能大幅降低开发成本还能避免真实飞行中可能出现的各种风险。对于初学者而言PX4 SITLSoftware In The Loop配合Gazebo仿真器无疑是最佳入门选择——它完整复现了真实飞控的软件环境又无需额外硬件投入。本文将手把手带你完成从环境配置到首次起飞的完整流程特别针对Ubuntu系统下的常见坑点提供解决方案。1. 环境准备搭建PX4 SITL的基础舞台PX4生态对Linux系统有原生支持推荐使用Ubuntu 20.04 LTS或22.04 LTS版本。低于18.04的系统可能面临依赖库版本冲突问题。实测在Intel i5处理器、16GB内存的笔记本上即可流畅运行基础仿真但若需加载复杂环境或多机仿真建议32GB内存配置。首先安装基础依赖工具链sudo apt-get update sudo apt-get install git zip qtcreator cmake build-essential genromfs -y关键一步是配置Python环境。PX4开发工具链需要Python 3.8环境但系统自带的Python 2.7可能造成干扰。建议通过pyenv管理多版本Pythoncurl https://pyenv.run | bash echo export PYENV_ROOT$HOME/.pyenv ~/.bashrc echo command -v pyenv /dev/null || export PATH$PYENV_ROOT/bin:$PATH ~/.bashrc echo eval $(pyenv init -) ~/.bashrc source ~/.bashrc pyenv install 3.10.6 pyenv global 3.10.6注意所有终端窗口在修改环境变量后都需要重新打开或执行source ~/.bashrc使配置生效常见问题排查表错误现象可能原因解决方案make: arm-none-eabi-gcc: Command not found交叉编译工具链缺失执行sudo apt-get install gcc-arm-none-eabiImportError: No module named emPython环境冲突确认pyenv版本为3.x且已激活Failed to connect to MAVLink端口占用重启系统或killall -9 px42. 构建PX4开发环境与Gazebo插件PX4源码采用模块化设计建议在home目录创建专用工作空间mkdir -p ~/px4_ws/src cd ~/px4_ws/src git clone --recursive https://github.com/PX4/PX4-Autopilot.git cd PX4-Autopilot make distclean git submodule update --init --recursiveGazebo仿真需要安装特定版本的ROS和插件。对于Ubuntu 20.04推荐ROS Noetic22.04则需ROS2 Humble。以Noetic为例sudo sh -c echo deb http://packages.ros.org/ros/ubuntu $(lsb_release -sc) main /etc/apt/sources.list.d/ros-latest.list sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-key C1CF6E31E6BADE8868B172B4F42ED6FBAB17C654 sudo apt update sudo apt install ros-noetic-desktop-full ros-noetic-gazebo-ros-pkgs -y echo source /opt/ros/noetic/setup.bash ~/.bashrc source ~/.bashrc验证Gazebo安装成功的技巧是运行一个简单世界gazebo --verbose /opt/ros/noetic/share/gazebo_plugins/worlds/gazebo_ros_diff_drive_demo.world关键组件版本兼容性对照组件推荐版本备注Ubuntu20.04/22.04 LTS避免非LTS版本PX4v1.13主分支每日构建也可用Gazebo11/Classic暂不支持Gazebo FortressROSNoetic/Humble匹配Ubuntu版本3. 首次运行SITL仿真与QGC配置在PX4源码目录下通过以下命令启动基础四旋翼模型cd ~/px4_ws/src/PX4-Autopilot make px4_sitl gazebo-classic成功启动后会看到两个关键窗口PX4控制台显示飞控启动日志和mavlink消息Gazebo界面呈现iris四旋翼模型和空场景此时需要配置QGroundControl地面站建议使用每日构建版从QGC官网下载AppImage赋予执行权限chmod x QGroundControl.AppImage启动后自动连接UDP端口14550连接状态验证方法QGC顶部状态栏显示Connected姿态指示器随Gazebo中模型移动而变化在MAVLink Inspector中能看到活跃的传感器数据流提示如果QGC无法自动连接可手动添加UDP链接地址为127.0.0.1端口14550常见通信问题处理步骤检查PX4启动日志是否有mavlink started输出确认防火墙未阻止UDP通信sudo ufw status尝试重启mavlink模块在PX4控制台输入mavlink stop-all后mavlink start -d /dev/ttyACM04. 进阶仿真场景配置与飞行测试基础环境就绪后PX4支持加载多种预置场景。例如启动带有光电相机的仿真export PX4_SIM_MODELiris_opt_flow make px4_sitl gazebo-classicGazebo世界文件存放在Tools/simulation/gazebo-classic/sitl_gazebo-classic/worlds目录。要自定义场景可复制修改现有文件如!-- 在world标签内添加建筑物 -- include urimodel://building_1/uri pose5 5 0 0 0 0/pose /include首次飞行测试推荐步骤在QGC的Vehicle Setup完成传感器校准切换到Plan视图创建简单任务如5米高度悬停切回Fly视图解锁油门左摇杆右下角切换至Position模式后推油门起飞飞行模式对照说明模式控制方式适用场景Stabilize手动平衡基础训练PositionGPS定位常规任务Offboard外部指令自主开发调试技巧按CtrlB暂停Gazebo仿真在PX4控制台输入commander check快速诊断使用param show SYS_AUTOSTART查看载入的机型配置5. 性能优化与多机仿真技巧当需要运行多架无人机或复杂环境时可通过以下手段提升性能# 降低Gazebo渲染质量 export GAZEBO_GPU_renderingfalse # 使用轻量级模型 export PX4_SIM_MODELtyphoon_h480 # 限制仿真速度 make px4_sitl gazebo-classic HEADLESS1 PX4_SIM_SPEED_FACTOR0.8启动多机仿真的正确姿势# 终端1 - 启动主实例 make px4_sitl gazebo-classic none_iris # 终端2 - 添加第二架 ./Tools/simulation/gazebo-classic/sitl_multiple_run.sh -n 2关键参数调整建议参数默认值优化建议SYS_CPU_LOAD90%降为70%留余量SIM_BAT_MIN_PCT20%设为5%延长仿真MIS_TAKEOFF_ALT2.5m根据场景调整内存管理策略关闭Gazebo物理引擎可视化按F2使用top监控进程优先kill非必要服务考虑分步加载大型场景元素

更多文章