We have some HTC Vive VR systems at the Department of Design at the Aachen University of Applied Science. This system is a game changer for consumer grade Virtual Reality applications. I have to admit that I am awed by the engineering feat that Alan Yates and Valve have pulled off with the HTC Vive. I was not aware of the details when I first used the system.

Here is a schematic animation that illustrates the principle:

The whole idea circles around the translation of time to angles by measuring the duration between two IR signals (first one by an IR flash and one by rotating lasers that sweep the room afterwards). You can see the system that sends the IR signals in slow motion here:

The whole thing won’t work without the time measure being extremely precise and the rotation extremely constant. We are talking about measuring 120 times per second how much time elapses when something moves a millimeter at over 1.900 m/s — that is 6.840 km/h! And the 60 rotations per second spinning mirror heads are corrected to stay within 100 nanometers per turn (a human hair is about 18.000-80.000 nanometers!).

This is ridiculous per se — but completely insane to do this with consumer grade hardware for a couple of hundred dollars. Yates and his team had to invent own ways to produce the parts at the required specifications. They also had to create software that compensates physical effects, material inconsistencies and drift correction during operation.

Because the time measuring is done locally at the sensors that receive the light pulses and that are attached to the tracked objects, the system practically can simultaneously track any number of objects. The whole approach is a breakthrough in »positional tracking« and is not limited to VR applications. And there is still headspace left to develop it further to achieve better precision and wider ranges.

For the tech savvy here is a talk by Alan Yates discussing the obstacles they had to overcome: https://www.youtube.com/watch?v=75ZytcYANTA

Print Friendly, PDF & Email
%d bloggers like this: