Electrical – MPU 6050 Digital Motion Processor Gyro Units

accelerometergyroscopemotion

I'm running into an odd issue with a motion control processor (MPU 6050 / 9150) that is returning raw gyroscope values as specified between the -/+ 32768 which in the way this gyro is configured corresponds to -/+ 2000 deg / sec. This makes total sense as this goes along with the specified documentation.

However, when I process data from the digital motion processor (6 axis sensor fusion) I get a maximum of 1429. I don't think that there's an error reading the data from the MPU buffer as the other measurements look good (reading from the same FIFO buffer). I assume this is likely some units issue that has to do with the 6 axis sensor fusion, and also likely involving radians

Wondering if any of you bright people with your light bulb brains have some insight here?

Best Answer

So it turns out that my dmp packet structure is off from the specification.

The DMP returns a 48byte packet, and the accelerometer and gyroscope values coming out are 32 bit integers. When handled improperly this gives scaled and wrong data.

    /* ================================================================================================ *
 | Default MotionApps v4.1 48-byte FIFO packet structure:                                           |
 |                                                                                                  |
 | [QUAT W][      ][QUAT X][      ][QUAT Y][      ][QUAT Z][      ][GYRO X][      ][GYRO Y][      ] |
 |   0   1   2   3   4   5   6   7   8   9  10  11  12  13  14  15  16  17  18  19  20  21  22  23  |
 |                                                                                                  |
 | [GYRO Z][      ][MAG X ][MAG Y ][MAG Z ][ACC X ][      ][ACC Y ][      ][ACC Z ][      ][      ] |
 |  24  25  26  27  28  29  30  31  32  33  34  35  36  37  38  39  40  41  42  43  44  45  46  47  |
 * ================================================================================================ */