4、传感器原理与选型:IMU、磁力计、GPS、气压计、光流传感器
各位同学,欢迎来到第四讲。今天咱们聊聊飞控的「眼睛」和「耳朵」——传感器。
说实话,我入行那会儿,飞控还主要靠惯性导航。现在可好,传感器种类多得让人眼花缭乱。但你别慌,核心就那几样:IMU、磁力计、GPS、气压计、光流。搞懂它们,你的飞控就成功了一半。
4.1 IMU:飞控的「内耳」
IMU(惯性测量单元)是飞控最核心的传感器。它包含加速度计和陀螺仪,有的还带磁力计。我习惯把IMU比作人的内耳前庭系统——感知姿态和运动。
4.1.1 加速度计
加速度计测量的是比力,说白了就是物体受到的惯性力与重力的合力。静止时,它测的就是重力加速度g。
工作原理:微机械结构(MEMS)中的质量块在加速度作用下发生位移,通过电容变化或压阻效应转换成电信号。
我在项目中遇到过一个问题:无人机悬停时,加速度计输出抖动很厉害。后来发现是机臂振动传到了传感器。嗯,这里要注意——加速度计对振动极其敏感。
4.1.2 陀螺仪
陀螺仪测量角速度。它告诉你飞机转得有多快,而不是转了多少度。
工作原理:利用科里奥利效应。一个振动的质量块在旋转时会产生垂直于振动方向的位移,通过检测这个位移就能算出角速度。
你想想看,陀螺仪和加速度计是互补的:
- 加速度计:长期稳定,但动态响应慢,受振动影响大
- 陀螺仪:动态响应快,但存在零偏漂移,长期积分会发散
所以飞控里通常用互补滤波或卡尔曼滤波把两者融合。我个人习惯用Mahony滤波器,代码简单,效果也不错。
// 互补滤波示例(简化版)
void attitude_estimation(float gx, float gy, float gz,
float ax, float ay, float az) {
float dt = 0.004; // 250Hz采样
float kp = 2.0; // 比例增益
float ki = 0.1; // 积分增益
// 加速度计归一化
float norm = sqrt(ax*ax + ay*ay + az*az);
ax /= norm; ay /= norm; az /= norm;
// 误差计算(略)
// 陀螺仪偏差补偿
gx += ex * ki; gy += ey * ki; gz += ez * ki;
// 四元数更新
q0 += (-q1*gx - q2*gy - q3*gz) * dt / 2;
q1 += ( q0*gx + q2*gz - q3*gy) * dt / 2;
q2 += ( q0*gy - q1*gz + q3*gx) * dt / 2;
q3 += ( q0*gz + q1*gy - q2*gx) * dt / 2;
}
4.2 磁力计:飞控的「指南针」
磁力计测量地球磁场,用来确定航向。说白了,就是电子指南针。
工作原理:磁阻效应或霍尔效应。当外部磁场变化时,传感器的电阻或电压会改变。
但磁力计有个大问题——容易受干扰。电机电流、电源线、甚至飞控板上的铜箔都会影响它。
磁力计校准通常需要做硬铁和软铁校正。硬铁是固定偏差,软铁是比例偏差。我一般用椭球拟合算法,采集几百个点就能算出校正参数。
4.3 GPS:飞控的「眼睛」
GPS提供位置和速度信息。对于室外飞行,它是必不可少的。
工作原理:通过接收至少4颗卫星的信号,利用三角测量原理计算位置。精度受卫星几何分布、大气延迟、多径效应等因素影响。
普通GPS精度在2-5米,RTK(实时动态差分)GPS可以做到厘米级。我建议初学者先用普通GPS,等搞懂了定位原理再上RTK。
| GPS类型 | 水平精度 | 更新率 | 适用场景 |
|---|---|---|---|
| 普通GPS | 2-5m | 5-10Hz | 定点悬停、航线飞行 |
| RTK GPS | 1-3cm | 10-20Hz | 精准降落、测绘 |
| 差分GPS | 0.5-1m | 5-10Hz | 低成本高精度方案 |
4.4 气压计:飞控的「高度计」
气压计通过测量大气压力来推算高度。每升高8-10米,气压下降约1百帕。
工作原理:MEMS压力传感器内部有一个薄膜,气压变化会使薄膜变形,通过压阻效应转换成电信号。
气压计的问题在于:
- 温度敏感:温度变化会引起零漂
- 风敏感:强风会导致气压波动
- 滞后性:响应速度慢
我习惯把气压计和加速度计融合来估计高度。加速度计提供短时精度,气压计提供长时稳定性。
// 气压计高度计算
float pressure_to_altitude(float pressure) {
// 标准大气压模型
float p0 = 101325.0; // 海平面标准气压
float altitude = 44330.0 * (1.0 - pow(pressure / p0, 0.1903));
return altitude;
}
4.5 光流传感器:飞控的「近眼」
光流传感器通过图像匹配来测量水平运动。它相当于一个「光学鼠标」,只不过装在飞机上。
工作原理:摄像头连续拍摄地面图像,通过特征点匹配计算像素位移,再结合高度信息换算成实际位移。
光流传感器在室内或低空飞行时特别有用。没有GPS信号时,它能提供水平速度信息,配合IMU实现定点悬停。
光流传感器的选型要点:
- 分辨率:一般640x480就够用
- 帧率:至少30fps,越高越好
- 接口:SPI或I2C,注意延迟
- 测距:最好带超声波或激光测距,用于高度补偿
4.6 传感器融合:1+1>2
单个传感器都有缺陷,但组合起来就能互补。我常用的融合策略:
- 姿态估计:陀螺仪+加速度计+磁力计 → 互补滤波/卡尔曼滤波
- 位置估计:GPS+光流+气压计 → 扩展卡尔曼滤波
- 速度估计:GPS+光流+加速度计 → 惯性导航
说白了,传感器融合就是「取长补短」。陀螺仪快但不准,加速度计准但慢,磁力计稳但易受干扰——把它们揉在一起,才能得到可靠的姿态和位置信息。
好了,这一讲就到这里。下一讲咱们聊聊「传感器校准与数据处理」——这可是飞控调试的重头戏。到时候我会分享一些实战中踩过的坑,保证让你少走弯路。