Πίνακας περιεχομένων:

Ρομπότ Nao που μιμείται κινήσεις χρησιμοποιώντας το Kinect: 7 βήματα
Ρομπότ Nao που μιμείται κινήσεις χρησιμοποιώντας το Kinect: 7 βήματα

Βίντεο: Ρομπότ Nao που μιμείται κινήσεις χρησιμοποιώντας το Kinect: 7 βήματα

Βίντεο: Ρομπότ Nao που μιμείται κινήσεις χρησιμοποιώντας το Kinect: 7 βήματα
Βίντεο: AI και ρομποτική: Πώς οι μηχανές μιμούνται την ανθρώπινη συμπεριφορά 2024, Νοέμβριος
Anonim
Ρομπότ Nao που μιμείται κινήσεις χρησιμοποιώντας το Kinect
Ρομπότ Nao που μιμείται κινήσεις χρησιμοποιώντας το Kinect

Σε αυτό το διδακτικό θα σας εξηγήσω πώς αφήνουμε ένα ρομπότ Nao να μιμηθεί τις κινήσεις μας χρησιμοποιώντας έναν αισθητήρα kinect. Ο πραγματικός στόχος του έργου είναι ένας εκπαιδευτικός σκοπός: ένας δάσκαλος έχει την ικανότητα να καταγράφει ορισμένα σύνολα κινήσεων (π.χ. χορό) και μπορεί να χρησιμοποιήσει αυτές τις ηχογραφήσεις για να αφήσει τα παιδιά στην τάξη να μιμηθούν το ρομπότ. Περνώντας ολόκληρο αυτό το διδακτικό βήμα προς βήμα, θα πρέπει να είστε σε θέση να αναδημιουργήσετε πλήρως αυτό το έργο.

Αυτό είναι ένα έργο που σχετίζεται με το σχολείο (NMCT @ Howest, Kortrijk).

Βήμα 1: Βασικές γνώσεις

Για να αναδημιουργήσετε αυτό το έργο πρέπει να έχετε κάποιες βασικές γνώσεις:

- Βασικές γνώσεις python

- Βασικές γνώσεις C# (WPF)

- Βασικές γνώσεις τριγωνομετρίας

- Γνώση για το πώς να ρυθμίσετε το MQTT σε ένα βατόμουρο pi

Βήμα 2: Απόκτηση των απαραίτητων υλικών

Απαιτούμενα υλικά για αυτό το έργο:

- Raspberry Pi

- Kinect Sensor v1.8 (Xbox 360)

- Νάο ρομπότ ή παρθένο ρομπότ (Χορογράφος)

Βήμα 3: Πώς λειτουργεί

Image
Image
Πως δουλεύει
Πως δουλεύει

Ένας αισθητήρας kinect είναι συνδεδεμένος σε έναν υπολογιστή που εκτελεί την εφαρμογή WPF. Η εφαρμογή WPF στέλνει δεδομένα στην εφαρμογή Python (ρομπότ) χρησιμοποιώντας MQTT. Τα τοπικά αρχεία αποθηκεύονται εάν ο χρήστης το επιλέξει.

Λεπτομερής εξήγηση:

Πριν ξεκινήσουμε την εγγραφή, ο χρήστης πρέπει να εισαγάγει τη διεύθυνση IP του μεσίτη MQTT. Εκτός από αυτό, χρειαζόμαστε επίσης το θέμα στο οποίο θέλουμε να δημοσιεύσουμε τα δεδομένα. Αφού πατήσετε έναρξη, η εφαρμογή θα ελέγξει εάν θα μπορούσε να δημιουργηθεί σύνδεση με τον μεσίτη και θα μας δώσει ανατροφοδότηση. Δεν είναι δυνατός ο έλεγχος εάν υπάρχει θέμα, επομένως είστε πλήρως υπεύθυνοι για αυτό. Όταν και οι δύο είσοδοι είναι εντάξει, η εφαρμογή θα αρχίσει να στέλνει δεδομένα (συντεταγμένες x, y & z από κάθε άρθρωση) από το σκελετό που παρακολουθείται στο θέμα του μεσίτη MQTT.

Επειδή το ρομπότ συνδέεται με τον ίδιο μεσίτη MQTT και έχει εγγραφεί στο ίδιο θέμα (αυτό πρέπει να εισαχθεί και στην εφαρμογή python) η εφαρμογή python θα λάβει τώρα τα δεδομένα από την εφαρμογή WPF. Χρησιμοποιώντας τριγωνομετρία και αυτογραφικούς αλγόριθμους, μετατρέπουμε τις συντεταγμένες σε γωνίες και ακτίνια, τις οποίες χρησιμοποιούμε για να περιστρέψουμε τους κινητήρες μέσα στο ρομπότ σε πραγματικό χρόνο.

Όταν τελειώσει η εγγραφή, ο χρήστης πατά το κουμπί διακοπής. Τώρα ο χρήστης παίρνει ένα αναδυόμενο παράθυρο που ρωτά αν θέλει να αποθηκεύσει την εγγραφή. Όταν ο χρήστης χτυπήσει την ακύρωση, όλα επαναφέρονται (τα δεδομένα χάνονται) και μπορεί να ξεκινήσει μια νέα εγγραφή. Εάν ο χρήστης επιθυμεί να αποθηκεύσει την εγγραφή, θα πρέπει να εισαγάγει έναν τίτλο και να πατήσει 'αποθήκευση'. Όταν πατάτε "αποθήκευση" όλα τα δεδομένα που αποκτήθηκαν γράφονται σε ένα τοπικό αρχείο χρησιμοποιώντας την είσοδο τίτλου ως όνομα αρχείου. Το αρχείο προστίθεται επίσης στην προβολή λίστας στη δεξιά πλευρά της οθόνης. Με αυτόν τον τρόπο, αφού κάνετε διπλό κλικ στη νέα καταχώριση στην προβολή λίστας, το αρχείο διαβάζεται και αποστέλλεται στον μεσίτη MQTT. Κατά συνέπεια, το ρομπότ θα παίξει την εγγραφή.

