4. 飞控系统核心
开源飞控是无人机自主巡航系统的“大脑”,它负责融合传感器数据、执行姿态解算、运行控制律并输出PWM/MAVLink指令。在自主巡航场景中,飞控的配置与校准质量直接决定了任务能否安全执行。本章将围绕PX4与ArduPilot两大主流固件,从固件选型、传感器校准、参数调优到实际巡航前的检查闭环,构建一套可复用的工程化配置流程。
4.1 开源飞控固件选型与系统架构
PX4和ArduPilot是当前最主流的开源自动驾驶仪固件。PX4采用NuttX实时操作系统,模块化程度高,适合科研与二次开发,其多旋翼姿态控制基于级联PID结构,支持VTOL、固定翼与无人车。ArduPilot则拥有更长的历史积累,在固定翼和直升机模式上表现成熟,其参数体系(如ArduCopter)对传统航模用户更友好。在自主巡航场景下,两者均支持MAVLink协议,可无缝对接QGroundControl(QGC)或Mission Planner(MP)地面站。
选型时需考虑以下维度:
- 任务复杂度:若需深度定制(如视觉避障融合),PX4的模块化架构更易扩展;若以稳定航点飞行为主,ArduPilot的默认参数更省心。
- 硬件兼容性:检查飞控板(如Pixhawk 6C、Cube Orange)的固件支持列表,确保外设驱动(如RTK GPS、激光雷达)有对应驱动。
- 社区与日志:PX4的ULog日志解析工具丰富,ArduPilot的DataFlash日志在故障分析时更直观。
4.2 传感器校准:从原始数据到可信状态
传感器校准是飞控配置中最关键的一步。未校准的加速度计会导致姿态解算偏差,罗盘误差会引发航向漂移,气压计噪声则直接影响高度控制。校准的本质是建立传感器原始输出与物理量(加速度、角速度、磁场强度、气压)之间的映射关系。
4.2.1 加速度计与陀螺仪校准
加速度计校准通常采用六面法:将飞行器分别水平、左侧、右侧、机头向下、机头向上、倒置放置,每个姿态保持静止数秒。PX4通过采集六个面的重力矢量,计算零偏与比例因子。陀螺仪校准则需在静止状态下采集数秒数据,确定零偏(bias)。在QGC中,进入“传感器校准”向导,按提示操作即可。
# PX4 命令行校准示例(通过MAVLink Shell)
accel cal
gyro cal
# 校准完成后,检查传感器健康状态
list_sensors
4.2.2 罗盘校准与磁场干扰排查
罗盘校准需在无大型金属物体的开阔场地进行。PX4采用“旋转校准”法:将飞行器绕各轴旋转,采集空间各方向的磁场样本。校准后应检查磁场的模长(约400-600mGauss)和倾角(与当地地磁倾角一致)。若机架存在大电流线路或动力电池靠近罗盘,会产生硬磁干扰,需通过安装位置调整或罗盘外置解决。
4.2.3 水平校准与传感器对齐
水平校准(Level Horizon)用于确定飞控板安装平面与机架平面的对齐关系。若飞控安装有倾斜,需在机架水平状态下执行此校准,否则巡航时飞机会向一侧漂移。PX4中通过“水平校准”向导,保持飞行器水平并点击确认即可。
| 校准项目 | 操作要点 | 验证指标 | 常见错误 |
|---|---|---|---|
| 加速度计 | 六面静止,每面保持2秒 | 各轴比例因子≈1,零偏<0.05g | 放置不平或震动导致样本无效 |
| 陀螺仪 | 静止采样,机架无震动 | 零偏<0.5°/s | 校准时机架未完全静止 |
| 罗盘 | 远离金属,旋转覆盖全方向 | 模长400-600mG,倾角与当地一致 | 附近有高压线或铁质桌面 |
| 水平 | 机架水平,飞控安装牢固 | 俯仰/横滚角≈0° | 飞控安装倾斜未修正 |
4.3 基本参数调优:从默认值到巡航品质
参数调优的目标是让飞控在“稳定性”与“响应性”之间取得平衡。对于自主巡航,我们更关注姿态跟踪精度和位置保持能力,而非极限机动性能。PX4多旋翼的姿态控制分为角度环(外环)和角速率环(内环),典型参数为MC_ROLL_P、MC_ROLL_RATE_P/I/D。
4.3.1 滤波与估计器参数
IMU数据滤波直接影响控制品质。PX4中IMU_GYRO_CUTOFF(默认80Hz)和IMU_ACCEL_CUTOFF(默认100Hz)用于低通滤波。若机架震动较大,可适当降低截止频率(如40Hz),但会引入延迟。EKF2参数(如EKF2_ACC_NOISE、EKF2_GYRO_NOISE)需根据传感器数据手册和实际噪声水平调整,过大则估计滞后,过小则噪声放大。
4.3.2 位置与速度环调参
在自主巡航中,位置环(POS_XY_P)和速度环(VEL_XY_P/I)决定了航点跟踪的精度。默认参数通常偏保守,可先保持默认,通过试飞观察水平位置误差。若发现航点间过度超调,可降低VEL_XY_P;若跟踪滞后,则适当增大。
# 常用调参命令(通过QGC参数界面或MAVLink)
# 查看当前参数
param show MC_ROLL_RATE_P
# 修改参数(例如将横滚速率环P值从0.15改为0.18)
param set MC_ROLL_RATE_P 0.18
# 保存参数
param save
4.3.3 巡航相关参数
- NAV_ACC_RAD:航点到达判定半径(默认0.5m),巡航时可放宽至1-2m,减少频繁修正。
- WP_*:航点行为参数,如WP_YAW_BEHAVIOR(航向行为),可设为“沿轨迹方向”或“固定朝向”。
- RTL_*:返航高度与速度,需确保高于周边障碍物。
4.4 案例拆解:多旋翼自主巡航前的飞控调优实战
某农业植保团队使用PX4 + Pixhawk 6C飞控,搭载RTK GPS和毫米波雷达,执行果园巡检任务。初始试飞时,无人机在航点间出现明显的“S形”轨迹,且高度波动超过±1.5m。
分析过程:首先检查传感器健康状态,发现加速度计Z轴噪声偏大(标准差0.08g),且罗盘模长在机头朝南时异常(从450mG降至380mG)。进一步排查发现,动力电池的XT90接头距离罗盘模块仅8cm,大电流放电时产生磁场干扰。
操作步骤:
- 将罗盘模块外移至机臂前端,远离电池和电源线,重新执行罗盘校准,模长恢复至420-460mG。
- 在QGC中降低IMU_ACCEL_CUTOFF至60Hz,观察加速度计噪声标准差降至0.03g。
- 将NAV_ACC_RAD从0.5m调整为1.2m,减少航点附近的反复修正。
- 将VEL_XY_P从默认1.8调至2.2,VEL_XY_I从0.2调至0.3,提高速度环响应。
- 进行小范围悬停测试,确认姿态波动小于±2°,然后执行3个航点的低速巡航(5m/s)。
结果对比:调整后,航点轨迹平滑,无S形摆动;高度波动控制在±0.4m以内;RTK定位下水平误差小于0.15m。代价是速度环P值增大后,在阵风条件下出现轻微抖动,但通过将IMU_GYRO_CUTOFF从80Hz降至50Hz,抖动被有效抑制。
4.5 常见误区与总结复盘
误区一:跳过校准直接调PID。传感器未校准,姿态解算本身就有偏差,PID调优无从谈起。务必按顺序完成加速度计、陀螺仪、罗盘、水平校准。
误区二:盲目照搬他人参数。不同机架、电机、螺旋桨的振动特性差异巨大,滤波参数和PID增益必须基于本机试飞数据调整。
误区三:忽略EKF健康状态。即使传感器校准合格,EKF仍可能因GPS丢星、气压计受气流干扰而报错。巡航前必须检查EKF状态(QGC中显示为“健康”或“不健康”)。
误区四:参数修改后不保存。PX4参数在重启后若未执行param save,会恢复默认值,导致试飞结果不一致。