Skip to content

多旋翼飞行器滤波器调优与控制延迟

滤波器可用于在影响飞行性能的控制延迟与影响飞行性能和电机健康的噪声滤波之间进行权衡。

本主题概述了控制延迟和PX4滤波器调优。

INFO

在进行滤波器调优之前,你应先完成多旋翼飞行器基本PID调优的初步设置。飞行器的增益需要设置得较低(PD增益应设置得过低),这样控制器就不会产生可能被误判为噪声的振荡(默认增益可能就足够了)。

控制延迟

控制延迟 是指从飞行器受到物理干扰到电机对变化做出反应之间的延迟。

TIP

降低延迟可以提高速率P增益,从而提升飞行性能。即使延迟仅有一毫秒的差异,也可能产生显著影响。

以下因素会影响控制延迟:

  • 软质机身或软质振动安装会增加延迟(它们起到了滤波器的作用)。
  • 软件和传感器芯片中的低通滤波器会在增加延迟的同时,改善噪声滤波效果。
  • PX4软件内部因素:传感器信号需要在驱动程序中读取,然后通过控制器传递到输出驱动程序。
  • 最大陀螺仪发布速率(通过IMU_GYRO_RATEMAX配置)。较高的速率可降低延迟,但计算量较大,可能会使其他进程资源不足。仅建议在配备STM32H7处理器或更新处理器的控制器上使用4kHz或更高的速率(对于性能较弱的处理器,2kHz的值已接近极限)。
  • 与使用AUX引脚相比,IO芯片(MAIN引脚)会增加约5.4毫秒的延迟(这不适用于Pixracer或Omnibus F4,但适用于Pixhawk)。为避免IO延迟,可将电机连接到AUX引脚。
  • PWM输出信号:优先启用DShot以降低延迟(如果不支持DShot,可使用One-Shot)。在执行器配置过程中,为一组输出选择协议。

下面我们来看看低通滤波器的影响。

滤波器

PX4中控制器的滤波流程如下所述。

INFO

采样和滤波始终以原始传感器的全速率进行(通常为8kHz,具体取决于IMU)。

陀螺仪传感器的片上数字低通滤波器(DLPF)

在所有可禁用的芯片上,此功能均被禁用(如果无法禁用,则截止频率设置为芯片的最高水平)。

陷波滤波器

对于存在明显低频噪声尖峰的设置(例如,由于转子叶片通过频率处的谐波),在信号传递到低通滤波器之前,使用陷波滤波器对信号进行清理可能会有所帮助(这些谐波与其他噪声源一样,会对电机产生类似的有害影响)。

如果没有陷波滤波器,为了避免将这种噪声传递到电机,你必须将低通滤波器的截止频率设置得更低(增加相位滞后)。

静态陷波滤波器

陀螺仪传感器数据上的一个或两个静态陷波滤波器,用于滤除窄带噪声,例如机身的弯曲模式产生的噪声。

可使用以下参数配置静态陷波滤波器:

INFO

仅提供两个陷波滤波器。对于具有两个以上频率噪声尖峰的机身,通常使用陷波滤波器清理前两个尖峰,后续尖峰则使用低通滤波器处理。

动态陷波滤波器

动态陷波滤波器使用电调(ESC)的RPM反馈和/或板载FFT分析。ESC的RPM反馈用于跟踪转子叶片通过频率及其谐波,而FFT分析可用于跟踪其他振动源(如燃油发动机)的频率。

ESC的RPM反馈要求电调能够提供RPM反馈,例如连接了遥测功能的DShot、双向DShot设置(正在开发中)或UAVCAN/DroneCAN电调。在启用之前,请确保ESC的RPM正确。你可能需要调整电机的磁极对数

应设置以下参数来启用和配置动态陷波滤波器:

参数描述
IMU_GYRO_DNF_EN启用IMU陀螺仪动态陷波滤波。0:ESC RPM;1:板载FFT。
IMU_GYRO_FFT_EN启用板载FFT(如果IMU_GYRO_DNF_EN设置为1,则需要此参数)。
IMU_GYRO_DNF_MIN动态陷波的最低频率(单位:Hz)。
IMU_GYRO_DNF_BW每个陷波滤波器的带宽(单位:Hz)。
IMU_GYRO_DNF_HMC要滤波的谐波数量。

低通滤波器

可使用IMU_GYRO_CUTOFF参数配置陀螺仪数据上的低通滤波器。

