Իրական զենքեր ՝ որպես վերահսկիչներ. Ինչպես ամեն ինչ գտնել VR- ում

Ես Քրիստոֆեր Օ'Հագան եմ, @KainosSoftware- ի ծրագրակազմի ինժեներ և աշխատում եմ կիրառական նորարարության բաժնում: Կենտրոնացեք սուզվող տեխնոլոգիաների վրա: Այս բլոգը պատմում է այն մասին, թե ինչպես մենք վերջերս գրեթե լիարժեք ֆունկցիոնալ հրացանը վերածեցինք վիրտուալ իրականության վերահսկիչի, և ինչպես լուծեցինք դրա հետ կապված խնդիրները:

Վերջերս մեզ դիմեց մի կանադացի հաճախորդ, ով օգնություն էր փնտրում իրատեսական հրաձիգ ստեղծելու հարցում `որպես իրենց արկադայի գրավչություն: Սա աճող տենդենցի մի մաս է, որը մենք տեսել ենք, քանի որ VR- ի նման սուզիչ տեխնոլոգիաներն օգտագործվում են տեղում ժամանցային բիզնեսի համար, ինչպիսիք են փախուստի սենյակները և տրանսպորտային փոխադրիչները: Սարքավորումներն ու տեղադրումը, չնայած թանկ են, շահավետ են, քանի որ այս ընկերություններն առաջարկում են մեծ երթևեկություն և նոր միջավայր: Տեղում ժամանցի լավ օրինակ է վիրտուալ փեյնթբոլը, որը պատրաստվել է այնպիսի ընկերությունների կողմից, ինչպիսին է The Void- ը:

Մեր ամենամեծ մարտահրավերը այն սուզիչ հրաձիգի համար, որին մենք օգնում էինք, իսկական հրազեն կառուցելն ու օգտագործելն էր ... կամ գոնե մի բան, որը նման էր և զգացվում էր:

Ձեռք բերեք վերահսկիչը

Մենք ի սկզբանե կարծում էինք, որ վերահսկիչ ստանալը դժվար է: Մենք դիմեցինք փափուկ զենքի տեղական մատակարարին ՝ Gear of War: Մեր պահանջներն էին.

  • Օդային փափուկ հրացան, որը իսկական հրացանի պես նայում, զգում ու ծանրանում էր
  • Weaponենք, որը կրակելիս ստեղծում է իրատեսական նահանջ
  • Ձգանը և անվտանգությունը լարով այնպես, որ մենք կարողանանք օգտագործել դրանք մեր սիմուլյացիայի մուտքերի համար

Մենք կարծում էինք, որ սա շատ բան է խնդրելու համար, բայց զարմացանք, որ դա նրանց համար նորմալ էր թվում: Նրանք հեռուստատեսության և կինոնկարների համար շատ նյութեր էին պատրաստում, ուստի ավելի տարօրինակ խնդրանքներ ունեին: Դրանից հետո մենք օգտագործեցինք տեղադրված Vive հսկիչ ՝ ատրճանակը VR- ում հետևելու համար:

Կարգավորիչի տեղադրում

Հենց այստեղ մենք զգացինք մեր հիմնական խնդիրը ՝ թրթռումը. Խնդրի պատճառը մեր զենքի իրատեսական նահանջն էր: Քանի որ Vive Tracker- ը օգտագործում է IMU- ներ (Inertial Movement Units) բարձր հաճախականությամբ հետևելու համար, իսկ Vive Lighthouse համակարգը `համեմատաբար ավելի ցածր հաճախականությամբ հետևելու և դրեյֆի ուղղման համար: IMU- ն աշխատում է յուրաքանչյուր առանցքի արագացումը չափելու և այդ չափումից տեղաշարժը հաշվարկելու միջոցով: Երբ IMU- ները ագրեսիվորեն թրթռում են, օրինակ. Բ. Եթե դրանք տեղադրված են իրատեսականորեն կրակող զենքի վրա, նրանք չեն կարող ճշգրիտ հետևել: Դա խնդիր էր:

Քանի որ մենք թրթռման մասնագետ չենք, մենք խնդրի լուծման որոշ փորձեր ենք կատարել, բայց մեծ առաջընթաց չենք գրանցել: Դրանից հետո մենք որոշեցինք reddit գրառում ուղարկել r / Vive- ին: Համայնքի արձագանքը օգտակար է եղել: Մենք շտկեցինք մի քանի պարզ բան, որոնք մենք անտեսեցինք, օրինակ ՝ հետևողը շատ հեռու էր երկաթուղու վրա: Ի զարմանս մեզ, HTC- ը կապվեց նախագծի հետ և հետաքրքրություն ցուցաբերեց այն բանի նկատմամբ, թե ինչ ենք փորձում անել: Նրանք ունեին Vive Tracker որոնվածքի բետա տարբերակ, որը կարող է օգնել ստեղծել մեզ փոխանցված ցածր փոխանցման զտիչ:

Passածր անցման ֆիլտր օգտագործելուց հետո նորմալ մուտքի և մուտքի գծապատկերը

Passածր անցումային ֆիլտրը կարող է կազմաձեւվել USB-HID ինտերֆեյսի միջոցով: Մենք կարողացանք ուղարկել 0xB3 հաշվետվություններ, որոնք հիմնական տեղեկություններ են ուղարկում օգտագործվող սարքի, ինչպես նաև ցածր փոխանցման կազմաձևը MacBook- ից դեպի հետագծիչ և ունենալ ճիշտ պարամետրեր ՝ ցնցումները բավարար չափով թուլացնելու համար: Հաջորդ քայլը ֆունկցիոնալ զեկույցն ուղարկելն էր, որը թույլ կտա մեզ փոփոխություններ ուղարկել պարամետրերում, ինչպես նաև HID սարքերի կառավարումը Raspberry Pi- ից դեպի հետագծիչ, քանի որ մեզ անհրաժեշտ էր մի բան, որը կարող էր դրա մեջ տեղավորվել ատրճանակի պարկուճում: օգտվողը չկարողացավ տեսնել լարերը:

Passածր անցման ֆիլտր

Սրանք Raspberry Pi- ն այս տեսակի նախագծերի ստեղծման քայլերն են

  • Տեղադրեք ազնվամորի Raspberry Pi- ի վրա
  • Թարմացրեք «Node.js» - ի Pi տարբերակը
  • Տեղադրեք «հանգույցների թաքնված» գրադարանը ձեր նախագծում `հատուկ հրահանգների համար
  • Ուդեվում այս տողով ավելացրեք «60-HTC-Vive-perms.rules» անունով ֆայլ
KERNEL == «hidraw *», SUBSYSTEM == «hidraw», ATTRS {idVendor} == «28de», ATTRS {idProduct} == «2022», TAG + = «uaccess»

Պոտենցիալ խնդիրն այն է, որ սխալ ինդեքսի արժեքն օգտագործվում է հանգույցների թաքցրած կողմից: Այս դեպքում ինդեքսն օգտագործվում է ինտերֆեյսը ճանաչելու կամ զեկույցը ուղարկելու համար: Ահա մի բան, որով դուք կկարողանաք ծանոթանալ USB հարցումների հետ: Դուք չեք կարող նշել «Node-Hid» - ի միջերեսը: Բարեբախտաբար, «show-devices.js» ֆայլը, որը եկել էր «հանգույցների թաքցրած» գրադարանի հետ, որը ցուցադրում է բոլոր կապակցված HID սարքերը, ուներ տարբեր ուղիներ յուրաքանչյուր ինտերֆեյսի համար:

Օգտագործեք show-devices.js ֆայլը, որն ուղեկցվում է հանգույցների թաքցրած գրադարանով: Օգտագործելու ուղին կարող եք գտնել ձեր կոդի մեջ, եթե այն այլ տեսք ունի

Եթե ​​սցենարի հետ կապված այլ խնդիրներ ունեք, «usbmon» - ը գալիս է Raspbian- ի հետ և թույլ է տալիս Ձեզ դիտել արված USB պահանջները: Ահա մի օգտակար հղում, որը կարող եք օգտագործել այս պահանջները վերծանելու համար: (Սկսվում է 15-րդ էջից)

Եզրակացություն

Ատրճանակ որպես VR հսկիչ օգտագործելը ոչ մի դեպքում հեշտ չէր: Հրացանի կրակոցից տատանումներն այնքան ուժեղ են, որ խանգարեն IMU- ին ինքն իրեն ճշգրիտ հետևելու հնարավորությանը: Օգտագործելով ռեկորդի ցածր անցումային ֆիլտրը և ներկառուցված Raspberry Pi- ն, մենք կարողացանք լուծել այս խնդիրը ՝ առանց ազդելու հետևելու կամ զենքի թրթռման ուժի վրա:

Շնորհակալություն @ cohagan154 կարդալու համար