I've been experimenting with Wii Motion Plus as an orientation controller, and so far, I understand this much.
The motion plus add on can measure rate of change of angle in 3 dimensions (yaw, pitch, roll), however all three suffer from 'gyroscopic drift' where the integration error gradually adds up and causes inaccuracies. The solution to this is either a kalman filter or complementary filtering, where you combine the short term gyro information with long term accelerometer info. I understand how that works for pitch and roll, because the accelerometer can measure the angle against gravity. What I don't understand is how to fix the Yaw, because the accelerometer complementary filtering seems useless in this regard.
In my experiments, I've hooked it up to a screen to I can move a cursor with the output, and I've been incrementing this offset by the difference between the current angular velocity and the average during calibration.
So, I spend a few seconds with the remote flat on the table, and average out the value (on one remote I get about 7800, and on another I get 8400). Then, every frame I get the current value, and subtract the average from it, multiply it by a fudge factor (time period multiplied by a scaling factor to make it map to the screen reasonably).
My problem is that I seem to get huge drift on the Yaw axis, a couple of seconds of movement results in at least 15 degrees of deviation, which seems rather extreme.
What I found interesting was that the remote that averages 7800 drifts to the left, whereas the 8400 remote drifts to the right.
I guess what I'm asking, is how do people deal with wii motion plus input on the Yaw axis properly, and is there any way of making it more reliable?