4、加速度计校准(三):振动环境下的校准策略,机架共振频率识别与规避
各位,前面两讲我们把加速度计的六面校准和温度补偿聊透了。但有个问题一直悬着——你的飞机真的在「干净」的环境里校准的吗?
说实话,我见过太多飞友在水泥地上做校准,旁边还开着大功率风扇。结果呢?飞起来悬停都抖,日志里加速度计数据全是毛刺。这其实就是振动污染了校准结果。
这一讲,我们就专门解决这个问题。我会把振动环境下的校准策略、共振频率的识别方法,以及怎么在 ArduPilot 里把这些频率「绕过去」,一次性讲清楚。
4.1 振动对加速度计校准的影响到底有多大?
先看一个我踩过的坑。几年前调一台四轴,机架是碳管加 3D 打印件,刚性一般。我在室内无风环境做完六面校准,参数看起来都正常。结果一飞,高度保持不住,油门稍微一动就来回晃。
查日志才发现,加速度计 Z 轴的噪声标准差达到了 0.8m/s²。这意味着什么?你想想看,飞控以为飞机在加速下降,实际上只是机架在抖。它拼命推油门,飞机就上蹿下跳。
振动对校准的影响,主要体现在三个层面:
| 影响层面 | 具体表现 | 后果 |
|---|---|---|
| 偏置估计偏移 | 振动导致加速度计输出均值偏离真实值 | 悬停时飞控认为飞机倾斜,持续修正 |
| 比例因子失真 | 高频振动叠加在校准信号上 | 姿态解算出现周期性误差 |
| 噪声基底抬高 | 加速度计输出信噪比下降 | EKF 滤波器收敛变慢,甚至发散 |
核心结论:振动环境下的校准,本质上是在「信号」和「噪声」的混合体里提取真实的重力分量。如果噪声能量过大,校准算法会把噪声当成信号的一部分,结果就是「校准了个寂寞」。
4.2 机架共振频率识别——先找到「雷区」
要规避振动,首先得知道你的机架在哪些频率上「容易兴奋」。共振频率,说白了就是机架本身的固有频率。当电机转速产生的振动频率接近这个值时,振幅会被放大好几倍。
我个人习惯用两种方法来找共振点:
4.2.1 方法一:手动扫频(最可靠)
这个方法有点笨,但最准。把飞机固定好(注意安全),通过 Mission Planner 的电机测试功能,从最低油门逐步推到最高,同时记录加速度计数据。
具体步骤:
- 进入 Mission Planner 的「初始设置」→「可选硬件」→「电机测试」
- 设置步进为 5% 油门,每步停留 2 秒
- 从 0% 推到 100%,再拉回 0%
- 下载日志,用
FFT工具分析加速度计 Z 轴数据
看 FFT 结果时,重点关注那些能量突然飙升的频点。比如我上次测一台 550mm 轴距的机架,在 45Hz 和 78Hz 处有两个明显的尖峰。这就是共振点。
4.2.2 方法二:飞行日志 FFT 分析(更实用)
手动扫频需要固定飞机,有点麻烦。更常用的办法是直接飞一次,然后分析日志。ArduPilot 的日志里自带 IMU 数据,我们可以用工具做 FFT。
小技巧:在 Mission Planner 里打开日志,选择「FFT」标签页,勾选 AccX、AccY、AccZ。然后找一个悬停平稳的段落,看频谱图。如果某个频率的幅值明显高于周围,那就是共振点。
我一般会看三个轴的频谱。有时候 Z 轴共振不明显,但 X 或 Y 轴有。别只看一个轴。
4.3 共振频率规避策略——怎么绕过去
找到共振频率后,我们有两条路:一是物理减振,二是软件滤波。我建议两条路都走。
4.3.1 物理减振:从源头降低振动
这是最根本的办法。振动小了,校准自然就准了。
- 桨叶平衡:新桨叶一定要做静平衡。我见过一副桨差了 0.3g,飞起来整个机架都在抖。
- 电机动平衡:电机轴弯了或者轴承有间隙,换!别犹豫。
- 减振垫:飞控和机架之间用减振泡沫或硅胶垫。厚度 3-5mm,硬度适中。太软了低频共振,太硬了没效果。
- 机架刚性:碳管机架注意连接件的紧固。松动的螺丝就是振动放大器。
4.3.2 软件滤波:在 ArduPilot 里设置陷波器
物理减振做不到完美,剩下的就靠软件。ArduPilot 的 INS_HNTCH_ 参数组就是干这个的。
核心参数:
| 参数名 | 作用 | 我的推荐值 |
|---|---|---|
INS_HNTCH_ENABLE |
启用陷波滤波器 | 1(启用) |
INS_HNTCH_FREQ |
陷波中心频率(Hz) | 设为共振频率,比如 45 |
INS_HNTCH_BW |
陷波带宽(Hz) | 一般设为频率的 10%,比如 4.5 |
INS_HNTCH_ATTEN |
衰减深度(dB) | 默认 20dB,够用 |
注意:陷波器不是万能的。带宽设太宽会滤掉有用的姿态信号,设太窄又盖不住共振。我一般先设 10% 带宽,飞一圈看日志,如果共振峰还在,再慢慢加宽。每次加 2%,直到共振消失。
4.4 振动环境下的校准操作流程
好了,现在我们知道共振频率在哪,也知道怎么滤波了。那具体怎么做校准?我总结了一套流程:
- 先做物理减振:检查桨、电机、减振垫。确保机械部分没问题。
- 识别共振频率:用飞行日志 FFT 或手动扫频,找到所有共振点。
- 设置陷波器:在参数列表里,为每个共振频率设置一个陷波器。ArduPilot 支持多个陷波器串联。
- 验证滤波效果:再飞一次,看日志里加速度计噪声是否降低。目标是把 Z 轴噪声标准差压到 0.3m/s² 以下。
- 执行六面校准:在确认振动环境「干净」后,做标准的六面加速度计校准。
- 飞行验证:校准后飞一次悬停和航线,看姿态是否稳定。
我曾经在一个项目里,客户说飞机怎么都调不稳。我过去一看,机架共振在 55Hz,但陷波器设在了 50Hz。差了 5Hz,效果天差地别。调准后,飞机稳得像钉子一样。
4.5 知识体系总览
下面这张图,把振动校准的整个逻辑串起来了。从问题识别到解决方案,再到验证闭环,一目了然。
4.6 避坑指南
最后,分享几个我踩过的坑,希望能帮你省点时间。
- 别在水泥地上校准:地面反射的振动会通过起落架传到飞控。我习惯在泡沫垫或草地上做校准。
- 电机怠速时别校准:有些飞友习惯不拆桨,电机怠速时做校准。这等于在振动台上校准,结果能准吗?
- 陷波器别设太多:ArduPilot 支持多个陷波器,但每加一个都会引入相位延迟。我一般不超过 3 个。如果共振点太多,先检查物理减振。
- 校准后记得重新检查参数:我曾经校准完忘了保存参数,断电后全丢了。第二天飞,飞机直接翻了个跟头。
我的个人习惯:每次校准前,我都会在日志里加一个 EV 事件标记。这样回头查日志时,能清楚知道哪段数据是校准前、哪段是校准后。对比起来一目了然。
嗯,振动环境下的校准策略就讲到这里。核心就三件事:找到共振点、用物理和软件手段绕过去、在干净的环境里做校准。把这三点做到位,你的加速度计数据会干净很多,飞控的表现也会上一个台阶。