Gamasutra: The Art & Business of Making Gamesspacer
Where's the Wiimote? Using Kalman Filtering To Extract Accelerometer Data
View All     RSS
August 22, 2014
arrowPress Releases
August 22, 2014
PR Newswire
View All





If you enjoy reading this site, you might also want to check out these UBM Tech sites:


 
Where's the Wiimote? Using Kalman Filtering To Extract Accelerometer Data

June 20, 2007 Article Start Page 1 of 4 Next
 

There are two issues that I have noticed while playing Wii Sports. One involves bowling and one involves golf. In the bowling game I have been soundly defeated by a 7 year old. While that in and of itself is not an issue, he usually beats me by swinging his arm in a random convulsive fashion behind his back. Last time I checked, his high score was 217. The issue with the golf game is when the golf club swings backwards with respect to the motion of the Wiimote. This happens most often while putting.

These kind of issues hint at large errors interpreting the outputs of the accelerometer, estimating the Wiimote orientation, or perhaps a low battery in the Wiimote. Or all three. This article shows a useful way to improve the outputs of the accelerometers. A more complete version of this method can be used to improve the estimate of the orientation of the Wiimote. Sadly this method will not help too much with a low battery.

Inexpensive accelerometers are known for fuzzy input. An error of 5% in acceleration is enough to throw position and velocity estimates off quickly. I wager to guess that the accelerometers in the Wiimote are neither the most expensive nor the most accurate versions available. But can one get anything useful out of cheap accelerometers? Absolutely. Some good information is already pulled from the accelerometer in the Wii Sports and the Wii Play games. But can more accurate information be extracted? Definitely. But how can it be done?

One way to eke out better information from accelerometers is to use a complicated form of time dependent probability theory. This is known as Kalman Filtering. Kalman Filtering is commonly used in the navigation systems of airplanes, where knowing the location accurately, and precisely if possible, is important. Versions of the Kalman Filter are also used to estimate spacecraft and satellite trajectories.

The description, justification, and general use of the Kalman Filter is challenging, so I will merely state the results that are relevant and then go through an example. There are a few good, and more so-so books and web pages on Kalman Filtering. I list in the references only what I consider good pages, so please realize that it is a subjective list. Good luck with them [1,2,3,4]. Familiarity with differential equations, some statistics, and matrix mechanics is assumed throughout this article.

After the basic Kalman Filter equations, this article discusses a 'simple' Kalman Filter example. The 'simple' example is a one dimensional motion of an accelerometer and with ideally fairly accurate position measurements. I use the word simple only because this is as uncomplicated as Kalman Filtering gets. It does not describe the example as something that is necessarily easily understood. This example has nothing in it that explains how to extract the orientation of the Wiimote, that is the next level up in complexity of a Kalman Filter design. This example is perfect for estimating the motion of an object in one dimension, like the motion of a pool cue before it strikes the cue ball.


Article Start Page 1 of 4 Next

Related Jobs

Retro Studios - Nintendo
Retro Studios - Nintendo — Austin, Texas, United States
[08.22.14]

Senior Tools Engineer
Retro Studios - Nintendo
Retro Studios - Nintendo — Austin, Texas, United States
[08.22.14]

AI Engineer
Retro Studios - Nintendo
Retro Studios - Nintendo — Austin, Texas, United States
[08.22.14]

Tools Engineer
Blizzard Entertainment
Blizzard Entertainment — Irvine, California, United States
[08.22.14]

Test Engineer






Comments


Galib Hasan
profile image
Hello Rasco! Thanks for your great article! I was just interested to see your sample codes but unfortunately it seems that the links are not working! Will you please check it? (I know it has already been six years!)


none
 
Comment: