Skip to content

Motion Tracking Glove Controller with Haptic Feedback

Accurate tracking of hand motion coupled with haptic feedback allows for an immersive experience for VR users and other applications. This project focused on creating a motion tracking glove with haptic feedback that can integrate itself with open source VR frameworks or serve as a general interface for other purposes.

Meet our group: (Left to right) Sean Gleason, Andy Feng Chen, Martin Trpceski, Marcos Ibáñez Matles

Our final project:

Design flow of our glove:

Printed Circuit Boards

The glove hardware integrates several key components. Inertial measurement units (IMUs) are used to track the position of each finger relative to the wrist, while spring-loaded spools measure finger flexion. Linear resonant actuators provide vibrotactile feedback when the user interacts with virtual objects, and servo motors generate force feedback to simulate resistance during contact with obstacles in a virtual environment. The accompanying software processes sensor data from the glove and interfaces with Unity through OpenGloves to enable real-time interaction.

A circuit was designed in Altium to contain the central routing for data and power to each finger IMU, finger LRA, spool potentiometer, and finger servo motor. A printed circuit board was then designed and soldered by hand.

A circuit was then designed for each finger to route through the IMU on each finger and power to the LRA. The circuit and PCB were designed using KiCAD. Each board was soldered using a stencil and solder paste due to their small size and volume requirements.

Servo Interaction / Force Feedback Explanation

The glove uses two-way communication between the physical hand and the VR environment.

First, the glove reads potentiometer values from each finger. As the user curls a finger, the potentiometer rotates and produces a changing analog value. The ESP32 converts this value into a finger curl amount, usually from open hand to fully closed.

That curl data is then sent over Serial to the computer. The program could read the serial data and use it to animate the virtual hand. For example, when the user bends their fingers, the virtual fingers curl in the same way.

The servo motors are used for force feedback. The computer can also send serial commands back to the ESP32. These commands tell the servos what position to move to. When the user grabs a virtual object, such as a cube, the VR program detects the collision/contact point and sends a servo position command. The servo then tightens or holds the tendon/string mechanism, preventing the finger from curling further.

In practice, this creates a “lock” point. The user can move their finger freely until the virtual finger reaches the surface of the object. At that point, the servo holds the mechanism at that position, making it feel like the user’s finger has physically contacted the cube. When the object is released, the servo relaxes, allowing the finger to move freely again.

Additional Features

IMUs (Inertial Measurement Units)

Each glove is equipped with six BNO086 IMU sensors, one mounted on the back of the hand and one on each finger. These sensors continuously track motion by combining data from a 3-axis accelerometer, gyroscope, and magnetometer. Through onboard sensor fusion, each IMU outputs a real-time absolute 3D orientation (quaternion) of the segment it is attached to.

By comparing the orientation of each finger relative to the hand, the system calculates precise finger curl and splay angles, allowing it to reconstruct the full pose of the user’s hand in virtual space. This approach eliminates the need for external cameras or tracking systems.

All IMUs share a single SPI bus connected to the ESP32-S3 and stream fused orientation data at 100 Hz, providing a low-latency, drift-corrected representation of hand movement. This enables smooth, accurate tracking in VR environments, even during rapid or complex gestures.

LRAs (Linear Resonant Actuators)

To provide realistic touch feedback, each fingertip is equipped with an LRA (Linear Resonant Actuator) haptic motor. These motors are driven by dedicated DRV2605L haptic driver chips, which are accessed through an I²C multiplexer to allow independent control of each finger.

Unlike traditional vibration motors, LRAs operate at a tuned resonant frequency, producing sharp, precise, and highly responsive feedback. This allows the system to generate a wide range of tactile sensations, from quick taps to more complex textures.

When a virtual interaction occurs (such as touching, tapping, or grasping an object), the VR system sends commands back to the glove. The firmware then activates the appropriate actuator, delivering localized feedback to the exact finger involved in the interaction.

This per-finger control creates a more immersive experience, allowing users to feel where and how they are interacting with virtual objects rather than receiving a generalized vibration across the entire hand.

Mechanical Components

The mechanical components for the servo spool system were based on the open-source LucidGloves project. A separate custom finger cap had to be designed to include space for the finger PCB connecting the IMU and LRA for each finger, maintaining a similar structure but adding slots for these components.

Outside of the servo spool systems a custom wrist mount for the PCB was also designed, including an imprint to hold the PCB on the top and a layer below for the perf board including extra connections.

All components were modeled in CAD and printed in PLA. The designs were iterated to improve fit, reduce friction in the cable path, and ensure reliable operation, resulting in a lightweight and modular system integrating with the glove’s electronics.