第四章:传感器原理与建模

IMU:飞控的“内耳”

IMU,也就是惯性测量单元,说白了就是飞控系统里感知自身运动状态的“内耳”。它主要由两部分组成:加速度计和陀螺仪。有些高级的IMU还会集成磁力计,但咱们通常把磁力计单独拎出来讲。

我个人习惯把IMU比作一个盲人坐在飞机里——他感觉不到外面世界的样子,但能清晰感知自己是在加速、减速还是转弯。嗯,这个比喻很形象。

加速度计:感知“重力”与“运动”

加速度计测量的是比力(specific force),也就是物体受到的惯性力与重力的合力。你想想看,当无人机悬停时,加速度计感受到的其实是重力加速度g,而不是0。这一点很多新手会搞混。

我在项目中遇到过一个问题:某款无人机在剧烈机动后,高度估计突然漂移。查了半天,发现是加速度计的振动整流误差(Vibration Rectification Error)在作怪。说白了,就是高频振动被整流成了低频的加速度偏置。

加速度计误差模型:

a_measured = a_true + b_a + s_a * a_true + n_a

其中:

  • b_a:零偏(bias),单位m/s²
  • s_a:比例因子误差(scale factor error)
  • n_a:随机噪声(白噪声+随机游走)

这里要注意,零偏是IMU最头疼的问题。我曾经调试一架六旋翼,发现悬停时姿态角有0.5度的偏差,最后定位到是加速度计Z轴的零偏没校准好。嗯,从那以后我每次上电都会做一次静态校准。

我的经验:加速度计校准最好在水平面上进行,至少采集30秒的静态数据。取平均值作为零偏,然后减去即可。别偷懒,30秒是底线。

陀螺仪:感知“旋转”

陀螺仪测量的是角速度,单位是rad/s或°/s。它比加速度计更“娇气”,因为温度变化对它的影响特别大。

我记得有一次在户外做飞行测试,气温从25度骤降到10度,陀螺仪的零偏直接漂了0.1°/s。你想想看,0.1°/s的误差积分10秒就是1度的姿态误差,这还得了?

陀螺仪误差模型:

ω_measured = ω_true + b_g + s_g * ω_true + n_g + ε_temp

其中:

  • b_g:零偏(bias),单位rad/s
  • s_g:比例因子误差
  • n_g:随机噪声
  • ε_temp:温度相关误差

避坑指南:我曾经因为忽略了陀螺仪的温漂,导致无人机在低温环境下姿态发散。后来我加了一个简单的温度补偿模型:b_g(T) = b_g_0 + k * (T - T_0)。效果立竿见影。

磁力计:飞控的“指南针”

磁力计测量的是地球磁场,用来确定航向角(yaw)。但它有个致命弱点——容易受干扰。电机电流、铁磁材料、甚至地下的钢筋都会让它“发疯”。

我做过一个项目,在工业园区里测试无人机,磁力计数据总是跳变。后来发现是地面下的钢筋网在作怪。解决方案?要么用GPS航向替代,要么做硬铁/软铁校准。

磁力计误差模型:

m_measured = R * m_true + b_hard + S_soft * m_true + n_m
  • b_hard:硬铁干扰(恒定偏置)
  • S_soft:软铁干扰(比例+旋转)
  • n_m:随机噪声

校准方法其实很简单:拿着无人机在空中画“8”字,采集各个方向的数据,然后拟合椭球。嗯,这个操作我教过很多新手,他们总以为我在开玩笑。

GPS/RTK:飞控的“眼睛”

GPS提供位置和速度信息,但精度有限(2-5米)。RTK(实时动态差分)可以把精度提升到厘米级。说白了,RTK就是给GPS配了个“放大镜”。

我在做农业植保无人机时,RTK是标配。因为喷洒农药需要厘米级的航线精度,普通GPS根本做不到。但RTK也有坑——它需要基站和流动站之间的通信链路,一旦断链,就会降级为普通GPS。

GPS误差模型:

p_gps = p_true + b_iono + b_tropo + b_ephem + n_gps
  • b_iono:电离层延迟
  • b_tropo:对流层延迟
  • b_ephem:星历误差
  • n_gps:接收机噪声

我的建议:在融合GPS数据时,一定要设置合理的协方差。比如,水平位置协方差设为3米,垂直位置设为5米(因为GPS垂直精度更差)。别把GPS数据当真理,它只是参考。

气压计:飞控的“高度计”

气压计通过测量大气压力来推算高度。原理很简单:气压随高度增加而降低。但实际使用中,它受天气影响很大——刮风下雨都会导致气压变化,从而引起高度估计误差。

我记得有一次在台风来临前测试无人机,气压计显示的高度一直在缓慢下降,但实际上无人机是悬停的。后来发现是气压变化导致的。从那以后,我每次飞行前都会记录地面气压作为参考。

气压计误差模型:

h_measured = h_true + b_baro + n_baro + ε_wind
  • b_baro:零偏(随时间缓慢变化)
  • n_baro:测量噪声
  • ε_wind:风扰动误差

避坑指南:我曾经在室内用气压计做高度估计,结果发现误差高达2米。为什么?因为空调的风直接吹到了气压计上。后来我给气压计加了个海绵防风罩,问题解决。

知识体系总览

下面这张图是我自己画的,把本章的知识结构梳理了一遍。你一看就明白各个传感器之间的关系了。

传感器原理与建模知识体系 飞控传感器系统 IMU(惯性测量单元) 磁力计 GPS/RTK 气压计 加速度计 陀螺仪 硬铁/软铁校准 位置/速度 RTK差分 高度估计 误差模型:零偏 + 比例因子 + 随机噪声 + 环境干扰 每个传感器都有其独特的误差特性,理解它们是融合滤波的基础 加速度计:振动整流误差 磁力计:硬铁/软铁干扰 GPS:电离层/对流层延迟 气压计:风扰动/温漂

这张图把四个传感器的核心功能和误差来源都串起来了。你仔细看,IMU和磁力计属于“内部感知”,GPS和气压计属于“外部感知”。飞控系统需要把这两类数据融合起来,才能得到稳定可靠的姿态和位置估计。

好了,这一章的内容就到这里。传感器原理是飞控算法的基础,你把这些误差模型吃透了,后面学卡尔曼滤波就会轻松很多。


专注资料整理