Hello,
I am trying to figure out how to get the rotation matrix out of the MPU-9150 Nine-Axis IMU sensor, I am using the linux-mpu9150 code with imu.c which gives me the: euler_angles, fused_quaternion, calibrated_accel and calibrated_mag.
I couldn't seem to find any official linux sdk, does anyone know a way to get rotation matrix out of the mpu9150 on a linux machine?
Thank you
- Log in to post comments
phpbb Topic ID
16176
Re: Re: MPU-9150 rotation matrix linux
You can convert fused quaternions to rotation matrix; here is the function to convert quaternions into rotation matrix;
void inv_quaternion_to_rotation(const long *quat, long *rot)
{
rot[0] =
inv_q29_mult(quat[1], quat[1]) + inv_q29_mult(quat[0],
quat[0]) -
1073741824L;
rot[1] =
inv_q29_mult(quat[1], quat[2]) - inv_q29_mult(quat[3], quat[0]);
rot[2] =
inv_q29_mult(quat[1], quat[3]) + inv_q29_mult(quat[2], quat[0]);
rot[3] =
inv_q29_mult(quat[1], quat[2]) + inv_q29_mult(quat[3], quat[0]);
rot[4] =
inv_q29_mult(quat[2], quat[2]) + inv_q29_mult(quat[0],
quat[0]) -
1073741824L;
rot[5] =
inv_q29_mult(quat[2], quat[3]) - inv_q29_mult(quat[1], quat[0]);
rot[6] =
inv_q29_mult(quat[1], quat[3]) - inv_q29_mult(quat[2], quat[0]);
rot[7] =
inv_q29_mult(quat[2], quat[3]) + inv_q29_mult(quat[1], quat[0]);
rot[8] =
inv_q29_mult(quat[3], quat[3]) + inv_q29_mult(quat[0],
quat[0]) -
1073741824L;
}