Developing a Custom Eye-Tracking HMD
I built a custom virtual reality headset to further my understanding of VR technology. It supported 3-dof movement using an IMU and had integrated IR cameras for eye tracking.
Custom 3D-Printed VR HMD
I decided it would be fun to build a custom virtual reality headset. I based the design on the Socket HMD reference from USC’s MxR Lab. The headset uses an imported a Chinese LCD and and IMU. The tracking tech layer interfaces with Unity.
Duct Tape Prototype
Look at all of that tape! That’s how you know it’s good.
Side-mounted IR cameras + lights capture the user’s eye movement at 120hz.
It actually looked pretty nice before all the tape.
Inspired by Palmer Luckey’s work, I decided to develop a Socket HMD implementation of my own.
With only minor tweaks, I printed the enclosure in PLA using a Replicator 2. Then, I mounted the lenses and attached the IMU and LCD. Finally, attached the ski goggle frame.
Once the hardware was in place, I read the tracking data using an Arduino and piped it into Unity.
In Unity, I recycled a lens distortion shader and wrote a simple test app. It worked!
Finally, I attached the IR cameras and lights inside the HMD and started reading frames using openFrameworks. While I got basic glint tracking working, I never got it to perfectly line up with the position in the HMD.
I had a lot of fun playing with this project and it taught me quite a bit about VR. Mostly, I gained even more respect for the folks building cutting edge VR hardware. It isn’t easy!
Keywords: Virtual Reality, Hardware, Arduino, Unity, IMU, Eye Tracking, openFrameworks, C++