Drift takes too long to settle

By vincent_chardon , 10 October 2011

Hi,
I am using the UC3-Xplained board with Inertial 2 sensor board. While running the teapot demo, the initial drift takes too long to settle (Takes more than 10 minutes).
I checked the python Debug messages and noticed a strange thing. Here take a look at the Debug message;

-main:Q: +0.7022 -0.0538 -0.0199 -0.7097 (+1.0000)
-main:GC: +0.49 -5.62 -3.05
-main:AC: -0.03 -0.06 +0.97
-main:T: +30.32
-main:gb: +0.34 -5.77 -3.11
-main:gts: +0.00 +0.00 +0.00
mldl:inv_set_offset(fffffff5, 00bd, 0066); from fff5, 00bd 0066
mldl:inv_set_offset(fffffff5, 00bd, 0066); from fff5, 00bd 0066
mldl:inv_set_offset(ffffffea, 0173, 00ca); from fff5, 00bd 0066
-setup:umplMotionCallback: INV_NO_MOTION
-main:Q: +0.6993 -0.0539 -0.0196 -0.7125 (+1.0000)
-main:GC: +0.37 -5.62 -3.11
-main:AC: -0.03 -0.06 +0.97
-main:T: +30.35
-main:gb: +0.67 -11.32 -6.16
-main:gts: +0.00 +0.00 +0.00
-main:Q: +0.6991 -0.0514 -0.0164 -0.7130 (+1.0000)
-main:GC: -0.06 -0.06 -0.12
-main:AC: -0.03 -0.06 +0.97
-main:T: +30.27
-main:gb: +0.67 -11.32 -6.16
-main:gts: +0.00 +0.00 +0.00
-main:Q: +0.6994 -0.0468 -0.0107 -0.7131 (+1.0000)
-main:GC: +0.00 +0.00 -0.06
-main:AC: -0.03 -0.06 +0.97
-main:T: +30.19
-main:gb: +0.67 -11.32 -6.16
-main:gts: +0.00 +0.00 +0.00
-main:Q: +0.6996 -0.0441 -0.0073 -0.7131 (+1.0000)
-main:GC: +0.06 -0.06 +0.00
-main:AC: -0.03 -0.06 +0.97
-main:T: +30.14
-main:gb: +0.67 -11.32 -6.16
-main:gts: +0.00 +0.00 +0.00
-main:Q: +0.6998 -0.0404 -0.0027 -0.7132 (+1.0000)
-main:GC: +0.00 +0.00 -0.12
-main:AC: -0.03 -0.06 +0.97
-main:T: +30.31
-main:gb: +0.67 -11.32 -6.16
-main:gts: +0.00 +0.00 +0.00
-main:Q: +0.6999 -0.0381 +0.0001 -0.7132 (+1.0000)
-main:GC: +0.06 -0.06 -0.06
-main:AC: -0.03 -0.06 +0.97
-main:T: +30.16
-main:gb: +0.67 -11.32 -6.16
-main:gts: +0.00 +0.00 +0.00
-main:Q: +0.7001 -0.0350 +0.0037 -0.7132 (+1.0000)
-main:GC: +0.00 -0.06 -0.06
-main:AC: -0.03 -0.06 +0.97
-main:T: +30.20
-main:gb: +0.67 -11.32 -6.16
-main:gts: +0.00 +0.00 +0.00
-main:Q: +0.7002 -0.0332 +0.0060 -0.7132 (+1.0000)
-main:GC: +0.06 +0.00 -0.06
-main:AC: -0.03 -0.06 +0.97
-main:T: +30.25
-main:gb: +0.67 -11.32 -6.16
-main:gts: +0.00 +0.00 +0.00
-setup:umplMotionCallback: INV_MOTION
mldl:inv_set_offset(fffffff5, 00bd, 0066); from ffea, 0173 00ca
mldl:inv_set_offset(fffffff5, 00bd, 0066); from fff5, 00bd 0066
mldl:inv_set_offset(fffffff5, 00bd, 0066); from fff5, 00bd 0066
-main:Q: +0.6992 -0.0327 +0.0068 -0.7142 (+1.0000)
-main:GC: +0.24 -5.62 -3.05
-main:AC: -0.03 -0.06 +0.97
-main:T: +30.20
-main:gb: +0.34 -5.77 -3.11
-main:gts: +0.00 +0.00 +0.00
mldl:inv_set_offset(fffffff5, 00bd, 0066); from fff5, 00bd 0066
mldl:inv_set_offset(fffffff5, 00bd, 0066); from fff5, 00bd 0066
mldl:inv_set_offset(fffffff5, 00bd, 0066); from fff5, 00bd 0066

You can see that there was initial drift in the gyro values, which was corrected when the state changed to No Motion. But then a change of state was falsely detected and the drift came back (the device was still at rest on top of the table actually). From what i understand the umplmotioncallback() is a fuction registered with inv_set_motion_callback(), which should only be called when a change of state has been detected. So, why is it being called when the state is not changing?
Kindly advise me if something is wrong here. Thanks
Omer

phpbb Topic ID
13857