The concept of virtual reality has been around for decades, but its popularity has exploded in the past few years due to cheaper headsets and a wider variety of games and applications. However, there are still some problems that need to be worked out to grant users an even greater sense of immersion. Most VR headsets use a pair of controllers that can be held and give their best guess as to where a player's fingers are positioned, but this is not very accurate. Compounding this problem, commercially-available VR haptic glove products are very expensive for what they offer.
The lack of immersion in virtual reality led Lucas to develop his own system whereby a user's hand or hands can be much better mapped within a VR world. By using a finger to gently tug on a string to stretch it out or release it, the change in tension can be measured and relayed to an application.
A couple of different types of sensors could have been used in this project to measure either tension or distance, but Lucas instead opted to use potentiometers due to their simplicity and low cost.
For each of the five potentiometers, there's a retractable badge reel around the shaft that automatically springs the line back after tension is released. Each hand requires an Arduino Nano, and because it already has the necessary amount of analog pins, no extra circuitry is required.
The goal with this device was making it low cost and easy to produce. With this in mind, the glove itself is made from either a nylon inspection glove or cycling/golf gloves. Each finger has two rings that guide the string in a straight line, along with an end cap that sits at the finger's tip. The potentiometer array sits at the top of the wrist, and each section is made of a spool, tensioner, cover, and holder. All of these parts were 3D printed, so it's easy to make modifications for different sized hands.
In order to get the current level of string tension along each finger, the Arduino Nano first reads in the potentiometer values and places them into an array. These values are adjusted with per-determined calibration constants and then placed into a string for output over USB to the host device.
Lucas, in collaboration with Danwillm, created an open source SDK that handles reading in these values from the USB connection and converting them into hand poses. There are functions within the SDK to perform transformations on each of the finger segments according to an expected string tension value, and then send this information to a VR game. All of this flexibility allows for game developers to easily integrate this device and use it within an application.
Currently LucidVR is on its third iteration, which had major tracking and ergonomic improvements compared to its predecessors. However, there's still work to be done, and Lucas plans on adding some impressive features, including force feedback with the use of haptic servos and reducing the size of the device even further.