Goofing around with the Wii Remote

In between sessions of zelda (currently in the Lake Temple, total elapsed time just over fourteen hours), I’ve been considering just how cool the Wii Remote controllers are. For $40 (admittedly, quite a bit for a controller) you get a controller with the following nifty features:

  • It communicates wirelessly via Bluetooth, which opens up a whole bunch of possibilities for using them on other machines.
  • They include a fair supply of buttons, and a “rumble pack” force feedback device.
  • You can play sound back through the remote.
  • It’s got four LEDs that you have individual control over.
  • It has a three axis, 3.6g accelerometer, so you can read acceleration and orientation from the remote.
  • It has an imaging infrared sensor that can be used to determine your orientation compared to the Wii sensor bar.

In short, it’s just a damned cool little device all to itself. I was surfing and discovered, a site which is all about wii hacking, and they include links to drivers and libraries for reading the Wii controller on different devices. A download of libcwiimote later, and a bit of programming, and I was reading acceleration data from the remote. Behold the following graph plotted with gnuplot:

Accel Data

Near the beginning, I am holding the remote fairly steady. The red, green and blue lines measure the acceleration in x, y, and z, respectively. Notice that the blue line is offset. This is because of the acceleration due to gravity. Later in the test, I whirled the remote around in circles, which you can see by the rather chaotic motion.


I’m currently working on a little interactive display using OpenGL. More later.

Technorati Tags: , ,

Addendum: A little smoothing of the data makes it look much better. Here’s a different run, with some smoothing…

Accel Data

Addendum2: I figured out how to normalize the data appropriately. Here’s another graph:
Accel Data

2 thoughts on “Goofing around with the Wii Remote”

  1. Very cool. One thing that made me smile is your use of a z-up coordinate system–is up really sensor number 3, or is it due to, huh, the way things are at the place where we work?

Comments are closed.