AstroWheelie is a game based exercise platform designed to help wheelchair users get more physical activity. Its an Astroids clone written completely in PyGame. The original project, called Vectorpods is a LGPL game, and can be found here.
AstroWheelie uses two Wiimotes (one attached to each wheel) to determine the position, rotation, and speed of the wheelchair. We use the cwiid library to interface with the Wiimotes, but similar support is provided on Windows through other projects (Friends have recommended GlovePIE). Cwiid is also a Ubuntu package (sudo apt-get install cwiid). I also have 3D printer boxes that have slots for the spokes on a wheelchair.
AstroWheelie decides what action the player wants to take by examining the effect of gravity on the accelerometers. The gravity vector is extremely clear on the Wiimotes (and on other accelerometers). I don't think its possible for a human to spin the wheels fast enough to distort the gravity vector to the point it can't be trusted. I put the wheelchair on cinder block so the wheels were off the ground and spun them. The vector distorts slightly at really high speeds, but it still points in the right direction.
If you use my classes, WiiData.py handles the low level grabbing of accelerometer data, and AccelInterfacer.py handles the high level stuff like calculating angular motion. I wrote this code to help me visualize the vectors I was getting from the accelerometers - its also a pretty good intro - www.cc.gatech.edu/~scuzzort/pyvec.py.
Important stuff for WiiData.py
A few functions of note in AccelInterfacer.py
AstroWheelie: A wheelchair based exercise game - www.cc.gatech.edu/~scuzzort/astrowheelie-cuzzort-starner.pdf
The source code as a zip file can be found at www.cc.gatech.edu/~scuzzort/Vectorpods-src.zip
Stephen Cuzzort: scuzzort3 [at] gatech.edu