Βήμα 4: Ρύθμιση του μεσίτη MQTT

Ρύθμιση του μεσίτη MQTT
Ρύθμιση του μεσίτη MQTT

Για την επικοινωνία μεταξύ του kinect (έργο WPF) και του ρομπότ (έργο Python) χρησιμοποιήσαμε MQTT. Το MQTT αποτελείται από έναν μεσίτη (ένας υπολογιστής linux στον οποίο λειτουργεί το λογισμικό mqtt (π.χ. Mosquitto)) και ένα θέμα στο οποίο οι πελάτες μπορούν να εγγραφούν (λαμβάνουν ένα μήνυμα από το θέμα) και δημοσιεύουν (δημοσιεύουν ένα μήνυμα σχετικά με το θέμα) Το

Για να ρυθμίσετε τον μεσίτη MQTT, απλώς κατεβάστε ολόκληρη την εικόνα της jessie. Αυτή είναι μια καθαρή εγκατάσταση για εσάς Raspberry Pi με έναν μεσίτη MQTT. Το θέμα είναι "/Sandro".

Βήμα 5: Εγκατάσταση του Kinect SDK V1.8

Για να λειτουργήσει το kinect στον υπολογιστή σας, πρέπει να εγκαταστήσετε το Microsoft Kinect SDK.

Μπορείτε να το κατεβάσετε εδώ:

www.microsoft.com/en-us/download/details.a…

Βήμα 6: Εγκατάσταση Python V2.7

Το ρομπότ λειτουργεί με το πλαίσιο NaoQi, αυτό το πλαίσιο είναι διαθέσιμο μόνο για python 2.7 (ΟΧΙ 3.x), οπότε ελέγξτε ποια έκδοση του python έχετε εγκαταστήσει.

Μπορείτε να κατεβάσετε το python 2.7 εδώ:

www.python.org/downloads/release/python-27…

Βήμα 7: Κωδικοποίηση

Κωδικοποίηση
Κωδικοποίηση
Κωδικοποίηση
Κωδικοποίηση
Κωδικοποίηση
Κωδικοποίηση

Github:

Σημειώσεις:

- Κωδικοποίηση με το kinect: πρώτα αναζητάτε το συνδεδεμένο kinect. Αφού το αποθηκεύσαμε μέσα σε μια ιδιότητα, ενεργοποιήσαμε τη ροή χρώματος και σκελετού στο kinect. Το Colorstream είναι το ζωντανό βίντεο, ενώ το skeletonstream σημαίνει ότι θα εμφανιστεί ένας σκελετός του προσώπου μπροστά από την κάμερα. Το Colorstream δεν είναι πραγματικά απαραίτητο για να λειτουργήσει αυτό το έργο, απλώς το ενεργοποιήσαμε επειδή το bitmapping του skeletonstream στο colorstream φαίνεται λείο!

- Στην πραγματικότητα είναι το skeletonstream που κάνει τη δουλειά. Η ενεργοποίηση του skeletonstream σημαίνει ότι ο σκελετός του ατόμου παρακολουθείται. Από αυτόν τον σκελετό λαμβάνετε κάθε είδους πληροφορίες, π.χ. προσανατολισμοί των οστών, κοινές πληροφορίες,… Το κλειδί για το έργο μας ήταν οι κοινές πληροφορίες. Χρησιμοποιώντας τις συντεταγμένες x-y & z κάθε μίας από τις αρθρώσεις του σκελετού, γνωρίζαμε ότι θα μπορούσαμε να κάνουμε το ρομπότ να κινηθεί. Έτσι, κάθε 0,8 δευτερόλεπτα (χρησιμοποιώντας ένα χρονόμετρο) δημοσιεύουμε τις συντεταγμένες x, y & z κάθε μιας από τις συνδέσεις στον μεσίτη mqtt.

- Δεδομένου ότι το έργο python έχει συνδρομή στον μεσίτη mqtt, μπορούμε τώρα να προσπελάσουμε τα δεδομένα μέσα σε αυτό το έργο. Μέσα σε κάθε ένωση του ρομπότ υπάρχουν δύο κινητήρες. Αυτοί οι κινητήρες δεν μπορούν απλώς να κατευθύνονται χρησιμοποιώντας τις συντεταγμένες x, y & z απευθείας. Έτσι, χρησιμοποιώντας τριγωνομετρία και κάποια κοινή λογική, μετατρέψαμε τις συντεταγμένες x, y & z των αρθρώσεων σε γωνίες που δεν είναι ευδιάκριτες σε ρομπότ.

Ουσιαστικά κάθε 0,8 δευτερόλεπτα το έργο WPF δημοσιεύει συντεταγμένες x, y & z για κάθε μία από τις αρθρώσεις. Κατά συνέπεια, μέσα στο έργο python αυτοί οι συντεταγμένοι μετατρέπονται σε γωνίες, οι οποίες στη συνέχεια αποστέλλονται στους αντίστοιχους κινητήρες του ρομπότ.

Συνιστάται: