HEAD TRACKER
PROJECT TIMEFRAME
Fall 2020 - Spring 2022
PROJECT PURPOSE
To create an electromechanical device able to track head movements and correlate them to the motion of a cockpit camera on a flying aircraft.
TECHNIQUES USED
-
Mechanical design
-
UI/UX development
-
PCB schematic & layout
-
Programming in Arduino
SKILLS LEARNED
-
Improved PCB design techniques
-
SMT assembly
-
3-axis AHRS programming
-
Electron app development
Head trackers aren't new - radio controlled aircraft enthusiasts have been using them for years. But most are simple Arduino boards hand-wired to IMU sensors and taped to video goggles. They're difficult to configure and can drift. I wanted a more elegant and higher performance solution, and the best way to do that was to build one myself.
I used Eagle to design a PCB with a microprocessor, IMU sensor, power supply, and connectors. I'm not an electrical engineer, and this PCB design was easily the most densely packed of all I've attempted. Routing all of the signals while getting all the components placed in the right locations was a challenge.
Next I sourced the bare boards from a custom PCB fabrication shop and assembled the components by hand. A solder paste stencil and hot air reflow tool helped, but this was still much easier said than done. My success rate for hand-assembled boards is probably around fifty percent.
Programming was challenging as well, since using IMU sensors to estimate attitude is computationally intensive. I had a hard time fitting a robust attitude estimate system within the memory constraints of the processor I chose. There were three or four rewrites before I achieved the right combination of program size, features, and performance.
With few alternatives available on the market, I anticipated productizing my design at some point. To do so, I needed to create an intuitive UI for configuring and adjusting the head tracker.
I learned how to create applications with the Electron framework, using HTML/CSS and JavaScript to build a functional web-style app. My app connects with the head tracker hardware using a USB cable and a custom serial protocol. Users can easily perform calibrations, configure outputs, and view real-time performance information.
Once everything was up and running, I installed the PCB into an enclosure I'd designed and attached that to the side of some off-the-shelf video goggles. I installed a camera with a pan & tilt mount into the cockpit of a radio controlled jet, and was ready to fly.
The performance of the system is great, and flying real hardware beats VR any day. In the future I'll get cockpit-style flight controls integrated instead of using a traditional hobby transmitter.