Ανθρωποειδές Ρομπότ El Greco v2

Η ομάδα ρομποτική του τμήματος Μηχανικών Πληροφοριακών και Επικοινωνιακών Συστημάτων του Πανεπιστημίου Αιγαίου, παρουσιάζει τη δεύτερη version του ανθρωποειδούς ρομπότ βασισμένο στο πρώτο ανθρωποειδές ρομπότ που κατασκευάστηκε από αυτήν (El Greco).

Βασικός στόχος της υλοποίησης όπως και για το πρώτο ρομποτικό σύστημα είναι η κατασκευή ενός συστήματος με τα λιγότερα κατασκευαστικά έξοδα και όσο το δυνατόν περισσότερες επιδόσεις και λειτουργίες γίνεται.

Ακολουθεί μία αναλυτική περιγραφή που καλύπτει τόσο το κατασκευαστικό (hardware) όσο και το προγραμματιστικό (software) κομμάτι του έργου. Γίνεται περιγραφή του κορμού από τον εξωτερικό ως και τον εσωτερικό σχεδιασμό και ακολουθεί η περιγραφή των κυκλωματικών σχεδιασμών και των πλακετών που χρησιμοποιήθηκαν με αναλυτική αναφορά στα θέματα ενέργειας και κατανάλωσης. Τέλος γίνεται ανάλυση της αρχιτεκτονικής του κώδικα αρχικά μεμονωμένα στην κάθε πλακέτα και των δυνατοτήτων της πάνω στο σύστημα και έπειτα συνολικά με τις μεθόδους συνεργασίας των 2 πλακετών για την τελική απόδοση του τρόπου λειτουργίας του ρομποτικού συστήματος.

Περιγραφή εσωτερικής κατασκευής και σχεδιασμού

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

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

Περιγραφή εξωτερικής κατασκευής και σχεδιασμού

Ο κορμός αποτελείται από 5 κομμάτια: θώρακας, άνω ζώνη, κάτω ζώνη, παντελόνι.

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

Αναλυτική περιγραφή 3D εκτύπωσης

Θώρακας: Τμήμα (ορθογώνιο ελλειπτικό σχήμα) τυπωμένο σε δύο κομμάτια, η σύνδεση των οποίων γίνεται με βίδες, ώστε να είναι δυνατή η πρόσβαση στο πίσω τμήμα του για πιθανές επισκευές και κυρίως για πρόσβαση στην πλακέτα χειρισμού του σώματος και των servo hat.

Άνω ζώνη: Τμήμα (ελλειπτικό σχήμα) τυπωμένο ως ένα ενιαίο κομμάτι με ειδικά διαμορφωμένα μεταλλικά τμήματα για την σύνδεση με την Κάτω ζώνη.

Κάτω Ζώνη: Τμήμα (ελλειπτικό σχήμα) τυπωμένο ως ένα ενιαίο κομμάτι με ειδικά διαμορφωμένα μεταλλικά τμήματα για την σύνδεση με την Άνω ζώνη καθώς και 2 τρύπες στο κάτω μέρος για την προσαρμογή των ποδιών (παντελόνι). Ο σχεδιασμός της σύνδεσης Άνω και Κάτω ζώνης με την χρήση μεταλλικών τμημάτων επιτρέπει την πρόσβαση στο υπόλοιπο εσωτερικό χώρο του ρομποτικού συστήματος. 

Παντελόνι: Δύο ανεξάρτητα τμήματα με σχεδιασμό ενός ανθρώπινου στατικού ποδιού (δηλαδή χωρίς κινούμενα τμήματα) με διαμέτρους ίδιες με εκείνες της Κάτω ζώνης. 

Σχεδίαση καρπών

Ο σχεδιασμός κάθε παλάμης απαιτεί την εκτύπωση πλαστικών κομματιών με 3D εκτυπωτή και η συναρμολόγηση τους την χρήση μεταλλικών συνδέσμων (για κάθε άρθρωση) και κόλλα στα σταθερά τμήματα. Για την πραγματοποίηση κινήσεων στο κάθε δάχτυλο έχει τοποθετηθεί νήμα πετονιάς (στο εσωτερικό).

Σχεδίαση πήχη, μπράτσου και ώμου

