概述
IMU(惯性测量单元)是无人机姿态估计的核心传感器。在本项目中,你将学习如何读取 IMU 数据,用互补滤波算法计算无人机姿态。
你将学到什么
- IMU 传感器原理
- 互补滤波算法
- 四元数姿态表示
- 姿态估计
所需材料
| 物品 | 数量 | 说明 |
|---|---|---|
| ESP32 无人机 | 1 | 内置 MPU6050 |
| 串口调试助手 | 1 | 观察数据 |
步骤 1:打开项目
解压 imu_fusion.zip,用 VS Code 打开。
步骤 2:查看互补滤波代码
打开 sensfusion6.c,找到 sensfusion6UpdateQ 函数:
void sensfusion6UpdateQ(float gx, float gy, float gz, float ax, float ay, float az, float dt) {
// 1. 陀螺仪积分更新姿态(快速但有漂移)
// 2. 加速度计校准姿态(准确但易受震动影响)
// 3. 互补滤波:融合两者数据
beta = 0.02; // 滤波系数,0-1 之间
}
步骤 3:调整滤波系数
测试 1:beta=0.1(更信任加速度计)
- 现象:响应快,但晃动时姿态数据波动大
测试 2:beta=0.01(更信任陀螺仪)
- 现象:稳定,但长时间会有漂移
步骤 4:找到最优值
调整 beta,直到无人机晃动时姿态数据稳定,且长时间飞行无明显漂移。
步骤 5:挑战
快速旋转无人机,观察姿态数据是否能准确跟随。
故障排除
姿态数据漂移
- 减小
beta值 - 检查陀螺仪校准
姿态数据波动
- 增大
beta值 - 添加低通滤波器
成就感
恭喜你!你已经掌握了姿态估计的核心技术,理解了互补滤波算法!
下一步
在下一个项目中,你将学习如何读取并分析传感器数据。