3. 关键传感器日志:陀螺仪、加速度计、磁力计、气压计

传感器是飞控的「眼睛」和「耳朵」。PX4 日志里,IMU(惯性测量单元)和气压计的数据占了日志体积的 60% 以上。很多炸机案例,根源就是传感器数据出了问题。

我个人习惯,拿到一份日志,先不看姿态、控制回路,而是直奔传感器数据。传感器干净,后面的分析才有意义。否则,你花半天分析控制参数,结果发现陀螺仪早就坏了,那不是白忙活?

核心原则: 传感器数据是飞控系统的最底层输入。底层数据不可信,上层分析全是错的。

3.1 陀螺仪(GYRO)数据解读

陀螺仪测量角速度,单位是 rad/s。PX4 日志里,GYRO 主题包含 x、y、z 三个轴的数据。

看陀螺仪数据,我主要关注三点:

  1. 零偏稳定性:飞机静止时,陀螺仪输出应该在 0 附近小幅波动。
  2. 噪声水平:正常飞行时,数据曲线应该平滑,没有毛刺。
  3. 饱和与削波:剧烈机动时,数据是否被限幅。

3.1.1 静止状态下的零偏

飞机上电后,如果放在桌面不动,陀螺仪三个轴的输出均值应该接近 0。我见过一些日志,静止时 z 轴输出稳定在 -0.05 rad/s,这其实还算正常。但如果超过 ±0.1 rad/s,就要小心了。

我曾经遇到一个案例,飞机起飞后缓慢向右偏航,飞手一直在打左舵修正。查日志发现,陀螺仪 z 轴零偏达到 -0.3 rad/s。说白了,飞控以为飞机在右转,实际上它没动。这就是典型的陀螺仪零偏过大。

我的判断标准: 静止状态下,陀螺仪三轴零偏绝对值超过 0.1 rad/s,建议校准或更换硬件。

3.1.2 飞行中的噪声与振动

正常飞行时,陀螺仪数据曲线应该是「干净」的。如果曲线像毛线团一样杂乱,说明振动太大,或者传感器本身出了问题。

我习惯用 pyulog 把 GYRO 数据导出来,然后看 FFT(快速傅里叶变换)频谱。如果某个频率的振幅异常高,比如 100Hz 以上还有明显峰值,那大概率是桨叶或电机振动传到了飞控上。

注意: 振动是陀螺仪的「头号杀手」。高频振动会导致姿态估计发散,最终炸机。如果日志里陀螺仪数据噪声大,先检查减震海绵和安装螺丝。

3.1.3 饱和与削波

PX4 默认的陀螺仪量程是 ±2000°/s。一般飞行用不到这么高,但剧烈翻滚时可能会触及上限。如果日志里看到数据被「削平」了,说明传感器饱和了。

饱和本身不一定是问题,但饱和期间飞控无法感知真实角速度,姿态估计会短暂失效。如果你在做特技飞行,记得检查日志里有没有饱和片段。

3.2 加速度计(ACCEL)数据解读

加速度计测量比力(Specific Force),单位是 m/s²。日志里 ACCEL 主题同样包含三轴数据。

加速度计数据比陀螺仪更「敏感」。它受振动影响更大,而且容易受温度漂移影响。

3.2.1 静止时的重力投影

飞机静止水平放置时,理论上 z 轴读数为 9.81 m/s²(重力加速度),x 和 y 轴接近 0。如果飞机有倾斜角度,重力会投影到其他轴上。

我判断加速度计是否正常,第一步就是看静止时的总加速度模值:

norm = sqrt(ax² + ay² + az²)

这个值应该在 9.8 左右。如果偏差超过 0.3 m/s²,说明加速度计标定有问题,或者传感器本身坏了。

我记得有一次,一个学生说飞机起飞后一直往一个方向飘。我让他发日志,一看加速度计 x 轴静止时就有 0.5 m/s² 的读数。这就是典型的加速度计零偏,导致飞控以为飞机在倾斜,一直在做错误修正。

快速检查: 静止状态下,加速度计三轴模值应在 9.5 ~ 10.1 m/s² 之间。超出这个范围,先重新做加速度计校准。

3.2.2 振动对加速度计的影响

加速度计对振动极其敏感。如果飞机振动大,加速度计数据会叠加一个高频分量。在日志里表现为曲线变粗,像一条「毛虫」。

我一般用 ACCEL 的 vibration_metric 字段来量化振动水平。这个值在 0 到 1 之间,超过 0.3 就说明振动偏大,需要检查桨叶平衡或电机轴承。

振动指标 数值范围 建议操作
优秀 < 0.1 无需处理
良好 0.1 ~ 0.2 可正常飞行
警告 0.2 ~ 0.3 建议检查减震
危险 > 0.3 必须排查振动源

3.3 磁力计(MAG)数据解读

磁力计测量磁场强度,单位是 Gauss。它用于提供航向参考,但也是最容易受干扰的传感器。

看磁力计日志,我主要关注两点:磁场强度是否稳定,以及是否存在硬铁/软铁干扰。

3.3.1 磁场强度与一致性

地球磁场强度大约在 0.25 ~ 0.65 Gauss 之间,具体取决于地理位置。如果日志里磁力计模值明显偏离这个范围,说明有干扰。

我见过最典型的案例:一个飞友在钢筋水泥的楼顶起飞,磁力计模值直接飙到 1.2 Gauss。结果飞机起飞后航向乱转,直接飘走了。这就是典型的硬铁干扰——钢筋改变了局部磁场。

避坑指南: 我曾经在停车场顶楼试飞,磁力计数据异常,但我没在意。结果飞机起飞后直接往墙上撞。从那以后,我每次起飞前都会看一眼 MAG 的模值,确认在正常范围内。

3.3.2 磁力计校准质量

PX4 日志里会记录磁力计校准参数。我一般看 calibration 字段里的 offset 和 scale。如果 offset 太大(比如超过 500),说明传感器周围有固定磁场干扰。

另外,校准后的磁力计数据,在飞机原地旋转 360° 时,三轴数据应该形成一个光滑的球体。如果日志里看到数据点分布不均匀,或者有「凹陷」,说明校准不充分。

3.4 气压计(BARO)数据解读

气压计测量大气压强,用于计算高度。PX4 日志里 BARO 主题包含 pressure(气压,单位 hPa)和 temperature(温度,单位 °C)。

气压计的问题通常表现为高度漂移,或者受气流干扰。

3.4.1 高度漂移

气压计对温度敏感。如果飞控板上的电子元件发热,会导致气压计周围温度升高,从而引起气压读数漂移。在日志里表现为:飞机悬停时,气压高度缓慢上升或下降。

我见过一个案例,飞机悬停 2 分钟,气压高度漂了 3 米。飞控以为飞机在上升,一直在往下推油门,结果飞机越飞越低。这就是典型的气压计温漂。

注意: 气压计温漂是正常现象,但漂移速率不能太大。如果每分钟漂移超过 1 米,建议给气压计加隔热海绵,或者使用 GPS 高度辅助。

3.4.2 气流干扰

气压计如果直接暴露在气流中,读数会剧烈波动。在日志里表现为高度数据像锯齿一样上下跳动。

我习惯看 BARO 的 altitude 字段,如果曲线在悬停时抖动幅度超过 0.5 米,说明气压计受气流影响了。解决办法是给气压计加一个海绵罩,或者把它放在飞控板内部、远离风道的位置。

3.5 传感器数据综合分析

单个传感器看完了,还得把它们放在一起看。我画了一张图,展示传感器数据在 PX4 里的融合流程:

PX4 传感器数据融合流程 PX4 传感器数据融合流程 陀螺仪 GYRO 加速度计 ACCEL 磁力计 MAG 气压计 BARO 传感器预处理(校准、滤波、异常检测) EKF 状态估计器 姿态 / 位置 / 航向输出 任何一个传感器数据异常,都会影响 EKF 的输出质量

从这张图可以看出,四个传感器数据经过预处理后,统一送入 EKF(扩展卡尔曼滤波器)进行融合。任何一个传感器出问题,都会影响最终的姿态和位置输出。

我分析日志时,会先看四个传感器是否都正常。如果陀螺仪和加速度计数据都很好,但磁力计数据异常,那问题大概率出在磁力计上,而不是飞控算法。这样能快速缩小排查范围。

总结: 传感器日志分析的核心是「对比」。对比静止与运动状态、对比不同传感器之间的数据一致性、对比实际值与理论值。养成这个习惯,你也能快速定位传感器故障。