Mga Totoong Baril bilang Mga Controller: Paano Makukuha ang Lahat sa VR

Ako si Christopher O'Hagan, isang software engineer sa @KainosSoftware at nagtatrabaho ako sa inilapat na departamento ng pagbabago. Ituon ang pansin sa mga immersive na teknolohiya. Ang blog na ito ay tungkol sa kung paano namin ginawang kamakailan-lamang na ang isang halos buong pagganap na rifle sa isang virtual reality controller, at kung paano namin hinarap ang mga isyu na kasama nito.

Kamakailan lamang ay nilapitan namin ang isang kostumer sa Canada na naghahanap ng tulong sa pagbuo ng isang makatotohanang tagabaril bilang isang akit para sa kanilang arcade. Ito ay bahagi ng isang lumalagong kalakaran na nakita namin bilang mga nakaka-engganyong teknolohiya tulad ng VR na ginagamit para sa mga negosyong aliwan sa lugar tulad ng mga kuwarto sa pagtakas at roller coaster. Ang kagamitan at pag-setup, habang mahal, ay kumikita dahil sa mataas na trapiko at mga kapaligiran sa nobela na inaalok ng mga kumpanyang ito. Ang isang mahusay na halimbawa ng on-site entertainment ay virtual paintball, na ginawa ng mga kumpanya tulad ng The Void.

Ang aming pinakamalaking hamon para sa nakaka-engganyong tagabaril na tinulungan namin ay ang pagbuo at paggamit ng isang tunay na baril ... o hindi bababa sa isang bagay na mukhang at pakiramdam tulad ng isa.

Kunin ang controller

Orihinal na naisip namin na mahirap ang pagkuha ng isang controller. Naabot namin ang isang lokal na tagapagtustos ng malambot na sandata, ang Gear of War. Ang aming mga kinakailangan ay:

  • Isang air-soft rifle na tumingin, nadama at bumigat tulad ng isang tunay na rifle
  • Isang sandata na, kapag pinaputok, lumilikha ng makatotohanang pag-urong
  • Isang nag-trigger at naka-wire na seguridad upang magamit namin ang mga ito para sa mga input sa aming kunwa

Naisip namin na ito ay magtanong nang marami ngunit nagulat kami na ito ay tila normal para sa kanila. Gumawa sila ng maraming props para sa TV at pelikula, kaya't mayroon silang mga hindi kilalang kahilingan. Gumamit kami pagkatapos ng naka-mount na tracker ng Vive upang subaybayan ang baril sa VR.

Pagse-set up ng controller

Dito namin naranasan ang aming pangunahing problema, panginginig: ang problema ay sanhi ng makatotohanang pag-atras ng aming sandata. Dahil ang Vive Tracker ay gumagamit ng mga IMU (Mga Yunit ng Kilusan ng Inertial) para sa pagsubaybay sa isang mataas na dalas at ang sistema ng Vive Lighthouse para sa pagsubaybay sa isang medyo mas mababang dalas at para sa pagwawasto ng drift. Gumagana ang mga IMU sa pamamagitan ng pagsukat ng pagpabilis sa bawat axis at pagkatapos ay kinakalkula ang pag-aalis mula sa pagsukat na iyon. Kapag agresibo ang pag-vibrate ng mga IMU, hal. B. Kung naka-mount ang mga ito sa isang makatotohanang nagpaputok ng sandata, hindi sila maaaring sundin nang malapit. Iyon ay isang problema.

Dahil hindi kami dalubhasa sa panginginig ng boses, gumawa kami ng ilang mga pagtatangka upang malutas ang problema ngunit hindi gaanong nag-unlad. Napagpasyahan namin pagkatapos na magpadala ng isang post sa reddit kay r / Vive. Nakatulong ang tugon ng pamayanan. Nag-ayos kami ng ilang simpleng mga bagay na hindi namin napansin, tulad ng tracker na napakalayo sa riles. Nagulat kami, nakipag-ugnay ang HTC sa proyekto at nagpakita ng interes sa sinusubukan naming gawin. Mayroon silang isang beta na bersyon ng Vive Tracker firmware na maaaring makatulong na lumikha ng isang mababang pass filter para sa IMU na ibinigay nila sa amin.

Grap ng normal na input kumpara sa pag-input pagkatapos gumamit ng isang mababang pass filter

Maaaring mai-configure ang low-pass filter sa pamamagitan ng interface ng USB-HID. Nagawa naming magpadala ng mga ulat ng 0xB3 na nagpapadala ng pangunahing impormasyon tungkol sa ginagamit na aparato, pati na rin ang mababang-pass na pagsasaayos mula sa isang MacBook sa tracker, at may tamang mga setting upang sapat na mabawasan ang mga panginginig. Ang susunod na hakbang ay ang pagpapadala ng ulat sa pagganap, na magpapahintulot sa amin na magpadala ng mga pagbabago sa mga setting pati na rin ang kontrol ng mga aparato na HID mula sa isang Raspberry Pi sa tracker dahil kailangan namin ng isang bagay na maaaring magkasya sa kartutso ng baril kasama nito hindi makita ng gumagamit ang mga kable.

Mababang pass filter

Ito ang mga hakbang upang mai-set up ang Raspberry Pi para sa ganitong uri ng proyekto

  • I-install ang Raspberry sa Raspberry Pi
  • I-update ang bersyon ng Pi ng "Node.js"
  • I-install ang library na "node-hid" sa iyong proyekto para sa mga tiyak na tagubilin
  • Sa udev, magdagdag ng isang file na pinangalanang "60-HTC-Vive-perms.rules" kasama ang linyang ito
KERNEL == "hidraw *", SUBSYSTEM == "hidraw", ATTRS {idVendor} == "28de", ATTRS {idProduct} == "2022", TAG + = "uaccess"

Ang isang potensyal na problema ay ang maling halaga ng index ay ginagamit ng node-hid. Sa kasong ito ginagamit ang index upang makilala ang interface o upang maipadala ang ulat. Narito ang isang bagay upang pamilyarin ang iyong sarili sa mga kahilingan sa USB. Hindi mo maaaring tukuyin ang interface na may "Node-Hid". Sa kasamaang palad, ang file na "show-device.js" na kasama ng library na "node-hid" at ipinapakita ang lahat ng mga konektadong HID device ay may iba't ibang mga landas para sa bawat interface.

Gamitin ang file ng show-device.js na kasama ng node-hid library. Mahahanap mo ang landas na gagamitin sa iyong code kung sakaling mukhang iba ito

Kung mayroon kang iba pang mga problema sa script, ang 'usbmon' ay kasama ng Raspbian at pinapayagan kang tingnan ang anumang mga kahilingan sa USB na ginagawa. Narito ang isang kapaki-pakinabang na link na maaari mong gamitin upang maunawaan ang mga kinakailangang ito. (Nagsisimula sa pahina 15)

Konklusyon

Ang paggamit ng baril bilang isang VR controller ay hindi madali. Ang mga pag-vibrate mula sa shot ng baril ay sapat na malakas upang makagambala sa kakayahan ng IMU na tumpak na subaybayan ang sarili nito. Gamit ang low pass filter ng tracker at isang built-in na Raspberry Pi, nagawa naming malutas ang problemang ito nang hindi nakakaapekto sa pagsubaybay o sa puwersang nag-vibrate ng baril.

Salamat sa pagbabasa @ cohagan154