跳转到内容

姿态魔术师

IMU(惯性测量单元)是无人机姿态估计的核心传感器。在本项目中,你将学习如何读取 IMU 数据,用互补滤波算法计算无人机姿态。

  • IMU 传感器原理
  • 互补滤波算法
  • 四元数姿态表示
  • 姿态估计
物品数量说明
ESP32 无人机1内置 MPU6050
串口调试助手1观察数据

解压 imu_fusion.zip,用 VS Code 打开。

打开 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 之间
}

测试 1:beta=0.1(更信任加速度计)

Section titled “测试 1:beta=0.1(更信任加速度计)”
  • 现象:响应快,但晃动时姿态数据波动大

测试 2:beta=0.01(更信任陀螺仪)

Section titled “测试 2:beta=0.01(更信任陀螺仪)”
  • 现象:稳定,但长时间会有漂移

调整 beta,直到无人机晃动时姿态数据稳定,且长时间飞行无明显漂移。

快速旋转无人机,观察姿态数据是否能准确跟随。

  • 减小 beta
  • 检查陀螺仪校准
  • 增大 beta
  • 添加低通滤波器

恭喜你!你已经掌握了姿态估计的核心技术,理解了互补滤波算法!

在下一个项目中,你将学习如何读取并分析传感器数据。