Building The Triton Project Pt. 1 (A 3D Printed AR Headset)

Graham Atlee
7 min readFeb 25, 2020

--

Hello, everyone. My name is Graham Atlee and for the past 3 years, I’ve been working extensively on augmented reality projects. No, I don’t work on mobile AR, instead, I work on the full-blown HMD AR interfaces that belong in sci-fi movies. This can be evidenced by my work on the Project North Headset as seen here and here. I’ve been conceptualizing AR interfaces for a long time and continue to do so to this day.

I love the open-source initiative taken by Leap Motion to release the North Star specification. Having self-built 2 North Star headsets I can say it has been such a rewarding learning experience. Building a headset from the ground up gives you a ton of novel insight into how the software, hardware, and optics fuse together to deliver an AR experience.

With that said, having independently worked on the North Star Project for nearly a year, I decided its time to work on something new. I decided that I’m going to build my own AR headset under the name of the Triton Project. The mission of the Triton Project is to continue to propel an open ecosystem for augmented reality.

Prototype 1— Gokyo

My initial prototype started under the name Gokyo. If you don’t know, Gokyo Ri is the name of a relatively low summit in the Himalayas. The summit of Gokyo provides beautiful panoramic views of the Himalayan mountain range. That little tidbit provided the foundational concept of my headset. For relatively cheap off the shelf hardware, I could build an AR headset that would deliver panoramic (wide FoV) views of augmented reality.

So here was the first outcome of that concept. I purchased an AR viewing headset from Aliexpress because the reflectors looked relatively nice (optics are hard to design independently ). In addition, I also ordered a 6 inch 2k display panel. That blue PCB on top there is the driver board for the display. To get everything attached to the frame I cut out some thick prototype paper to create a makeshift mount for the display driver. I then had 2 sensors I wanted to attach, the Leap Motion, and the Intel Realsense D435i. In a simple fashion, I used velcro to do that. Next was to “power it on”.

Obviously, I didn’t have any software for the Gokyo yet so I just fired up Leap Motion’s North Star SDK. With some slight tweaking, I was able to get it calibrated to a decent point. Once I put on the headset and took a look through the reflectors I was pretty blown away. The 2k resolution of the display made graphics look ultra-real and crisp. I was even more impressed by the field of view these reflectors were able to provide. To give a rough approximation they were around the same size as the North Star.

I apologize in advance for the quality of this video/gif. I took this video using only my iPhone and then (heavily) compressed it into a gif to share with you all. So yeah this is what it looked like through the reflectors with the Leap Motion tracking my hands. The only thing I did not like about the reflectors was the focal length as I felt it may be too short of a distance. I’m sure in the near future I can adjust for this through software.

Prototype 1.2

As you can see the display driver on top is mounted with thick paper. If you look closer its taped on to the case with electrical tape. This was not a very stable solution as the cables caused tugging and were bound to rip off the paper mounts. I started looking into other materials such as wood and thicker paper. It wasn’t until my neighbor recommended I should jump into 3d printing. Now, this was incredibly intimidating as I didn’t know a ton about 3d printing but my intuition knew it was the next level of prototyping. The North Star headset was created through 3d printed parts and so it was logical that The Triton headset should be as well. It was time to purchase a 3d printer.

After a week and a half of researching, I settled on the Creality CR-10 V2. While that was being shipped, next up was to learn some CAD software. My friend highly recommended Fusion360 and I taught myself by following Youtube tutorials. My printer arrived, got it assembled, and began traversing the learning curve of 3d printing.

My objective was to replace the paper mounts with 3d printed parts. So I did just that and here was the result.

Back in my college dorm room

As you can see I was able to model the parts from the paper prototypes I did. I then screwed the mount into the plastic casing of the headset. I used eSun’s Pla Plus which made for a very sturdy build. Now that I had a sturdy mount for the driver I felt more comfortable keeping the headset on which enabled me to write some software.

Software Beginnings

For the time being, I’ve decided to stray away from Unity 3D and the safety of C#’s .NET framework. As much as I love Unity I also felt it was somewhat of a limiting factor for the North Star Project. For anyone who has worked on North Star, you know that the Leap Rig was often awkward and clunky.

As I decided to look for other sources of inspiration, at the time the North Star community created a SteamVR launcher for the North Star. I was more impressed with the launcher aspect of the project.

As you can see it’s a relatively simple UI that completely throws out the need for the Unity rig setup. You just click a few boxes for what you want and launch SteamVR directly onto the headset. So that’s the direction I wanted to use for the Triton. I decided I would build a launcher that will abstract away all the messy details.

Rather than deal with Window’s code to build a visual UI, I opted to use Electron.js. If you don’t know Electron is an open-source framework that allows you to build cross-platform desktop apps using Javascript, HTML, and CSS. It's very easy to get up and running and I so happen to be fairly good at Javascript. JS is a great choice because there have been a bunch of open-source frameworks created by the WebXR community. This made it super easy to get a cool looking stereo 3d rendering into my headset.

The UI aspect looks pretty cruddy right now but some CSS magic will fix that in the future. Here is some more through the lens footage to show you what the green-tiled sphere looks like in mid-air.

Once again I apologize for the image quality. Next up to do is get the Leap Motion JS framework up and running for some hand-tracking. Following that is to get the Intel Realsense plugged in so I can start (hopefully) doing 6DoF Slam tracking. Now at this moment, I’m not 100% sure if I’ll be sticking with the Electron JS setup to pioneer the software side of things. But I think it is a good choice as the WebXR community could use a new open-source device to work with. More thought on that down the line…

Pt. 1 Conclusion

There will be a part 2 to all of this. At the time of me writing this, I am more than halfway done with a new 3d printed prototype that is more advanced then what I’ve shown so far.

I want to focus on getting work done and then I can update you on progress being made. If you’re interested in more short term updates you can follow me on Twitter or by joining the discussion on Dischord.

Thanks for reading.

--

--