Positional Tracking, MoCap, HeadTracking

Anforderung: 
Kopfbewegung, links/rechts, oben/unten nahezu 360Grad, mehr als nur 180Grad!
Oberkörperbewegung, Beugen vor/rückwarts, seitwärts li/re
insideout or outsidein ?

Wie PSVR/Move, mit leuchtenden farbigen Kugeln arbeiten.. und zwei optische Kameras, eine Vorn und eine zweite Kamera von der Seite… 
Wieviele Leuchtmarker benötigt man?
Sind damit die Anforderungen bzgl. Bewegungserkennungen erfüllt?
Über welches Protokoll gibt man die Daten weiter an Simulation?
OpenCV with Python,  endless mouse move.. sollte reichen
Schwierigste ist sicher das Berechnen der Punkte im Raum.. oder man nutzt Kalibirierung und Zwischenbildberechnung

Valve Lighthouse:
Beste Lösung, dauert aber noch Monate, Jahre bis dies günstig zu haben ist, und zudem auch derart universell modular, dass man eigene Gegenstände mit Photosensoren bestücken, an ein Breakout verbinden und berechnen lassen kann.
http://vrjump.de/de/lighthouse-erklaert

Analysis of Valve’s ‘Lighthouse’ Tracking System Reveals Accuracy


Lighthouse tracking examined

http://optitrack.com/
http://optitrack.com/hardware/

https://www.xsens.com/products/

https://www.naturalpoint.com/trackir/

http://www.qualisys.com/applications/engineering/virtual-reality/

Intel RealSense (SDK, Javascript Lib)
https://en.wikipedia.org/wiki/Intel_RealSense
http://www.tomsguide.com/us/intel-realsense-guide,news-20286.html
https://www.youtube.com/user/IntelRealSense

http://www.delanengineering.com/shop/

funny try http://www.headtrackr.de/    smartphones gyro, imu, compass

http://www.free-track.net/   infrared
https://en.wikipedia.org/wiki/FreeTrack

 

https://www.zeiss.com/content/dam/cinemizer/downloads/pdf/eng/Headtracker_product_description_May_2013_English.pdf    IMU from ZEISS
https://www.jacob.de/Monitore/Zubeh%C3%B6r/Zeiss-Cinemizer-Head-2033-902-artnr-1715249.html

2D HMD Versuch 2017-02

Carson OD-14 Clip & Flip 2x (+4.00 Dioptrien) Vorsatzlupe für alle Brillentypen
https://www.amazon.de/Carson-OD-14-Dioptrien-Vorsatzlupe-Brillentypen/dp/B004HW6CBS/ref=pd_lpo_364_tr_t_3?_encoding=UTF8&psc=1&refRID=VWRG9D8XKF4Q7NR5YARS

Arbeitsschutzbrille als Halterung für die Lupenbrille ( man kann die Caronbrille daran klipen und auch besser in die Arbeitsschutzbrille einlegen! )

Stirnband für Display
blackeye zero stirnband

BLACKEYE ZERO Kopf Halterung


um Gewicht des Displays auf Stirn zu tragen, anstatt gegen Augenränder zu pressen,

sollte dann im Ansatz so sein wie:

HTC Vive: Bequemere Vive Halterung erfolgreich finanziert


Sony PSVR

Abstand zw. Lupenbrille und Display liegt zw. 9 und 13 cm…

 

Schubregler mit Ardunino

Ziel:
Schubregler für Steuerung per Fuß mit 0% bis 100% Schub und WEP/Afterburner(AB),
Ausführung als Gleitschiene, nicht als Pedal

Gleitschiene – Baumarkt Schubladen Halbauszug 300mm
auf ein Holzlatte schrauben

bei 23 cm ein schwererer Gang/Lauf  der Schiene, bis zum Ende von 28 cm 
0-23 cm soll 0-100% werden und ab 23 cm soll es WEP/Afterburner(AB) fungieren

Gameport-USB Adapter + Adapter D-Sub 15 Pin schraubbar
conrad.de/de/usb-20-anschlusskabel-1x-usb-20-stecker-a-1x-d-sub-stecker-15pol-150-m-schwarz-ul-zertifiziert-logilink-986536.html
conrad.de/de/d-sub-stiftleiste-180-polzahl-15-16-delock-65275-1-st-788419.html

de.wikipedia.org/wiki/Gameport   Pinbelegung erlaubt 4 Achsen und 4 Buttons.
Eine Achse benötigt einen 100kOhm Widerstand, 5V Pin und GND Pin und Achse Pin. Ein Button funktioniert durch schließen der ButtonPins gegen Ground.
http://www.epanorama.net/documents/joystick/pc_joystick.html
https://vvvv.org/documentation/howto-gameport

wir benötigen also für die Achse einen 100kOhm Potentionmeter.
Diese Potetiometer müssen wir von aussen ansteuern, drehen, also per Arduino einen Servo benutzen, der das Poti aufmontiert bekommt und gegen einen festmontierten Schraubenzieher dreht.
Den Servo kann man auf exakte Positioen fahren in xGrad Schritten.
modelcraft standard-servo rs 2
servodatabase.com/servo/modelcraft/rs-2
macht 203 grad… darauf verteilen wir die 0% bis 100% + WEP/Afterburner(AB)

