Skip to content

Build your own Drag:on haptic VR controller based on air resistance!

Notifications You must be signed in to change notification settings

AndreZenner/dragon

Repository files navigation

Drag:on

Picture of the Drag:on

An assembly kit to build a Drag:on virtual reality controller with haptic feedback based on air resistance.
Below you will find useful links and general instructions, as well as the necessary files, code, and documents.

Please refer to this repository if you want to re-build Drag:on for private use. Commercial use of Drag:on and its underlying feedback concept is protected by the following patent:

Zenner, A. and Krüger, A. (2021). Hand-Virtual Reality/Augmented Reality-Steuergerät, VirtualReality/Augmented Reality-System mit demselben sowie Verfahren zur Simulation der Haptik.
German Patent 10 2019 105 854. June 05, 2021.
Link: https://register.dpma.de/DPMAregister/pat/PatSchrifteneinsicht?docId=DE102019105854B3&page=1&dpi=300&lang=de&full=true

Paper & Video

The original prototype by André Zenner (DFKI, Germany) and Antonio Krüger (DFKI, Germany) is described in detail in the corresponding research article.
Here you can find the paper and video.

Reference

Please cite the research article using the reference information below:

André Zenner and Antonio Krüger. 2019. 
Drag:on - A Virtual Reality Controller Providing Haptic Feedback Based on Drag and Weight Shift. 
In Proceedings of the 2019 CHI Conference on Human Factors in Computing Systems (CHI ’19). 
Association for Computing Machinery, New York, NY, USA, Paper 211, 1–12. 
DOI: https://doi.org/10.1145/3290605.3300441

BibTeX

If using BibTeX, please use the entry below:

@inproceedings{Zenner:2019:Dragon,
author = {Zenner, Andr\'{e} and Kr\"{u}ger, Antonio},
title = {Drag:on -- A Virtual Reality Controller Providing Haptic Feedback Based on Drag and Weight Shift},
year = {2019},
isbn = {9781450359702},
publisher = {Association for Computing Machinery},
address = {New York, NY, USA},
url = {https://doi.org/10.1145/3290605.3300441},
doi = {10.1145/3290605.3300441},
booktitle = {Proceedings of the 2019 CHI Conference on Human Factors in Computing Systems},
pages = {1–12},
numpages = {12},
keywords = {haptic virtual reality controller, shape-changing devices, air resistance feedback, dynamic passive haptic feedback},
location = {Glasgow, Scotland Uk},
series = {CHI ’19}
}

What You Will Need

Apart from the ability to solder basic components and basic DIY skills, you will need access to:

  • soldering equipment
  • a workbench
  • a 3D printer
  • a laser cutter (optional)

Required Parts

To build a Drag:on, you will need the basic physical parts listed below:

Amount Part Comment
1 7.5V Power Supply Example
> 10m Cable (8 poles, shielded) Example
1 Plug (8 poles) must match socket
1 Socket (8 poles) Example
2 MG996R servo motor with metal gears Example
1 Power supply socket Example
1 1/4 inch screw (camera screw; 12mm x 14mm) Example
1 pack tesa Powerstrips Large Example
1 Arduino Nano Example
1 Button Example
1 Vive Tracker Example
2 Fans (31 cm) Example
3D printed parts see 3d-printer
1 Drag:on PCB (or Breadboard) see circuit
basic electronic parts (resistors, capacitors, etc.) see circuit
(1) box to hold the electronics see laser-cutter

Required Files

Apart from the physical parts, you will need a set of files.
All these files can be found in this Git repository:

  • 3D models (*.stl format) to print in folder 3d-printer
  • laser cutter templates (*.svg format) to cut in folder laser-cutter
  • circuit description (an image) in folder circuit
  • source code for the Arduino Nano (the Drag:on firmware) in folder dragon-arduino
  • source code for Unity (the Drag:on .unitypackage) in folder dragon-unity

Main Steps

Follow the steps below to build a Drag:on.

Preparation

  1. Buy all necessary components (see table above)
  2. 3D print all required parts (see video for part count and 3d-printer for files)
  3. (Laser cut a nice box to hold the electronics - optional - see laser-cutter for files and image below for an example)

Assembly

  1. Assemble the circuit (see image below and circuit)
  2. Assemble the actual device using the parts you bought and the 3D-printed components. Refer to the video and the images on this site to see how it should look at the end. Also, take a look at the explosion animation. If you need close-up pictures of any details or parts, please contact André Zenner ([email protected]).
  3. Deploy the Arduino source code on the Nano (see dragon-arduino)
Drag:on Rendering 1 Drag:on Rendering 2 Drag:on Rendering 3
Drag:on Rendering 1 Drag:on Rendering 2 Drag:on Rendering 3
Drag:on Controller Box Drag:on Circuit Final Drag:on
Picture of the Drag:on box Illustration of the Drag:on circuit Picture of the final assembly

Standalone Test

  1. Connect everything
  2. Test the device itself (standalone mode). For this, start the device by powering it up while holding the button pressed. Now each button press should change the state of the Drag:on and move its two fans.

Picture of the Drag:on states

Unity Integration

  1. If the standalone test was successful, turn to the Unity Package provided in dragon-unity.
    1. Import the package into a new Unity project.
    2. To use the COM port connection to the Drag:on device, you have to switch to .NET 4.x support. For this, go to Edit -> Project Settings -> Player and select as Api Compatibility Level .NET 4.x (instead of .NET Standard 2.0; see screenshots below).
    3. When the initial errors are fixed, have a look at the example scene that integrates the device.
      1. The scene contains a prefab Drag:on that holds a simple 3D model of the device, text indicators to display the current device transformation progress, and most importantly, the Dragon.cs and DragonTest.cs C# scripts.
      2. The Dragon script implements the interface to send commands to the Drag:on device and read out its internal state. Be sure to select the correct COM port in the Unity Editor (see left image below).
      3. The DragonTest script allows to easily trigger the important functions for test purposes via the keyboard. Just hover over "Dragon" to see a tooltip. You can select the desired target fan positions using the sliders Percent A and Percent B and then press 2 on the keyboard to transform Drag:on into this state (see right image below).
      4. Please see the comments in the code for additional information.
  2. To integrate the device into a VR application, use a Vive Tracker and the SteamVR Plugin.
    1. Screw the Vive Tracker to the Tracker Module at the end of the device grip.
    2. Calibrate the tracking in the scene so that the real and virtual Drag:on are aligned.
Initial Errors Select Project Settings Switch API Compaltibility Level
The expected initial errors Select Project Settings Switch API Compaltibility Level
Dragon.cs script DragonTest.cs script
Screenshot of the Dragon.cs script Unity Editor interface Screenshot of the DragonTest.cs script Unity Editor interface

Contact

For any questions contact André Zenner ([email protected]).

Attribution

When you use a Drag:on in your project, please acknowledge the original paper and the resources provided by the authors to build the device in your official documents, published papers, videos, or websites (by citing the paper using the reference above and acknowledging the support).
Please also inform André Zenner ([email protected]) about your project - we love to hear about it and see what you'll use the Drag:on for!

This work was supported by the Deutsches Forschungszentrum für Künstliche Intelligenz GmbH (DFKI; German Research Center for Artificial Intelligence) and Saarland University.

DFKI Logo

Saarland University Logo

About

Build your own Drag:on haptic VR controller based on air resistance!

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages