May 27, 2012

Wiimote Head Tracking

This post is related with my undergraduate research. I am reading about human-computer interaction in a head oriented way. So I have to implement a head tracking system with wiimote. Here I am sharing my experience with 6DOF head tracking system. Try it...And Enjoy.. :)

I utilized available head tracking APIs to implement the head tracking system. Following were some APIs I have identified in literature review.
  • Glove PIE emulator
  • FaceTrackNoIR
  • Wiimote Head Tracker
  • FreeTrack
FreeTrack is a popular head tracking SDK which is distributed under GPL. It has been used in large number of games, simulations and it has a good community support. Hence it is improving day by day and requirement for the implementation has a good documentation. It uses several vision based algorithms for head tracking. You can go through tutorials over there and it is quite easy to implement. 

I investigated vision based tracking and sensor based tracking with FreeTrack. Hope you may also helpful. 

Vision based tracking (Active maker)

In literature review I found that there are significant research studies have been conducted for active marker based tracking. Hence I try to implement a head tracking system with four LED bulbs and for the calibration. I used FreeTrack SDK. In this case I noted that tracking system is fast and enough to emulate mouse function as shown in figure 1.

But this approach has lot of background limitations. See figure 2.

According to figure 2. (a) and (b), several other locations in the environment are detected as the marker points by the camera. This is because several points are illuminated in the image due to lighter background. Hence the position and orientation calculations are incorrect and getting unexpected rotations when it is emulating in the virtual environment. Therefore this system is limited to use in a darker environment.
And this system is heavily affected by the frame rate the camera which is used to stream the images. If the camera has low frame rate (bellow 20 Fps), the head tracking system unable to capture quick head rotations (see figure 2. (c)). 

Sensor based tracking 

Wiimote IR camara has a good frame rate that is approximate to 120-160 Fps. Hence wii mote tracking is really faster than vision based tracking where we used webcam for the tracking system. Wiimote is capable for tracking up to 4 IR LEDs but here I focused on the different implementation setup. Most of the wiimote head tracking systems are motivated by Jhoney Lee’s head tracking approach which wiimote keeps stationary and a dynamic 2 LED sensor bar. It is only capable of 3DOF tracking but here we proposed a novel way to 6DOF head tracking. 
One limitation of these systems is IR lights get invisible when rotating the head therefore wii registered other LED in to the invisible point. Hence the calculation becomes incorrect and user’s looking direction is messed due to wrong emulation. In this research we proposed a model 3LEDs as it is enough to tack head position and orientation simultaneously.               

Figure 3: Hardware assembly for head tracking system
According to figure 3, the hardware set up is easy to use and it is not cumbersome as other head tracking systems. When using this system user need to wear base ball cap and realistically look at here and there in the virtual environment. As LED points are always in front to the wiimote I did not encounter any LED invisibility problem. In this approach has no background limitation as we encountered in vision based tracking system. 

As mentioned earlier, wiimote should be placed in a proper place as IR lights are fitting with wii resolution (1024x768).  

Figure 5: Wiimote placement - bird's view
Here is the virtual environment we have used to test the head tracking system.

Figure 6: Virtual environment for experiment with the head tracking system
Challenges have to be overcome
  • Tracking speed should be smooth with the view point movement in the virtual environment
  • Mouse emulation is not realistic as actual mouse looking. This is because tracking system is unable to provide acceleration when moving head here and there. 

These are several findings I have mentioned. Try it and extend it...I used this work in a virtual world based application area. If you gain any knowledge wrt my work, Please cite my publication at IEEE.