Αρχικά για τον κάθε πήχη σχεδιάστηκε και τοποθετήθηκε ένα ορθογώνιο τμήμα με κατάλληλες θέσεις για τους 5 κινητήρες, ώστε να τους κρατάει σταθερά στις θέσεις τους και ταυτόχρονα να μην εμποδίζονται οι διαδρομές των νημάτων κάθε δακτύλου. Έπειτα σχεδιάστηκε και τυπώθηκε ένα κυλινδρικό πλαίσιο (σε δύο τμήματα ) για κάθε πήχη, ώστε να καλύπτει το παραπάνω τμήμα και να δίνει την εμφάνιση ενός πήχη. 

Για το μπράτσο χρησιμοποιήθηκαν 3 κινητήρες. Ένας για την κίνηση του ώμου, ένας για την περιστροφή του αγκώνα και τέλος ένας για την κίνηση του αγκώνα. Οι συνδέσεις μεταξύ τους έγινε με την χρήση μεταλλικών mount.

Για τους ώμους τυπώθηκαν πλαστικά κομμάτια για την καλύτερη σύνδεση των κινητήρων με τους άξονες του μπράτσου. Οι συγκεκριμένοι κινητήρες προσαρμόστηκαν στο μεταλλικό πλαίσιο του θώρακα. 

Αρχιτεκτονική κωδικα

Για να καλυφθούν οι παραπάνω απαιτήσεις χρησιμοποιήθηκαν 2 Single Board Computer. Πιο συγκεκριμένα, ένα Banana Pi για τις λειτουργίες της κεφαλής (εκτός της κάμερας) και ένα Raspberry Pi 3 για τις λειτουργίες του υπόλοιπου συστήματος. Επιπλέον, για την κάλυψη όλων των κινητήρων προσαρμόστηκαν 2 Servo Pi Hat στο Raspberry Pi 3 ώστε να μπορεί να χειριστεί τους 23 κινητήρες του συστήματος (εκτός τα φρύδια που είναι δουλειά του banana pi). 

Raspberry Pi 3

Ο Σχεδιασμός των κινήσεων για τους κινητήρες που είναι υπεύθυνο το Raspberry Pi 3 βασίζεται σε 6 αρχεία:

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

ElGreco2_Servo_Limitation
Περιέχει μια κλάση Limitations η οποία έχει τα όρια κίνησης για κάθε έναν κινητήρα τύπου σέρβο που αφορούν την πλακέτα raspberry Pi 3. Πιο συγκεκριμένα κάθε κινητήρας αντιστοιχίζεται με έναν πίνακα ακεραίων με το πολύ 3 τιμές. Οι τιμές αυτές προσδιορίζουν την ελάχιστη την μέση και την μέγιστη γωνία που μπορεί να φτάσει ο κινητήρας. Όλοι οι κινητήρες έχουν 3 θέσεις που είναι απαραίτητες για την σωστή λειτουργία του ρομποτικού συστήματος με τις παρούσες λειτουργίες, εκτός από τα δάχτυλά τα οποία προς το παρόν χρειάζονται μόνο δύο καταστάσεις ανοικτά ή κλειστά. 

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

ServoCurrentState
Περιέχει τις παρούσες θέσεις κάθε κινητήρα που σχετίζεται το raspberry Pi 3. Δίνει την δυνατότητα μνήμης στο ρομποτικό σύστημα για την ομαλή κίνηση κινητήρα κάνοντας γνωστή την παρούσα θέσει ώστε να μπορεί να υπολογιστή η καθυστέρηση εναλλαγής μοιρών.

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

ServoManager
Περιέχει συναρτήσεις οι οποίες είναι υπεύθυνες για την ομαλή κίνηση του κάθε κινητήρα, χρησιμοποιώντας την βιβλιοθήκη των servo hat για την δημιουργία κατάλληλων παλμικών σημάτων. Οι συναντήσεις αυτές δέχονται τις πληροφορίες των παραπάνω 2 αρχείων και δίνουν τα κατάλληλα σήματα στον κινητήρα για να φτάσει στην επιθυμητή θέση.

