3. 关键传感器日志:陀螺仪、加速度计、磁力计、气压计
传感器是飞控的「眼睛」和「耳朵」。PX4 日志里,IMU(惯性测量单元)和气压计的数据占了日志体积的 60% 以上。很多炸机案例,根源就是传感器数据出了问题。
我个人习惯,拿到一份日志,先不看姿态、控制回路,而是直奔传感器数据。传感器干净,后面的分析才有意义。否则,你花半天分析控制参数,结果发现陀螺仪早就坏了,那不是白忙活?
3.1 陀螺仪(GYRO)数据解读
陀螺仪测量角速度,单位是 rad/s。PX4 日志里,GYRO 主题包含 x、y、z 三个轴的数据。
看陀螺仪数据,我主要关注三点:
- 零偏稳定性:飞机静止时,陀螺仪输出应该在 0 附近小幅波动。
- 噪声水平:正常飞行时,数据曲线应该平滑,没有毛刺。
- 饱和与削波:剧烈机动时,数据是否被限幅。
3.1.1 静止状态下的零偏
飞机上电后,如果放在桌面不动,陀螺仪三个轴的输出均值应该接近 0。我见过一些日志,静止时 z 轴输出稳定在 -0.05 rad/s,这其实还算正常。但如果超过 ±0.1 rad/s,就要小心了。
我曾经遇到一个案例,飞机起飞后缓慢向右偏航,飞手一直在打左舵修正。查日志发现,陀螺仪 z 轴零偏达到 -0.3 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² 的读数。这就是典型的加速度计零偏,导致飞控以为飞机在倾斜,一直在做错误修正。
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 米。飞控以为飞机在上升,一直在往下推油门,结果飞机越飞越低。这就是典型的气压计温漂。
3.4.2 气流干扰
气压计如果直接暴露在气流中,读数会剧烈波动。在日志里表现为高度数据像锯齿一样上下跳动。
我习惯看 BARO 的 altitude 字段,如果曲线在悬停时抖动幅度超过 0.5 米,说明气压计受气流影响了。解决办法是给气压计加一个海绵罩,或者把它放在飞控板内部、远离风道的位置。
3.5 传感器数据综合分析
单个传感器看完了,还得把它们放在一起看。我画了一张图,展示传感器数据在 PX4 里的融合流程:
从这张图可以看出,四个传感器数据经过预处理后,统一送入 EKF(扩展卡尔曼滤波器)进行融合。任何一个传感器出问题,都会影响最终的姿态和位置输出。
我分析日志时,会先看四个传感器是否都正常。如果陀螺仪和加速度计数据都很好,但磁力计数据异常,那问题大概率出在磁力计上,而不是飞控算法。这样能快速缩小排查范围。