Pistoles reals com a controladors: com aconseguir-ho tot en realitat virtual

Sóc Christopher O'Hagan, enginyer de programari a @KainosSoftware i treballo al departament d'innovació aplicada. Centreu-vos en tecnologies immersives. Aquest bloc tracta sobre com recentment hem convertit un rifle gairebé totalment funcional en un controlador de realitat virtual i com hem abordat els problemes que comportaven.

Fa poc ens va acostar un client canadenc que buscava ajuda per construir un shooter realista com a atractiu per a la seva sala recreativa. Això forma part d’una tendència creixent que hem vist ja que tecnologies immersives com la RV s’utilitzen per a empreses d’entreteniment in situ, com escape rooms i muntanyes russes. L’equip i la configuració, tot i que són cars, són rendibles a causa del gran trànsit i dels entorns nous que ofereixen aquestes empreses. Un bon exemple d’entreteniment in situ és el paintball virtual, fet per empreses com The Void.

El nostre major desafiament per al tirador immersiu amb el qual vam ajudar va ser construir i utilitzar una arma de foc real ... o almenys una cosa que semblava i se sentia com una.

Obteniu el controlador

Originalment pensàvem que aconseguir un controlador era difícil. Vam contactar amb un proveïdor local d’armes toves, Gear of War. Els nostres requisits eren:

  • Un rifle suau que semblava, sentia i pesava com un autèntic rifle
  • Una arma que, quan es dispara, produeix un retrocés realista
  • Un activador i seguretat de cablejat per poder utilitzar-los per a les entrades de la nostra simulació

Vam pensar que això demanaria moltes coses, però ens vam sorprendre que els semblés normal. Van fer molts accessoris per a TV i pel·lícules, de manera que tenien peticions més estranyes. A continuació, hem utilitzat un rastrejador Vive muntat per rastrejar l’arma en realitat virtual.

Configuració del controlador

Aquí és on vam experimentar el nostre principal problema, la vibració: el problema va ser causat pel retrocés realista de la nostra arma. Com que el Vive Tracker utilitza IMU (Unitats de Moviment Inercial) per al seguiment a alta freqüència i el sistema Vive Lighthouse per al seguiment a una freqüència comparativament inferior i per a la correcció de la deriva. Les IMU funcionen mesurant l’acceleració de cada eix i calculant el desplaçament a partir d’aquesta mesura. Quan les IMU vibren de manera agressiva, p. B. Si estan muntats sobre una arma de tret realista, no podran seguir de prop. Això era un problema.

Com que no som experts en vibracions, hem intentat resoldre el problema però hem avançat poc. Llavors vam decidir enviar una publicació de reddit a r / Vive. La resposta de la comunitat ha estat útil. Vam solucionar algunes coses senzilles que passàvem per alt, com ara que el rastrejador es trobés massa a sobre del carril. Per sorpresa nostra, HTC es va posar en contacte amb el projecte i va mostrar interès pel que intentàvem fer. Tenien una versió beta del firmware de Vive Tracker que podia ajudar a crear un filtre de pas baix per a l’IMU que ens van donar.

Gràfic de l'entrada normal versus entrada després d'utilitzar un filtre de pas baix

El filtre de pas baix es pot configurar mitjançant la interfície USB-HID. Hem pogut enviar informes 0xB3 que envien informació bàsica sobre el dispositiu que s’utilitza, així com la configuració de pas baix d’un MacBook al rastrejador, i hem tingut la configuració correcta per esmorteir prou les vibracions. El següent pas va ser l’enviament de l’informe funcional, que ens permetrà enviar canvis a la configuració i controlar els dispositius HID des d’un Raspberry Pi al rastrejador, ja que necessitàvem alguna cosa que pogués cabre al cartutx de l’arma. l'usuari no va poder veure el cablejat.

Filtre de pas baix

Aquests són els passos per configurar el Raspberry Pi per a aquest tipus de projectes

  • Instal·leu Raspberry al Raspberry Pi
  • Actualitzeu la versió Pi de "Node.js"
  • Instal·leu la biblioteca "node-hid" al vostre projecte per obtenir instruccions específiques
  • A udev, afegiu un fitxer anomenat "60-HTC-Vive-perms.rules" amb aquesta línia
KERNEL == "hidraw *", SUBSYSTEM == "hidraw", ATTRS {idVendor} == "28de", ATTRS {idProduct} == "2022", TAG + = "uaccess"

Un problema potencial és que node-hid utilitza un valor d'índex incorrecte. En aquest cas, l’índex s’utilitza per identificar la interfície o enviar l’informe. Aquí teniu alguna cosa per familiaritzar-vos amb les sol·licituds USB. No podeu especificar la interfície amb "Node-Hid". Afortunadament, el fitxer "show-devices.js" inclòs amb la biblioteca "node-hid" i que mostra tots els dispositius HID connectats tenia diferents camins per a cada interfície.

Utilitzeu el fitxer show-devices.js que s'inclou amb la biblioteca node-hid. Podeu trobar el camí a utilitzar al vostre codi per si té un aspecte diferent

Si teniu altres problemes amb l'script, "usbmon" ve amb Raspbian i us permet veure les sol·licituds USB que s'estan realitzant. Aquí hi ha un enllaç útil que podeu utilitzar per desxifrar aquests requisits. (Comença a la pàgina 15)

Conclusió

L’ús d’una pistola com a controlador de realitat virtual no va ser gens fàcil. Les vibracions del tret de l'arma són prou fortes per interferir amb la capacitat de l'IMU de seguir-se amb precisió. Mitjançant el filtre de pas baix del rastrejador i un Raspberry Pi integrat, vam poder resoldre aquest problema sense afectar el seguiment ni la força amb què vibra l’arma.

Gràcies per llegir @ cohagan154