飞行中 FFT 高级设置

谐波带阻滤波带宽配置

谐波带阻滤波的一个组成部分是带阻滤波的带宽,飞行中的 FFT 可用来确定带宽。下载稳定悬停时的日志并绘制 FTN1.BwAvg 图。这是 FFT 对噪声峰值带宽的能量加权估计值。下面是上述同一飞行的图表:

../_images/imu-in-flight-fft-bandwidth.png

您可以看到带宽估计值大约为 125Hz。使用方法如下:

FFT 平均

瞬时 FFT 可能会受到噪声的影响,而减少噪声的一种方法是在进行 FFT 之前将若干数据帧平均起来。理论表明,只要数据是静止的,就可以将噪声降低 sqrt(N),其中 N 是取平均值的帧数。在多旋翼飞行器上,由于油门的变化,数据静止的时间并不长,因此通常只能对少量帧进行平均。设置参数 FFT_NUM_FRAMES 为非零值时,将平均该帧数以生成中心频率设置代码所使用的 FFT。需要通过实验来确定使用的最佳帧数,但通常为 2-5 帧。

配置后飞行和飞行后分析

配置动态谐波带阻滤波器后,再进行一次稳定悬停,检查电机噪声峰值是否已经达到。 消除.同样重要的是检查(飞行)控制器在使用 FFT 长度时是否超载。绘制 PM.Load 和 PM.NLon 图。理想情况下,PM.Load 应低于 60%,PM.NLon 应在 10%以下,不过实验表明,在 FFT 长度为 128、CPU 负载为 90% 的情况下飞行 Pixracer 也不会不稳定。

其他检查要点:

  • FFT 只能分析 FFT_MINHZFFT_MAXHZ.如果您的旋翼机的电机转速超出了这些范围,结果可能会有些随机,因此请确保为您的旋翼机适当设置这些范围。 FFT_MAXHZ 不应超过奈奎斯特频率,因此对于大多数使用标准陀螺仪的旋翼飞行器来说,最大频率约为 495Hz。

  • FTN1.SnX、FTN1.SnY 和 FTN1.SnZ 显示检测频率的信噪比。该值应高于 FFT_SNR_REF.中的飞行示例 初始飞行和飞行后分析 信噪比约为 58 分贝。

利用飞行中 FFT 测试飞行数据进行谐波带阻滤波节流阀配置

还可以在试飞中使用飞行中 FFT 生成精确的 INS_HNTCH_FREQ 和/或 INS_HNTC2_FREQINS_HNTCH_FREQ.然后禁用飞行中 FFT,并使用数据设置基于节流阀的中心频率,以驱动动态谐波带阻滤波。这种方法的 CPU 成本很低,延迟也很小,在某些应用中是一个不错的选择。以这种方式设置谐波带阻滤波:

  • 设置 FFT_MINHZ 调到您希望设置的谐波带阻滤波频率的最低值。通常情况下,该值应高于 50Hz 左右,以避开旋翼飞行器的控制带宽。

  • 设置 FFT_ENABLE = 1 则启用 FFT 引擎。

  • 像学习悬停油门一样进行稳定的长时间悬停,在悬停或位置悬停时不要移动发射机上的摇杆。在悬停时移动摇杆或让飞行器在风中位置悬停(即(飞行)控制器移动摇杆以保持位置)会停止悬停学习,直到飞行器姿态恢复到中性 VTOL 姿态。

  • 土地与裁军学习值为 INS_HNTCH_FREQ 和/或 INS_HNTC2_FREQ 悬停时将在 FFT_FREQ_HOVERINS_HNTCH_REF 按比例 FFT_MINHZ 学习到的悬停频率将在 FFT_THR_REF.这些值不会自动转移到谐波凹槽中,因此应根据已学值进行设置。

  • 设置 FFT_ENABLE = 0 则禁用 FFT 引擎。

  • 设置 INS_HNTCH_MODE 和/或 INS_HNTC2_MODE = 1,以使用基于节流阀的动态谐波带阻滤波。

  • 设置 INS_HNTCH_FREQ 和/或 INS_HNTC2_FREQ = FFT_MINHZ

  • 设置 INS_HNTCH_REF 和/或 INS_HNTC2_REF = FFT_THR_REF

或者,如果您希望悬停频率是谐波凹口的最低值,也可以这样做:

飞行稳定调整

除上述选项外,FFT 还有几种飞行稳定调整选项,在某些情况下非常有用

调试小型多旋翼飞行器

小型多旋翼飞行器一般都有一个非常明显的电机转速频率峰值。该峰值通常是第一次谐波,很少有其他重要谐波。因此,只针对第一次谐波就足够了。默认情况下,FFT 引擎会跟踪前三个频率峰值,通过绘制每个峰值的 FTN2[N].PkX 图可以观察到这些峰值。PkX 是滚动轴上的噪声。下面是一个 4" quad 的例子:

./_images/fft-small-copter.png

可以看出,滚动轴和俯仰轴对主频峰的跟踪非常紧密,而次要峰值基本上是跟踪噪声。遗憾的是,这种噪声有时看起来像能量最高的峰值,会扭曲主跟踪频率。如果出现这种情况,可以通过设置强制 FFT 引擎只跟踪主峰:

还可以设置 FFT_HMNC_PEAK 分别为 2 和 3,以跟踪第二和第三个峰值。

小型旋翼飞行器的另一个重要指标是频率能量。频率能量的信噪比是启动时陀螺仪噪声与飞行中检测到的频率峰值的陀螺仪噪声之比,单位为 dB。下面是同一个 4" quad 的示例:

./_images/fft-small-copter-energy.png

可以看到,在滚动和俯仰方向分别有一个约 50 分贝和 40 分贝的强信号。FFT 引擎使用的设置为 FFT_SNR_REF 来确定检测到的频率峰值实际上是信号还是噪音。默认设置为 25dB,因此在本例中,峰值被正确检测为信号。

让我们来看看更小的旋翼飞行器。这是一架稳定悬停的 3 英寸四轮飞行器:

../_images/fft-small-copter-hover.png

这一次,您可以看到信噪比大约在 25 分贝左右。 FFT_SNR_REF 如果设置为 25 分贝,那么检测到的峰值在很大程度上会被视为噪声。因此,我为这架旋翼飞行器设置了 FFT_SNR_REF 15 分贝,以便正确检测峰值。从机械原理上讲,很容易理解为什么有必要这样做--几乎所有(飞行)控制器都使用相同的 MEMS 陀螺,但 10 英寸螺旋桨与 3 英寸螺旋桨的振动能量差异巨大。因此,对于较小的结构,很可能需要减少 FFT_SNR_REF.

调试大型多旋翼飞行器

从噪声的角度来看,小型多旋翼飞行器相对简单--电机噪声曲线优美、干净,噪声频率的选择在算法上也相对简单。大型多旋翼飞行器则复杂得多。噪音能量要大得多,而且这些噪音能量可能出现在意想不到的地方。在偏航过程中,由于实现偏航动作所使用的电机转速不同,任何旋翼飞行器的电机噪声频率都会出现偏差。当您添加更多电机(例如 Y6 或 X8 配置)或任何不平衡(例如 Y6 与同轴配置中不同尺寸的螺旋桨)时,也会出现这种分叉。这些差异会导致基谐波频率难以确定。以下是检测到的 Y6B 频率峰值:

./_images/fft-large-copter.png

可以看到,电机噪音最大的峰值在 150Hz 左右,第二大噪音峰值在 75Hz 左右。然后,第三个噪音最大的峰值似乎在 120Hz 和 225Hz 之间跳跃。这到底是怎么回事呢?电机转动的频率确实是 75Hz,但 FFT 默认的目标频率是 150Hz。从控制的角度来看,这是不好的。谐波带阻滤波针对的是基频的增大谐波,因此如果谐波带阻滤波配置为 150Hz,那么 75Hz 的噪声峰值根本不会被带阻滤波滤除。75Hz 正进入飞机的控制频率,因此忽略这一噪声会造成极大的问题。150Hz 信号非常清晰,但在 120Hz 和 225Hz 之间翻转似乎有些奇怪。如果考虑到我的 Y6B 的配置,就可以从机械方面理解这一点。它上部的螺旋桨较大,这意味着上下螺旋桨几乎肯定会以不同的频率转动。此外,它还在中心线周围保持平衡,但前后略有失衡。这些因素的结合意味着至少会有两个基谐波,这几乎可以肯定就是 120Hz 信号。225Hz 信号则是 75Hz 基波的三次谐波。那么,我们该如何恰当地选择凹槽呢?我们显然希望将 75Hz 作为基波谐波处理。幸运的是,默认情况下 ArduPilot 具有 FFT_HMNC_PEAK 设置为 0,表示 "自动"。在自动模式下,(飞行)控制器会尝试检测一个频率是另一个频率的谐波的情况,并返回较低的频率供谐波带阻滤波器使用。这在四边形飞行器上效果很好,但在我的 Y6B 上,这种关系太弱,无法发挥作用--可能是因为 120Hz 谐波造成了混淆。因此在这种情况下,设置 FFT_HMNC_PEAK 到 2,这样我们就能准确地瞄准第一次谐波。

当我们观察不同的坐标轴时,情况会变得更加扑朔迷离。下面是同一个 Y6B 上最高能量峰的滚动、俯仰和偏航情况:

../_images/fft-large-copter-axes.png

正如您所看到的,滚动跟踪得很好,俯仰在第一次谐波和第二次谐波之间稍有翻转,而偏航则一直在翻转。在不同的轴上检测到不同的峰值在大型旋翼飞行器上并不少见,这可能会对谐波带阻滤波造成问题,因为使用的频率是滚动轴和俯仰轴的能量加权平均值。如果滚动轴和俯仰轴跟踪的是不同的峰值,那么能量加权平均值就会介于两者之间,这对带阻滤波滤波完全没有用处。

为了解决这个问题,可以设置 FFT_HMNC_PEAK 到 4 仅跟踪滚动轴,或到 5 仅跟踪俯仰轴。

最后,也有可能--这里的情况很明显--噪音最大的峰值不一定是彼此的谐波。在这种情况下,可以设置谐波带阻滤波器的第二位,直接跟踪频率峰值。 INS_HNTCH_OPTS 和/或 INS_HNTC2_OPTS - 如果没有配置其他选项,则设置为 2。这样可以实现非常精确的频率跟踪和较低的噪音。以下是使用以下选项的 Solo 记录 INS_HNTCH_OPTS 和/或 INS_HNTC2_OPTS 设置为 3 - 动态谐波和双带阻滤波:

./_images/fft-large-copter-solo.png

您可以看到,动态带阻滤波频率正在精确跟踪两个最高噪声峰值,从而显著降低了噪声。