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

Ρομποτικός έλεγχος χεριών με ΗΜΓ: 7 βήματα
Ρομποτικός έλεγχος χεριών με ΗΜΓ: 7 βήματα

Βίντεο: Ρομποτικός έλεγχος χεριών με ΗΜΓ: 7 βήματα

Βίντεο: Ρομποτικός έλεγχος χεριών με ΗΜΓ: 7 βήματα
Βίντεο: Εκπαιδευτική Ρομποτική Θεσσαλονίκη 2024, Ιούλιος
Anonim
Image
Image
Απόκτηση σήματος
Απόκτηση σήματος

Αυτό το έργο δείχνει τον έλεγχο του ρομποτικού χεριού (χρησιμοποιώντας χέρι ανοιχτής πηγής inMoov) με 3 συσκευές ανοίγματος πηγής uECG που χρησιμοποιούνται για τη μέτρηση και επεξεργασία μυϊκής δραστηριότητας (ηλεκτρομυογράφημα, ΗΜΓ). Η ομάδα μας έχει μια μεγάλη ιστορία με τα χέρια και τον έλεγχό τους, και αυτό είναι ένα καλό βήμα προς τη σωστή κατεύθυνση:)

Προμήθειες

3x συσκευές uECG1x Arduino (χρησιμοποιώ το Nano αλλά οι περισσότεροι θα λειτουργούσαν) 1x nRF24 module (οποιοδήποτε γενικό θα έκανε) 1x PCA9685 ή παρόμοιο σερβο οδηγό 5Α ή περισσότερο ρεύμα

Βήμα 1: Απόκτηση σήματος

Ο έλεγχος βασίζεται στην ΗΜΓ - ηλεκτρική δραστηριότητα των μυών. Το σήμα ΗΜΓ λαμβάνεται από τρεις συσκευές uECG (ξέρω, υποτίθεται ότι είναι μια οθόνη ΗΚΓ, αλλά επειδή βασίζεται σε ένα γενικό ADC, μπορεί να μετρήσει τυχόν βιοσήματα - συμπεριλαμβανομένου του ΗΜΓ). Για την επεξεργασία ΗΜΓ, το uECG διαθέτει μια ειδική λειτουργία στην οποία στέλνει δεδομένα φάσματος 32 κάδων και μέσο όρο "παράθυρο μυών" (μέση φασματική ένταση μεταξύ 75 και 440 Hz). Οι εικόνες φάσματος μοιάζουν με μπλε-πράσινα μοτίβα που αλλάζουν με την πάροδο του χρόνου. Εδώ η συχνότητα βρίσκεται σε κάθετο άξονα (σε κάθε ένα από 3 γραφήματα, χαμηλή συχνότητα στο κάτω μέρος, υψηλή στο επάνω μέρος - από 0 έως 488 Hz με βήματα ~ 15 Hz), ο χρόνος είναι οριζόντιος (παλιά δεδομένα στα αριστερά συνολικά εδώ είναι περίπου 10 δευτερόλεπτα στην οθόνη). Η ένταση κωδικοποιείται με χρώμα: μπλε - χαμηλό, πράσινο - μεσαίο, κίτρινο - υψηλό, κόκκινο - ακόμη υψηλότερο.

Βήμα 2: Απλοποιημένο σήμα

Απλοποιημένο σήμα
Απλοποιημένο σήμα

Για αξιόπιστη αναγνώριση χειρονομίας, απαιτείται σωστή επεξεργασία αυτών των φασματικών εικόνων με υπολογιστή. Αλλά για απλή ενεργοποίηση ρομποτικών δακτύλων χεριών, αρκεί να χρησιμοποιήσετε μόνο τη μέση τιμή σε 3 κανάλια - το uECG το παρέχει βολικά σε ορισμένα bytes πακέτων, ώστε το σκίτσο Arduino να μπορεί να το αναλύσει. Αυτές οι τιμές φαίνονται πολύ πιο απλές - έχω επισυνάψει ένα γράφημα ακατέργαστων τιμών από το Serial Plotter του Arduino. Τα κόκκινα, πράσινα, μπλε γραφήματα είναι ακατέργαστες τιμές από 3 συσκευές uECG σε διαφορετικές ομάδες μυών όταν πιέζω τον αντίχειρα, το δαχτυλίδι και τα μεσαία δάχτυλα αντίστοιχα. Για το μάτι μας, αυτές οι περιπτώσεις είναι σαφώς διαφορετικές, αλλά πρέπει να μετατρέψουμε αυτές τις τιμές σε "βαθμολογία δακτύλων" με κάποιο τρόπο, έτσι ώστε ένα πρόγραμμα να μπορεί να εξάγει τιμές σε servos χειρός. Το πρόβλημα είναι ότι τα σήματα από μυϊκές ομάδες είναι "μικτά": στην 1η και 3η περίπτωση η ένταση του μπλε σήματος είναι περίπου η ίδια - αλλά το κόκκινο και το πράσινο είναι διαφορετικά. Στη 2η και 3η περίπτωση τα πράσινα σήματα είναι τα ίδια - αλλά το μπλε και το κόκκινο είναι διαφορετικά.

Βήμα 3: Επεξεργασία σημάτων

Επεξεργασία σήματος
Επεξεργασία σήματος

Για να "αναμίξω" αυτά τα σήματα, χρησιμοποίησα έναν σχετικά απλό τύπο:

S0 = V0^2 / ((V1 * a0 +b0) (V2 * c0 +d0)), όπου S0 - βαθμολογία για το κανάλι 0, V0, V1, V2 - ακατέργαστες τιμές για τα κανάλια 0, 1, 2 και a, b, c, d - συντελεστές που ρύθμισα χειροκίνητα (οι a και c ήταν από 0,3 έως 2,0, b και d ήταν 15 και 20, θα πρέπει να τους αλλάξετε για να προσαρμοστούν ούτως ή άλλως για τη συγκεκριμένη θέση αισθητήρα). Η ίδια βαθμολογία υπολογίστηκε για τα κανάλια 1 και 2. Μετά από αυτό, τα γραφήματα διαχωρίστηκαν σχεδόν τέλεια. Για τις ίδιες χειρονομίες (αυτή τη φορά ο δακτύλιος, ο μέσος και στη συνέχεια ο αντίχειρας) τα σήματα είναι σαφή και μπορούν εύκολα να μεταφραστούν σε σερβο κινήσεις μόνο με σύγκριση με το κατώφλι

Βήμα 4: Διαγράμματα

Σχήματα
Σχήματα

Τα σχήματα είναι αρκετά απλά, χρειάζεστε μόνο μονάδα nRF24, PCA9685 ή παρόμοιο ελεγκτή I2C PWM και τροφοδοτικό υψηλής τάσης 5V που θα ήταν αρκετό για να μετακινήσετε όλα αυτά τα servos ταυτόχρονα (άρα απαιτεί τουλάχιστον 5Α ονομαστική ισχύ για σταθερή λειτουργία).

Κατάλογος συνδέσεων: nRF24 pin 1 (GND) - Arduino's GNDnRF24 pin 2 (Vcc) - Arduino's 3.3vnRF24 pin 3 (Chip Enable) - Arduino's D9nRF24 pin 4 (SPI: CS) - Arduino's D8nRF24 pin 5 (SPI: SCK) - Arduino's D13nRF24 pin 6 (SPI: MOSI) - Arduino's D11nRF24 pin 7 (SPI: MISO) - Arduino's D12PCA9685 SDA - Arduino's A4PCA9685 SCL - Arduino's A5PCA9685 Vcc - Arduino's 5vPCA9685 GNDPCA9685 Κανάλια PCA 0-4, στον αντίχειρά μου - αντίχειρα - κανάλι 0, δείκτης - κανάλι 1 κ.λπ.

