Valódi fegyverek mint vezérlők: Hogyan hozhat bármit a VR-be

Christopher O’Hagan vagyok, a @KainosSoftware szoftvermérnöke, és az Alkalmazott Innováció osztályán dolgozom. Összpontosítás a magával ragadó technológiákra. Ez a blog arról szól, hogyan alakítottuk a közelmúltban egy szinte teljesen működő puskát virtuális valóság-vezérlőré, és hogyan tudtuk legyőzni a vele járó kérdéseket.

Nemrég felkeresettünk egy kanadai ügyfelet, aki segítséget keresett egy reális lövöldözős épület felépítésében, ami vonzereje az arcade-nak. Ez egy olyan növekvő tendencia része, amelyet megfigyeltünk, ahol olyan magával ragadó technológiát, mint a VR, alkalmaznak helyszíni szórakoztató vállalkozásokban, például menekülési helyiségekben és hullámvasutakban. Noha a felszerelés és a felszerelés drága lehet, ez életképes a nagy forgalom és az új vállalkozások által kínált új környezet miatt. A helyszíni szórakozás nagyszerű példája a virtuális paintball, amelyet a cégeknek, például a „The Void” -nak sikerült megtenni.

Az elsődleges kihívás az elképesztő lövöldözős számára, amelyben segítettünk, egy valódi lőfegyver építése és felhasználása volt, vagy legalábbis valami, ami úgy tűnt és érezte magát.

A vezérlő megszerzése

Eredetileg azt hittük, hogy a vezérlő beszerzése nehéz lesz. Megkeresett egy helyi puha puha pisztolyt, a Gear of War-t. Követelményeink a következők voltak:

  • Légtisztítású puska replika, amely úgy nézett ki, érezte magát, és mint egy igazi puska
  • Egy fegyver, amely lövöldözésekor reális visszaugrást eredményez
  • Olyan trigger és biztonság, amelyet úgy kötöttek, hogy felhasználhassuk őket a szimuláció bemeneteire

Gondoltuk, hogy ez sokat kér, de meglepődött, hogy ez számukra normálisnak tűnt. Sokat készítettek TV-hez és a Films-hez, így furcsább kéréseket kapták meg. Ezután egy felszerelt Vive nyomkövetőt használtunk a fegyver nyomon követésére VR-ben.

A vezérlő beállítása

Itt tapasztaltuk meg fő kérdésünket, a rezgéseket: A kérdést a fegyverünk reális visszatekintése okozta. Mivel a Vive Tracker IMU-ket (inerciális mozgási egységeket) használ magas frekvencián történő nyomon követésre, a Vive világítótorony rendszert viszonylag alacsony frekvencián történő követésre és sodródáskorrekcióra. Az IMU-k úgy működnek, hogy megmérik a gyorsulást az egyes tengelyekön, majd kiszámítják az elmozdulást ebből a mérésből. Amikor az IMU-k agresszíven rezegnek, például amikor reálisan lövöldöznek fegyverre, akkor nem képesek pontosan követni. Ez probléma volt.

Mivel nem vagyunk vibrációs szakértők, megpróbáltunk megoldni a problémát, de nem történt nagy előrelépés. Ezután úgy döntöttünk, hogy reddit bejegyzést készítünk az r / Vive címre. A közösségi válasz hasznos volt, kijavítva néhány egyszerű dolgot, amelyek hiányoztak, például a nyomkövető túl messzire állt a sínen. Meglepetésünkre a HTC kapcsolatba lépett velünk a projekttel kapcsolatban, amely érdeklődést mutatott az iránt, amit megpróbálunk tenni. Volt egy Vive Tracker firmware béta verziója, amely segíthet, az IMU aluláteresztő szűrője, amelyet nekik adtak.

A normál bemenet és a bemenet grafikonja aluláteresztő szűrő használata után

Az aluláteresztő szűrőt az USB HID interfészen keresztül lehet konfigurálni. "0xB3" jelentéseket küldtünk, amelyek alapvető információkat küldnek a használt eszközről, valamint az alulmenő konfigurációról, a MacBook-ról a Tracker-re a megfelelő beállításokkal, hogy megfelelő mértékben tompítsák a rezgéseket. A következő lépés az volt, hogy a szolgáltatásról szóló jelentést, amely lehetővé teszi a beállítások változásainak közlését és a HID-eszközök vezérlését, eljuttatjuk a Tracker-hez egy málna-pi-ből, mivel szükségünk volt valamire, ami beleférne a fegyver patronjába, hogy a felhasználó ne tudjon lásd a huzalozást.

Aluláteresztő szűrő

Ezek a lépések a Raspberry Pi ilyen típusú projektbe állításához

  • Telepítse a raspbian-t a málna pi-re
  • Frissítse a „Node.js” pi verzióját
  • Telepítse a „csomópont-rejt” könyvtárat a projektbe, és ehhez külön utasításokat kell tennie a pi-oldalról itt
  • Adjon hozzá egy fájlt az udev-ban, a `60-HTC-Vive-perms.rules` néven, ezzel a sorral
KERNEL == "hidraw *", SUBSYSTEM == "hidraw", ATTRS {idVendor} == "28de", ATTRS {idProduct} == "2022", TAG + = "uaccess"

Probléma lehet az, hogy a csomópont-rejtek helytelen wIndex értéket használnak, ebben az esetben a wIndex-et használják a felület meghatározására vagy a jelentés elküldésének helyére. Íme, hogy segítsen körüljutni az USB-kérelmek körül. A „Node-hid” nem teszi lehetővé a felület megadását. Szerencsére, amikor visszatekinttem a „show-devices.js” -re, amely a „node-hid” könyvtárhoz tartozik, és az összes csatlakoztatott HID eszközt kiadja, az egyes felületeknek különböző útvonalak vannak.

A show-devices.js használatával, amely a csomópont-rejtett könyvtárhoz tartozik. Megtalálhatja, hogy melyik utat használja a kódban, abban az esetben, ha másképp jelenik meg

Ha bármilyen egyéb problémája van a szkripttel, akkor az 'usbmon' a Raspbian mellé kerül, és lehetővé teszi az összes elvégzett usb-kérés megtekintését. Ez egy hasznos link, amely segít dekódolni ezeket a kéréseket (kezdődik a 15. oldalon)

Következtetés

A pisztoly használata VR vezérlőként egyáltalán nem volt könnyű. A fegyverlövés rezgései elég erősek ahhoz, hogy megzavarják az IMU-k azon képességét, hogy pontosan követni tudják magukat. A Tracker aluláteresztő szűrőjének és a fedélzeti málna-pi felhasználásával sikerült megoldanunk ezt a problémát anélkül, hogy veszélyeztetnénk a követést vagy az erőt, amelyen a pisztoly rezeg.

Köszönöm, hogy elolvasta
@ cohagan154