软件滤波器配置
通过滤波器可有效滤除电机、螺旋桨及外部干扰带来的振动与噪声,确保 EKF 获取纯净的 IMU 姿态数据,避免姿态误判,提升飞行稳定性和操控性。 ArduPilot支持低通滤波器与陷波滤波器两种软件滤波器进行滤波。
- 低通滤波器:允许低于截止频率的信号通过(控制信号),过滤/抑制高于该频率的所有信号。
- 陷波滤波器:针对某个狭窄的特定频率范围进行深度衰减(挖坑),同时尽可能地保留其他频率的信号,
[!Warning] 滤波器会增加相位延迟并且会增加处理器的负载,在处理器性能不足的控制器(比如STM32F7/F4)中谨慎使用;软件滤波只能缓解振动,无法解决严重的物理缺陷,机械振动过大应通过调整硬件结构或增加控制器减震器进行解决。在调试软件滤波器前,需先进行PID调参让飞机能够平稳飞行;再进行滤波器配置。
低通滤波器
根据载具自身重量、惯性大小以及对控制响应度进行低通滤波器的匹配;以达到精准高效的控制体验。ArduPilot的低通滤波器是由INS_GYRO_FILTER(陀螺仪)和INS_ACCEL_FILTER(加速度计)控制.对于手动配置,一般只需要配置INS_GYRO_FILTER陀螺仪低通滤波器;INS_GYRO_FILTER=20(默认)适用于大多数载具。
Mission Planner、LGC 等地面站可根据机型、动力、螺旋桨规格自动匹配滤波参数模型。

不合适的值的典型表现
| 值 | 参数设置 | 不利表现 | 优势 |
|---|---|---|---|
| 过大 | INS_GYRO_FILTER = 60 |
IMU噪声多,可能引发无人机抖动或电机啸叫和异常发热 | 控制回路延迟更低,响应更灵,追求响应度可以引入陷波滤波器缓解 |
| 调小 | INS_GYRO_FILTER = 15 |
相位滞后大,反应迟缓、姿态偏软 | 能滤除更多噪声 |
[!NOTE] 调试原则是尽可能地提高低通滤波器的截止频率,兼顾滤波效果,寻找两者平衡点。
陷波滤波器
陷波滤波器功能说明
动态陷波滤波器属于频率自适应窄带滤波,可跟随无人机电机实时转速自动调整滤波中心频率,专门用于抑制电机运转产生的周期性机械振动噪声,与低通滤波器形成互补搭配使用。 该滤波器能够实时追踪电机旋转基频以及各次谐波倍频,精准针对振动集中的频率峰值做能量衰减压制,仅针对性滤除振动干扰,不会影响其余频段有效姿态信号,最大限度保留飞控姿态响应灵敏度。
通俗来讲:全局噪声由低通滤波器整体压制,固定周期性电机振动,由动态陷波滤波器定点精准剔除,二者配合可实现降噪与操控手感兼顾。
配置方法
- 在配置前需要先设置日志存储数据(
INS_RAW_LOG_OPT=10)

对于 4.5.0 以下版本固件,请使用IMU 批量日志采集功能
INS_LOG_BAT_OPT= 4 //进行滤波前后1KHz采样
INS_LOG_BAT_MASK = 1 //设置为采集第一个IMU数据
INS_LOG_BAT_LGIN //采样间隔,常规无需修改。
LOG_BITMASK // RAW IMU不要勾选,在默认设置的基础上增加勾选 Fast Attitude/PID/Fast IMU/Fast harmonic match logging项。
- 如果带有转速回传(DroneCan/BDshot)的动力系统(电调),开启回传功能。
- 在悬停模式下定点悬停30秒以上,然后往各个方向飞行数十秒。
- 然后下载飞控日志并导入官方滤波分析工具,进行分析调试。
使用滤波分析工具匹配滤波器配置
- 导入日志文件,并打开分析,选取分析飞行时间段

- 查看IMU频谱,选取IMU轴(一般选择X轴即可),对比滤波前和预估滤波后效果。
滤波预估效果,由下方填写的滤波器参数生成

我们的目标是将高于40的振幅衰减至-40dB以下,但尽可能小的影响其它信号,防止相位延迟。
根据《动态陷波滤波器》设置说明配置滤波器并生成预估滤波后效果。

