传感器原理与数据融合:飞控的“感官”与“大脑”

各位同学,欢迎来到第二章。上一章我们聊了飞控的整体架构,今天咱们深入底层,看看飞控到底靠什么感知世界。

说白了,无人机就是个“瞎子”在空中飞。它没有眼睛,全靠一堆传感器来“看”自己在哪里、姿态怎么样、速度多快。这些传感器就是飞控的感官。而卡尔曼滤波,就是把这些感官信号整合起来的大脑。

我做了这么多年飞控,见过太多因为传感器选型或融合参数没调好而炸机的案例。嗯,今天咱们就把这些坑一个个填上。

2.1 加速度计:感受重力与运动

加速度计测量的是比力,也就是物体受到的惯性力与引力的合力。在静止状态下,它测到的就是重力加速度g。

你想想看,把加速度计平放在桌上,Z轴输出应该是1g(约9.8m/s²)。如果把它竖起来,X轴或Y轴就会变成1g。飞控就是靠这个来估算俯仰角和横滚角的。

我的经验: 加速度计对振动极其敏感。我在做一款四旋翼时,电机振动直接让加速度计数据“炸了”,姿态解算全乱套。后来加了减震海绵和低通滤波才搞定。记住,加速度计数据一定要先做低通滤波,截止频率通常设在20-50Hz。

但加速度计有个致命弱点——它分不清重力加速度和运动加速度。如果你在水平方向猛加速,它会把水平加速度误判为倾斜,导致姿态估算错误。这就是为什么不能只用加速度计做姿态解算。

2.2 陀螺仪:角速度的“快枪手”

陀螺仪测量的是角速度,单位是°/s。它响应快,动态性能好,是姿态控制的“主力军”。

但陀螺仪有个老毛病——零偏漂移。你把它放在桌上不动,它输出的角速度不是0,而是某个小值。这个值会随着温度和时间变化。如果不校准,积分出来的角度会越偏越远。

避坑指南: 我曾经在一个项目中,陀螺仪零偏没校准好,飞机悬停时慢慢自旋,飞手还以为遥控器坏了。后来我养成了习惯:每次上电后,先采集1000个静态样本做零偏补偿。这个步骤不能省。

陀螺仪和加速度计正好互补:陀螺仪动态好但有漂移,加速度计静态准但动态差。所以飞控里常用互补滤波或卡尔曼滤波把它们融合起来。

2.3 磁力计:电子罗盘的“烦恼”

磁力计测量地磁场,用来确定航向(偏航角)。原理很简单,就是测三个轴上的磁场分量,然后算出与磁北的夹角。

但磁力计在实际环境中非常脆弱。电机电流、高压线、钢筋建筑都会产生干扰磁场。我见过最夸张的一次,飞机飞过高压线塔,航向瞬间偏了30度,直接触发返航。

干扰源 影响程度 应对方法
电机/电调 严重 远离安装,做硬铁校准
高压线 剧烈 飞控检测到异常后切换航向源
钢筋建筑 中等 使用GPS航向辅助
地磁异常区 持续 依赖GPS/RTK航向
核心要点: 磁力计必须做校准!硬铁校准(消除固定偏差)和软铁校准(消除比例偏差)缺一不可。我建议每次更换安装位置后都重新校准。

2.4 气压计:高度测量的“软肋”

气压计通过测量大气压来推算高度。每上升1米,气压大约下降12Pa。原理简单,但实际用起来问题不少。

首先,气压受温度影响很大。太阳晒着飞控板,温度升高,气压计读数就会漂。其次,螺旋桨下洗气流会造成局部气压波动。还有,突风、门窗开关都会让气压突变。

我个人的做法是:

  • 给气压计加海绵防风罩,减少气流冲击
  • 做温度补偿,用板载温度传感器修正
  • 与GPS高度做融合,GPS高度虽然噪声大但不漂移

气压计还有个特点:它测的是相对高度,不是绝对海拔。所以起飞前要记录基准气压,之后所有高度都是相对于起飞点的。

2.5 GPS/RTK:从米级到厘米级

普通GPS精度在2-5米,用于室外定位和航线飞行足够了。但如果你要做精准降落、测绘或编队飞行,这个精度远远不够。

RTK(实时动态差分定位)通过地面基准站和移动站之间的载波相位差分,能把精度做到厘米级。原理不复杂:基准站知道自己的精确坐标,它计算卫星信号的误差,然后通过数传电台发给飞机,飞机用这个误差修正自己的定位。

我的经验: RTK虽然精度高,但初始化时间较长(通常30-60秒),而且一旦卫星信号遮挡导致失锁,需要重新固定解。我在做植保无人机时,遇到过树荫下RTK解算失败,飞机直接飘走的情况。后来加了视觉定位做备份。

GPS还有一个重要输出——地面速度(地速)。这个速度没有漂移,非常适合与加速度计积分出来的速度做融合。

2.6 卡尔曼滤波:飞控的“大脑”

好了,传感器数据都有了,但每个都有缺陷。怎么把它们整合成准确可靠的姿态和位置?这就是卡尔曼滤波的活。

卡尔曼滤波的核心思想很简单:用模型预测下一步状态,然后用测量值修正预测值。它有两个步骤:预测和更新。

我画了一张图,帮你理解这个流程:

卡尔曼滤波核心流程 预测步骤(Time Update) 状态预测:x̂ₖ = A·x̂ₖ₋₁ + B·uₖ 协方差预测:Pₖ = A·Pₖ₋₁·Aᵀ + Q 更新步骤(Measurement Update) 卡尔曼增益:Kₖ = Pₖ·Hᵀ·(H·Pₖ·Hᵀ+R)⁻¹ 状态更新:x̂ₖ = x̂ₖ + Kₖ·(zₖ - H·x̂ₖ) 反馈:将更新后的状态作为下一轮预测的初始值 关键参数说明 • x̂:状态估计(姿态角、位置、速度等) • P:误差协方差矩阵(估计的不确定性) • Q:过程噪声协方差(模型的不确定性) • R:测量噪声协方差(传感器的不确定性) • K:卡尔曼增益(相信预测还是相信测量)

你看,卡尔曼滤波就像一个“智能加权平均”。当传感器噪声大时(R大),它更相信模型预测;当模型不准时(Q大),它更相信传感器测量。这个权重就是卡尔曼增益K。

在飞控中,我们通常用卡尔曼滤波做两件事:

  1. 姿态估计: 融合陀螺仪(角速度)和加速度计/磁力计(参考向量),得到稳定的姿态角
  2. 位置/速度估计: 融合加速度计(比力)、GPS(位置/速度)、气压计(高度),得到平滑的位置和速度
调参心得: Q和R的比值决定了滤波器的“带宽”。Q/R越大,滤波器响应越快但噪声也大;Q/R越小,滤波器越平滑但延迟也大。我一般先调Q/R让滤波器在静态时噪声RMS小于0.5度,再在动态飞行中验证响应速度。没有万能参数,每架飞机都要微调。

最后说一句,卡尔曼滤波假设噪声是高斯白噪声。实际传感器噪声往往不是纯白噪声,所以有时候扩展卡尔曼滤波(EKF)或无迹卡尔曼滤波(UKF)效果更好。但基础卡尔曼滤波是理解所有变体的起点,先把这个吃透,后面都好办。

好了,这一章的内容就到这。传感器是飞控的“眼睛”,卡尔曼滤波是“大脑”。没有好的传感器,再牛的算法也白搭;没有好的融合算法,再贵的传感器也发挥不出作用。两者缺一不可。