Πραγματικά όπλα ως ελεγκτές: Πώς να φέρετε οτιδήποτε σε VR

Είμαι ο Christopher O'Hagan, μηχανικός λογισμικού στο @ KainosSoftware και εργάζομαι στο τμήμα Applied Innovation. Εστιάζοντας σε τεχνολογίες βυθιζόμενες. Αυτό το ιστολόγιο είναι σχετικά με το πώς πρόσφατα ενεργοποιήσαμε ένα όπλο που λειτουργούσε σχεδόν εντελώς σε ελεγκτή Εικονικής Πραγματικότητας και πώς ξεπεράσαμε τα ζητήματα που ήρθαν μαζί του.

Πρόσφατα προσεγγίσαμε ένας καναδός πελάτης που αναζητούσε βοήθεια για την οικοδόμηση ενός ρεαλιστικού σκοπευτή ως πόλο έλξης για τη στοά του. Αυτό είναι ένα κομμάτι μιας αυξανόμενης τάσης που παρατηρήσαμε όπου η εμβληματική τεχνολογία όπως το VR χρησιμοποιείται για επιχειρήσεις ψυχαγωγίας εντός τοποθεσίας όπως αίθουσες διαφυγής και κυλιόμενες σκάλες. Ενώ ο εξοπλισμός και η εγκατάσταση μπορεί να είναι δαπανηρή, είναι βιώσιμη λόγω των υψηλών περιθωρίων και των καινοτόμων περιβαλλόντων που προσφέρονται από αυτές τις επιχειρήσεις. Ένα εξαιρετικό παράδειγμα διασκέδασης στο χώρο είναι το εικονικό paintball το οποίο οι επιχειρήσεις, όπως το The Void, κατάφεραν να κάνουν.

Η πρωταρχική μας πρόκληση για τον εντυπωσιακό σκοπευτή με τον οποίο βοηθούσαμε ήταν να κατασκευάσουμε και να χρησιμοποιήσουμε ένα πραγματικό όπλο ... ή τουλάχιστον κάτι που φαινόταν και ένιωθε σαν ένα.

Λήψη του ελεγκτή

Αρχικά πιστεύαμε ότι η προμήθεια ενός ελεγκτή θα ήταν δύσκολη. Έχουμε φτάσει σε έναν τοπικό προμηθευτή αεροβόλων όπλων, Gear of War. Οι απαιτήσεις μας ήταν:

  • Ένα ρεπλίκα αερόφερτο τουφέκι που κοίταξε, αισθάνθηκε και ζυγίστηκε σαν ένα πραγματικό τουφέκι
  • Ένα πυροβόλο όπλο που, όταν πυροβόλησε, θα παράγει ρεαλιστική ανάκαμψη
  • Μια σκανδάλη και ασφάλεια που ήταν συνδεδεμένα έτσι ώστε να μπορούμε να τα χρησιμοποιήσουμε για εισόδους της προσομοίωσής μας

Θεωρήσαμε ότι αυτό θα ζητούσε πολλά αλλά ήταν έκπληκτος από το γεγονός ότι αυτό φαινόταν φυσιολογικό γι 'αυτούς. Έχουν κάνει πολλά στηρίγματα για την τηλεόραση και τις ταινίες έτσι είχαν λάβει πιο περίεργα αιτήματα. Χρησιμοποιήσαμε στη συνέχεια ένα συναρμολογημένο tracker Vive για να παρακολουθήσουμε το όπλο στο VR.

Ρύθμιση του ελεγκτή

Εδώ βιώσαμε το κύριο θέμα μας, τις δονήσεις: Το ζήτημα προκλήθηκε από την ρεαλιστική ανάκρουση του όπλου μας. Δεδομένου ότι το Vive Tracker χρησιμοποιεί IMUs (μονάδες αδρανειακής κίνησης) για την παρακολούθηση σε υψηλή συχνότητα και το σύστημα Vive Light για την παρακολούθηση σε σχετικά χαμηλή συχνότητα και για τη διόρθωση μετατόπισης. Τα IMU λειτουργούν μετρώντας την επιτάχυνση σε κάθε άξονα και στη συνέχεια υπολογίζοντας την μετατόπιση από αυτή τη μέτρηση. Όταν τα IMU επιδεινώνουν επιθετικά, όπως όταν τοποθετούνται σε ένα ρεαλιστικό όπλο εκτόξευσης, δεν είναι σε θέση να παρακολουθούν με ακρίβεια. Αυτό ήταν ένα πρόβλημα.

