使用arduino从imu(GY9250)获取数据并计算俯仰偏航和滚转

时间:2014-10-26 15:15:58

标签: arduino

我正在研究Quadrotor项目,我想从我的imu中读取数据。我尝试了mpu6050库,但只获得了加速度计和陀螺仪数据。我不知道如何获取磁力计数据并使用所有这些信息来计算俯仰滚转和偏航。我使用的传感器是GY9250。我是这个领域的新人,我不懂数学。 如果有人可以帮助我,我会很高兴。谢谢... 这就是我所做的:

accelgyro.getAcceleration(&ax, &ay, &az);
//Low Pass Filter
fXa = ax * alpha + (fXa * (1.0 - alpha));
fYa = ay * alpha + (fYa * (1.0 - alpha));
fZa = az * alpha + (fZa * (1.0 - alpha));

accelgyro.getRotation(&gx, &gy, &gz);

//pitch and roll
roll  = (atan2(-fYa, fZa)*180.0)/M_PI;
pitch = (atan2(-fXa, fZa)*180.0)/M_PI;

1 个答案:

答案 0 :(得分:2)

如果查看下图,可以看到MPU有数字运动处理器。

嵌入式数字运动处理器(DMP)位于MPU-60X0内,可从主处理器卸载运动处理算法的计算。

DMP从加速度计,陀螺仪和其他第三方传感器(如磁力计)获取数据,并处理数据。结果数据可以从DMP的寄存器中读取,也可以在FIFO中缓冲。

DMP可以访问MPU的一个外部引脚,可用于产生中断。

enter image description here

然后我建议你阅读这篇文章:http://playground.arduino.cc/Main/MPU-6050

当然也读过这个:http://www.varesano.net/projects/hardware/FreeIMU