De vrais pistolets en tant que contrôleurs: comment intégrer quelque chose en réalité virtuelle

Je suis Christopher O’Hagan, ingénieur logiciel chez @KainosSoftware et je travaille au service d’innovation appliquée. Se concentrer sur les technologies immersives. Ce blog explique comment nous avons récemment transformé un fusil presque totalement fonctionnel en contrôleur de réalité virtuelle et surmonté les problèmes qui en découlaient.

Un client canadien nous a récemment demandé de l’aider à construire un jeu de tir réaliste pour attirer leur arcade. Cela fait partie d'une tendance croissante que nous avons observée où la technologie immersive telle que la réalité virtuelle est utilisée pour les activités de divertissement sur site telles que les salles d'évasion et les montagnes russes. Bien que l'équipement et la configuration puissent être coûteux, ils sont viables en raison de la fréquentation élevée et des nouveaux environnements proposés par ces entreprises. Le paintball virtuel, auquel des entreprises comme «The Void» ont réussi, est un bon exemple de divertissement sur site.

Notre principal défi pour le tireur immersif que nous aidions consistait à construire et à utiliser une arme à feu… ou du moins quelque chose qui en avait l'air et qui en avait l'air.

Obtenir le contrôleur

À l'origine, nous pensions que faire appel à un contrôleur serait difficile. Nous avons contacté un fournisseur local de pistolets à air comprimé, Gear of War. Nos exigences étaient:

  • Une réplique d'un fusil à air doux qui ressemblait à un vrai fusil
  • Une arme à feu qui, une fois tirée, produirait un recul réaliste
  • Un déclencheur et une sécurité qui ont été câblés afin que nous puissions les utiliser pour les entrées de notre simulation

Nous pensions que cela demanderait beaucoup, mais nous avons été surpris par le fait que cela leur semblait normal. Ils ont fait beaucoup d'accessoires pour la télévision et Films ont donc reçu des demandes plus bizarres. Nous avons ensuite utilisé un dispositif de suivi Vive monté pour suivre le pistolet en VR.

Mise en place du contrôleur

C’est là que nous avons expérimenté notre principal problème, les vibrations: le problème est dû au recul réaliste de notre arme. Depuis, le Vive Tracker utilise des unités de mouvement inertiel (IMU) pour suivre à haute fréquence, et le système de phare de Vive pour effectuer un suivi à une fréquence comparativement inférieure et pour la correction de la dérive. Les UMI fonctionnent en mesurant l'accélération dans chaque axe, puis en calculant le déplacement à partir de cette mesure. Lorsque des UMI vibrent de manière agressive, par exemple lorsqu'elles sont montées sur une arme de tir réaliste, elles ne peuvent pas suivre avec précision. C'était un problème.

Comme nous ne sommes pas des experts en vibrations, nous avons tenté à plusieurs reprises de résoudre le problème, mais nous n’avons pas beaucoup progressé. Nous avons ensuite décidé de faire un post reddit sur r / Vive. La réponse de la communauté a été utile, corrigeant des problèmes simples que nous avons oubliés, tels que le traqueur étant trop éloigné du rail. À notre grande surprise, HTC nous a contactés à propos du projet, montrant de l'intérêt pour ce que nous essayions de faire. Ils avaient une version bêta du firmware Vive Tracker qui pourrait aider, un filtre passe-bas pour l'IMU, qu'ils nous ont donné.

Graphique entrée normale ou entrée après l'utilisation d'un filtre passe-bas

Le filtre passe-bas peut être configuré via l'interface USB HID. Nous avons pu envoyer des rapports «0xB3», qui transmettent des informations de base sur le périphérique utilisé ainsi que sur la configuration passe-bas, d’un MacBook au Tracker avec les paramètres appropriés pour amortir suffisamment les vibrations. L'étape suivante consistait à envoyer le rapport de fonctionnalités, qui nous permet de communiquer les modifications de paramètres ainsi que de contrôler les périphériques HID, au Tracker à partir d'un framboise pi, car nous avions besoin de quelque chose qui puisse tenir dans la cartouche du pistolet afin que l'utilisateur ne puisse pas voir le câblage.

Filtre passe bas

Ce sont les étapes pour configurer le Raspberry Pi pour ce type de projet

  • Installez Raspbian sur le Raspberry Pi
  • Mettre à jour la version de ‘Node.js’ de pi
  • Installez la bibliothèque ‘node-hid’ dans votre projet, pour obtenir des instructions spécifiques sur le pi, regardez ici
  • Ajouter un fichier dans udev appelé `60-HTC-Vive-perms.rules` avec cette ligne
KERNEL == "hidraw *", SOUS-SYSTÈME == "hidraw", ATTRS {idVendor} == "28de", ATTRS {idProduct} == "2022", TAG + = "uaccess"

Un problème que vous pouvez avoir est que la valeur wIndex incorrecte est utilisée par node-hid, dans ce cas, wIndex est utilisé pour spécifier l'interface ou l'emplacement d'envoi du rapport. Voici quelque chose pour vous aider à comprendre les requêtes USB. ‘Node-hid’ ne vous permet pas de spécifier l’interface. Heureusement, lorsque j’ai jeté un regard nouveau sur ‘show-devices.js’, qui vient avec la bibliothèque ‘node-hid’ et affiche tous les périphériques HID connectés, il comportait des chemins différents pour chaque interface.

Utilisation de show-devices.js, fourni avec la bibliothèque node-hid. Vous pouvez trouver quel chemin utiliser dans le code au cas où il serait différent

Si vous rencontrez des problèmes avec le script, ‘usbmon’ est fourni avec Raspbian et vous permet d’afficher toutes les demandes USB en cours. Voici un lien utile pour vous aider à décoder ces demandes (commence à la page 15).

Conclusion

L'utilisation d'un pistolet comme contrôleur VR n'a pas été facile. Les vibrations de la mitraillette sont suffisamment puissantes pour perturber la capacité de l’UIM à se suivre avec précision. Grâce à la fonction de filtre passe-bas du Tracker et à un filtre framboise intégré, nous avons pu surmonter ce problème sans compromettre le suivi ou la force à laquelle le pistolet vibre.

Merci d'avoir lu
@ cohagan154