MPU-9150 odd behavior - need guidance

By dmirsky , 14 September 2012

I'm evaluating the MPU-9150 for inclusion in a product we're developing and I'm seeing what I believe to be very odd behavior.

Setup:
1) I'm using the default firmware which ships with the IMU.
2) The setup is 40Hz quaternion output, mode INV_NINE_AXIS.
3) I'm reading the IMU at-speed and converting to yaw-pitch-roll. I'm confident my code is correct.
4) The IMU is mounted to an azimuth/elevation stage at roughly the center of rotation for both axes.
5) The stage is reasonably level.

Behavior:
1) When rotating azimuth 90 degrees at 90 deg/sec, the IMU reports a rotation of ~81 degrees.
2) When rotating azimuth 90 degrees at 30 deg/sec, the IMU reports a rotation of ~79 degrees.
3) When rotating azimuth 90 degrees at 9 deg/sec, the IMU reports a rotation of ~65 degrees.
4) When rotating azimuth 90 degrees at 3 deg/sec, the IMU reports a rotation of 0 degrees!

Obviously we'd expect (need) to have the IMU report 90 degrees in each case. Reading zero degrees is a very rude surprise. Perhaps there is some threshold which isn't being met at low rotational speeds? The parts are in-the-mail to allow for tuning the fusion setup to hopefully improve performance... the question is, what do I change to get a 90 rotation to read as 90 degrees from the IMU?

I read in one forum post that it was necessary to "wave" the MPU around a bit to calibrate the magnetometers. So I tried doing this and repeating experiment #4 above. Normalizing the data to a 0 initial position, the IMU went from 0 to 26 degrees while being rotated 90, then "unwound" to 2 degrees over the next several seconds. I went to a 45 minute meeting and when I came back, the IMU had advanced to 14 degrees.

At this point I'm wondering if this solution is viable at all. And I've tried this experiment with two different IMUs, so I don't think I'm a victim of a bad unit.

Any advice anyone has for me is welcome.

phpbb Topic ID
14679