# relativty/relativty

**Attribution required: if you use, quote, or summarise this content, you must credit and link back to [awesome-repositories.com](https://awesome-repositories.com/repository/relativty-relativty).**

7,190 stars · 380 forks · C++ · GPL-3.0

## Links

- GitHub: https://github.com/relativty/Relativty
- Homepage: https://www.relativty.com/
- awesome-repositories: https://awesome-repositories.com/repository/relativty-relativty.md

## Topics

`diy` `hardware` `maxim-xyz` `oculus` `virtual-reality` `vr` `vr-headset`

## Description

Relativty is an open-source virtual reality headset kit that can be built for around $200 using DIY hardware and firmware, designed to work with SteamVR. At its core, it provides firmware for a 3-DoF VR headset that handles sensor calibration, orientation tracking, and communication with a PC over USB, along with a custom SteamVR-compatible driver that connects the self-built headset to the SteamVR ecosystem for launching games.

The project distinguishes itself with an experimental full-body tracking module that uses a webcam and a neural network on an NVIDIA GPU to estimate 3D body position, alongside an IMU calibration tool that reduces sensor drift by storing calibration data on the device's EEPROM. It also includes an Arduino firmware loop for reading IMU data, an OpenVR driver bridge for connecting custom hardware to SteamVR, and a JSON configuration file for adjusting hardware parameters like display resolution and lens distortion.

The system supports inertial sensor calibration, headset orientation calibration, and configuration of display and tracking settings to match the physical build. It also provides USB serial communication for transferring sensor data between the headset microcontroller and the host PC.

## Tags

### Hardware & IoT

- [Open Source VR Hardware](https://awesome-repositories.com/f/hardware-iot/open-source-vr-hardware.md) — Provides an open-source VR headset kit with DIY hardware and firmware that works with SteamVR.
- [VR Headset Assembly](https://awesome-repositories.com/f/hardware-iot/vr-headset-assembly.md) — Provides open-source hardware designs, firmware, and software to construct a 3-DoF VR headset that works with SteamVR.
- [VR Driver Bridges](https://awesome-repositories.com/f/hardware-iot/custom-hardware-drivers/vr-driver-bridges.md) — Implements the OpenVR driver interface to connect custom headset hardware to SteamVR for pose and display data.
- [Spatial Orientation Tracking](https://awesome-repositories.com/f/hardware-iot/inertial-measurement-unit-interfaces/spatial-orientation-tracking.md) — Uses a 6-axis IMU with sensor fusion to compute 3-DoF head rotation in real time for VR orientation tracking.
- [USB Serial Interfaces](https://awesome-repositories.com/f/hardware-iot/integration-performance/hardware-interfacing-integration/hardware-interfacing/serial-communication-interfaces/usb-serial-interfaces.md) — Transfers sensor data and commands between the headset microcontroller and host PC over a virtual serial port.
- [IMU Firmware Loops](https://awesome-repositories.com/f/hardware-iot/microcontroller-firmware-frameworks/imu-firmware-loops.md) — Ships an Arduino firmware loop that reads IMU data and communicates over USB serial to the host driver.
- [SteamVR Integrations](https://awesome-repositories.com/f/hardware-iot/steamvr-integrations.md) — Implements a custom SteamVR driver that connects a self-built headset to the SteamVR ecosystem.
- [VR](https://awesome-repositories.com/f/hardware-iot/embedded-display-drivers/driver-configuration-tools/vr.md) — Edits a JSON settings file to set USB device identifiers, display coordinates, resolution, and lens distortion for a custom SteamVR driver. ([source](https://github.com/relativty/relativty))
- [Headset Orientation Calibrations](https://awesome-repositories.com/f/hardware-iot/embedded-robotics/sensor-processing/analog-sensor-calibration/sensor-calibration-routines/relative-orientation-calibrations/headset-orientation-calibrations.md) — Automatically calibrates the headset's orientation when placed on a flat surface after power-on. ([source](https://cdn.jsdelivr.net/gh/relativty/relativty@master/README.md))
- [Driver Configuration Files](https://awesome-repositories.com/f/hardware-iot/steamvr-integrations/driver-configuration-files.md) — Edits a JSON settings file to set USB identifiers, display coordinates, resolution, and lens distortion for a custom VR headset driver.

### Part of an Awesome List

- [VR Headset Firmware](https://awesome-repositories.com/f/awesome-lists/devtools/diy-hardware-and-firmware/vr-headset-firmware.md) — Provides firmware for a 3-DoF VR headset that handles sensor calibration, orientation tracking, and communication with a PC over USB.
- [Sensor Calibration](https://awesome-repositories.com/f/awesome-lists/devtools/sensor-calibration.md) — Runs a calibration sequence on the IMU to reduce sensor drift and stores calibration data on the device's EEPROM.
- [IMU Calibrators](https://awesome-repositories.com/f/awesome-lists/devtools/sensor-calibration/imu-calibrators.md) — Ships a dedicated IMU calibration tool that reduces sensor drift and persists calibration data on the headset's EEPROM.
- [Webcam Body Tracking Modules](https://awesome-repositories.com/f/awesome-lists/ai/full-body-capture/webcam-body-tracking-modules.md) — Uses a webcam and a neural network on an NVIDIA GPU to estimate 3D body position for experimental VR full-body tracking.

### Game Development

- [IMU Calibration Persistence](https://awesome-repositories.com/f/game-development/simulation-engines/simulation-worlds/coordinate-offsetting/eeprom-coordinate-persistence/imu-calibration-persistence.md) — Persists IMU calibration offsets and sensor biases on the device's EEPROM to reduce drift across power cycles.

### Artificial Intelligence & ML

- [Pose Estimation Networks](https://awesome-repositories.com/f/artificial-intelligence-ml/convolutional-neural-network-architectures/pose-estimation-networks.md) — Employs a pre-trained convolutional neural network on an NVIDIA GPU to estimate 3D body pose from a single webcam feed.

### Business & Productivity Software

- [AI Body Position Trackers](https://awesome-repositories.com/f/business-productivity-software/job-position-tracking/ai-body-position-trackers.md) — Ships an experimental module that uses a webcam and neural network on an NVIDIA GPU for 3D body position tracking. ([source](https://cdn.jsdelivr.net/gh/relativty/relativty@master/README.md))

### Graphics & Multimedia

- [VR Display Parameter Configurators](https://awesome-repositories.com/f/graphics-multimedia/display-configuration-managers/vr-display-parameter-configurators.md) — Adjusts display coordinates, resolution, lens distortion, and IPD in a settings file to match the physical headset build. ([source](https://cdn.jsdelivr.net/gh/relativty/relativty@master/README.md))
- [Webcam Pose Tracking Interfaces](https://awesome-repositories.com/f/graphics-multimedia/webcam-pose-tracking-interfaces.md) — Uses a webcam and neural network on an NVIDIA GPU to estimate 3D body position for experimental full-body tracking.
- [Neural Network Pose Estimators](https://awesome-repositories.com/f/graphics-multimedia/webcam-pose-tracking-interfaces/neural-network-pose-estimators.md) — Uses a pre-trained CNN on an NVIDIA GPU to estimate 3D body position from a single webcam feed for VR tracking. ([source](https://github.com/relativty/relativty))

### Web Development

- [JSON Configuration Files](https://awesome-repositories.com/f/web-development/single-page-applications/single-file-distributions/json-configuration-files.md) — Stores hardware parameters like display resolution, lens distortion, and USB identifiers in a human-editable JSON file.
