All Projects → relativty → Relativty

relativty / Relativty

Licence: gpl-3.0
An open source VR headset with SteamVR supports for $200

Programming Languages

C++
36643 projects - #6 most used programming language
c
50402 projects - #5 most used programming language
assembly
5116 projects
Makefile
30231 projects
CSS
56736 projects
GDB
78 projects

Projects that are alternatives of or similar to Relativty

lucidgloves
Arduino/ESP32 based DIY VR Haptic gloves. Compatible with SteamVR via OpenGloves.
Stars: ✭ 1,149 (-79.27%)
Mutual labels:  hardware, vr, diy
Remixvr
RemixVR is a tool for collaboratively building customisable VR experiences.
Stars: ✭ 129 (-97.67%)
Mutual labels:  oculus, vr, virtual-reality
Hover Ui Kit
Create beautiful user interfaces for immersive VR/AR experiences.
Stars: ✭ 662 (-88.06%)
Mutual labels:  oculus, vr, virtual-reality
MoonMotion
Moon Motion Toolkit - Free and open source toolkit for VR locomotion
Stars: ✭ 38 (-99.31%)
Mutual labels:  vr, oculus, virtual-reality
daydream-node
Quick Node.js module to connect to the Daydream controller and receive all the data
Stars: ✭ 17 (-99.69%)
Mutual labels:  hardware, vr, virtual-reality
Aframe
🅰️ web framework for building virtual reality experiences.
Stars: ✭ 13,428 (+142.21%)
Mutual labels:  oculus, vr, virtual-reality
Viro
ViroReact: AR and VR using React Native
Stars: ✭ 1,735 (-68.7%)
Mutual labels:  oculus, vr, virtual-reality
Viveinpututility Unity
A toolkit that helps developing/prototyping VR apps.
Stars: ✭ 256 (-95.38%)
Mutual labels:  oculus, vr, virtual-reality
AnotherBadBeatSaberClone
This is a discontinued but perhaps helpful VR project created during my Master's degree at FH Wedel.
Stars: ✭ 22 (-99.6%)
Mutual labels:  vr, oculus, virtual-reality
HadesVR
The "DIY" SteamVR compatible VR setup made for tinkerers.
Stars: ✭ 88 (-98.41%)
Mutual labels:  vr, virtual-reality, diy
janusweb
An in-browser implementation of JanusVR
Stars: ✭ 145 (-97.38%)
Mutual labels:  vr, oculus, virtual-reality
Ideaspace
😎 Create interactive 3D and VR web experiences for desktop, mobile & VR devices
Stars: ✭ 344 (-93.8%)
Mutual labels:  oculus, vr, virtual-reality
Uxofvr.com
A list of resources about the UI/UX considerations for VR.
Stars: ✭ 527 (-90.49%)
Mutual labels:  vr, virtual-reality
PhoneVR
Use Steam VR-enabled applications with your phone as HMD (Head-mounted display). The only Open-Source solution to similar commercial packages like VRidge, iVRy, Trinus etc etc.
Stars: ✭ 178 (-96.79%)
Mutual labels:  vr, virtual-reality
Aframe Inspector
🔍 Visual inspector tool for A-Frame. Hit *<ctrl> + <alt> + i* on any A-Frame scene.
Stars: ✭ 469 (-91.54%)
Mutual labels:  vr, virtual-reality
spark-ar-creators
List of 9500 (and counting) Spark AR Creators. Open an issue or contact me if you want to be added.❤️
Stars: ✭ 122 (-97.8%)
Mutual labels:  vr, virtual-reality
WebVRExamples
yonet.github.io/webvrexamples/examples/cubes.html
Stars: ✭ 19 (-99.66%)
Mutual labels:  vr, virtual-reality
Awesome Weekly Robotics
A list of projects that were or will be featured in Weekly Robotics newsletter
Stars: ✭ 255 (-95.4%)
Mutual labels:  hardware, diy
Openxr Sdk
Generated headers and sources for OpenXR loader.
Stars: ✭ 256 (-95.38%)
Mutual labels:  vr, virtual-reality
GVRSCNRenderer
SceneKit Rendering and ARKit 6DOF Tracking for Google Cardboard
Stars: ✭ 19 (-99.66%)
Mutual labels:  vr, virtual-reality

Relativty

Open-source VR headset with SteamVR support.

WebsiteDiscord

I’m Maxim xyz and when my best friend Gabriel Combe and I were 15 years old we built our own VR headset because we couldn't afford to buy one.

