Pärisrelvad kontrolöridena: kuidas midagi VR-i tuua

Olen Christopher O’Hagan, @KainosSoftware tarkvarainsener ja töötan rakendusuuringute osakonnas. Keskendumine ümbritsevatele tehnoloogiatele. See ajaveeb räägib sellest, kuidas me hiljuti muutisime peaaegu täielikult töötava vintpüssi virtuaalse reaalsuse kontrolleriks ja kuidas ületasime sellega kaasnenud probleemid.

Hiljuti pöördus meie poole üks Kanada klient, kes otsis abi realistliku laskuri ehitamisest, et meelitada nende arkaad üles. See on osa kasvavast suundumusest, mida oleme täheldanud, kus ümbritsevat meelelahutustööstuses, nagu põgenemistubade ja mägironijate jaoks, kasutatakse ümbritsevat tehnoloogiat nagu VR. Ehkki seadmed ja seadistamine võivad olla kallid, on nende ettevõtete pakutavate suure jalatsite ja uudse keskkonna tõttu mõistlik. Suurepärane näide kohapeal toimuvast meelelahutusest on virtuaalne paintball, mida näiteks „The Void” -l on õnnestunud teha.

Meie peamiseks väljakutseks ümbritsevale tulistajale, kellega aitasime, oli tegeliku tulirelva ehitamine ja kasutamine… või vähemalt midagi sellist, mis nägi välja ja tundus selline.

Kontrolleri hankimine

Algselt arvasime, et kontrolleri hankimine on keeruline. Jõudsime ühendust kohaliku õhu-pehmete püstolite pakkujaga Gear of War. Meie nõuded olid:

  • Õhkpehme vintpüssi koopia, mis nägi välja, tundis ja oli kaalus nagu tõeline vintpüss
  • Püss, mis tulistades annaks realistliku tagasilöögi
  • Päästik ja ohutus, mis ühendati nii, et saaksime neid kasutada oma simulatsiooni sisenditeks

Arvasime, et see küsib palju, kuid olime üllatunud, et see tundus neile normaalne. Nad on teinud TV jaoks palju rekvisiite ja Films, nii et nad olid saanud veidramaid taotlusi. Seejärel kasutasime püstoli jälgimiseks monteeritud Vive'i jälgijat.

Kontrolleri seadistamine

Siin kogesime oma peamist probleemi, vibratsiooni: probleemi põhjustas meie relva realistlik tagasilöök. Kuna Vive Tracker kasutab kõrge sagedusega jälgimiseks IMU-sid (inertsiaalse liikumise ühikuid) ja Vive tuletornide süsteem suhteliselt madalama sagedusega jälgimiseks ja triivi korrigeerimiseks. IMU-d töötavad mõõtes kiirendust igal teljel ja arvutades selle mõõtmise põhjal nihe. Kui IMU-d on agressiivselt vibreerinud, näiteks kui need paigaldatakse reaalselt tulistavale relvale, ei suuda nad täpselt jälgida. See oli probleem.

Kuna me pole vibratsiooni asjatundjad, proovisime probleemi lahendada, kuid ei teinud palju edusamme. Seejärel otsustasime reddit postituse teha aadressile r / Vive. Kogukonna vastus oli kasulik, parandades mõned lihtsad asjad, mis meil vahele jäid, näiteks kui jälgija oli liiga rööpast ülespoole. Meie üllatuseks võttis HTC meiega ühendust projekti osas, näidates üles huvi selle vastu, mida me proovida teha. Neil oli Vive Trackeri püsivara beetaversioon, mis aitas, IMU madalpääsufilter, mille nad meile andsid.

Normaalse sisendi ja sisendi graafik pärast madalpääsfiltri kasutamist

Madalpääsfiltrit saab konfigureerida USB HID-liidese kaudu. Me saime saata MacBookilt Trackerisse õigete sätetega '0xB3' aruandeid, mis saadavad põhiteavet nii kasutatava seadme kui ka madala läbilaske konfiguratsiooni kohta, et vibratsiooni piisavalt summutada. Järgmine samm oli funktsiooni aruande, mis võimaldab meil edastada seadete muudatusi ja juhtida HID-seadmeid, jälgijale vaarikapiimist, kuna meil oli vaja midagi, mis mahuks püstoli padrunisse, nii et kasutaja ei saaks seda teha vaata juhtmestikku.

Madalpääsfilter

Need on sammud, kuidas Raspberry Pi seda tüüpi projekti jaoks üles seada

  • Installige raspbian vaarika pi-le
  • Värskendage saidi 'Node.js' versiooni
  • Installige projekti "sõlme peidetud" teek, et saada konkreetseid juhiseid selle vaatamiseks siin
  • Lisage udevisse fail nimega `60-HTC-Vive-perms.rules`, koos selle reaga
KERNEL == "hidraw *", SUBSYSTEM == "hidraw", ATTRS {idVendor} == "28de", ATTRS {idProduct} == "2022", TAG + = "uaccess"

Teil võib tekkida probleem, et sõlmepeitmine kasutab valet wIndexi väärtust, sel juhul kasutatakse liidese või aruande saatmise täpsustamiseks wIndexit. Siin on midagi, mis aitab teil USB-päringute ümber käia. Sõlme peidetud ei võimalda teil liidest täpsustada. Õnneks, kui ma vaatasin tagasi “show-devices.js”, mis on kaasas teegiga “node-hide” ja väljastab kõiki ühendatud HID-seadmeid, oli sellel iga liidese jaoks erinevad teed.

Kasutades sõlme peidetud teegiga kaasnevat show-devices.js. Kui soovite, et kood tundub teistsugune, leiate koodist kasutatava tee

Kui teil on skriptiga mingeid muid probleeme, tuleb „usbmon” koos Raspbianiga ja see võimaldab teil vaadata kõiki tehtud usb-taotlusi. Siin on kasulik link, mis aitab teil neid taotlusi dekodeerida (algab lehelt 15)

Järeldus

Püstoli kasutamine VR-kontrollerina polnud sugugi lihtne. Püstoli tulistamise vibratsioon on piisavalt tugev, et häirida IMU suutlikkust ennast täpselt jälgida. Kasutades Trackeri madalpääsufiltri funktsiooni ja pardal olevat vaarikapiiri, saime sellest probleemist üle ilma ohustamata jälgimist ega relva vibreerimisjõudu.

Täname, et lugesite
@ cohagan154