Echte Waffen als Controller: Wie man alles in VR bringt

Ich bin Christopher O’Hagan, Softwareentwickler bei @KainosSoftware und arbeite in der Abteilung für angewandte Innovation. Konzentration auf immersive Technologien. In diesem Blog geht es darum, wie wir kürzlich ein fast vollständig funktionsfähiges Gewehr in einen Virtual-Reality-Controller verwandelt haben und wie wir die damit verbundenen Probleme bewältigt haben.

Wir wurden kürzlich von einem kanadischen Kunden angesprochen, der Hilfe beim Aufbau eines realistischen Shooters als Attraktion für seine Spielhalle suchte. Dies ist Teil eines wachsenden Trends, den wir beobachtet haben, als immersive Technologien wie VR für Unterhaltungsunternehmen vor Ort wie Fluchträume und Achterbahnen eingesetzt werden. Die Ausrüstung und das Setup können zwar teuer sein, sind aber aufgrund der hohen Besucherzahlen und der neuartigen Umgebungen, die diese Unternehmen bieten, rentabel. Ein gutes Beispiel für Unterhaltung vor Ort ist der virtuelle Paintball, den Unternehmen wie "The Void" gelungen sind.

Unsere größte Herausforderung für den immersiven Schützen, bei dem wir geholfen haben, bestand darin, eine echte Schusswaffe zu bauen und zu benutzen… oder zumindest etwas, das aussah und sich anfühlte wie eine solche.

Den Controller bekommen

Ursprünglich hielten wir die Beschaffung eines Controllers für schwierig. Wir haben uns an einen lokalen Lieferanten für Softwaffen, Gear of War, gewandt. Unsere Anforderungen waren:

  • Ein luftweiches Gewehr, das aussah, sich anfühlte und beschwert war wie ein echtes Gewehr
  • Eine Waffe, die, wenn sie abgefeuert wird, einen realistischen Rückstoß erzeugt
  • Ein Trigger und eine Sicherheit, die so verdrahtet wurden, dass wir sie für die Eingaben unserer Simulation verwenden konnten

Wir dachten, dies würde viel fordern, waren aber überrascht, dass dies für sie normal schien. Sie haben eine Menge Requisiten für TV und Filme gemacht und hatten deshalb seltsamere Anfragen erhalten. Wir haben dann einen montierten Vive-Tracker verwendet, um die Waffe in VR zu verfolgen.

Einrichten des Controllers

Hier haben wir unser Hauptproblem, die Vibrationen, erlebt: Das Problem wurde durch den realistischen Rückstoß unserer Waffe verursacht. Da der Vive Tracker IMUs (Inertial Movement Units) zur Verfolgung bei einer hohen Frequenz und das Vive Lighthouse-System zur Verfolgung bei einer vergleichsweise niedrigeren Frequenz und zur Driftkorrektur verwendet. IMUs arbeiten, indem sie die Beschleunigung in jeder Achse messen und dann die Verschiebung aus dieser Messung berechnen. Wenn IMUs aggressiv vibrieren, z. B. wenn sie an einer realistisch schießenden Waffe montiert sind, können sie nicht genau verfolgen. Das war ein Problem.

Da wir keine Experten für Vibrationen sind, haben wir einige Versuche unternommen, um das Problem zu lösen, aber keine großen Fortschritte erzielt. Wir haben uns dann entschlossen, einen reddit-Post an r / Vive zu schicken. Die Reaktion der Community war hilfreich. Wir haben einige einfache Dinge korrigiert, die wir übersehen haben, wie zum Beispiel, dass der Tracker zu weit oben auf der Schiene ist. Zu unserer Überraschung meldete sich HTC über das Projekt und zeigte Interesse an dem, was wir versuchten. Sie hatten eine Beta-Version der Vive Tracker-Firmware, die helfen konnte, einen Tiefpassfilter für die IMU, den sie uns gaben.

Grafik des normalen Eingangs im Vergleich zum Eingang nach Verwendung eines Tiefpassfilters

Der Tiefpassfilter kann über die USB-HID-Schnittstelle konfiguriert werden. Wir konnten 0xB3-Berichte senden, die grundlegende Informationen über das verwendete Gerät sowie die Tiefpasskonfiguration von einem MacBook an den Tracker senden und die richtigen Einstellungen aufweisen, um die Vibrationen ausreichend zu dämpfen. Der nächste Schritt war das Senden des Funktionsberichts, der es uns ermöglicht, Änderungen an Einstellungen sowie die Steuerung von HID-Geräten von einem Himbeer-Pi an den Tracker zu übermitteln, da wir etwas benötigten, das in die Patrone der Waffe passen könnte, damit der Benutzer es nicht könnte siehe die Verkabelung.

Tiefpassfilter

Dies sind die Schritte, um den Raspberry Pi für diese Art von Projekt einzurichten

  • Installieren Sie Himbeer auf dem Himbeer-Pi
  • Pi-Version von "Node.js" aktualisieren
  • Installieren Sie die Bibliothek "node-hid" in Ihrem Projekt, um spezifische Anweisungen zu erhalten
  • Fügen Sie in udev eine Datei mit dem Namen "60-HTC-Vive-perms.rules" mit dieser Zeile hinzu
KERNEL == "hidraw *", SUBSYSTEM == "hidraw", ATTRS {idVendor} == "28de", ATTRS {idProduct} == "2022", TAG + = "uaccess"

Ein mögliches Problem besteht darin, dass der falsche Indexwert von node-hid verwendet wird. In diesem Fall wird der Index zum Angeben der Schnittstelle oder zum Senden des Berichts verwendet. Hier ist etwas, um sich mit USB-Anfragen vertraut zu machen. Mit "Node-Hid" können Sie die Schnittstelle nicht angeben. Glücklicherweise hatte die Datei "show-devices.js", die mit der Bibliothek "node-hid" geliefert wurde und alle angeschlossenen HID-Geräte ausgibt, unterschiedliche Pfade für jede Schnittstelle.

Verwenden Sie die Datei show-devices.js, die mit der Bibliothek node-hid geliefert wird. Sie können den im Code zu verwendenden Pfad finden, falls er anders aussieht

Wenn Sie andere Probleme mit dem Skript haben, wird ‘usbmon’ mit Raspbian geliefert und ermöglicht Ihnen, alle USB-Anforderungen anzuzeigen, die gerade gestellt werden. Hier ist ein nützlicher Link, mit dem Sie diese Anforderungen entschlüsseln können. (Beginnt ab Seite 15)

Fazit

Die Verwendung einer Waffe als VR-Controller war keineswegs einfach. Die Vibrationen des Schusses der Waffe sind stark genug, um die Fähigkeit der IMU zu stören, sich selbst genau zu verfolgen. Mit dem Tiefpassfilter des Trackers und einem integrierten Himbeer-Pi konnten wir dieses Problem lösen, ohne die Nachführung oder die Kraft, mit der die Waffe vibriert, zu beeinträchtigen.

Danke fürs Lesen
@ cohagan154