5 years later : this headset became Relativty.

  • Fully Open-source - hardware, software, firmware.
  • Steam VR support.
  • Natively displays 2K resolution at 120FPS.
  • Compatible with Arduino.
  • Experimental Body-Tracking

This repo serves as a Build guide, to learn more about the headset see you at Relativty.com

Made for Hackers

Relativty is not a consumer product. We made Relativty in my bedroom with a soldering iron and a 3D printer and we expect you to do the same: build it yourself.

To learn more about the features of the Firmware, Software and Hardware visit the website. We also have a friendly Discord server, a place for our community to learn, share their knowledge, and ask for help. All the links are at relativty.com.

Start Building Relativty

Building The Hardware

The hardware is based on the Relativty Motherboard which includes an Atmel SAM3X8E ARM Cortex-M3 processor and uses an MPU-6050 as it’s IMU. Alternatively, any processor that supports the ArduinoCore and is connected to an MPU-6050/MPU-9250 can be used as the hardware for Relativty. Both methods are explained below.

Building The Relativty Motherboard

PCB Manufacturing.

We first start with the naked PCB.

it can be manufactured and bought for around $4 on websites like jlcpcb.

You’ll need to provide the Gerber file folder Relativty_Electronics_build/GerberFiles.zip which describes the shape of the board.

Assembling

Soldering the components onto the naked PCB.

You’ll have to buy the components listed in one of the two BOMs, depending on availability:

  • Relativty_Electronics_build/Assembly/jlcpcb.com_motherboard_BOM.csv
  • Relativty_Electronics_build/Assembly/motherboard_BOM.xlsx

Where to position those components on the PCB is described in the file Relativty_Electronics_source/motherboard.brd which can be opened in Eagle.

Using an Arduino

An alternative to the Relativty Motherboard is to use an Arduino Due and to connect it to an MPU-6050.

5V      -> VCC  
GND     -> GND  
SDA(20) -> SDA  
SCL(21) -> SCL  
PIN 2   -> INT  

If you are using an MPU-9250 with the alternative firmware provided the pinout is:

5V      -> VCC  
GND     -> GND  
SDA(20) -> SDA  
SCL(21) -> SCL   

Then push the ERASE and the RESET button on the Arduino Due and you’ll be able to install the Relativty Firmware.

Installing The Relativty Firmware

You’ll now need to install the Relativty board in the Arduino IDE.

To do that copy that JSON URL: https://raw.githubusercontent.com/relativty/Relativty/master/Relativty_Firmware/package_Relativty_board_index.json and open the Arduino IDE

In Arduino, Click File and then Preferences:

  • If you are using the Relativty PCB, aad the JSON URL to the Additional Boards Manager text box.
  • Go to Tools > Board > Board Manager and you should see the Relativty Board, click install.
  • Reboot the Arduino IDE and under Tools > Boards, select Relativty.
  • You can now open Relativty_Firmware/firmware/firmware.ino and upload it to your board.

If you are using a different board e.g. Arduino Due:

  • install contents of Relativty_Firmware\Relativty_board\ to your Arduino IDE
  • if you are using MPU-6050, use Relativty_Firmware/firmware/firmware.ino
  • if you are using MPU-9250, use Relativty_Firmware\MP9250-HID\MP9250-HID\MP9250-HID.ino

Building The Mechanical Parts

Assembling the HMD

All the files needed for the 3D printing can be found in the Relativty_Mechanical_build folder and the screws needed to assemble the Headset are listed in screws_BOM.xlsx.

We've used parts from Aliexpress:

The screen for the HMD

Relativty Headset runs a dual-screen at 120FPS 2K, however, because of the open nature of Relativty you can equip it with any screen.

Our model can be found on Aliexpress, but depending on the vendor similar screens can cost from $150 to $190. You'll have to hunt and maybe wait for the right vendor at the right price to get the display for cheap (or buy in bulk).

This is the model we used.

Setting Up the Software

Installing Relativty Driver for SteamVR

The Relativty Driver is contained within Relativty_Driver/Relativty folder.

⚠️ You’ll need to set it up by editing the JSON file Relativty_Driver/Relativty/resources/settings/default.vrsettings

If you are not using a Relativty PCB, you will need to change these:

  "hmdPid" : 9,
  "hmdVid": 4617,

These are the USB HID device's unique Vendor and Producit Identifieres (pid/vid)

If you are using and Arduino Due, the correct values will be:

  "hmdPid" : 62,
  "hmdVid" : 9025,