Rpi_HatManager
Η κίνηση των κινητήρων του σώματος γίνονται μέσα από την πλακέτα raspberry Pi 3 η οποία είναι συνδεδεμένη με δύο Servo Hat. Οι εντολές που θα πρέπει να σταλούν από το raspberry Pi 3 προς τα Servo Hat δίνονται με την χρήση της βιβλιοθήκης Adafruit_PCA9685. Η σύνδεση πολλαπλών Servo Hat με το raspberry Pi 3 προαπαιτεί την σωστή διευθυνσιοδότηση των Servo Hat. Όλη η διαδικασία αρχικοποίησης διευθύνσεων και χρήση συναρτήσεων της παραπάνω βιβλιοθήκης γίνονται σε αυτό το αρχείο. 

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

greco6

Banana Pi

H πλακέτα banana pi διαχειρίζεται τις εκφράσεις του προσώπου καθώς και φωνητικές εντολές του συστήματος.

clientVoiceRecogn
Κατά την εκτέλεση του αρχείου, ξεκινάει η καταγραφή της φωνής του χρήστη όπου μετατρέπεται σε κείμενο με χρήση της βιβλιοθήκης Python Speech Recogniotion. Το κείμενο συγκρίνεται με τις καταγεγραμμένες εντολές στην βάση δεδομένων (MySQL) και εκτελείται την αντίστοιχη ενέργεια.

VoiceFunctions
Αρχείο με κλάση Voice Functions η οποία κατά την αρχικοποίηση, δημιουργεί έναν πίνακα με τις κατάλληλες φωνητικές εντολές που χρειάζονται για την εκτέλεση των συναρτήσεων της κλάσης. Οι συναρτήσεις της κλάσης αντιπροσωπεύουν τις λειτουργίες του συστήματος (Rock Paper Scissor Game, Face Tracking).

HeadEyebrows
Αρχείο με συναρτήσεις για την κίνηση των δυο servo κινητήρων, οι οποίοι αντιστοιχούν στα φρύδια

HeadEyes
Αρχείο με συναρτήσεις για την κίνηση των δυο led matrices, οι οποίοι αντιστοιχούν στα μάτια

Επικοινωνία πλακετας κεφαλής και σώματος

Η επικοινωνία των Raspberry Pi 3 και Banana Pi γίνεται μέσω δικτύου. Για λόγους μεταφερσιμότητας του συστήματος χρησιμοποιήθηκε ο server της ομάδας ρομποτικής, ο οποίος ενημερώνεται για τις IP διευθύνσεις των δύο SBCs και χρησιμοποιείται ως ευρετήριο. Πιο συγκεκριμένα κάθε πλακέτα κατά την εκκίνηση της στέλνει ένα αίτημα με την ip διεύθυνσή της. Σε επόμενο στάδιο όταν υπάρχει ανάγκη επικοινωνίας από μια πλακέτα σε μια άλλη γίνεται αίτημα στον server της σχολής για την ανάκτηση της IP διεύθυνσης της άλλης πλακέτας.

Για την υλοποίηση των παραπάνω συνδέσεων και οι δύο πλακέτες διαθέτουν 2 αρχεία για τις λειτουργίες ως server και ως client αντίστοιχα.

Αλληλεπίδραση με τον χρήστη

Αρχείο GUI
Η γραφική απεικόνιση των λειτουργιών του συστήματος γίνεται από αυτό το αρχείο και έπειτα μετά από την επιλογή του χρήστη ( σήμα αφής ) γίνεται κλήση της κατάλληλης συνάρτησης ή scriptαρχείου.

Ενεργειακές απαιτήσεις
Για την κεντρική τροφοδοσία του ρομπότ χρησιμοποιήσαμε μια μπαταρία ιόντων λιθίου (2 κελιών) με χαρακτηριστικά 7,4 Volt και 5200 mAh. Για τη διανομή του ρεύματος προς τις πλακέτες χρησιμοποιήθηκαν 2 step down converters (ο ένας στα 5V για την τροφοδοσία των πλακετών Raspberry και Banana pi και ο άλλος στα 6V για την τροφοδοσία των 2 hats).

Επίσης χρησιμοποιήθηκε ένας step up converter στα 12V για την τροφοδοσία των κινητήρων στη βάση του ρομπότ.

Λειτουργίες του El Greco v2

Rock Paper Scissor Game

Το παιχνίδι ξεκινάει με την αρχικοποίηση της θέσης του δεξιού χεριού. Έπειτα διαλέγει μια τυχαία κίνηση και περιμένει την απάντηση κίνηση του δεύτερου παίκτη. Μέσα από φωνητική εντολή ο δεύτερος παίκτης δίνει την κίνηση του. Στην συνέχεια το ρομποτικό σύστημα συγκρίνει την κίνηση του με την κίνηση του παίκτη και εκφωνεί το αποτέλεσμα και το σκορ. Στο τέλος κάθε γύρου το ρομποτικό σύστημα ρωτάει τον παίκτη αν θέλει να συνεχίσει το παιχνίδι.

