ArduPilot飞控入门教程:如何5条命令跑通第一次仿真空机
【免费下载链接】ardupilotArduPlane, ArduCopter, ArduRover, ArduSub source项目地址: https://gitcode.com/GitHub_Trending/ar/ardupilot
ArduPilot是一套开源的无人机飞控固件,用同一套代码支持多旋翼、固定翼、地面车、水下艇和天线跟踪器。你想搭一台能自动飞行的无人机,或者只是想读懂飞控源码,都可以从这里开始。全文不需要任何硬件,一台电脑就够。
一套固件能驱动哪些车
先看它能干什么,再决定值不值得学:
- 多旋翼:支持四轴到八轴,可执行航点任务、自动起降和自主返航,代码在 ArduCopter/。
- 固定翼:自动起飞与着陆,用 TECS 总能量控制算法管理速度与高度,源码见 ArduPlane/。
- 地面车与水面艇:农业作业、物料运输、搜索救援这类低速自主行驶场景,由 Rover/ 承担。
- 水下艇:深度保持与水下导航,对应 ArduSub/;另有 AntennaTracker/ 做地面天线跟踪。
动手前:硬件和环境怎么选
学习阶段不需要买硬件,直接用 SITL(软件在环)仿真即可。等你准备上真机时,可以按下面的档位参考:
| 档位 | 适合场景 | 说明 |
|---|---|---|
| SITL 仿真 | 学习语法、验证功能、跑参数 | 零硬件成本,--board sitl即可编译运行 |
| CubeBlack | 入门自制多旋翼 | 经典 Pixhawk 兼容板,BUILD.md 中作为示例主板 |
| fmuv3(Pixhawk 2 系列) | 成熟项目 | 官方文档中列出的常用编译目标之一 |
| CM4Pilot | 需要多摄像头、SD 存储的专业平台 | 板卡引脚定义见下图,硬件描述在 libraries/AP_HAL_ChibiOS/ |
编译依赖按操作系统安装,Ubuntu 用户运行 Tools/environment_install/ 里的install-prereqs-ubuntu.sh即可,其他发行版和 macOS、Windows 也有对应脚本。
3步跑通第一次仿真
以下命令在 Linux 上执行。第一条会拉取代码和所有子模块,耗时取决于网络。
git clone --recurse-submodules https://gitcode.com/GitHub_Trending/ar/ardupilot cd ardupilot ./waf configure --board sitl # 指定编译目标为软件仿真 ./waf copter # 编译 ArduCopter编译成功后,二进制会出现在build/<board>/bin目录。然后启动仿真:
Tools/autotest/sim_vehicle.py -v ArduCopter # 启动仿真并自动连接 MAVProxyMAVProxy 会连上仿真机体,你可以切换模式、下达指令、观察遥测。想换目标时,./waf list_boards能列出全部支持的开发板;想换其他载具,把copter换成plane、rover、sub即可,完整列表在 BUILD.md 里。
功能能力地图
不按平台拆,按功能看这套代码能给你什么:
导航与位置保持。GPS、气压计、惯性测量单元的数据在 libraries/AP_AHRS/ 和 libraries/AP_NavEKF3/ 里做滤波融合,输出稳定的姿态和位置估计,这是所有悬停、定点、航点功能的底层。
任务与自主行为。航点任务执行在 libraries/AP_Mission/,自动起飞、降落、RTL 返航、智能返航(SmartRTL)等逻辑在各载具的mode_auto.cpp、mode_rtl.cpp中,例如 ArduCopter/mode_rtl.cpp。
安全机制。失控保护(failsafe)、地理围栏(fence)、降落检测等分散在 libraries/AP_Fence 及各载具的failsafe.cpp、fence.cpp中,真机前建议逐个了解触发条件。
脚本扩展。libraries/AP_Scripting/ 提供 Lua 运行时,不改 C++ 就能加自定义逻辑,适合做传感器采集和简单联动。
测试体系。Tools/autotest/ 内有各载具的自动测试脚本和默认参数集(default_params/),既是回归测试,也是现成的功能演示脚本。
避坑指南
新手最常卡住的几处,先对照检查再怀疑代码:
| 现象 | 可能原因 | 对策 |
|---|---|---|
| 编译报权限或路径异常 | 用 sudo 运行了 waf | 普通用户运行,BUILD.md 明确禁止 sudo |
| 编译完找不到二进制 | 没先 configure 就编译 | 先执行./waf configure --board sitl |
| 切换分支后编译失败 | 子模块版本不匹配 | 运行./waf submodulesync重新同步 |
| 仿真中 GPS 定位漂移大 | 用了错误的仿真模型或参数 | 换用default_params/中的默认参数集 |
文档与学习资源
- 项目总览与许可证:README.md(GPLv3,代码可自由修改)
- 编译系统完整说明:BUILD.md
- 自动测试脚本与默认参数:Tools/autotest/
- 依赖安装脚本:Tools/environment_install/
- 公共库源码(传感器、导航、电机):libraries/
- 文档配置:docs/
现在打开终端,先让仿真的 ArduCopter 离地一次,再考虑真机的事。
安全与合规提示:SITL 阶段没有任何风险,但接入真实硬件后务必在空旷安全区域测试,首飞前完成罗盘与加速度计校准、确认失控保护已启用;真机飞行前请确认当地法规要求,飞行活动需在合法合规的前提下进行。
【免费下载链接】ardupilotArduPlane, ArduCopter, ArduRover, ArduSub source项目地址: https://gitcode.com/GitHub_Trending/ar/ardupilot
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考