In case you are using a different board, the process to get the right values is as below:

  1. Plug your board in

  2. Select your board in Arduino IDE and click Tools/Get Board info. you will see something like this:

	BN: Arduino Due (Native USB Port)
	VID: 2341
	PID: 003e
	SN: HIDHB
  1. Make note of the VID and PID numbers. These are hexadecimal values.

    To apply them to the config, they need to be converted to int.

    If you are unsure how to do that, there is plenty online converters available.

    Such as: https://www.rapidtables.com/convert/number/hex-to-decimal.html

  2. Change your hmdPid and hmdVid values to the converted values.

Next, you need to set up the display coordinates and resolution.

At first, you should have the HMD's display set up as a secondary screen extending your desktop,

aligned onto the top right corner of your primary display.

In the config file's "Relativty_extendedDisplay" segment, find and set these:

      "windowX" : *whatever your primary screen resolution's width is*,
      "windowY" : 0,
      "windowWidth" : *HMD's native resolution width*,
      "windowHeight" : *HMD's native resolution height*,
      "renderWidth" : *HMD's native resolution width*,
      "renderHeight" : *HMD's native resolution height*,
	  
	  And at the bottom of this segment:
	  
      "IsDisplayRealDisplay" : true,
      "IsDisplayOnDesktop" : true

Make sure not to delete any "," symbols as that will break the config.

Only the last item in the config should not have a "," symbol.

If for whatever reason the above settings do not work out for you try:

Set your HMD display as a mirrored display of your primary display.

Change config as follows:

      "windowX" : 0,
      "windowY" : 0,
      "windowWidth" : *HMD's native resolution width*,
      "windowHeight" : *HMD's native resolution height*,
      "renderWidth" : *HMD's native resolution width*,
      "renderHeight" : *HMD's native resolution height*,
	
      "IsDisplayRealDisplay" : false,
      "IsDisplayOnDesktop" : true
	

⚠️ Please note that this may result in keyboard/mouse input not being captured by the VR window, should your game require it, it might become unplayable.

You can also make IPD (Interpupillary Disance) adjustments within the configuration file:

In the "Relativty_hmd" segment find and adjust:

      "IPDmeters" : 0.063,

You can also change the lens distortion correction by changing these:

      "DistortionK1" : 0.4,
      "DistortionK2" : 0.5,

You can now install Relativty Driver:

  • Locate your vrpathreg.exe program, usually located at C:/Steam/steamapps/common/SteamVR/bin/win64/vrpathreg.exe
  • Then open the Windows Command Prompt and run the following commands: cd C:/Steam/steamapps/common/SteamVR/bin/win64 vrpathreg.exe

And then assuming your Relativty_Driver/Relativty driver folder is located at: C:/code/Relativty_Driver/Relativty

  • run vrpathreg adddriver C:/code/Relativty_Driver/Relativty

Relativty Driver is now installed. You can uninstall it any time by running:

  • vrpathreg removedriver C:/code/Relativty_Driver/Relativty

Setting up the Experimental 3D Tracking

The tracking is still very experimental and can only be run on NVIDIA GPU due to the usage of CUDA. The tracking makes uses of only a video input and an Artificial Neural Network AI trained to estimate a 3D body position.

This method is nothing close to the precision or freedom of movements of a dedicated sensor however we believe that the model can be trained and improved by orders of magnitude.

You first need to connect a webcam to your computer and install Python 3.8.4 and select the option to add it to the path. Then install PyTorch, you can do so by running the following commands:

python -m pip install torch===1.6.0 torchvision===0.7.0 -f https://download.pytorch.org/whl/torch_stable.html

Then proceed to install CUDA Toolkit 11.0.

You’ll then need to download the Folder PYTHONPATH at https://github.com/relativty/Relativty/releases and add its location to PyPath in the JSON Relativty_Driver/Relativty/resources/settings/default.vrsettings

Set tracking to 1. The tracking is now turned on and can be turned off anytime by setting tracking to 0. The tracking can also be calibrated depending on your camera, this can be done by tweeking scalesCoordinateMeter and offsetCoordinate. scalesCoordinateMeter correspond to the delta of coordinates in a given axis calculated by the AI after normalization when you move 1 meter in that given axis.

Note: If you plan on using mpu9250 firmware do not forget to switch to it in the driver by setting hmdIMUdmpPackets to false: "hmdIMUdmpPackets": false,

Final Steps

Everything is now set up to start playing.

To start using Relativty:

  • Lay the headset on a flat surface with the front panel facing the ground
  • Plug in the Headset. It’ll automatically calibrate after a few seconds.

You can now run any SteamVR game!

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].