资讯动态

不用飞机也能开发无人机:ArduPilot开发环境搭建与SITL仿真实战

发布时间:2026/8/11 3:39:00 来源:尧图企业网站定制
上一篇文章《QGroundControl 5.0 安卓开发环境搭建实战》中我们成功搭建了 QGroundControlQGC开发环境并完成了源码编译。很多朋友问没有飞控怎么办没有无人机能学习开发吗MAVLink 协议怎么调试QGC 界面修改后如何验证答案是完全可以。事实上大多数无人机开发人员在开发初期使用最多的并不是无人机而是 SITLSoftware In The Loop软件在环仿真。通过 SITL我们可以在电脑上运行完整的飞控程序实现·飞控逻辑验证·MAVLink 通信调试·Mission 任务规划测试·QGroundControl 联调·自动驾驶算法验证甚至在没有飞控、没有飞机、没有遥控器的情况下完成绝大部分开发工作。今天就带大家从零搭建 ArduPilot 开发环境并启动第一个 SITL 仿真飞行器。什么是ArduPilotArduPilot 是目前全球最流行的开源飞控项目之一。支持·多旋翼Copter·固定翼Plane·车Rover·船Boat·潜航器Sub其核心特点·完全开源·社区活跃·支持 MAVLink 协议·支持 PX4、Cube、Pixhawk 等主流硬件整个系统架构如下地面站(QGC/Mission Planner) ↑ MAVLink ↑ 飞控程序 ↑ ArduPilot而 SITL 则允许飞控程序直接运行在电脑上。什么是SITLSITL 全称Software In The Loop 软件在环仿真。简单理解真实飞控 ↓运行在Pixhawk变成飞控代码 ↓运行在PC这样我们就可以·调试代码·查看 MAVLink 消息·测试自动驾驶逻辑·验证地面站功能而无需任何硬件。对于开发者来说这是学习成本最低的方式。开发环境准备本文采用Windows 11WSL2 Ubuntu 22.04ArduPilot Copter4.6.3推荐配置CPU4核以上内存16GB以上磁盘50GB以上安装基础依赖更新系统sudoapt updatesudoapt upgrade安装开发工具sudoapt install gitsudoapt install python3sudoapt install python3-pipsudoapt install python3-devsudoapt install wget安装 ArduPilot 依赖sudoapt install software-properties-common下载ArduPilot源码创建工作目录mkdir~/dronecd~/drone克隆源码gitclone https://github.com/ArduPilot/ardupilot.git进入项目cdardupilot更新子模块gitsubmodule update--init--recursive这一步时间较长请耐心等待。安装ArduPilot环境脚本官方已经提供了一键安装脚本。执行Tools/environment_install/install-prereqs-ubuntu.sh-y脚本会自动安装gccgpythonwafsim_vehicleMAVProxy编译工具链安装完成后执行source~/.profile使环境变量生效。编译ArduCopter进入项目根目录cd~/drone/ardupilot配置编译环境./waf configure编译多旋翼飞控./waf copter首次编译可能需要几分钟。编译成功后会看到Build successful启动第一个SITL执行sim_vehicle.py -v ArduCopter -I 0 --sysid1 --out 192.168.191.1:14550 稍等片刻后Starting ArduCopter随后看到Ready to FLY说明飞控已经成功启动。此时你的电脑上已经运行着一个完整的虚拟飞控。连接QGroundControl对于 QGC 用户相对MissionPlaner连接比较简单。SITL 默认会向UDP 14550发送 MAVLink 数据。启动 QGC 后通常会自动发现飞行器。如果没有发现Application Settings→ Comm Links新增UDP14550即可。测试自动起飞在 MAVProxy 控制台输入mode guided然后arm throttle解锁飞行器。执行takeoff 10表示起飞到10米高度此时在 QGroundControl 中可以看到·飞机解锁·高度上升·姿态变化·MAVLink 数据刷新整个过程无需任何真实飞机。测试多机仿真官方多机仿真命令sim_vehicle.py -v Copter --map --console --count 5 --auto-sysid --location CMAC --auto-offset-line 90,10 --mcast --out 192.168.111.1:14550实测后很难用,几乎无法控制建议自己参考上文讲的单机仿真启动多个终端这样比较流畅SITL能做什么很多新手以为 SITL 只是一个演示工具。实际上大量开发工作都在 SITL 中完成。例如MAVLink协议分析查看HEARTBEATATTITUDEGLOBAL_POSITION_INTSYS_STATUS等消息。QGroundControl开发调试Flight ViewMission地图参数系统等界面。自动驾驶算法验证航点飞行自动返航自动降落避障逻辑等功能。常见问题QGC无法发现飞行器检查UDP 14550是否被防火墙拦截。SITL启动失败重新执行gitsubmodule update--init--recursive确认依赖完整。编译报错执行./waf clean./waf configure./waf copter重新编译。总结对于无人机开发者来说真正开始学习飞控开发的第一步并不是购买飞机而是掌握 SITL。通过 ArduPilot SITL我们可以在一台普通电脑上完成·飞控开发·MAVLink 调试·地面站联调·自动驾驶验证而这一切都不需要任何硬件成本。在下一篇文章中我们将继续实战《QGroundControl连接ArduPilotSITL从MAVLink通信到自动起飞》带大家真正看懂SITL ↓MAVLink ↓QGroundControl ↓界面显示整个无人机软件系统是如何工作的。私信我免费赠送仿真镜像~本博客持续分享ArduPilot飞控开发QGroundControl二次开发MAVLink协议解析AI视觉无人机应用

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价