MPU 6000 6DOF - Slow settling of quaternion after step input

By david_ellis , 1 September 2012

I have attached a plot to show what I am referring to. The plot shows the rotation angle about the Y axis and the rate from the y gyro. The vertical units are in 1/100 of a degree for the angle and 1/1000 of a degree per second for the rate. Time is in seconds. All steady state angles have been measured and 'usable' with a bit of post-processing.

At about t = 19.5 seconds I am applying a step rotation about the y axis, taking the sensor from about 0 degrees to 45 degrees in about 0.25 seconds (180 degrees per second). The initial response while the gyro is in motion is good, however the dmp calculated angle only gets to 30 degrees before the motion ends (i.e. the gyro reads zero rate). It is then up to the accelerometers to pull the angle up the final 15 degrees over a period of about 10 seconds. The rotation rate is well within the limit of the 2000 degrees/sec range I have selected and as long as the sensor is in motion the angles track input motions in a reasonable way, but as soon as the motion stops I see the settling time. I have the DHPF at the _DHPF_RESET value, the DLPF set to 188Hz and the FIFO sample rate set to 200Hz a combination which should provide a good chance of a result. This is definitely not gyro drift, which the dmp manages quite well even in the z axis.

I have two observations based on similar (non-dmp) algorithms I also use:-

1. There is insufficient gyro input into the dmp quaternion calculation to get a fast response in the situation of a step input.
2. The reported rate from the raw gyro sensor is just 6 degrees per second instead of the actual 180 degrees per second of the input.

Given that reported raw gyro rate is 30 times smaller than expected, if this value is also being used by the DMP it is not surprising that response is so slow.

Am I doing something wrong? Are there any parameters in the DMP that I can adjust to speed up the response? For example, can I add gain to the gyro value going into the DMP

or otherwise change its sensitivity?
Image removed.

EDIT: Here is the same sensor setup but using my own code instead of the DMP with a slightly larger and faster step 60 degrees, 360 degrees per second. This is what the dmp should be doing:-

Image removed.

phpbb Topic ID
14640