上一篇 | 目录 | 下一篇 |
IMU传感器采集到的高频数据保存到闪存日志,这些数据可以在飞行后使用数据的快速傅里叶变换(FFT)生成的图表进行分析,以诊断振动问题。
FFT 将数据从时域转换到频域。换句话说,随着时间的推移(即飞行)记录的加速度计数据可以转换成显示振动频率的图表。 这些图表的一个常见特征是螺旋桨“叶片通过频率”(叶片与机臂交叉的频率)的尖峰,这会导致飞机加速。 FFT有以下局限性:
FFT无法显示高于传感器采样率一半的频率。
可以显示的最小频率是样本数量的一半除以采样率。
采样率通常与飞控是陀螺仪更采集率相同。例如,如果你在MPU9250传感器上使用INS_FAST_SAMPLE(Pixhawk飞控),那么将以8KHz采样。如果你不使用快速采样率,那么通常也会使用1KHz的采样率。
设置 INS_LOG_BAT_MASK = 1 从第一个 IMU 收集数据
不检查 LOG_BITMASK 的 IMU_RAW 位。一般建议LOG_BITMASK使用默认值。如果开启检查会产生混乱,因为使用后滤波或常规日志记录,你将无法获得采样数据。然而,如果使用传感器速率日志,你的SD卡能够处理,你将得到采样数据。
进行至少几分钟的常规飞行(而不只是悬停),下载闪存日志。
打开Mission Planner,按Ctrl-F,点击“FFT”按钮,再点击“new DF log”按钮,并选择上个步骤下载好的.bin日志。
加速度计数据出现在左上角的窗口中,纵轴表示幅度,横轴表示频率。幅度数据未按比例缩放到有用值,这意味着这个图表可用于确定振动频率,但不适用于确定水平是否过高。频率高于 300Hz 的振动表示可能会导致姿态或位置控制出现问题。
默认配置显示未经过滤波的原始加速度计和陀螺仪数据。滤波是防止PID 回路和电机产生的噪音干扰,因此能够在滤波后查看数据也很重要。此外,当使用陷波器配置高级滤波时(请参阅INS_NOTCH_ENABLE),很难在没有看到输出的情况下有效地做到这一点。为了查看后置滤波器输出,设置 INS_LOG_BAT_OPT = 2。
对于手动飞行模式下的小型直升机,重要的是让尽可能多的信号通过低于 100Hz 的频率,并在高于 100Hz 的频率下尽可能少。配置后过滤器输出后才能开到这些数据。
设置 INS_LOG_BAT_OPT = 1 以启用传感器最高速率的进行采样,这允许对来自 Invense Sense 的 IMU 进行 500hz 以上的高速分析。
INS_LOG_BAT_MASK 可用于仅对单个传感器进行采样。这将增加从单个传感器(例如飞控上最好的传感器)获取到的样本数量,这可能会为分析提供更好的数据。
INS_LOG_BAT_CNT 指定将采样的样本数量。增加这将生成一个有代表性的可疑频率。采样率除以样品数量得到可以检测到的最低频率,所以1024个采样数量在1024kHz采样率将获得0.5Hz(较差)的最低频率。
INS_LOG_BAT_LGIN 将样本保存到闪存日志之间的间隔,以毫秒为单位。增加此值可减少将数据刷新到闪存日志所需的时间,从而减少周期时间。这将以增加系统负载并可能阻塞其它消息的闪存日志为代价。
INS_LOG_BAT_LGCT 每 INS_LOG_BAT_LGIN 毫秒发送的样本数。增加此项每次将更多样本保存到闪存日志。增加此值可能会导致时序抖动,并可能阻塞其它消息的闪存日志。
下面的两张图来自同一次飞行的PixRacer飞控数据。右边的Accel[0]是InvenseSense IMU,显示的频率高于左侧较慢的 IMU。
批量采样涉及两种类型的闪存日志消息,ISBH 和 ISBD。
ISBH是批处理头;它包含一个批处理号码和元数据。
ISBD消息包含批的实际数据,并根据批处理号引用ISBH。
pymavlink是一个面向开发者的工具,它支持图形FFT数据。
pbarker@bluebottle:~/rc/ardupilot(fastest-sampling)$ ~/rc/pymavlink/tools/mavfft_isb.py /tmp/000003.BIN Processing log /tmp/000003.BIN .Skipping ISBD outside ISBH (fftnum=0) Skipping ISBD outside ISBH (fftnum=0) Skipping ISBD outside ISBH (fftnum=0) Skipping ISBD outside ISBH (fftnum=0) Skipping ISBD outside ISBH (fftnum=0) Skipping ISBD outside ISBH (fftnum=0) ............................... 32560s messages 48433 messages/second 1904039 kB/second Extracted 10 fft data sets Sensor: Gyro[0] Sensor: Accel[0]
此输出显示 mavfft_isb.py 从单个 IMU 多轴飞行器日志中提取数据。
这个多轴飞行器清楚地显示了 80Hz 范围内的振动。
这个多轴飞行器清楚地显示了 80Hz 范围内的旋转振动。