Καθώς δεν είμαστε ειδικοί σε δόνηση, κάναμε κάποιες απόπειρες επίλυσης του προβλήματος, αλλά δεν σημειώσαμε μεγάλη πρόοδο. Στη συνέχεια αποφασίσαμε να κάνουμε μια reddit θέση στο r / Vive. Η ανταπόκριση της κοινότητας ήταν χρήσιμη, διορθώνοντας μερικά απλά πράγματα που χάσαμε, όπως ο ιχνηλάτης που ήταν πολύ μακριά πάνω από το σιδηρόδρομο. Προς έκπληξή μας, η HTC μας έφερε σε επαφή με το έργο που δείχνει ενδιαφέρον για αυτό που προσπαθούμε να κάνουμε. Είχαν μια beta έκδοση του firmware Vive Tracker που θα μπορούσε να βοηθήσει, ένα φίλτρο χαμηλής διέλευσης για το IMU, το οποίο μας έδωσαν.

Γράφημα κανονικής εισαγωγής έναντι εισαγωγής μετά τη χρήση φίλτρου χαμηλής διέλευσης

Το φίλτρο χαμηλής διέλευσης μπορεί να διαμορφωθεί μέσω της διασύνδεσης USB HID. Μπορέσαμε να στείλουμε αναφορές '0xB3', οι οποίες στέλνουν βασικές πληροφορίες σχετικά με τη συσκευή που χρησιμοποιείται καθώς και τη διαμόρφωση χαμηλής διέλευσης, από ένα MacBook στο Tracker με τις σωστές ρυθμίσεις για επαρκή μείωση των κραδασμών. Το επόμενο βήμα ήταν να στείλουμε την αναφορά χαρακτηριστικών, η οποία μας επιτρέπει να επικοινωνούμε με τις αλλαγές των ρυθμίσεων καθώς και με τις συσκευές HID ελέγχου, στο Tracker από το pi, καθώς χρειαζόμασταν κάτι που να χωράει μέσα στο φυσίγγιο του πυροβόλου, δείτε την καλωδίωση.

Φίλτρο χαμηλής διέλευσης

Αυτά είναι τα βήματα για τη δημιουργία του Raspberry Pi για αυτό το είδος έργου

  • Εγκαταστήστε raspbian στο pi με βατόμουρο
  • Ενημέρωση της έκδοσης pi του 'Node.js'
  • Εγκαταστήστε τη βιβλιοθήκη "node-hid" στο έργο σας, για συγκεκριμένες οδηγίες για να το κάνετε αυτό στο pi εξετάστε εδώ
  • Προσθέστε ένα αρχείο στο udev που ονομάζεται `60-HTC-Vive-perms.rules` με αυτή τη γραμμή σε αυτό
KERNEL == "hidraw *", SUBSYSTEM == "hidraw", ATTRS {idVendor} == "28de", ATTRS {idProduct} == "2022", TAG +

Ένα ζήτημα που μπορεί να έχετε είναι ότι η λάθος τιμή wIndex χρησιμοποιείται από το node-hid, στην περίπτωση αυτή το wIndex χρησιμοποιείται για τον προσδιορισμό της διασύνδεσης ή όπου αποστέλλεται η αναφορά. Εδώ είναι κάτι για να βοηθήσετε το κεφάλι σας γύρω από τα αιτήματα USB. Το 'Node-hid' δεν σας επιτρέπει να καθορίσετε τη διεπαφή. Ευτυχώς, όταν κοίταξα πίσω στο 'show-devices.js', που έρχεται με τη βιβλιοθήκη 'node-hid' και εξάγει όλες τις συνδεδεμένες συσκευές HID, είχε διαφορετικές διαδρομές για κάθε διεπαφή.

Χρησιμοποιώντας το show-devices.js, το οποίο συνοδεύει τη βιβλιοθήκη node-hid. Μπορείτε να βρείτε ποια διαδρομή θα χρησιμοποιηθεί στον κώδικα σε περίπτωση που εμφανίζεται διαφορετική

Αν έχετε άλλα προβλήματα με το σενάριο, το 'usbmon' έρχεται με Raspbian και σας επιτρέπει να δείτε όλα τα αιτήματα USB που γίνονται. Ακολουθεί ένας χρήσιμος σύνδεσμος για να σας βοηθήσει να αποκωδικοποιήσετε αυτά τα αιτήματα (Ξεκινά στη σελίδα 15)

συμπέρασμα

Χρησιμοποιώντας ένα όπλο ως ελεγκτή VR δεν ήταν καθόλου εύκολο. Οι δονήσεις της πυροδότησης του πυροβόλου όπλου είναι αρκετά ισχυρές ώστε να διαταράξουν την ικανότητα των IMUs να εντοπίσουν με ακρίβεια τον εαυτό τους. Χρησιμοποιώντας το χαρακτηριστικό φίλτρου χαμηλής διέλευσης του Tracker και ένα ενσωματωμένο πιρούνι βατόμουρο, καταφέραμε να ξεπεράσουμε αυτό το ζήτημα χωρίς να παραβλάψουμε την παρακολούθηση ή τη δύναμη με την οποία δονείται το όπλο.

Ευχαριστώ για την ανάγνωση
@ cohagan154