这是MPU6050 DMP读取四元数程序
dmp_read_fifo(gyro, accel, quat, &sensor_timestamp, &sensors, &more);
if (sensors & INV_WXYZ_QUAT )
{
PrintChar("in Calculating quaternion steps.....\n");
q0=quat[0] / q30;
q1=quat[1] / q30;
q2=quat[2] / q30;
q3=quat[3] / q30;
Pitch = asin(-2 * q1 * q3 + 2 * q0* q2)* 57.3; // pitch
Roll = atan2(2 * q2 * q3 + 2 * q0 * q1, -2 * q1 * q1 - 2 * q2* q2 + 1)* 57.3; // roll
Yaw = atan2(2*(q1*q2 + q0*q3),q0*q0+q1*q1-q2*q2-q3*q3) * 57.3;
printf("\r\npitch:%f\ roll:%f yaw:%f\r\n",Pitch,Roll,Yaw);
delay_ms(500);
}
这是输出四元数和欧拉角。但是
if(sensors & INV_XYZ_GYRO)
{}
if(sensors & INV_XYZ_ACCEL)
{}
这两个函数怎么填写?
希望知道的人们帮一下小弟,再次谢过。 |