VRPN - VRPN
| Dezvoltatori | ReliaSolve |
|---|---|
| Scris in | C ++ , Python , Java |
| Tip | VR Middleware |
| Site-ul web | github |
VRPN (Virtual-Reality Peripheral Network) este o interfață independentă de dispozitiv, bazată pe rețea, pentru accesarea perifericelor de realitate virtuală în aplicații VR. A fost inițial proiectat și implementat de Russell M. Taylor II la Departamentul de Informatică al Universității din Carolina de Nord din Chapel Hill . VRPN a fost întreținut și susținut de Sensics în timp ce era de afaceri. În prezent, este întreținut de ReliaSolve și dezvoltat în colaborare cu o comunitate productivă de colaboratori. Este descris mai complet la vrpn.org și în VRPN-VRST .
Scopul VRPN este de a oferi o interfață unificată dispozitivelor de intrare, cum ar fi trackere de mișcare sau controlere joystick . De asemenea, oferă următoarele:
- Marcarea de timp a datelor
- Acces simultan multiplu la dispozitive periferice
- Reconectarea automată a serverelor eșuate
- Stocarea și redarea sesiunilor
Sistemul VRPN constă din interfețe de programare atât pentru aplicația client, cât și pentru driverele hardware și o aplicație server care comunică cu dispozitivele hardware. Interfețele client sunt scrise în C ++, dar au fost împachetate în C #, Python și Java.
O aplicație tipică a VRPN este de a codifica și trimite date de captare a mișcării 6DoF prin rețea în timp real.
Rețele
Un client VRPN poate stabili o conexiune cu un server VRPN (dispozitivul care furnizează datele) în două moduri: fie prin TCP (fiabil, dar mai puțin eficient), fie prin UDP (nesigur, dar cu latență mai mică și mai eficient). Modul „nesigur” este, în general, preferat atunci când latența este critică.
Secvența de inițializare a conexiunii „nesigură” folosește atât protocoalele TCP, cât și UDP. Funcționează după cum urmează:
- clientul deschide un socket TCP pentru ascultare pe un port arbitrar;
- clientul trimite numărul portului acestui soclu, împreună cu propriul nume de mașină, într-o datagramă UDP direcționată către un port bine cunoscut al serverului VRPN (implicit este 3883);
- serverul deschide o conexiune TCP cu clientul, la numărul de port comunicat la pasul 2;
- dacă conexiunea TCP este stabilită, fiecare dispozitiv îi spune celuilalt versiunea VRPN acceptată;
- dacă versiunile nu sunt compatibile, conexiunea este întreruptă;
- în caz contrar, fiecare dispozitiv începe să asculte pe un nou port UDP (diferit de cele utilizate anterior) și trimite numărul portului către celălalt dispozitiv, utilizând conexiunea TCP creată anterior;
- de acum înainte, toate datele sunt trimise prin cele două porturi UDP deschise la pasul 6.
Avantajele acestei abordări sunt: timpul de conectare rapid și detectarea rapidă a defecțiunilor în timpul conexiunii.
Cu toate acestea, protocolul de inițializare a conexiunii „nesigur” nu respectă principiul strict de proiectare a protocolului de stratificare , deoarece sarcina utilă VRPN la nivel de aplicație scapă informații despre nivelurile inferioare din stiva de rețea, și anume numele mașinilor și numerele de port TCP / UDP. Datorită acestei alegeri de proiectare, este imposibil să se stabilească o conexiune VRPN între două dispozitive conectate printr-un NAT : routerul ar trebui să traducă nu numai informațiile de nivel 3 din antetele pachetelor, ci și referințele la adresele IP și numerele de port în cadrul sarcinii utile VRPN.
Pentru a rezolva această problemă, VRPN oferă un al doilea mod de inițializare a conexiunii „fiabil”, numai TCP, care este o interacțiune TCP server-client standard : serverul VRPN ascultă pe un port TCP bine cunoscut și clientul inițiază o conexiune. În acest mod, toate datele sunt trimise pe aceeași conexiune TCP și nu este necesară nici o comunicare UDP.
Dispozitive acceptate
Trackere (listate alfabetic)
- 3rdTech HiBall-3000 Wide Area Tracker (fostul tracker UNC Ceiling).
- [1] Sistem de urmărire a poziției antiabilitate.
- Sisteme optice de urmărire ART , inclusiv Flystick2 și Flystick3. Codul de recepție face parte din distribuția sursă standard.
- Dispozitive analogice utilizate ca tracker (Magellan, CerealBox cu joystick-uri atașate, Radamec SPI, Mouse, ...).
- Tracker ARToolkit VRPN disponibil de la Universidad de los Andes.
- Turmă de păsări Ascension (fie care rulează printr-un singur port serial, fie cu fiecare senzor conectat la propriul său port serial). Acest driver (și ceilalți drivere de urmărire) resetează urmăritorul în caz de ciclu de alimentare, deconectare serială sau alte probleme. _Nu utilizați acest driver pe un Nest of Birds_ deoarece va arde circuitele unității emițătorului (consultați e-mailul de la Kyle Smith).
- Dispozitive cu butoane utilizate ca teleportere sau trackere (Global Haptics GeoOrb, ...).
- Accelerometru Crossbow RGA300 folosind o interfață serială.
- Dispozitive GameTrak.
- Microscriere prin imersie .
- Mouse inerțial și șoarece de eveniment de la Universitatea Bauhaus Weimar.
- InterSense IS-600 și IS-900 (folosind interfața augmentată Fastrak pe orice arhitectură).
- Mouse 3D Logitech.
- Microsoft Kinect (două servere VRPN diferite disponibile de pe https://github.com/vancegroup/KVR și http://people.ict.usc.edu/~suma/faast ).
- Motion Analysis Corporation (serverul VRPN este încorporat în serverul vânzătorului)
- Dispozitiv de urmărire inerțială MotionNode .
- Sistem de urmărire optică NDI Polaris .
- Dispozitiv de feedback forțat Novint .
- Motivul OptiTrack (a fost NaturalPoint OptiTrack Tracking Tools) (serverul VRPN este încorporat în serverul furnizorului).
- Origin Systems Tracker DynaSight (cu reflector pasiv). Acest driver acceptă și tracker-ul mai vechi de pe afișajul stereo SeeReal D4D.
- Kitul de dezvoltator OSVR Hacker
- Alte trackere InterSense (folosind biblioteca nativă InterSense, chiar și cele bazate pe USB); în prezent există o discuție pe lista de e-mail VRPN despre dacă informațiile despre poziție și orientare sunt returnate în mod consecvent atunci când se utilizează această interfață.
- Sistem de urmărire optică PS-Tech .
- Sistem de urmărire PhaseSpace .
- PNI SpacePoint .
- Tracker Polhemus Fastrak și trackere 3Space pe mai multe arhitecturi, tracker Liberty și LibertyHS sub cel puțin Linux. Trackerul Patriot este acceptat folosind driverul Liberty. G4 Powertrack.
- Controler de joc Razer Hydra .
- Sensible Technologies Dispozitiv de feedback forțat PHANToM.
- Sensics dSight tracker.
- Sensics zSight tracker.
- Dispozitiv GPS cu port serial.
- Vicon (serverul VRPN este încorporat în serverul furnizorului).
- Viewpoint Eye tracker.
- Sistem de urmărire magnetică Wintracker III de la Virtual Realities Ltd.
- WorldViz Precision Position Tracker PPT 1.2.
- Senzor 3Space Yost Labs (și senzori 3Space fără fir).
- zSpace captivantă hardware interactiv și platforma software (server de VRPN construit în serverul furnizor).
Alte dispozitive (listate alfabetic)
- 3DConnexion SpaceNavigator, SpaceExplorer, Spacemouse Pro, Navigator pentru notebook-uri, dispozitive SpaceTraveler și SpaceMouseWireless (butoane și analog diferențial 6DOF).
- Tracker de mănuși 5DT (dispozitiv analogic cu 5 valori pentru degete plus pitch și roll). De asemenea, mănușa 5DT16 este acceptată împreună cu un driver pentru a converti cele 16 valori analogice în apăsări de butoane.
- Sisteme B&G Controlere cu buton CerealBox / dial / slider / joystick conectate la orice echipament compatibil cu serverul.
- Biosciences Tools sistem de control termic.
- Produse CH Fighterstick
- DirectInput a activat joystick-uri (inclusiv joystick-uri de forță-feedback) pe Windows (a se vedea cum). De asemenea, DirectInput a activat pachetele rumble pe Windows.
- Set de baterii Dream Cheeky USB.
- Euclideon Holographics Hologram Devices (Hologram Table, Hologram Room, Hologram Wall).
- Fraunhofer IMK ADBox și Fakespace Cubic Mouse.
- Global Haptics GeOrb (butoane și analogi).
- Unități Haydon-Kerk IDEA, controlere de mișcare liniară.
- Dispozitive Freespace ale Hillcrest Labs .
- Controlere joystick: Contour ShuttleXpress, Futaba InterLink Elite, Griffin PowerMate, Logitech Extreme 3D Pro, Saitek ST290 Pro, Microsoft SideWinder Precision 2, Microsoft SideWinder, Microsoft Xbox S (controler brut pe toate O / S), Microsoft Xbox 360 (controler brut pe toate O / S), Afterglow Ax1 Pentru Xbox 360 (controler brut pe toate O / S).
- Tastatură pe Windows.
- Controlere de mișcare Logitech Magellan și Spaceball 6DOF cu butoane (inclusiv Spaceball 5000).
- Etapele LUDL XY prin LibUSB.
- Dispozitive mouse pe Linux (când sunteți conectat la consolă) și Windows.
- Carduri A / D National Instruments .
- Telecomandă Nintendo Wii (acționând și ca tracker).
- Driver de serie NRL ImmersionBox (suport doar pentru butoane).
- Alte joystick-uri pe Windows.
- Joystick-uri pentru PC care rulează sub Linux.
- Radamec Serial Position Interface video / film tracker camera (zoom / focalizare nescalată, bază de mișcare netestată).
- Retrolink GameCube.
- Șoareci de serie: butoanele de pe mai multe stiluri de șoareci de serie conectate la un port serial.
- Butonul SGI și casetele de apelare (pe un SGI sau alte mașini).
- Totally Neat Gadget (TNGs) de la MindTel (butoane și analogi).
- Controler de joc Xbox 360.
- Controlerul portabil UNC (sau orice dispozitiv cu până la 5 butoane; poate fi conectat la portul paralel pe o cutie Linux sau Windows - utilizarea acestuia este depreciată, utilizați în schimb TNG3).
- Dispozitiv analog / buton Wanda.
- Serverele de sunet Win32, bazate pe Miles SDK (învechit), hardware-ul de sunet AuSIM și Microsoft DirectSound.
- Dispozitive XKeys de la PI Engineering : Desktop, Professional, Jog & Shuttle, Joystick și pedală.
- Elementele de poziționare liniară ale Zaber.com .
Referințe
- ^ Sensics http://sensics.com
- ^ Taylor, Russell (15-17 noiembrie 2001). „VRPN: un sistem periferic VR independent de dispozitiv, transparent din rețea” . VRST '01 Proceedings of the ACM Symposium on Virtual Reality Software and Technology : 55-61. doi : 10.1145 / 505008.505019 .
- ^ vrpn: Utilizarea vrpn_Connection - Repository oficial GitHub , Rețea periferică de realitate virtuală, 2018-02-19 , recuperat 20-02-2018
- ^ vrpn: Depanare VRPN - Depozit oficial GitHub , rețea periferică de realitate virtuală, 2018-02-19 , recuperat 20-02-2018