飞控系统基础:PX4/ArduPilot飞控架构概览、传感器融合与控制环路

大家好,我是你们的飞控调试讲师。今天咱们聊聊飞控系统的骨架——架构、传感器融合和控制环路。这部分内容,说白了就是无人机的大脑、眼睛和肌肉反射。

我个人习惯把飞控系统拆成三个层面来看:硬件抽象层(传感器怎么读数据)、中间层(数据怎么融合成状态)、应用层(状态怎么变成电机转速)。你想想看,悬停不稳,八成是这三个层面中某个环节出了问题。

PX4 vs ArduPilot:两种主流架构的差异

先说说两个主流开源飞控。PX4和ArduPilot,就像Linux和Windows——各有拥趸,各有绝活。

对比维度 PX4 ArduPilot
架构风格 微内核 + 模块化 宏内核 + 任务调度
传感器融合 EKF2/3(扩展卡尔曼滤波) EKF3(类似,但参数更多)
控制环路 位置-速度-姿态-角速率 四环 位置-速度-姿态-角速率 四环
调试工具 QGroundControl + MAVLink Mission Planner + MAVLink
典型应用 科研、竞速、VTOL 航拍、测绘、农业

我在项目中遇到过不少新手,上来就问“哪个更好?”其实没有绝对的好坏。PX4的模块化设计,让我在调试新传感器时能单独替换模块,不用动整个系统。而ArduPilot的宏内核,参数多到让人眼花缭乱,但调好了确实稳。

我的建议:如果你刚开始学,从ArduPilot入手会容易些,文档多、社区活跃。但如果你要做深度定制,PX4的模块化会让你少掉很多头发。

传感器融合:IMU、GPS、光流是怎么“商量”的

传感器融合,说白了就是让多个“瞎子”互相纠正,得出一个靠谱的结论。

IMU(惯性测量单元):包含加速度计和陀螺仪。加速度计测重力方向,陀螺仪测旋转角速度。但加速度计怕振动,陀螺仪有零漂。所以需要融合。

GPS:提供绝对位置和速度。但GPS更新频率低(5-10Hz),而且高楼遮挡时信号会跳变。

光流:通过摄像头图像计算水平移动速度。室内无GPS时,光流就是救星。但光流怕纹理少的地面(比如纯白地板),也怕光照变化。

为什么会这样?因为每种传感器都有“死穴”。IMU短期准但长期漂,GPS长期准但短期跳,光流在特定场景下准但通用性差。

核心逻辑:飞控内部用扩展卡尔曼滤波(EKF)把这些数据揉在一起。EKF会根据每个传感器的“置信度”(噪声协方差)动态调整权重。比如GPS信号差时,EKF会自动降低GPS的权重,更多依赖IMU和光流。

我曾经调试一架室内无人机,悬停时总是慢慢往一个方向飘。查了半天,发现是光流传感器的安装角度偏了0.5度。嗯,这种“软故障”最难查,因为EKF不会报错,只会默默把偏差吸收进状态估计里。

控制环路:内环角速率、外环姿态、位置

控制环路是飞控的“肌肉反射”。我习惯把它想象成三层嵌套的PID环:

  • 最内层:角速率环(100-200Hz)——控制电机转速,让飞机不转圈
  • 中间层:姿态环(50-100Hz)——控制飞机倾斜角度,让飞机保持水平
  • 最外层:位置环(10-20Hz)——控制飞机位置,让飞机悬停在一个点

你想想看,如果内环没调好,外环再怎么调也是白费力气。就像你让一个喝醉的人走直线——他连站都站不稳,怎么可能走直?

避坑指南:我曾经在调试一架大载重无人机时,为了追求响应速度,把内环P值调得很大。结果飞机高频抖动,电机发烫。后来才明白,内环的带宽受限于电机和桨叶的物理响应——你调得再快,电机也转不了那么快。

下面这张图是我自己画的飞控系统架构图,帮你理清各模块的关系:

飞控系统架构图 传感器层 IMU (加速度计+陀螺仪) GPS 光流 磁力计 气压计 传感器融合层 (EKF2/3) 输出:位置、速度、姿态四元数、角速度 控制环路层 位置环 (10-20Hz) 速度环 (20-50Hz) 姿态环 (50-100Hz) 角速率环 (100-200Hz) —— 最内层 执行层:电机PWM输出 → 桨叶旋转

从这张图你能看到,数据从传感器流入融合层,变成状态估计,然后进入控制环路层层计算,最后输出给电机。每个环节的延迟和精度都会影响最终悬停效果。

实际调试中的经验之谈

我个人习惯在调试悬停参数时,先看内环角速率环的响应。怎么判断?用手轻轻拨动飞机,看它回正的速度和超调量。如果回正太慢,增大P值;如果来回晃动,减小P值或增大D值。

嗯,这里要注意:内环调好后,再动外环。很多人一上来就调位置环的P值,结果飞机像“点头”一样前后晃动——其实是内环没锁住。

核心公式(简化版):

角速率环输出 = P * (目标角速率 - 实际角速率) + I * 积分项 + D * 微分项
姿态环输出 = P * (目标角度 - 实际角度) + I * 积分项
位置环输出 = P * (目标位置 - 实际位置) + I * 积分项

注意:外环的输出是内环的目标值。比如位置环输出的是目标速度,速度环输出的是目标角度,姿态环输出的是目标角速率。

我曾经遇到一个案例:一架四轴在悬停时,高度保持得很好,但水平方向总是缓慢漂移。检查了所有传感器校准,都没问题。最后发现是GPS的航向角(Yaw)有5度的偏差——因为磁力计受到了电机电流的干扰。解决办法是做了硬铁校准,并在EKF参数里适当降低了磁力计的权重。

调试小技巧:在QGroundControl或Mission Planner里,打开实时曲线图。重点关注“姿态角估计值 vs 目标值”的跟踪误差。如果误差超过2度,说明内环或姿态环需要调整。

好了,这一章的内容就到这里。记住:飞控系统是一个整体,传感器融合是“眼睛”,控制环路是“肌肉”,而架构是“骨架”。三者缺一不可。


公众号:蓝海资料掘金营,微信deep3321