Kontrolörler Olarak Gerçek Silahlar: Her şeyi VR'ye Getirmek

Ben KainosSoftware'de yazılım mühendisi olan Christopher O’Hagan ve Applied Innovation bölümünde çalışıyorum. Sürükleyici teknolojilere odaklanmak. Bu blog, son zamanlarda neredeyse tamamen işleyen bir tüfeği Sanal Gerçeklik denetleyicisine nasıl dönüştürdüğümüz ve onunla birlikte gelen sorunları nasıl aştığımızla ilgili.

Geçtiğimiz günlerde çarşıları için cazibe merkezi olarak gerçekçi bir tetikçi inşa etmek için yardım arayan Kanadalı bir müşteri tarafından yaklaştık. Bu, VR gibi sürükleyici teknolojinin, kaçış odaları ve roller coaster gibi yerinde eğlence işletmeleri için kullanıldığı yerlerde, gözlemiş olduğumuz trendin bir parçası. Ekipman ve kurulum pahalı olabilirken, bu işletmeler tarafından sunulan yüksek ayak sesleri ve yeni ortamlar nedeniyle uygulanabilir. Yerinde eğlenceye harika bir örnek, “Void” gibi şirketlerin başarmakta başarılı olduğu sanal paintball'dur.

Çarpıcı atıcı için yardım ettiğimiz en büyük zorluk, gerçek bir ateşli silah inşa etmek ya da kullanmak ya da en azından öyle görünen ve hissettiren bir şeydi.

Denetleyiciyi Almak

Başlangıçta, bir kontrol cihazını tedarik etmenin zor olacağını düşündük. Yerel bir hava yumuşak silah tedarikçisi, Gear of War'a ulaştık. İhtiyaçlarımız şunlardı:

  • Gerçek bir tüfek gibi görünen, hissedilen ve ağırlıklı olan bir kopya havalı tüfek
  • Ateş edildiğinde gerçekçi geri tepme yaratabilecek bir silah
  • Onları simülasyonumuzun girdileri için kullanabilmemiz için kablolanmış bir tetikleyici ve güvenlik

Bunun çok soru soracağını düşündük, ancak bunun normal göründüğü için şaşırdık. TV ve Filmler için çok fazla destek yaptılar, bu yüzden tuhaf talepler aldılar. Daha sonra silahı VR'de izlemek için monte edilmiş bir Vive izleyici kullandık.

Denetleyiciyi Ayarlama

Asıl meselemizi bu noktada yaşadık: titreşimler: Konu, silahımızın gerçekçi geri tepmesinden kaynaklandı. Vive Tracker, yüksek frekansta takip için IMU'ları (Ataletsel hareket birimleri) ve nispeten daha düşük bir frekansta takip etmek ve sapma düzeltmesi için Vive deniz feneri sistemini kullanmaktadır. IMU'lar her eksendeki ivmeyi ölçerek, o ölçümden yer değiştirmeyi hesaplayarak çalışır. IMU'lar agresif bir şekilde titreştiğinde, örneğin gerçekçi olarak ateş eden bir silaha monte edildiklerinde, doğru bir şekilde takip edemezler. Bu bir problemdi.

Titreşim konusunda uzman olmadığımız için sorunu çözmek için bazı girişimlerde bulunduk, ancak fazla ilerleme kaydetmedik. Daha sonra r / Vive'e bir reddit post yapmaya karar verdik. Topluluğun tepkisi yardımcı oldu, izleyicinin raydan çok uzak olması gibi kaçırdığımız bazı basit şeyleri düzeltti. Sürprizimiz için HTC, yapmaya çalıştığımız şeye ilgi gösteren proje hakkında bizimle irtibata geçti. Bize verebilecekleri IMU için düşük geçiş filtresi olan Vive Tracker ürün yazılımının beta sürümüne sahiplerdi.

Düşük geçişli bir filtre kullanıldıktan sonra normal girişe karşı giriş grafiği

Düşük geçiş filtresi, USB HID arayüzü aracılığıyla yapılandırılabilir. Titreşimleri yeterince azaltmak için doğru ayarları olan MacBook'tan İzleyici'ye kullanılan cihaz ve düşük geçişli konfigürasyon hakkında temel bilgiler gönderen “0xB3” raporları gönderebildik. Bir sonraki adım, HID cihazlarının yanı sıra ayarlardaki değişiklikleri de iletmemize izin veren özellik raporunu, izleyiciye silahın kartuşunun içine sığabilecek bir şeye ihtiyacımız olduğu için ahududu pi'den göndermemizi sağlamaktı. kabloları gör.

Alçak geçiş filtresi

Raspberry Pi'yi bu tür bir proje için kurma adımları bunlar

  • Ahududu pi üzerine ahududu yükleyin
  • Pi’nin ‘Node.js’ sürümünü güncelleyin
  • Pi n buraya bakmak için özel talimatlar için 'node-hid' kütüphanesini projenize yerleştirin.
  • Udev'e '60-HTC-Vive-perms.rules` adlı bir dosya ekleyin.
KERNEL == "hidraw *", SUBSYSTEM == "hidraw", ATTRS {idVendor} == "28de", ATTRS {idProduct} == "2022", TAG + = "uaccess"

Sahip olabileceğiniz bir sorun, yanlış wIndex değerinin node-hid tarafından kullanılmakta olduğu, bu durumda wIndex'in arayüzü veya raporun nereye gönderileceğini belirlemek için kullanılmasıdır. İşte kafanızı USB isteklerinde dolaştırmanıza yardımcı olacak bir şey ‘Node-hid’, arabirimi belirlemenize izin vermiyor. Neyse ki ‘node-hid’ kütüphanesiyle birlikte gelen ‘show-devices.js’ e baktığımda ve bağlı tüm HID aygıtlarını çıkaran her arayüz için farklı yolları vardı.

Node-hid kütüphanesi ile birlikte verilen show-devices.js dosyasını kullanma. Farklı görünmesi durumunda kodda hangi yolu kullanabileceğinizi bulabilirsiniz.

Komut dosyasında başka sorunlarınız varsa, 'usbmon' Raspbian ile birlikte gelir ve yapılan tüm usb isteklerini görüntülemenizi sağlar. İşte bu istekleri çözmenize yardımcı olacak faydalı bir bağlantı. (Sayfa 15'te başlar)

Sonuç

Silahı VR kontrol cihazı olarak kullanmak hiç kolay olmadı. Silah ateşlemesinin titreşimleri, IMU'ların kendisini doğru bir şekilde izleme yeteneğini bozacak kadar güçlüdür. Tracker’ın düşük geçişli filtre özelliğini ve yerleşik ahududu pi'yi kullanarak, izleme veya silahın titreştiği güçten ödün vermeden bu sorunun üstesinden gelebildik.

Okuduğunuz için teşekkürler
@ cohagan154