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
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.
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
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}
}
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)
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 |
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 folder3d-printer
- laser cutter templates (
*.svg
format) to cut in folderlaser-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 folderdragon-unity
Follow the steps below to build a Drag:on.
- Buy all necessary components (see table above)
- 3D print all required parts (see video for part count and
3d-printer
for files) - (Laser cut a nice box to hold the electronics - optional - see
laser-cutter
for files and image below for an example)
- Assemble the circuit (see image below and
circuit
) - 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]).
- 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 Controller Box | Drag:on Circuit | Final Drag:on |
---|---|---|
- Connect everything
- 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.
- If the standalone test was successful, turn to the Unity Package provided in
dragon-unity
.- Import the package into a new Unity project.
- To use the COM port connection to the Drag:on device, you have to switch to
.NET 4.x
support. For this, go toEdit -> Project Settings -> Player
and select asApi Compatibility Level
.NET 4.x
(instead of.NET Standard 2.0
; see screenshots below). - When the initial errors are fixed, have a look at the example scene that integrates the device.
- 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, theDragon.cs
andDragonTest.cs
C# scripts. - 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). - 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 slidersPercent A
andPercent B
and then press2
on the keyboard to transform Drag:on into this state (see right image below). - Please see the comments in the code for additional information.
- The scene contains a prefab
- To integrate the device into a VR application, use a Vive Tracker and the SteamVR Plugin.
- Screw the Vive Tracker to the Tracker Module at the end of the device grip.
- 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 |
---|---|---|
Dragon.cs script |
DragonTest.cs script |
---|---|
For any questions contact André Zenner ([email protected]).
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.