Īstas pistoles kā kontrolieri: kā kaut ko ienest VR

Es esmu Kristofers O’Hagans, @KainosSoftware programmatūras inženieris, un es strādāju lietišķo jauninājumu nodaļā. Koncentrēšanās uz ieskaujošajām tehnoloģijām. Šis emuārs ir par to, kā mēs nesen gandrīz pilnībā funkcionējošu šauteni pārvērta par virtuālās realitātes kontrolieri un kā mēs pārvarējām problēmas, kas ar to saistītas.

Nesen pie mums vērsās kāds Kanādas klients, kurš meklē palīdzību reālistiska šāvēja izveidē kā pievilcību viņu pasāžai. Šī ir daļa no pieaugošās tendences, kuru mēs novērojām, kad tādas ieskaujošas tehnoloģijas kā VR tiek izmantotas izklaides biznesā, piemēram, glābšanās istabās un kalniņos. Lai gan aprīkojums un uzstādīšana var būt dārgi, tas ir dzīvotspējīgs, ņemot vērā lielo noslodzi un jauno vidi, ko piedāvā šie uzņēmumi. Lielisks izklaides vietas piemērs ir virtuālais peintbols, kuru ir izdevies paveikt uzņēmumiem, piemēram, “The Void”.

Mūsu galvenais izaicinājums ieskaujošajam šāvējam, kuram mums palīdzēja, bija uzbūvēt un izmantot reālu šaujamieroci… vai vismaz kaut ko tādu, kas izskatījās un jutās kā viens.

Kontroliera iegūšana

Sākotnēji mēs uzskatījām, ka kontroliera iegūšana būs grūta. Mēs sazinājāmies ar vietējo gaisa mīksto ieroču piegādātāju Gear of War. Mūsu prasības bija:

  • Gaisa mīkstas šautenes reprodukcija, kas izskatījās, jutās un tika nosvērta kā īsta šautene
  • Pistole, kas, izšaujot, radītu reālistisku atsitienu
  • Sprūda un drošība, kas tika savienota, lai mēs varētu tos izmantot mūsu simulācijas ievadīšanai

Mēs domājām, ka tas prasīs daudz, bet bijām pārsteigti par to, ka viņiem tas likās normāli. Viņi ir daudz paveikuši TV un Films, tāpēc bija saņēmuši dīvainākus pieprasījumus. Pēc tam mēs izmantojām uzstādītu Vive izsekotāju, lai izsekotu pistoli VR.

Kontroliera iestatīšana

Šeit mēs piedzīvojām savu galveno problēmu, vibrācijas: šo problēmu izraisīja mūsu ieroča reālistiskā atrāviena. Tā kā Vive Tracker izmanto IMU (inerciālās kustības vienības) izsekošanai ar augstu frekvenci, un Vive bākas sistēma izsekošanai ar salīdzinoši zemāku frekvenci un dreifa korekcijai. IMU darbojas, izmērot paātrinājumu katrā asī, pēc tam aprēķinot pārvietojumu no šī mērījuma. Kad IMU tiek agresīvi vibrēti, piemēram, kad tie tiek piestiprināti pie reālistiski šaujoša ieroča, tie nespēj precīzi izsekot. Tā bija problēma.

Tā kā mēs neesam vibrācijas eksperti, mēs mēģinājām atrisināt problēmu, bet neveicām lielu progresu. Pēc tam mēs nolēmām izveidot reddit pastu uz r / Vive. Sabiedrības reakcija bija noderīga, labojot dažus vienkāršus sīkumus, kas mums pietrūka, piemēram, ka izsekotājs ir pārāk tālu uz sliedēm. Par pārsteigumu HTC sazinājās ar mums par projektu, izrādot interesi par to, ko mēs cenšamies darīt. Viņiem bija Vive Tracker programmaparatūras beta versija, kas varētu palīdzēt, zemas caurlaides filtrs IMU, ko viņi mums iedeva.

Normālas ievades un ievades diagramma pēc zemas caurlaidības filtra izmantošanas

Zemas caurlaides filtru var konfigurēt, izmantojot USB HID interfeisu. Mēs varējām nosūtīt “0xB3” pārskatus, kas sūta pamatinformāciju par izmantoto ierīci, kā arī zemas caurlaidības konfigurāciju, no MacBook uz Tracker ar pareizajiem iestatījumiem, lai pietiekami slāpētu vibrācijas. Nākamais solis bija atsūtīt funkcijas pārskatu, kas ļauj mums paziņot par iestatījumu izmaiņām, kā arī kontrolēt HID ierīces, Tracker no aveņu pi, jo mums bija nepieciešams kaut kas, kas varētu ietilpt pistoles kārtridžā, lai lietotājs nevarētu redzēt vadu.

Zemas caurlaides filtrs

Šie ir soļi, lai iestatītu Raspberry Pi šāda veida projektam

  • Instalējiet raspbian uz aveņu pi
  • Atjaunināt “Node.js” pi versiju
  • Instalējiet savā projektā bibliotēku “mezgls-paslēpts”, lai saņemtu īpašas instrukcijas, kā to izdarīt, skatoties šeit
  • Pievienojiet failu udevā ar nosaukumu `60-HTC-Vive-perms.rules` ar šo rindiņu tajā
KERNEL == "hidraw *", SUBSYSTEM == "hidraw", ATTRS {idVendor} == "28de", ATTRS {idProduct} == "2022", TAG + = "uaccess"

Problēma, kas jums var rasties, ir tāda, ka mezgls-slēpa nepareizu wIndex vērtību, šajā gadījumā wIndex tiek izmantots, lai norādītu saskarni vai kur tiek nosūtīts ziņojums. Šeit ir kaut kas, kas palīdz uztvert USB pieprasījumus. “Node-hide” neļauj norādīt saskarni. Par laimi, kad es atskatījos uz “show-devices.js”, kas nāk ar bibliotēku “node-hide” un izvada visas pievienotās HID ierīces, tai bija dažādi interfeisi.

Izmantojot show-devices.js, kas nāk ar mezgla slēptās bibliotēkas palīdzību. Kodā varat atrast izmantojamo ceļu, ja tas šķiet atšķirīgs

Ja rodas vēl kādas problēmas ar skriptu, “usbmon” tiek piegādāts kopā ar Raspbian un ļauj jums apskatīt visus iesniegtos usb pieprasījumus. Šī ir noderīga saite, kas palīdzēs jums atšifrēt šos pieprasījumus (sākas 15. lpp.)

Secinājums

Pistoles izmantošana par VR kontrolieri nekādā ziņā nebija vienkārša. Pistoles šaušanas vibrācijas ir pietiekami spēcīgas, lai izjauktu IMU spēju precīzi izsekot. Izmantojot izsekotāja zemas caurlaidības filtra funkciju un iebūvētu aveņu pi, mēs spējām pārvarēt šo problēmu, neapdraudot izsekošanu vai spēku, ar kādu pistole vibrē.

Paldies par lasīšanu
@ cohagan154