工作原理

FFT 提取一组陀螺仪样本,对该组样本进行频率分析,并产生一组频带,其相关能量代表该频带中噪声信号的 "多少"。例如,如果我们采集一组长度为 32 的样本(称为 FFT 长度窗口大小, N - 这将产生一组频带,每个频带宽度为 fs / 32 其中 fs 是采样频率。由于这些采样来自陀螺仪,采样率通常为 1KHz,因此每个采样单元的宽度约为 32Hz。FFT 分析将给出每个分区的能量值,代表该分区中该频率的噪声能量。例如,如果我们的电机噪声频率为 80Hz,那么大部分能量都将出现在第三个分段中,因此我们可以从能量值中得知噪声的大致频率。FFT 可以检测到的最高频率是奈奎斯特频率,即 fs / 2

显然,增加 FFT 长度可以获得更高的频率分辨率,因此人们可能会认为我们应该始终使用长 FFT。但有两个事实阻止了我们这样做。首先,计算一个 FFT 的成本大约为 O(N log N) 因此,较长的 FFT 很快就会变得昂贵得令人望而却步。其次,FFT 在频率和时间之间存在类似海森堡的关系--您可以选择高时间分辨率或高频率分辨率,但不能同时拥有这两种分辨率。对于多旋翼机来说,时间分辨率非常重要,因为计算出的频率可能会用于驱动对时间敏感的控制,如动态谐波带阻滤波。因此,在选择 FFT 长度时,应根据频率计算的准确性和结果的及时性仔细斟酌。对于较大型的多旋翼机或旋翼飞行器,高频率分辨率可能更有益处,而对于姿态控制敏感的小型旋翼飞行器,高时间分辨率则非常重要。默认值 32 通常效果很好,可以在 F4 处理器上运行。更高的数值(如 128)需要 F7 处理器,而更高的数值通常只能在 H7 处理器上运行。

除增加 FFT 长度外,另一种方法是降低采样率,以获得更高的频率分辨率。这样做的缺点是降低了可检测的最高频率,但对于某些低频平台(如旋翼飞行器)来说,这可能是合适的。