Arduino steuert also den Servo, der steuert den Potentiometer und damit die GameportAchse.
Arduino muss auf anderen Seite aber erst einmal Sensorwerte einlesen, um dann Servo/Poti/Achse zu steuern.

Sensor Ansatz 1: Ultraschallsensor,
dazu ein Brettchen als Reflektor per Metallwinkel an das vorderer Halbauszugende montieren,
der Ultraschallsensor hat leider einen Messbereich in Form eines Trichters/Winkels..
siehe Grafik: komputer.de/zen/index.php?main_page=product_info&products_id=329
vielleicht könnte man mit einem Trichter um den Sensor herum, den Zielbereich eingrenzen ohne Reflektionen zurückzusenden.. 
Fazit:
Aktuell hab ich diese Lösung erstmal verworfen

Sensor Ansatz 2: TOF time of flight,
Adafruit VL6180X Time of Flight Distance Ranging Sensor (VL6180)  – 5 to 200mm
adafruit.com/product/3316
Adafruit VL53L0X Time of Flight Distance Sensor – ~30 to 1000mm
adafruit.com/product/3317
learn.adafruit.com/adafruit-vl53l0x-micro-lidar-distance-sensor-breakout
sensoren basieren auf SensorChip von ST-Electronics:
st.com/en/imaging-and-photonics-solutions/proximity-sensors.html?querycriteria=productId=SC1934
Adruino Sensoren sind aber aktuell in den einschlägigen Shops nicht verfügbar (2017-KW01).
Fazit:
Aufgrund der Nichtverfügbarkeit dieser Sensoren erstmal verworfen.

Sensor Ansatz 3: Lichtschranken, LinearEncoder
Lichtschranken aus SEN0038
dfrobot.com/wiki/index.php/Wheel_Encoders_for_DFRobot_3PA_and_4WD_Rovers_(SKU:SEN0038)
soll lineare Ausführung werden, daher als EncoderRad eine EncodeLeiste…
ein Strichholz unterbricht, eine Nadel hingegen nicht, daher muss EncoderLeiste mindestens je Spalt und Stift die Abmessung eines Streichholzes haben.
Ein Kamm mittlerer Ausprägung, nicht zu fein, nicht zu grob, funktioniert.
Eine durchsehbare Plastikleiste mit schmalen schwarzen Klebenstreifen funktioniert.
Problem: man kann zwar sehr schön die Zähne/Stifte der Encoderleiste auslesen,
aber man erhält keine Richtung.. 
Für Richtungsmessung benötigt man zweite Lichtschranke, die kann auf selber oder eigener Encoderleiste sitzen, wichtig ist das beide Lichtschranken, LOW/HIGH in Phase 50% Überdeckung messen.. und hier kommen wir wieder an die Grenzen, denn die benötigte Genauigkeit muss man Vergrößerung der Luftspalt und Zähne/Stifte erkaufen, womit die Auflösung geringer wird…
Fazit:
Aufgrund der benötigten und schwer umzusetzenden Genauigkeiten nicht weiter verfolgt.

Sensor Ansatz 4: Widerstandsmessung
elektronik-labor.de/Arduino/Ohmmeter.html
anstelle des zu messenden Widerstandes benutzen wir einen magnetic ReedSwitch plus Widerstand…  wir benutzen 20 + 2 dieser Sets… an der Schiene/Halbauszug einen Magnet befestigen, der die ReedSwitch von normal open dann closed.. dann kann der Widerstand an diesem ReedSwitch gelesen werden..
Mit/ohne Interrupt.. testen…
Damit der ReedSwitch auch wirklich lang genug geschlossen wird, sollte der Magnet lang genug sein,.. mehrere Magnete möglich,..
die günstigen ReedSwitches sind meist aus Glas, es empfiehlt sich aber die haltbareren  
conrad.de/de/Search.html?searchType=REGULAR&search=reed%20kontakt&sort=Price-asc
https://www.conrad.de/de/reed-relais-1-schliesser-24-vdc-05-a-10-w-sip-4-mes1a24-504610.html
diese ReedSwitch-Widerstands-Kombis kann man nun parallel anlegen..
auf 23 cm sind 20 Sets anzulegen, damit wir Auflösung von 5% Schritten haben, also haben wir je Set etwas mehr als 1 cm…  das läßt sicher gut mit Lochplatine 2,54 Rastermaß umsetzen
conrad.de/de/Search.html?search=lochplatine&sc.queryFromSuggest=true&searchType=SUGGEST&searchSource=SUGGEST_QUERY&category=%1FElektromechanik%1FLeiterplatten 
darauf die Reed-Switches und Widerstände auflöten.. die eine Seite geht zum Arduino AnalogPin X und die andere Seite zum Arduino GND. 
Fazit:
aktuell noch dran..