ΑΥΤΟΝΟΜΟΙ ΠΡΑΚΤΟΡΕΣ ΠΛΗ 513 Αναφορά Εργασίας Εξαμήνου Χειμερινό Εξάμηνο 2011-2012 Γεωργάκης Γεώργιος 2006030111
RobotStadium 2012 Εισαγωγή Το Robostadium είναι ένας διαγωνισμός στο διαδίκτυο κατά τα πρότυπα του Robocup SPL. Σκοπός της εργασίας είναι η δημιουργία ομάδας σε συνεργασία με τον Χατζηπέτρου Κωνσταντίνο και η συμμετοχή στον on-line διαγωνισμό. Είναι βασισμένος στον προσομοιωτή Webots ο οποίος προσφέρει την πλατφόρμα για την ανάπτυξη του πράκτορα. Τα ρομπότ που προσφέρονται είναι το Nao και το Darwin, το καθ ένα με τα δικά του χαρακτηριστικά. Στην δική μας εργασία χρησιμοποιήσαμε το ρομπότ Nao. Δικό μου κομμάτι είναι η αντίληψη και ενέργεια του παίκτη. Δηλαδή η χρήση των αισθητήρων του ρομπότ ώστε να αντιλαμβάνεται τι γίνεται στο περιβάλλον του και ανάλογα να παίρνει αποφάσεις.
Αισθητήρες Camera: Το Webots μας δίνει την επιλογή δύο στάσεων σε μία κάμερα, πάνω και κάτω, με τις δύο στάσεις να έχουν 40 μοίρες διαφορά. Μέσω της κάμερας μπορούμε να αναλύσουμε την εικόνα και να αναγνωρίσουμε αντικείμενα όπως τα δοκάρια και η μπάλα. Επιταχυνσιόμετρο: Μετρά την γραμμική επιτάχυνση [m/s 2 ] του ρομπότ στους 3 άξονες x,y,z. Χρήσιμο για τον εντοπισμό πτώσης Γυροσκόπιο: Μετρά την γωνιακή ταχύτητα [rad/s] στους 3 άξονες x,y,z. Αισθητήρες υπέρηχων: Το Nao έχει 4 από αυτούς, 2 δεξιά(πάνω και κάτω) και 2 αριστερά(πάνω και κάτω). Μπορούν να εντοπίσουν αντικείμενα μέχρι και 0.7 μέτρα μακριά. Σε σχέση με το πραγματικό Nao έχουν πολύ μεγαλύτερη ακρίβεια και δεν εντοπίζουν δικά τους άκρα όπως π.χ τα χέρια τους. Μας βοηθούν να αποφεύγουμε εμπόδια μέσα στο παιχνίδι. Foot Bumpers: Υπάρχουν 2 από αυτούς σε κάθε πόδι του ρομπότ και ανιχνεύουν κάθε επαφή. Επιστρέφουν 0 ή 1 όπου 1 σημαίνει υπήρχε επαφή. Έτσι μπορούμε να ξέρουμε αν βρίσκουμε την μπάλα όταν επιχειρούμε σουτ. Force Sensitive Resistors(FSR): Υπάρχουν 4 στην πατούσα κάθε ποδιού και μετρούν την πίεση που εξασκείται σε Newtons.
Αντίληψη & Ενέργειες Όταν ο παίκτης βρεθεί κάτω στο έδαφος αναγνωρίζουμε αν έπεσε μπρούμυτα ή ανάσκελα. Το επιταχυνσιόμετρο στον z άξονα παίρνει μεγάλες αρνητικές τιμές και έτσι αντιλαμβανόμαστε ότι έγινε πτώση. Αν οι τιμές των υπερήχων είναι κοντά στο 0 τότε έχουμε πέσει μπρούμυτα, διαφορετικά πέσαμε ανάσκελα. Ανάλογα με το πώς πέσαμε, εκτελούμε και την ανάλογη κίνηση για να σηκωθούμε. Όταν επιχειρούμε σουτ, τότε θέλουμε να ξέρουμε κατά πόσον βρήκαμε την μπάλα, έτσι ώστε να κάνουμε γρήγορα ενέργειες για να σουτάρουμε ξανά. Κατά την διάρκεια της κίνησης του σουτ ανιχνεύουμε τα Foot bumpers και αν μας επιστρέψουν 1 τότε σημαίνει βρήκαμε την μπάλα. Διαφορετικά κάνουμε ένα γρήγορο πλάγιο βήμα για να στρώσουμε καλύτερα την μπάλα στα πόδια μας. Όταν έχουμε την μπάλα στρωμένη στο πόδι μας για σουτ, ψάχνουμε για το αντίπαλο τέρμα. Μόλις αναγνωριστεί βρίσκουμε την κατεύθυνση του και ανάλογα κάνουμε σουτ (ευθύ, διαγώνιο ή πλάγιο). Η αναγνώριση του τέρματος γίνεται με την δυνατότητα που σου δίνει η κάμερα για επεξεργασία της εικόνας στην οποία ψάχνουμε pixels τα οποία να ταιριάζουν στο χρώμα των δοκαριών. Μέσα στο παιχνίδι και κατά την κίνηση του παίκτη, συναντούμε συνεχώς εμπόδια. Με χρήση των υπερήχων αναγνωρίζουμε ότι υπάρχει κάποιο εμπόδιο κοντά μας. Αν το εμπόδιο βρεθεί στα αριστερά μας, τότε κάνουμε πλάγια βήματα δεξιά, και αν βρεθεί στα δεξιά μας, τότε κάνουμε πλάγια βήματα αριστερά για να το αποφύγουμε. Σε μία τρίτη περίπτωση, αν εντοπίσουμε εμπόδιο και στις 2 μεριές (δηλαδή έχουμε κάτι μπροστά μας), και η μπάλα βρίσκεται μακριά από μας, τότε κάνουμε βήμα προς τα πίσω. Όταν όμως η μπάλα είναι κοντά μας, τότε με χρήση της κάμερας συγκρίνουμε τα pixels στην εικόνα και αναγνωρίζουμε αν μπροστά μας έχουμε συμπαίκτη, αντίπαλο ή δοκάρι τέρματος. Αν έχουμε συμπαίκτη προσπαθούμε να τον αποφύγουμε κάνοντας πλάγια βήματα ενώ αν είναι αντίπαλος ή δοκάρι συνεχίζουμε κανονικά το παιχνίδι μας. Αναγνώριση και παρακολούθηση της μπάλας με χρήσης της κάμερας, και κυνήγι της μπάλας μέσα στο παιχνίδι με σκοπό να πάμε κοντά της και να σουτάρουμε.
Εντοπισμός Θέσης Έγινε μία προσπάθεια εντοπισμού θέσης του παίκτη στο γήπεδο αλλά δυστυχώς λόγω έλλειψης χρόνου έμεινε ημιτελής και έτσι δεν ενσωματώθηκε στον κώδικα. Βρίσκουμε εν μέρει την θέση μας, αλλά υπό προϋποθέσεις όπως για παράδειγμα ο παίκτης πρέπει να κοιτάει ευθεία προς το τέρμα. Μέχρι στιγμής υλοποιήθηκαν τα παρακάτω: Ανίχνευση του δικού μας τέρματος όταν το αντίπαλο τέρμα δεν είναι ορατό. Αναγνώριση πιο δοκάρι βλέπουμε όταν γίνεται η ανίχνευση του τέρματος. Υπολογισμός απόστασης από το τέρμα ανιχνεύοντας το ύψος των δοκαριών στην εικόνα που βλέπει ο παίκτης.
Ανάλογα με την απόσταση που υπολογίζουμε από το τέρμα, μπορούμε να υποθέσουμε ότι βρισκόμαστε σε μία από τις ζώνες που φαίνονται στην παραπάνω εικόνα. Ακολούθως υπολογίζουμε την κατεύθυνση που βρίσκεται το τέρμα σε σχέση με τη θέση μας. Αυτό γίνεται με το πόσο γύρισε το κεφάλι του ο παίκτης σε σχέση με το που βρίσκεται το τέρμα στην εικόνα μας. Εδώ συναντούμε ένα πρόβλημα, ότι το ρομπότ μπορεί να εστιάσει (ανάλογα με την απόσταση που βρίσκεται) στο δεξί, αριστερό ή και στα δύο δοκάρια και έτσι να αλλάξει τον υπολογισμό της κατεύθυνσης του τέρματος, όπως φαίνεται με τα βελάκια στην εικόνα. Αυτό λύνεται με την αναγνώριση σε πιο δοκάρι έτυχε να εστιάσουμε, το οποίο έχει γίνει. Με την προϋπόθεση ότι το σώμα του παίκτη κοιτάζει μπροστά, και με τα παραπάνω δεδομένα, μπορούμε να βρούμε με σχετική ακρίβεια την θέση του παίκτη στο γήπεδο. Όταν όμως το σώμα του παίκτη παρουσιάζει κλίση τότε η τιμή της κατεύθυνση του τέρματος θα είναι διαφορετική άρα και η εκτίμηση της θέσης του παίκτη θα παρουσιάζει σφάλμα. Ο εντοπισμός θέσης θα γίνει πιο ακριβής με την εύρεση ακόμη ενός σημείου αναφοράς. Τέλος τα παραπάνω μπορούν να εφαρμοστούν ακόμη και όταν το αντίπαλο τέρμα δεν βρίσκεται στο πεδίο της εικόνας του παίκτη, με την αναγνώριση του δικού μας τέρματος.
Γενική συμπεριφορά στο παιχνίδι Διάγραμμα ροής παίκτη
Επεξήγηση διαγράμματος ροής Στο διάγραμμα ροής οι ρόμβοι αναπαριστούν τους ελέγχους που γίνονται από τον πράκτορα μέσα στο περιβάλλον του. Κάθε φορά που πάμε πίσω στην αρχή παίρνουμε νέες μετρήσεις από τους αισθητήρες μας. Έτσι μετά που θα εκτελέσουμε μία κίνηση πάμε πίσω στην αρχή για να υπάρχει μικρό χρονικό διάστημα μεταξύ των μετρήσεων. Οι ενέργειες αντιστοιχούν ως εξής: PLAY: Οι ενέργειες του πράκτορα μας σαν ποδοσφαιριστής. Το ψάξιμο, αναγνώριση και κυνήγι της μπάλας με σκοπό το σουτ προς το αντίπαλο τέρμα. Get Up: Ανάλογα με ποια μεριά του σώματος έχω πέσει στο έδαφος κάνω και την ανάλογη κίνηση για να σηκωθώ. Side Steps: Ανάλογα σε ποια μεριά βρίσκεται το εμπόδιο, κάνω πλάγια βήματα προς την άλλη κατεύθυνση με σκοπό να το αποφύγω. Backwards: Κάνω ένα βήμα προς τα πίσω. Μελλοντική δουλειά Η ομάδα θα πάρει μέρος στον διαγωνισμό με τα υπάρχοντα δεδομένα εφόσον ο διαγωνισμός σου επιτρέπει να κάνεις αναβαθμίσεις κατά την διάρκεια της σεζόν. Μελλοντική δουλειά θα είναι η ολοκλήρωση του εντοπισμού θέσης καθώς και η ανταλλαγή μηνυμάτων μεταξύ των παικτών για καθορισμό στρατηγικής μέσα στο παιχνίδι.