| 参数名 | 说明 | 设置方法 |
|---|---|---|
INS_HNTCH_ENABLE |
动态谐波陷波滤波器总开关 | 设为 1 启用功能 |
INS_HNTCH_MODE |
陷波频率跟踪模式 | 无ESC遥测时选 1:Throttle(油门模式);支持ESC遥测时推荐选 3:ESC遥测 |
INS_HNTCH_FREQ |
悬停工况下的陷波中心基准频率 | 通过IMU频谱图分析悬停时的电机基频振动峰值或根据转速确定 |
INS_HNTCH_BW |
陷波滤波器的带宽 | 设为 INS_HNTCH_FREQ 1/4到1/2;开启多源滤波时,不高于1/4 |
INS_HNTCH_ATT |
陷波滤波器的衰减强度 | 衰减值控制在-40dB 以下即可,数值不宜设置过高 |
INS_HNTCH_REF |
油门模式下的参考基准油门值 | 等于悬停学习油门MOT_THST_HOVER或ESC遥测模式时设置为1 |
INS_HNTCH_FM_RAT |
陷波频率的最小缩放比例,限制低油门时的最低频率 | 默认1;低油门振动明显可小幅下调,严禁低于陀螺仪截止频率 |
INS_HNTCH_HMNCS |
谐波阶数位掩码,选择需要抑制的电机谐波次数 | 根据谐波阶数说明设置 |
INS_HNTCH_OPTS |
陷波附加功能选项(多源模式等) | 多电机时Multi-Source/update at loop rate项必选 |
- IMU 频谱图:用于分析诊断无人机振动问题;定位振动源与查看谐波与振动的匹配度。

| 谐波/噪声阶数 | 频率关系 | 注释 | 设置建议 |
|---|---|---|---|
| 1次谐波(1阶噪声/基频) | 基频(1×电机转速频率) | 由电机机械旋转不平衡产生的振动噪声。 | 必须开启 |
| 2次谐波(2阶噪声) | 2×基频 | 主要由2叶螺旋桨的周期性扰动产生, 振动频率为基频的2倍。 |
4旋翼:1+2阶;3阶依频谱定; |
| 3次谐波(3阶噪声) | 3×基频 | 主要由3叶螺旋桨的周期性扰动产生, 振动频率为基频的3倍。 |
6-8旋翼开启1+2+3阶 |
| 4次谐波(4阶噪声) | 4×基频 | 由桨叶、电机或结构振动的高阶耦合效应产生, 振动频率为基频的4倍。 |
依频谱定 |
| …(中间谐波) | N×基频(5~15倍) | 由桨叶尾流、电机齿槽效应、机架共振等 复杂耦合振动产生,能量通常较弱。 |
一般不需要 |
| 16次谐波(16阶噪声) | 16×基频 | 电机/桨叶系统产生的高阶耦合振动噪声, 振动频率为基频的16倍,属于极高阶谐波。 |
- |
[!NOTE] 有需要的谐波阶数再开启,比如图中的3阶谐波强度不高;在接受范围内可以开启1+2+4阶谐波。
[!WARNING] 在保证滤波效果的前提下,尽量减小带宽、降低衰减强度、减少陷波器数量。滤波器会占用大量的 CPU 线程;不宜开启过多的滤波器;否则会导致 CPU 占用率过高,导致系统异常。对于 STM32H7 处理器的控制器,在八旋翼上启用 3 个阶数滤波器是安全的。
多源陷波设置INS_HNTCH_OPTS
单独根据每个电机平均油门/转速匹配一个陷波滤波器;对于多电机飞行器上,尤其是电机转速差异大的机型上,各电机振动频率存在一定偏差;多源陷波设置能够精准滤除各个电机造成的噪声;但会增加CPU负载。
- 假设机体是四旋翼,INS_HNTCH_HMNCS = 3(开启1阶+2阶噪声滤波),那么在Ardupilot软件里面就会开启4轴 * 2 = 8个陷波滤波器。
- 假设机体是八旋翼,INS_HNTCH_HMNCS = 7(开启1阶+2阶+3阶噪声滤波),那么在Ardupilot软件里面就会开启8轴 * 3 = 24个陷波滤波器。
动态陷波滤波器
无人机绝大多数振动来自电机与螺旋桨的旋转,其频率随转速线性变化。动态陷波滤波器会实时跟随油门或电机转速调整中心频率,始终对准振动峰值,实现 “噪声在哪,就抑制到哪” 的效果。
基于ESC转速回传的陷波滤波器设置(推荐)
如果使用带遥测的电调(比如DroneCAN或Dshot动力系统),那么谐波陷波参考频率可以通过ESC遥测动态设置。这种动态陷波滤波器设置简单效果最好。
基频的计算
- 查看飞行日志,通过日志的ESC->X(为电机序号)->RPM项(转速)
基频=悬停时电机平均转速/60
以上图为例:
基频=(2500+2900+3000+3200)➗4➗60=48.3;约等于48。

陷波滤波器设置
INS_HNTCH_ENABLE=1 //启用陷波滤波器。
INS_HNTCH_MODE=3 //陷波滤波器模式ESC遥测。
INS_HNTCH_FREQ=48 //根据转速算出的基频,可以通过IMU频谱图确认。
INS_HNTCH_BW=10 //若开启了多源,设置为低于基频的1/4。
INS_HNTCH_ATT=8 //根据IMU频谱分析强度设置,只要低于-40dB则认为是可以接受的。
INS_HNTCH_REF=1 //ESC遥测模式时,缩放设为1
INS_HNTCH_FM_RAT=1 //设为1
INS_HNTCH_HMNCS=11 //四旋翼1阶和2阶必选,3阶和4阶根据频谱图的振动噪声设置;这里案例4阶存在较强噪声。
INS_HNTCH_OPTS=6 //Multi-Source/update at loop rate项必选
- 生成预估陷波滤波效果频谱曲线

- 调整参数值匹配到理想的滤波效果;查看IMU频谱图查看谐波是否准确追踪高幅的振动频率。

- 将控制器连接至地面站,在全部参数表中将陷波滤波器分析匹配的参数写入控制器中。

基于油门的陷波滤波器设置
对于没有电调信息回传的无人机,可以使用基于油门驱动的陷波滤波器设置。
基频的确定
以Raefly CP900四旋翼无人机为例。

- 从从上图可以看到50hZ左右出现第一条高于低通滤波器截止频率的振动噪声曲线,上方也呈现了以50Hz左右的倍数频率的多阶噪声。
- 所以我们选取50Hz左右为陷波滤波器为基准频率,我们选择了48Hz。
- 调整陷波滤波器设置,使预估陷波滤波器达到较为理想的效果。
INS_HNTCH_ENABLE=1 //启用陷波滤波器。
INS_HNTCH_MODE=1 //陷波滤波器模式为油门。
INS_HNTCH_FREQ=48 //根据转速算出的基频,可以通过IMU频谱图确认。
INS_HNTCH_BW=10 //若开启了多源,设置为低于基频的1/4。
INS_HNTCH_ATT=10 //根据IMU频谱分析强度设置,只要低于-40dB则认为是可以接受的。
INS_HNTCH_REF=MOT_THST_HOVER //等于悬停时的油门值
INS_HNTCH_FM_RAT=0.8 //低于悬停油门20%时开启驱动滤波器;如果低油门时振动比较大,可以调低,但不要低于截止频率
INS_HNTCH_HMNCS=11 //四旋翼1阶和2阶必选,3阶和4阶根据频谱图的振动噪声设置;这里案例4阶存在较强噪声。
INS_HNTCH_OPTS=6 //Multi-Source/update at loop rate项必选

- 将控制器连接至地面站,在全部参数表中将陷波滤波器分析匹配的参数写入控制器中。

查看陷波滤波器效果
当设置好陷波滤波器后,进行一次不低于30S的飞行;导入日志进行分析。当高于低通滤波器截止频率时的振幅均低于-40dB就可以接受。



第二陷波滤波器
若存在多路振动源,使用单路陷波滤波器,无法达到理想的效果。可以开启第二路陷波滤波器(INS_HNTCH2)。
对于第二个陷波滤波器根据需求配置,一般建议设为固定频率陷波(INS_HNTCH_MODE=0)。