为了降低控制延迟,我们希望提高低通滤波器的截止频率。下面大致估算了增加IMU_GYRO_CUTOFF对延迟的影响。

截止频率(Hz)延迟约(ms)
308
603.8
1201.9

然而,这是一种权衡,因为增加IMU_GYRO_CUTOFF也会增加输入到电机的信号噪声。电机上的噪声会产生以下后果:

  • 电机和电调可能会过热,甚至损坏。
  • 由于电机不断改变转速,飞行时间会缩短。
  • 会出现明显的随机小抖动。

D项上的低通滤波器

D项最容易受到噪声影响,而略微增加的延迟不会对性能产生负面影响。因此,D项有一个可单独配置的低通滤波器IMU_DGYRO_CUTOFF

电机输出上的 slew-rate 滤波器

电机输出上的一个可选的slew-rate滤波器。在配置执行器时,可将此速率作为多旋翼飞行器几何结构的一部分进行配置(这反过来会修改每个电机nCA_Rn_SLEW参数)。

滤波器调优

INFO

最佳的滤波器设置取决于飞行器。默认设置较为保守,以便在质量较低的设置中也能正常工作。

首先确保激活高速率日志记录配置文件(SDLOG_PROFILE参数)。然后,飞行回顾将显示滚转、俯仰和偏航控制的FFT图。

WARNING

  • 不要试图通过滤波器调优来解决飞行器的高振动问题!相反,应修复飞行器的硬件设置。
  • 确认PID增益,特别是D增益,没有设置得过高,因为这可能会表现为振动。

滤波器调优最好通过查看飞行日志来完成。你可以连续进行多次飞行,每次使用不同的参数,然后检查所有日志,但确保在每次飞行之间解除武装,以便创建单独的日志文件。

执行的飞行操作可以很简单,即在稳定模式下悬停,向各个方向进行一些滚转和俯仰操作,并增加一些油门时段。总时长不需要超过30秒。为了更好地进行比较,每次测试中的操作应相似。

首先,通过以10Hz的步长增加陀螺仪滤波器IMU_GYRO_CUTOFF,同时使用较低的D项滤波器值(IMU_DGYRO_CUTOFF=30)来进行调优。将日志上传到飞行回顾,并比较“执行器控制FFT”图。将截止频率设置为噪声开始明显增加之前的值(对于60Hz左右及以上的频率)。

然后,以同样的方式调整D项滤波器(IMU_DGYRO_CUTOFF)。请注意,如果IMU_GYRO_CUTOFFIMU_DGYRO_CUTOFF设置得相差过大,可能会对性能产生负面影响(不过差异必须很显著,例如D=15,陀螺仪=80)。

以下是三个不同IMU_DGYRO_CUTOFF滤波器值(40Hz、70Hz、90Hz)的示例。在90Hz时,总体噪声水平开始增加(特别是滚转方向),因此70Hz的截止频率是一个安全的设置。 IMUDGYROCUTOFF=40IMUDGYROCUTOFF=70IMUDGYROCUTOFF=90

INFO

该图无法在不同飞行器之间进行比较,因为y轴比例可能不同。在同一飞行器上,它是一致的,且与飞行时长无关。

如果飞行图显示出明显的低频尖峰,如下图所示,你可以使用陷波滤波器将其消除。在这种情况下,你可以使用以下设置:IMU_GYRO_NF0_FRQ=32IMU_GYRO_NF0_BW=5(注意,此尖峰比通常情况更窄)。低通滤波器和陷波滤波器可以独立调优(即,在收集用于调优低通滤波器的数据之前,无需设置陷波滤波器)。

IMUGYRONF0FRQ=32 IMUGYRONF0BW=5

更多提示

  1. 可接受的延迟取决于飞行器的大小和期望。FPV竞速飞行器通常会将延迟调至绝对最小值(大致来说,IMU_GYRO_CUTOFF约为120,IMU_DGYRO_CUTOFF为50至80)。对于较大的飞行器,延迟的影响较小,IMU_GYRO_CUTOFF约为80可能就可以接受。
  2. 你可以从较高的IMU_GYRO_CUTOFF值(例如100Hz)开始调优,这可能是可取的,因为IMU_GYRO_CUTOFF的默认调优值设置得非常低(30Hz)。唯一需要注意的是,你必须意识到其中的风险:
    • 飞行时间不要超过20 - 30秒。
    • 检查电机是否过热。
    • 注意是否有异常声音和过度噪声的症状,如上文所述。