Απαντώντας θετικά επαναλαμβάνεται η ίδια ακριβώς διαδικασία, διαφορετικά το ρομποτικό σύστημα επανέρχεται στην αρχική του κατάσταση

FaceTracking

Μέσω της κάμερας το ρομποτικό σύστημα λαμβάνει ένα frame μεγέθους 320×240 pixels. Με την χρήση Haar Feature-based Cascade δημιουργείται ένα πλαίσιο 30×30 pixels στην περιοχή του frame που βρίσκεται το πρόσωπο. Για κάθε επόμενο frame το ρομπότ προσπαθεί να φέρει όσο το δυνατόν πιο κοντά στο κέντρο του αρχικού frame (320×240) το μικρότερο frame (30×30) που περιέχει το πρόσωπο. Στην περίπτωση μου το μικρότερο frame δεν βρίσκεται στην σωστή θέση (10 pixels εκτός κέντρο) το ρομποτικό σύστημα προσπαθεί να μειώσει την διαφορά μετακινώντας το κεφάλι στις κατάλληλες μοίρες.

FaceRegocniton

Το σύστημα κρατάει μια λίστα με αρχεία pickle που περιέχουν τα χαρακτηριστικά του προσώπου. Κατά την έναρξη της διαδικασίας το σύστημα φορτώνει όλα τα γνωστά πρόσωπα (.pkl) στην μνήμη. Έπειτα κρατάει ένα frame από την κάμερα και αναζητά αν υπάρχουν πρόσωπα μέσα στο frame. Για κάθε πρόσωπο που βρήκε ελέγχει τα αρχεία pkl από την μνήμη για να ελέγξει αν τα δεδομένα που συλλέγει είναι όμοια. Αν δεν βρει κάποιο πρόσωπο για 20 δευτερόλεπτα, σταματάει την αναζήτηση.

CountDemo

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

EmotionDemo

To σύστημα εκτελεί μια σύντομη παρουσίαση που περιγράφει την προσομοίωση συναισθημάτων με την χρήση των led matrices και των φρυδιών.

LearnFace

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

News

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

Παρουσίαση συστήματος ξενάγησης δυναμικού χώρου

Την Πέμπτη 6 Ιουνίου, 11:00 – 13:00 στο μουσείο Βυρσοδεψίας στο Καρλόβασι Σάμου, παρουσιάστηκε ένα σύστημα ξενάγησης δυναμικού χώρου, μέσω του δεύτερου ανθρωποειδούς El Greco 2 της ομάδας ρομποτικής. Το σύστημα δημιουργήθηκε στα πλαίσια της διπλωματικής εργασίας από τους προπτυχιακούς φοιτητές Αναστασιάδη Αναστάσιος και Μουρατίδη Ανάργυρο  του τμήματος Πληροφοριακών και Επικοινωνιακών Συστημάτων.
Το σύστημα ξενάγησης χρησιμοποιεί μια αρθρωτή και κατανεμημένη αρχιτεκτονική, η οποία ενσωματώνει εντοπισμό, χαρτογράφηση, αποφυγή εμποδίων και την αλληλεπίδραση με τον χρήστη μέσω φωνητικών εντολών.
Μέσω της παρουσίασης του συστήματος ξενάγησης παρουσιάστηκε και το ανθρωποειδές El Greco 2 που έχει κατασκευαστεί εξολοκλήρου στο τμήμα μας και στο οποίο εργάστηκαν προπτυχιακοί φοιτητές του τμήματος, μέλη της ομάδας AegeanRobotics.
 
Μια σύντομη παρουσίαση της εφαρμογής του συστήματος ξενάγησης μπορείτε να απολαύσετε στο βίντεο:

Θερμές ευχαριστίες στον Δήμο Καρλοβάσου και ειδικότερα στον κ. Κοντορούδα για την εξαιρετική συνεργασία και την πολύτιμη βοήθειά τους, κατά την διάρκεια της εκπόνησης της διπλωματικής εργασίας με την παραχώρηση του χώρου του μουσείου.