Tikri ginklai kaip valdikliai: Kaip viską pritraukti prie VR

Aš esu Christopheris O'Haganas, „@KainosSoftware“ programinės įrangos inžinierius ir aš dirbu Taikomųjų inovacijų skyriuje. Didžiausią dėmesį skiriant svaiginančioms technologijoms. Šis tinklaraštis yra apie tai, kaip mes neseniai beveik visiškai veikiantį šautuvą pavertėme virtualios realybės valdytoju ir kaip įveikėme su juo susijusias problemas.

Neseniai į mus kreipėsi kanadietis klientas, ieškantis pagalbos kuriant tikrovišką šaulį, kaip atrakcioną jų pasažui. Tai yra augančios tendencijos, kurią mes pastebėjome, dalis, kai svaiginančios technologijos, tokios kaip VR, naudojamos pramogų versle, pavyzdžiui, pabėgimo kambariuose ir kalneliuose. Įranga ir sąranka gali būti brangi, tačiau ši įmonė yra perspektyvi dėl didelių pėdsakų ir naujos aplinkos, kurią siūlo šie verslai. Puikus pramogų vietoje pavyzdys yra virtualus dažasvydis, kurį pavyko padaryti tokioms įmonėms, kaip „The Void“.

Mūsų pagrindinis iššūkis svaiginančiam šauliui, kuriam mes padėjome, buvo sukurti ir panaudoti tikrąjį šaunamąjį ginklą ... ar bent jau tai, kas atrodė ir jautėsi kaip vienas.

Kontrolieriaus gavimas

Iš pradžių manėme, kad sunku įsigyti duomenų valdytoją. Kreipėmės į vietinį minkštų pistoletų tiekėją „Gear of War“. Mūsų reikalavimai buvo:

  • Oro minkšto šautuvo replika, kuri atrodė, jautėsi ir buvo sveriama kaip tikras šautuvas
  • Pistoletas, kuris šaunant duotų realų atgarsį
  • Trigeris ir sauga, kurie buvo sujungti taip, kad galėtume juos naudoti savo simuliacijos įvestims

Manėme, kad to bus daug ko klausiama, tačiau nustebome dėl to, kad jiems tai atrodė normalu. Jie atliko daug TV ir „Films“ rekvizitų, todėl buvo sulaukę keistesnių užklausų. Tada mes panaudojome pritvirtintą „Vive“ sekiklį, kad galėtume sekti pistoletą VR.

Valdiklio nustatymas

Štai čia mes patyrėme savo pagrindinę problemą, vibracijas: problemą sukėlė realus mūsų pistoleto smūgis. Kadangi „Vive Tracker“ naudoja aukšto dažnio stebėjimą IMU (inercinio judėjimo vienetai), o „Vive“ švyturio sistema - stebėjimui palyginti žemu dažniu ir dreifo korekcijai. IMU veikia matuojant kiekvienos ašies pagreitį ir apskaičiuodamas poslinkį nuo to matavimo. Kai IMU agresyviai vibruoja, pavyzdžiui, kai jie montuojami prie realiai šaunančio ginklo, jie negali tiksliai sekti. Tai buvo problema.

Kadangi nesame vibracijos ekspertai, keletą kartų bandėme išspręsti problemą, tačiau nepadarėme didelės pažangos. Tada mes nusprendėme padaryti reddit postą r / Vive. Bendruomenės atsakymas buvo naudingas, taisant keletą paprastų dalykų, kurių mes praleidome, pavyzdžiui, kad stebėtojas buvo per toli į bėgį. Mūsų nuostabai, „HTC“ susisiekė su mumis dėl projekto, kuris parodė susidomėjimą tuo, ką mes bandėme padaryti. Jie turėjo „Vive Tracker“ programinės įrangos beta versiją, kuri galėtų padėti, žemo dažnio filtrą IMU, kurį jie mums davė.

Įprastos įvesties ir įvesties schema, naudojant žemųjų dažnių filtrą

Žemųjų dažnių filtrą galima sukonfigūruoti per USB HID sąsają. Mes sugebėjome atsiųsti „0xB3“ ataskaitas, kurios siunčia pagrindinę informaciją apie naudojamą įrenginį, taip pat žemųjų dažnių konfigūraciją, iš „MacBook“ į „Tracker“ įrenginį su reikiamais nustatymais, kad būtų galima pakankamai slopinti vibracijas. Kitas žingsnis buvo išsiųsti savybės ataskaitą, leidžiančią mums perduoti nustatymų pakeitimus ir valdyti HID įrenginius, stebėtojui iš aviečių pi, nes mums reikėjo kažko, kas galėtų tilpti į pistoleto kasetę, kad vartotojas negalėtų pamatyti laidus.

Žemų dažnių filtras

Tai yra žingsniai, kaip sukurti „Raspberry Pi“ tokio tipo projektui

  • Įdiekite raspbian ant aviečių pi
  • Atnaujinti „Node.js“ pi versiją
  • Į savo projektą įdiekite biblioteką „paslėpta mazgas“, kad gautumėte specialias instrukcijas, kaip tai padaryti čia
  • Įtraukite į „udev“ failą pavadinimu „60-HTC-Vive-perms.rules“ su šia eilute
KERNEL == "hidraw *", SUBSYSTEM == "hidraw", ATTRS {idVendor} == "28de", ATTRS {idProduct} == "2022", TAG + = "uaccess"

Problema, kurią galite turėti, yra tai, kad mazgas paslėpė naudojate neteisingą „wIndex“ vertę, šiuo atveju „wIndex“ naudojama sąsajai nurodyti arba kur siunčiama ataskaita. Štai kažkas, kas gali padėti suvaldyti USB užklausas. „Mazgas paslėptas“ neleidžia jums nurodyti sąsajos. Laimei, kai aš pažvelgiau į „show-devices.js“, kuris yra kartu su „node-hide“ biblioteka ir išveda visus prijungtus HID įrenginius, kiekvienai sąsajai buvo skirtingi keliai.

Naudojant „show-devices.js“, kuris pateikiamas su mazgo paslėpta biblioteka. Kode galite rasti, kurį kelią naudoti, jei jis pasirodys skirtingas

Jei turite kokių nors kitų scenarijaus problemų, „usbmon“ yra kartu su „Raspbian“ ir leidžia peržiūrėti visas pateiktas usb užklausas. Čia yra naudinga nuoroda, kuri padės iššifruoti šias užklausas (prasideda 15 psl.)

Išvada

Panaudoti ginklą kaip VR valdiklį jokiu būdu nebuvo lengva. Pistoleto šaudymo virpesiai yra pakankamai stiprūs, kad sutrikdytų IMU galimybę tiksliai sekti save. Naudodami „Tracker“ žemo dažnio filtro funkciją ir įmontuotą „aviečių pi“, mes sugebėjome išspręsti šią problemą nepakenkdami stebėjimui ar jėgai, kuria pistoletas vibruoja.

Ačiū, kad perskaitėte
@ cohagan154