Βήμα 5: Τοποθέτηση αισθητήρων ΗΜΓ

Τοποθέτηση αισθητήρων EMG
Τοποθέτηση αισθητήρων EMG
Τοποθέτηση αισθητήρων EMG
Τοποθέτηση αισθητήρων EMG

Για να λάβετε λογικές αναγνώσεις, είναι σημαντικό να τοποθετήσετε συσκευές uECG, οι οποίες καταγράφουν μυϊκή δραστηριότητα, στα σωστά σημεία. Ενώ πολλές διαφορετικές επιλογές είναι δυνατές εδώ, η κάθε μία απαιτεί διαφορετική προσέγγιση επεξεργασίας σήματος - οπότε με τον κώδικά μου είναι καλύτερο να χρησιμοποιώ τοποθέτηση παρόμοια με τις φωτογραφίες μου. Μπορεί να είναι αντι -διαισθητικό, αλλά το σήμα των μυών του αντίχειρα είναι καλύτερα ορατό στην αντίθετη πλευρά του βραχίονα, έτσι ένας από τους αισθητήρες τοποθετείται εκεί, και όλοι τους τοποθετούνται κοντά στον αγκώνα (οι μύες έχουν το μεγαλύτερο μέρος του σώματός τους σε αυτήν την περιοχή, αλλά θέλετε να ελέγξετε πού βρίσκονται ακριβώς οι δικοί σας - υπάρχει αρκετά μεγάλη ατομική διαφορά)

Βήμα 6: Κωδικός

Πριν από την εκτέλεση του κύριου προγράμματος, θα πρέπει να μάθετε τα αναγνωριστικά μονάδας των συγκεκριμένων συσκευών σας uECG (αυτό γίνεται χωρίς να σχολιάσετε τη γραμμή 101 και να ενεργοποιήσετε τις συσκευές μία προς μία, θα δείτε το αναγνωριστικό της τρέχουσας συσκευής μεταξύ άλλων) και να τις συμπληρώσετε πίνακας unit_ids (γραμμή 37). Εκτός από αυτό, θέλετε να παίξετε με συντελεστές τύπου (γραμμές 129-131) και να ελέγξετε πώς φαίνεται στο σειριακό σχεδιαστή πριν το συνδέσετε στο ρομποτικό χέρι.

Βήμα 7: Αποτελέσματα

Με μερικά πειράματα που χρειάστηκαν περίπου 2 ώρες, μπόρεσα να κάνω αρκετά αξιόπιστη λειτουργία (το βίντεο δείχνει μια τυπική περίπτωση). Συμπεριφέρεται όχι τέλεια και με αυτήν την επεξεργασία μπορεί να αναγνωρίσει μόνο ανοιχτά και κλειστά δάχτυλα (και ούτε καθένα από τα 5, ανιχνεύει μόνο 3 ομάδες μυών: αντίχειρα, δείκτη και μέση μαζί, δαχτυλίδια και μικρά δάχτυλα μαζί). Αλλά το "AI" που αναλύει το σήμα παίρνει 3 γραμμές κώδικα εδώ και χρησιμοποιεί μία μόνο τιμή από κάθε κανάλι. Πιστεύω ότι θα μπορούσαν να γίνουν περισσότερα ανάλυση φασματικών εικόνων 32 κάδων σε υπολογιστή ή smartphone. Επίσης, αυτή η έκδοση χρησιμοποιεί μόνο 3 συσκευές uECG (κανάλια EMG). Με περισσότερα κανάλια θα πρέπει να είναι δυνατή η αναγνώριση πραγματικά πολύπλοκων μοτίβων - αλλά, αυτό είναι το σημείο του έργου, για να παρέχει κάποια αφετηρία για όποιον ενδιαφέρεται:) Ο έλεγχος των χεριών σίγουρα δεν είναι η μόνη εφαρμογή για ένα τέτοιο σύστημα.

Συνιστάται: