Αυτόνομοι Πράκτορες ΠΛΗ 513 Αναφορά Εργασίας Κίνηση Τερματοφύλακα Στο RoboCup Καρανδεινός Εκτωρ Α.Μ 2010030020 Περίληψη Το Robocup είναι ένας παγκόσμιος ετήσιος διαγωνισμός ρομποτικής στον οποίο προγραμματίζονται ρομπότ, έτσι ώστε να έρθουν αντιμέτωπα σε ένα παιχνίδι ποδοσφαίρου. Για την συγκεκριμένη εργασία χρησιμοποιήθηκε ο προσομοιωτής Webots, ο οποίος προσομοιώνει με μεγάλη ακρίβεια το περιβάλλον του διαγωνισμού και τα ρομπότ Nao που χρησιμοποιούνται. Αυτό που παρουσιάζεται σε αυτή την εργασία, είναι οι κινήσεις που πραγματοποιεί ο τερματοφύλακας ανάλογα με τις εκάστοτε συνθήκες. Πιο συγκεκριμένα έχει υλοποιηθεί ο έλεγχος της πορείας και της ταχύτητας της μπάλας και αν αυτή έχει πορεία προς την εστία ή όχι. Με βάση αυτές τις πληροφορίες πραγματοποιείται πτώση του τερματοφύλακα προς την πορεία της μπάλας με σκοπό την παρεμπόδιση επίτευξης τέρματος για την αντίπαλη ομάδα.
1 Εισαγωγή Για την υλοποίηση της εργασίας απαιτείται η κατανόηση και η εξοικείωση με τον προσομοιωτή Webots και τα εργαλεία που παρέχει. Επίσης απαραίτητη ήταν η κατανόηση των έτοιμων κλάσεων που παρέχονται από το Webots καθώς πολλές από αυτές χρησιμοποιήθηκαν για τις ανάγκες της εργασίας. Τέλος βασική προϋπόθεση ήταν η κατανόηση της λειτουργίας των ρομπότ Nao και πιο συγκεκριμένα της κινήσης των αρθρώσεων τους και των τιμών των αισθητήρων τους. Στις παρακάτω ενότητες παρουσιάζονται οι κλάσεις και οι έτοιμες συναρτήσεις που χρησιμοποιούνται(κεφάλαιο 2), οι κινήσεις του τερματοφύλακα(κεφάλαιο 3), η βασική λειτουργία για τον υπολογισμό της ταχύτητας και της πορείας της μπάλας(κεφάλαιο 4), η αξιολόγηση των αποτελεσμάτων(κεφάλαιο 5) και η μελλοντική εργασία πάνω στο θέμα της εργασίας(κεφάλαιο 6). 2 Ετοιμες Κλάσεις και Συναρτήσεις Ενα μεγάλο πλεονέκτημα που έχει ο προσομοιωτής Webots είναι ότι όχι μόνο περιλαμβάνει τον κόσμο του Robocup(robostadium) αλλά παρέχει και έτοιμες συναρτήσεις και κλάσεις που υλοποιούν κάποιες βασικές ενέργειες των ρομπότ. Πιο συγκεκριμένα αυτά που χρησιμοποιήθηκαν στα πλαίσια της εργασίας είναι ολόκληρη η κλάση Player η οποία γίνεται extend από την δική μας κλάση GoalKeeper. Αναλυτικότερα οι συναρτήσεις που χρησιμοποιήθηκαν από την κλάση Player είναι οι εξής: trackball() ανιχνεύει την μπάλα και γυρνάει το κεφάλι του ρομπότ έτσι ώστε να ευθυγραμμίζεται με την μπάλα. getballdirection() επιστρέφει την γωνία(σε rad) του ρομπότ σε σχέση με τη μπάλα. getballdistance επιστρέφει την απόσταση της μπάλας από το ρομπότ. playmotion() ενεργοποιεί μία συγκεκριμένη κίνηση την οποία και εκτελεί το ρομπότ. Να σημειώσουμε εδώ ότι αυτές είναι οι βασικές συναρτήσεις που χρησιμοποιήθηκαν. Υπάρχουν όμως και άλλες οι οποίες είναι δευτερεύουσες αλλά εξίσου απαραίτητες. Ενα παράδειγμα είναι οι συναρτήσεις που είναι υπέυθυνες για τον έλεγχο των δύο καμερών που έχουν ενσωματωμένες πάνω τους τα ρομπότ Nao και προφανώς χρησιμοποιούνται για την ανίχνευση της μπάλας(ball tracking). Στη συγκεκριμένη αναφορά όμως δεν θα αφιερωθεί χρόνος για την επεξήγηση της λειτουργίας τους. 1
3 Κινήσεις Τερματοφύλακα Οι κινήσεις του τερματοφύλακα δημιουργήθηκαν χρησιμοποιώντας το εργαλείο Motion Editor που παρέχεται από τον προσομοιωτή Webots. Με τη βοήθεια λοιπόν του Motion Editor ρυθμίστηκαν οι αρθρώσεις του Nao και δημιουργήθηκαν δύο(2) κινήσεις και μία(1) αρχική θέση για τον τερματοφύλακα. Οι δύο κινήσεις είναι για πτώση του τερματοφύλακα δεξιά ή αριστερά ανάλογα με την πορεία της μπάλας. Πιο συγκεκριμένα με το που ξεκινάει η προσομοίωση ο τερματοφύλακας τοποθετείται σε μία αρχική θέση με ελαφρώς λυγισμένα τα πόδια και τα χέρια λίγο ανοιχτά στο ύψος των γονάτων(αρχική θέση). Από αυτή τη θέση το ρομπότ υπολογίζει την πορεία της μπάλας και ανάλογα πραγματοποιεί μία από τις άλλες δύο κινήσεις(βουτιά αρστερά/δεξιά). Για να γίνουν αυτές οι κινήσεις το ρομπότ έχει ρυθμιστεί έτσι ώστε να φέρνει τα χέρια σε ανάταση, να τεντώνει λίγο το αντίθετο πόδι από την πλευρά που θα πέσει και να γέρνει λίγο την άρθρωση της λεκάνης προς την πλευρά της πτώσης. Με αυτόν τον τρόπο ο τερματοφύλακας βουτάει προς την αντίστοιχη κατεύθυνση. Σημείωση: Τα αρχεία.motion που αναπαριστούν τις κινήσεις συμπεριλαμβάνονται μαζί με τους κώδικες. 4 Υπολογισμός Ταχύτητας και Πορείας της Μπάλας Οπως είναι γνωστό ο τύπος για τον υπολογισμό του μέτρου της ταχύτητας είναι: V elocity = χ t, όπου χ η απόσταση που έχει διανύσει το σώμα και t ο χρόνος ο οποίος διήρκεσε η κίνηση. Για να βρεθεί το χ απαιτείται η γνώση των συντεταγμένων της μπάλας σε δύο χρονικές στιγμές ενώ για το t γνωρίζουμε ότι είναι ίσο με 160ms για δύο συνεχόμενα frames της κάμερας του ρομπότ(nao Camera Refresh Rate = 160 milliseconds). Οσον αφορά την εύρεση των συντεταγμένων χρησιμοποιήθηκαν πολικές συντεταγμένες αφού χρησιμοποιώντας τις συναρτήσεις για υπολογισμό της απόστασης και της γωνίας της μπάλας από τον τερματοφύλακα(getballdistance() και getballdirection()). Πιο συγκεκριμένα: x = r cos φ y = r sin φ όπου r απόσταση από τον τερματοφύλακα(ρομπότ) και φ η γωνία της μπάλας σε σχέση με τον τερματοφύλακα. 2
Εχοντας λοιπόν τις συντεταγμένες δύο διαδοχικών στιγμιοτύπων της μπάλας είναι εύκολος πλέον ο υπολογισμός του χ εφαρμόζοντας πυθαγόρειο θεώρημα: χ = (y 2 y 1 ) 2 + (x 2 x 1 ) 2 Αντικαθιστώντας λοιπόν στον παραπάνω τύπο υπολογίζεται το μέτρο της ταχύτητας και μένει να βρεθεί η κατεύθυνση της. Για να γίνει αυτό υπολογίζεται ο λόγος(2) της εξίσωσης της ευθείας(1) που δημιουργόυν τα δύο σημεία της μπάλας χρησιμοποιώντας τις συντεταγμένες που βρέθηκαν προηγουμένως και στη συνέχεια το σημείο τομής της ευθείας με τον άξονα χ. Αυτό στην ουσία είναι η απαραίτητη πληροφορία για το αν η πορεία της μπάλας τέμνει το τέρμα και σε ποιό σημείο ακριβώς. y = λx + β (1) λ = y 2 y 1 x 2 x 1 (2) Στην εικόνα 1 παρακάτω παρουσιάζεται η λογική της υλοποίησης για να γίνει περισσότερο κατανοητός ο τρόπος που υπολογίζονται τα παραπάνω. Το παράδειγμα της εικόνας παρουσιάζει την διαγώνια κίνηση της μπάλας προς την εστία. Τα κόκκινα ημικύκλια είναι οι απόστασεις από τον τερματοφύλακα τις δύο διαφορετικές χρονικές στιγμές και αντίστοιχα τα φ και θ οι δύο διαφορετικές γωνίες. Η μάυρη ευθεία είναι η τελική πορεία της μπάλας που υπολογίζεται. Figure 1: GoalKeeper Logic 3
Για να βελτιωθεί η συγκεκριμένη υλοποίηση γίνεται εισαγωγή της έννοιας του ρυθμού μείωσης της ταχύτητας(επιβράδυνση) έτσι ώστε να υπάρχει μία πιο ρεαλιστική αναπαράσταση του προβλήματος. Συμπεριλαμβάνοντας λοιπόν την επιβράδυνση αποφεύγεται η πιθανότητα να παρθεί απόφαση για πτώση του τερματοφύλακα στην περίπτωση που η μπάλα ναι μεν να έχει πορεία προς το τέρμα αλλά όχι την απαραίτητη ταχύτητα για να φτάσει να παραβιάσει την εστία. Αυτό επιτυγχάνεται υπολογίζοντας την απόσταση που θα διανύσει η μπάλα μέχρι να σταματήσει, μέχρι δηλαδή η ταχύτητα να είναι μηδέν. Για τους υπολογισμούς αυτους χρησιμοποιούνται οι εξισώσεις τις κινηματικής οι οποίοι παρουσιάζονται παρακάτω: Decelaration = α = υ t υ = υ 0 + α t χ = υ t + 1 2 a t2 Οπότε αφού ο έλεγχος της κίνησης της μπάλας έχει προσομοιωθεί αυτο που πρέπει να γίνει έιναι όλη αυτή η διαδικασία να γίνεται επαναληπτικά και κάθε φορά να ελέγχουμε αν η μπάλα έχει πορεία προς το τέρμα και αν η ταχύτητα της είναι αρκετή για να παραβιάσει την εστία. 5 Αξιολόγηση Αποτελεσμάτων Χρησιμοποιώντας την προσομοίωση που προσφέρει το Webots έγινε έλεγχος των αποτελεσμάτων και κατά πόσο ο τερματοφύλακας πραγματοποιεί τις σωστές κινήσεις. Για την καλύτερη δυνατή προσομοίωση χρησιμοποιήθηκε ένα επιπλέον ρομπότ το οποίο προγραμματίστηκε έτσι ώστε να πραγματοποιεί ένα σουτ. Με αυτόν τον τρόπο και πραγματοποιώντας σουτ από διαφορετικές γωνίες φάνηκε ότι το ρομπότ πραγματοποιεί τις σωστές επιλογές και κινήσεις και αποτρέπει την επίτευξη τέρματων επιτυχώς. Επίσης έγιναν και έλεγχοι για περιπτώσεις στις οποίες δεν χρειάζεται να γίνει κάποια ενέργεια στις οποίες το ρομπότ ανταπεξήλθε με επιτυχία μην πραγματοποιώντας κάποια κίνηση, σημάδι ότι αντιλαμβάνεται σωστά την πορεία της μπάλας. Παρατηρήθηκε ότι στα σουτ που πραγματοποιούσαν διαγώνια κίνηση προς την εστία, δηλαδή από τα αριστερά προς τα δεξιά του τερματοφύλακα και ανάποδα, ο τερματοφύλακας αργούσε να πάρει την απόφαση σε σχέση με τα σουτ που γινόντουσαν σε μία ευθεία αριστερά ή δεξιά του, χωρίς όμως αυτό να σημαίνει ότι δεν πραγματοποιούσε τη σωστή κίνηση. Το μόνο παράδοξο των δοκιμών που πραγματοποιήθηκαν είναι η περίπτωση στην οποία η μπάλα κατευθύνεται στο κέντρο της εστίας. Σε αυτή την περίπτωση και ενώ αρχικά ο τερματοφύλακας δεν πραγματοποιεί κάποια πτώση τη στιγμή που η μπάλα βρει πάνω του για κάποιο λόγο αμέσως μετά πέφτει. Σημείωση: Υπάρχουν βίντεο τα οποία παρουσιάζουν τις δοκιμές που έγιναν και τις αποκρούσεις του τερματοφύλακα. 4
6 Μελλοντική Εργασία Στην υλοποίηση που παρουσιάστηκε παραπάνω ο έλεγχος της πορείας της μπάλας γίνεται χρησιμοποιώντας 2 στιγμιότυπα της μπάλας. Ισως μια πιο σωστή υλοποίηση να χρησιμοποιεί παραπάνω στιμιότυπα έτσι ώστε να έχει μία καλύτερη εικόνα της πορείας της μπάλας και να αποφεύγει τυχόν λάθη των τιμών των αισθητήρων τα οποία μπορεί να αποφέρουν μια πτώση χωρίς λόγο. Επίσης στην παρούσα εργασία προσομοιώνεται η κίνηση του τερματοφύλακα για ένα σουτ τη φορά. Μετά την απόφαση για πτώση του τερματοφύλακα αριστερά ή δεξιά ο controller κάνει break και η επαναληπτική διαδικασία ολοκληρώνεται. Μία επέκταση λοιπόν της συγκεκριμένης εργασίας θα μπορούσε να είναι ο τερματοφύλακας να μπορεί να σηκώνεται και να παίρνει θέση στην εστία του ξανά μετά από κάθε πτώση. 5