Oikeat aseet ohjaimina: Kuinka tuoda mitään VR: hen

Olen Christopher O’Hagan, @KainosSoftware-ohjelmistosuunnittelija ja työskentelen sovellusinnovaatioiden osastolla. Keskittyminen ympäröivään tekniikkaan. Tämä blogi kertoo kuinka muutimme äskettäin melkein täysin toimivan kiväärin virtuaalitodellisuuden ohjaimeksi ja kuinka voimme ratkaista sen mukanaan tuomat ongelmat.

Kanadalainen asiakas on hiljattain ottanut yhteyttä etsimään apua realistisen ampujan rakentamisessa houkuttelevaksi heidän pelihallilleen. Tämä on osa kasvavaa suuntausta, jonka olemme havainneet, kun VR: n kaltaista syventävää tekniikkaa käytetään paikan päällä oleviin viihdeyrityksiin, kuten pakohuoneisiin ja vuoristorataihin. Laitteet ja asennus voivat olla kalliita, mutta ne ovat kannattavia näiden yritysten tarjoaman suuren jalkatilanteen ja uusien ympäristöjen vuoksi. Upea esimerkki paikan päällä tapahtuvasta viihteestä on virtuaalinen paintball, jonka yritykset, kuten The Void, on onnistuneet tekemään.

Ensisijainen haaste meille syventävälle ampujalle, johon autimme, oli rakentaa ja käyttää todellinen tuliase… tai ainakin jotain, joka näytti ja tuntui siltä.

Ohjaimen hankkiminen

Alun perin uskoimme ohjaimen hankkimisen olevan vaikeaa. Olimme yhteyttä paikallisen ilmapehmeän aseen toimittajan, Gear of Warin kanssa. Vaatimuksemme olivat:

  • Ilmapehmeä kivääri-kopio, joka näytti, tuntui ja painoi kuin todellinen kivääri
  • Ase, joka ampuessaan tuottaisi realistisen kosketuksen
  • Liipaisin ja turvallisuus, jotka on kytketty niin, että voimme käyttää niitä simulaatiomme syöttöihin

Ajattelimme tämän kysyvän paljon, mutta olimme yllättyneitä siitä, että tämä näytti heille normaalilta. He ovat tehneet paljon rekvisiitta televisiolle ja elokuville, joten he olivat saaneet oudompia pyyntöjä. Sitten käytimme asennettua Vive-seurantaa seuraamaan aseita VR: ssä.

Säätimen asettaminen

Täällä koimme pääasiamme, värähtelymme: Aiheen aiheutti aseemme realistinen palautus. Koska Vive Tracker käyttää IMU: ta (inertiaaliset liikeyksiköt) seuraamaan suurta taajuutta, ja Vive majakkajärjestelmä seuraa suhteellisen matalalla taajuudella ja ajautumisen korjaamiseen. IMU: t toimivat mittaamalla kiihtyvyys kullakin akselilla ja laskemalla sitten siirtymä kyseisestä mittauksesta. Kun IMU: t tärisevät aggressiivisesti, esimerkiksi kun ne asennetaan realistisesti ampuvaan aseeseen, ne eivät pysty jäljittämään tarkasti. Tämä oli ongelma.

Koska emme ole värähtelyn asiantuntijoita, yritimme ratkaista ongelman, mutta emme edistyneet paljon. Sitten päätimme tehdä reddit-viestin r / Viveen. Yhteisöyhteisön vastaus oli hyödyllistä, oikaisemalla joitain yksinkertaisia ​​juttuja, jotka jäimme huomiotta, kuten esimerkiksi, että jäljittäjä oli liian kaukana radalla. Yllätykseemme HTC otti meihin yhteyttä projektista, joka osoitti kiinnostusta siihen, mitä yritimme tehdä. Heillä oli Vive Tracker -ohjelmiston beetaversio, josta voi olla apua, alipäästösuodin IMU: lle, jonka he antoivat meille.

Kaavio normaalista tulosta verrattuna tuloon alipäästösuotimen käytön jälkeen

Alipäästösuodatin voidaan konfiguroida USB HID -liitännän kautta. Pystyimme lähettämään '0xB3' -raportteja, jotka lähettävät perustiedot käytetystä laitteesta sekä alipäästöjen kokoonpanosta, MacBookista Trackerille oikeilla asetuksilla, jotta tärinät voidaan vaimentaa riittävästi. Seuraava vaihe oli lähettää ominaisuusraportti, jonka avulla voimme kommunikoida asetusten muutoksilla ja hallita HID-laitteita, Trackerille vadelmapihasta, koska tarvitsimme jotain, joka mahtuu aseen patruunaan niin, että käyttäjä ei voi katso johdotus.

Alipäästösuodatin

Nämä ovat vaiheet Raspberry Pi: n perustamiseksi tällaiseen projektiin

  • Asenna raspbian vadelmapi: hen
  • Päivitä Pi-version Node.js-versio
  • Asenna 'node-hid' -kirjasto projektiisi, jotta saat erityiset ohjeet sen tekemiseen pi katso täältä
  • Lisää udev-tiedosto nimeltään `60-HTC-Vive-perms.rules` tällä rivillä siinä
KERNEL == "hidraw *", SUBSYSTEM == "hidraw", ATTRS {idVendor} == "28de", ATTRS {idProduct} == "2022", TAG + = "uaccess"

Ongelma, joka sinulla voi olla, on, että solmu-piilottelu käyttää väärää wIndex-arvoa, tässä tapauksessa wIndexiä käytetään määrittelemään rajapinta tai mihin raportti lähetetään. Tässä on jotain, joka auttaa sinua kiertämään USB-pyyntöjäsi. Solmu-piilotettu ei salli käyttöliittymän määrittämistä. Onneksi kun katsoin takaisin show-devices.js, joka tulee ”node-hid” -kirjaston mukana ja tulostaa kaikki kytketyt HID-laitteet, sillä oli eri polut kullekin käyttöliittymälle.

Käytä show-devices.js, joka tulee solmun piilotetun kirjaston mukana. Voit löytää, mitä polkua käytetään koodissa, jos se näyttää erilaiselta

Jos sinulla on muita ongelmia komentosarjan kanssa, 'usbmon' tulee Raspbianin mukana ja antaa sinun tarkastella kaikkia tekemiäsi USB-pyyntöjä. Tässä on hyödyllinen linkki, jonka avulla voit purkaa pyyntöjä (alkaa sivulta 15)

johtopäätös

Aseen käyttäminen VR-ohjaimena ei ollut mitenkään helppoa. Aseen ampumisen tärinät ovat riittävän voimakkaita häiritsemään IMU: n kykyä seurata itseään tarkasti. Käyttämällä Trackerin alipäästösuodinominaisuutta ja sisäänrakennettua vadelmapiä, pystyimme pääsemään ongelmaan vaarantamatta seurantaa tai aseen tärinän voimaa.

Kiitos käsittelystä
@ cohagan154