An inevitable side-effect of using MEMS gyroscopes like the MPU-6050 is that you will experience yaw drift over an extended period of time. This is unavoidable and a limitation of the technology, but it can be minimised. It is important to put the issue into the context of head tracking. If a quad-copter drifts by 2 degrees over a 1-hour period then, depending on how far it has travelled, that might be of serious concern. For the tracking of a players head in a computer game, a drift of a few degrees per hour is not a deal-breaker. No-one's going to die as a result (at least, not in the physical world!). For this reason, the EDTracker firmware includes an auto-centering function that attempts to guess when you're looking straight ahead, and reset yaw accordingly. This works well for games where you spend a fair portion of your time looking ahead.
The MPU-9150 is a revised version of the MPU-6050 and incorporates a magnetometer - a tiny sensor that can measure magnetic fields. With additional code changes, this can be used to counter yaw drift over time. The device can use the magnetic field of the surrounding environment to self-calibrate itself and maintain where "ahead" is. Think of it as a digital compass; you probably have one in your mobile phone. Yaw drift is eliminated, but at a price...
Lag & Latency
MEMS gyroscopes are used for a variety of applications - mobile phones, flight controllers for hobby drones, fitness monitoring devices and so forth. Some applications have different needs - some need high accuracy (flight controllers for example) and are not concerned about fast response to change. For head tracking, we are more interested in getting the head movement responsive - the delay between your physical head movement and the on-screen movement needs to be low in order for the experience to be enjoyable. For head tracking, we want low "lag" or "latency".
The MPU-9150 magnetometer is very "noisy" - by this, we mean the values it provides fluctuate greatly in short periods of time. A process known as filtering needs to be applied to the numbers to reduce the wild fluctuations to something usable. The problem for head tracking is that additional filtering can introduce lag, and lag ruins the gameplay experience if it gets to unacceptable levels. The good news is we've refined the code greatly and the MPU-9150 version of the code is now just as snappy and lag-free as the MPU-6050 version.
That's, err, great... so which one then?
The MPU-6050 is cheap. It provides low latency performance but it requires careful calibration in order to make it useable. With the self-centering function of the EDTracker firmware, it is possible to play for well over an hour without the need to reset the device to centre (our design goal was always to get to 30+ minutes between resets). However the device is susceptible to temperature changes (playing on a hot day versus a cold one, for example) or rapid head movements, and it *will* drift over extended periods of time (1hr or more). The calibration process is critical; skip it or fail to follow it correctly, and the device will perform poorly. Additionally, turning off the auto-centre feature will introduce drift. The new GUI has additional warnings and prompts to help ease the calibration process - which is well documented in the user guide.
The MPU-9150 is more expensive but the hardware removes yaw drift completely. The code for the magnetometer has now been refined and we have the responsiveness of the accelerometer/gyroscope with no drift thanks to the magnetometer. The MPU-9150 boards are harder to get at a sensible price or timeframe - they are not well-stocked in our experience, so you can end up waiting a good 2 to 3 weeks before places have stock. It is also affected by magnetic fields (well, duuh!) so is not suitable for placing right next to the speakers in your headphones - it needs to go on the top of your head really, at least 2 inches away from any magnetic source.
Buy a 9150 board if :
- Additional cost is no problem
- Delays in sourcing the board are not a problem
- You can't be bothered with periodic recalibration (for example, whenever ambient temperature changes significantly)
- You find a button press every 30 to 60 minutes unacceptable
The MPU-9150 is the best option if the minor additional cost does not put you off, but the MPU-6050 still gives great results for the money.