Αυτόνομοι Πράκτορες Xειμερινό Εξάμηνο 2011-2012 Αναφορά Εργασίας Εξαμήνου Όνομα : Σκιπετάρης Δημοσθένης ΑΜ : 2006030093 Ομάδα Εργασίας: Σκιπετάρης Δημοσθένης, Μεθενίτης Γιώργος, Κωνσταντίνος Μπουντούρης, Βασίλης Παπαδημητρίου
Θέμα Εργασίας Το θέμα της εργασίας μας ήταν υλοποίηση μιας ομάδας από αυτόνομους πράκτορες η οποία μπορεί να λάβει μέρος σε προσομοίωση ποδοσφαιρικού αγώνα 3D. Οι αγώνες διεξάγονται στο περιβάλλον προσομοίωσης SimSpark. Ο κάθε παίχτης-πράκτορας συνδέεται σε server απο τον οποίο λαμβάνει πληροφορίες για το περιβάλλον του, όπως όραση, τιμές αρθρώσεων, μηνύματα προς άλλους παίχτες, μηνύματα που αφορούν την κατάσταση του παιχνιδιού κτλ. Όσον αφορά το SimSpark τώρα, πρόκειται για ένα προσομοιωτή για πολυπρακτορικά συστήματα με περιβάλλον τριών διαστάσεων (3D). Απαιτείται σύνδεση σε server και χρήση socket ώστε να μπορούμε να στέλνουμε και να λαμβάνουμε πληροφορίες από τον server. Επίσης το SimSpark μας δίνει την δυνατότητα να χρησιμοποιήσουμε διάφορα μοντέλα ρομπότ. Στην δική μας εργασία χρησιμοποιήσαμε το ανθρωποειδές ρομπότ Ναο. Ο Nao στο SimSpark προσομοιώνεται ρεαλιστικά, που σημαίνει ότι όλα γίνονται όπως θα γινόντουσαν και στο πραγματικό κόσμο. Χαρακτηριστικό παράδειγμα είναι το γεγονός ότι πολλές τιμές που παίρνουμε από τον server περιέχουν και θόρυβο. Οι διαστάσεις του γηπέδου στο SimSpark:
Το ύψος του Nao είναι 57cm. To Ρομπότ Nao που χρησιμοποιήσαμε:
Το βάρος του 4.5kg. Έχει 22 βαθμούς ελευθερίας. Το γήπεδο όπως φαίνεται στο SimSpark: Διακριτά βασικά προβλήματα της εργασίας μας: 1. Localization (Βασίλης Παπαδημητρίου) Αφορά το κομμάτι όπου ο αυτόνομος πράκτορας πρέπει μα αναγνωρίζει την θέση του μέσα στο γήπεδο αναγνωρίζοντας διάφορα landmarks. 2. Perception (Μεθενίτης Γιώργος) Αφορά το κομμάτι της στατηγικής των ρομποτ μέσα στο γήπεδο.
3. Communication (Μπουντούρης Κωνσταντίνος) Αφορά το κομμάτι της επικοινωνιας μεταξύ των αυτόνομων πρακτόρων μέσα στο γήπεδο. 4. Motion (Σκιπετάρης Δημοσθένης) Αφορά το κομμάτι των κινήσεων των αυτόνομων πρακτόρων. Πιο συγκεκριμένα τώρα όσον αφορά το δικό μου κομμάτι των κινήσεων η δουλειά μου ήταν η εύρεση έτοιμων motion files και η βελτίωση τους ή η δημιουργία τους από την αρχή καθώς και ειδικά η προσαρμογή τους στο πρόγραμμα μας. Στην πλειοψηφία τους τα πήραμε έτοιμα είτε από την ομάδα των Κουρητών του Πολυτεχνείου Κρήτης είτε από το webots και κάναμε αρκετές βελτιώσεις. Τα motion files είναι αρχεία που έχουν μέσα τις τιμές της κάθε άρθρωσης του ρομπότ ώστε να κάνει την κάθε κίνηση που απαιτείται κάθε φορά. Στο πάνω κομμάτι του έχει το όνομα της κάθε άρθρωσης και απο κάτω τις διαδοχικές τιμές που πρέπει να πάρει η κάθε άρθρωση ώστε να υλοποιηθεί η ζητούμενη κίνηση. Οι τιμές των αρθρώσεων είναι είτε σε rad είτε σε μοίρες. Ένα παράδειγμα ενός motion file: Για να παίξουμε μια κίνηση σε κάθε κύκλο του server βλέπουμε αν ο πράκτορας έχει ζητήσει να εκτελέσει κάποια κίνηση. Αν υπάρχει ήδη κίνηση που παίζει, τότε την σταματάμε και ξεκινάμε να παίζουμε την κίνηση που ζητήθηκε.για να παίξουμε αυτό το αρχείο, το διαβάζουμε
από το δίσκο. Κοιτάμε τον τρέχοντα κύκλο του server καθώς και την τρέχουσα τιμή της κάθε άρθρωσης. Η διαφορά της τρέχουσας τιμής της κάθε άρθρωσης με την τιμή στο αρχείο κίνησης στέλνεται στον server και τότε το ρομπότ εκτελεί την κίνηση. Τον κώδικα μας τον έχουμε γράψει έτσι ώστε να μπορούμε εύκολα να αλλάζουμε πράγματα όπως: Την συχνότητα που στέλνουμε τις καινούργιες πόζες στον server. Δυνατότητα να διαβάσουμε τις πόζες ανα δύο (ταχύτερο παίξιμο της κίνησης). Να μικραίνουμε ή να μεγαλώνουμε το εύρος της κάθε κίνησηςαυτό επιτυγχάνεται με το πολλαπλασιασμό της τιμής που στέλνουμε στον server για την κάθε άρθρωση με μια παραμέτρο. Ανάλογα με την τιμή τις παραμέτρου έχουμε μεταβολή του εύρους της κίνησης. Δυνατότητα να διαβάσουμε motion files που έχει τιμές και σε rad,και σε μοίρες. Για την επεξεργασία ορισμένων motion files έγινε χρήση του εργαλείου webots καθώς πρόκειται για ένα εργαλείο το οποίο δίνει την δυνατότητα να αλλάζουν εύκολα οι τιμές της κάθε άρθρωσης καθώς και γενικώς το να καταλάβουμε πώς είναι δομημένο ένα motion file. Αλλαγές που έγιναν ήταν προσθήκη/διαγραφή από poses όταν ήταν απαραίτητο και αλλαγές στις τιμές των αρθρώσεων. Εικόνα με τις αρθρώσεις του Nao:
Εικόνα από webots:
Φτάσαμε σε ένα αρκετά ικανοποιητικό επίπεδο αλλά φυσικά υπάρχουν τρομακτικά περιθώρια βελτίωσης. Μέσα από τα βίντεο φαίνεται ολη μας η δουλειά καθώς και μέσα από τον κώδικα λεπτομέρειες της εργασίας μας.