ras-marques / ImmersiveGloves

MIT License
23 stars 0 forks source link

ImmersiveGloves

I want to share how I am making vr gloves using 2 Tundra Trackers, 2 interface boards and 12 inertial sensors.

https://github.com/ras-marques/ImmersiveGloves/assets/6479742/4af1af61-4261-44ce-aa3d-e45de0df7709

Check the full presentation on youtube https://www.youtube.com/watch?v=5OSYiYDkOE8

Hand tracking works with curl and splay on all fingers with 1 IMU on each finger. There is a joystick that is enabled by touching the thumb to the index finger and B, A and System buttons are available by touching the thumb to the middle, ring and pinky fingers respectively.

Overall repository state

Instructions are incomplete. The files for the main board and IMU boards are updated. There is only code for the right glove. 3D printing files need tweaking.

Necessary equipment and skills

The hardest part in this project is making the boards. I am currently not supplying boards, so you will need to order them from somewhere.

The boards are 4 layer and have fine pitch components. Making the PCBs at home is out of the question, but you can order them from JLCPCB, PCBWAY, etc.

I assembled the components on my glove by hand using a stencil to dispense solder paste and used a hot air gun for reflowing. A hot plate is better.

If you don't have a 3d printer, you could order the models from somewhere or ask a friend.

Currently everything is glued to the glove fabric, you could use hot glue or super glue.

The pre-crimped JST wires are necessary to make the assembly process easier, more below.

Cost analysis

A realistic ballpark for cost is around 250€ per pair of gloves with component and shipping cost and assuming you already have all the tools like a 3d printer, and soldering tools.

You can refer to https://github.com/ras-marques/ImmersiveGloves/blob/main/CustomPCBs/cost_analysis.ods for the complete BOM, but in summary the current cost is described below:

Tracking method

Why base these gloves around the Tundra Tracker? Using a Tundra Tracker and an expansion board avoids having to deal with batteries, since the Tundra Tracker can power everything. Also, the tracker takes care of transmiting the data from the gloves to the computer wirelessly. Two RP2040's take care of acquiring the data from the 6 inertial sensors, processing it and delivering it to the tracker.

This project is for people that already have a laser tracked VR setup with base stations and ideally for people using Tundra Trackers for full body tracking. That said, if you don't have the Tundra Trackers yet, there are some options:

On top of this, if you don't have base stations, those go for 159€ from valve and it is better to have 2.

End goal for these gloves

Steps to make the gloves:

3D Print the mount points for the tracker

Prepare the Tundra Tracker

Flash the RP2040 board (files not yet available!)

Drivers

Important resources that made this project possible

Tundra Labs have a repo with some documentation on how to use their development board https://github.com/tundra-labs/rp2040_examples

CircuitPython allowed me to easily get the inertial sensors working without me having to program everything from scratch, you can learn more about this here https://learn.adafruit.com/adafruit-9-dof-orientation-imu-fusion-breakout-bno085/python-circuitpython

Finally Functional's Open VR Driver Tutorial that was a great introduction on how OpenVR inputs work https://www.youtube.com/watch?v=LzEIOBnbC8k

OpenVR repository has lots of documentation, it takes a while to figure out the parts that are important for this project, but it's worth the effort https://github.com/ValveSoftware/openvr

danwillm helped me get this thing started by pointing me in the right direction, telling me what technologies to use to speak with the tracker and openvr.

Contributing workflow

Here’s how I suggest you go about proposing a change to this project:

  1. Fork this project to your account.
  2. Create a branch for the change you intend to make.
  3. Make your changes to your fork.
  4. Send a pull request from your fork’s branch to our main branch.

Using the web-based interface to make changes is fine too, and will help you by automatically forking the project and prompting to send a pull request too.