Αυτόνομοι Πράκτορες Xειμερινό Εξάμηνο Εργασία Εξαμήνου Σκιπετάρης Δημοσθένης Αμ :
Θέμα εργασίας Υλοποίηση μιας ομάδας από αυτόνομους πράκτορες η οποία μπορεί να λάβει μέρος σε προσομοίωση ποδοσφαιρικού αγώνα 3D. Οι αγώνες διεξάγονται στο περιβάλλον προσομοίωσης simspark Ο κάθε παίχτης-πράκτορας συνδέεται σε server απο τον οποίο λαμβάνει πληροφορίες για το περιβάλλον του,όπως όραση,τιμές αρθρώσεων πράκτορα,μηνύματα προς άλλους παίχτες,μηνύματα που αφορούν την κατάσταση του παιχνιδίου κτλ Γενική ιδέα
Τι είναι το SimSpark; Είναι ενας προσομοιωτής για πολυπρακτορικά συστημάτα με περιβάλλον τριών διαστάσεων (3D). Απαιτείτε σύνδεση σε server και χρήση socket. Μας δίνει την δυνατότητα να χρησιμοποιήουμε διάφορα μοντέλα ρομπότ. Στην δική μας εργασία χρησιμοποιήσαμε το ανθρωποειδές ρομπότ Ναο. Ο Nao στο Simaspark προσομοιώνεται ρεαλιστίκα. Διαστάσεις Γηπέδου
Ρομπότ Nao Το ύψος του Nao είναι 57cm. Το βάρος του 4.5kg. Έχει 22 βαθμούς ελευθερίας.
Εικόνα γηπέδου στο simspark
Διακριτά βασικά προβλήματα Localization(Βασίλης Παπαδημητρίου) Perception(Μεθενίτης Γιώργος) Communication(Μπουντούρης Κωνσταντίνος) Motion(Σκιπετάρης Δημοσθένης) Τι θα πει «Motion»; Είναι το κομμάτι των κινήσεων του ρομπότ,όπως περπάτημα,κλωστιά της μπάλας(σουτ),κτλ. Δημιουργία motion files και προσαρμογή τους στο πρόγραμμά μας. Βελτίωση έτοιμων κινήσεων που βρήκα στο διαδίκτυο(π.χ. μερικές κινήσεις τις πήραμε από την ομάδα των κουρητών του πολυτεχνείου κρήτης).
Τι είναι τα motion files; Τα motion files έχουν μέσα τις τιμές της κάθε άρθρωσης του ρομπότ ώστε να κάνει την κάθε κίνηση που απαιτείτε κάθε φορά. Στο πάνω κομμάτι του έχει το όνομα της κάθε άρθρωσης και απο κατώ τις διαδόχικες τιμές που πρεπεί να πάρει η κάθε άρθρωση ώστε να υλοποιηθεί η ζητούμενη κίνηση. Οι τιμές των αρθρώσεων είναι είτε σε rad είτε σε μοίρες.
Πως παίζουμε μια κίνηση; Σε κάθε κύκλο του server βλέπουμε αν ο πράκτορας έχει ζητήσει να εκτελέσει κάποια κίνηση. Αν υπάρχει ήδη κίνηση που παίζει,τότε την σταματάμε και ξεκινάμε να παίζουμε την κίνηση που ζητήθηκε. Για να παίξουμε αυτό το αρχείο,το διαβάζουμε από το δίσκο. Κοιτάμε τον τρέχοντα κύκλο του server καθώς και την τρέχουσα τιμή της κάθε άρθρωσης. Η διαφορά της τρέχουσας τιμής της κάθε άρθρωσης με την τιμή στο αρχείο κίνησης στέλνεται στον server και τότε το ρομπότ εκτελεί την κίνηση.
Ύπαρχουν παράμετροι που εύκολα αλλάζουμε την κάθε κίνηση Η συχνότητα που στέλνουμε τις καινούργιες πόζες. Δυνατότητα να διαβάσουμε τις πόζες ανα δύο (ταχύτερο παίξιμο της κίνησης). Να μικραίνουμε ή να μεγαλώνουμε το εύρος της κάθε κίνησης. Αυτό επιτυνχάνετε με το πολλαπλασιασμό της τιμής που στέλνουμε στον server για την κάθε άρθρωση με μια παραμέτρο. Ανάλογα με την τιμή τις παραμέτρου έχουμε σμίκρυνση ή επιμύκηνση του εύρους της κίνησης. Διαβάζουμε όλα τα motion files άπο την αρχή του προγράμματος και τα κρατάμε δυναμικά στην μνήμη του υπολογιστή. Δυνατότητα να διαβασουμε motion files που έχει τιμές και σε rad,και σε μοίρες.
Το εργαλείο Webots Βασικό εργαλείο για το κομμάτι των κινήσεων ήταν το webots. Με την βοήθεια αυτού του εργαλείου καταφέραμε να πειραματιστούμε και να βελτιώσουμε τα motion files. Πιθανή βελτιωση σε ενά motion file θα μπορούσε να ειναί πρόσθηκη από πόζες,διαγραφή από πόζες,αλλαγές στις τιμές τών αρθρώσεων κτλ.
Μια εικόνα του Nao με τις αρθρώσεις του
Εργαλείο Webots
Ας δείξουμε τώρα μερικά video με την δουλειά μας
Ας δείξουμε τώρα μέρικα video με την δουλειά μας Υπάρχουν τρομακτικά περιθώρια βελτίωσεις όπως είναι κατανοητό!
Ας δείξουμε τώρα μέρικα video με την δουλειά μας Υπάρχουν τρομακτικά περιθώρια βελτίωσεις όπως ειναι κατανοητό! Ας δείξουμε τώρα και ένα πιο γενικό
Τέλος Παρουσίασης Ευχαριστώ!