Hi, I'm one of the guys working on that Head Tracker for the Elite: Dangerous game. Co-incidentaly our main thread is entitled "Head TRacker for under £10" and our basic hardware is the same. We expose the device as a 3-axis HID Joystick and use the in-game head-look config to bind the two relevant axis. Code is on github/pocketmoon
We're using the I2Cdevlib arduino port of the invensense libraries so perform a full calibration on the mpu-6050 as described on the I2Cdevlib forum. We found yaw drift was an issue and the button was added to allow the user to look ahead and press it to reset yaw (takes 2 seconds of sampels). We found that this was needed every 5 minutes or so which wasn't ideal! I measure yaw drift and found that it was suprisingly constant. In debug mode the code outputs a yaw drift value which after it's settled (10 minutes or so) can be plugged back into the sketch.
float driftComp = 0.12345;
With careful calibration this virtually eliminates yaw drift for up to 45 minutes/ an hour. And when drift is noticable you just look straight ahead and press the button to reset.
I'm now porting to a more recent mpu-6050 library which exposed more invensense functionality (can't post links but google "nav6 arduino")
Where you see to arduino and sensor mounted together that's using a prototype PCB. We're having some professionalyy made which allows for a much small package - important when taping to you headphones!
Cheers,
Rob