Αυτόνομοι Πράκτορες Εργασία εξαμήνου Monte Carlo Localization Simulator Κάργας Νικόλαος : 2007030045 Σκοπός της εργασίας ήταν η δημιουργία ενός προσομοιωτή του αλγορίθμου monte carlo για τον εντοπισμό της θέσης ενός ρομότ στο επίπεδο. Τα στάδια της εργασίας ήταν τα εξής: Γραφικό περιβάλλον Ρομπότ Μοντέλο Κίνησης Μοντέλο αισθητήρων Αναπαράσταση Θορύβου Σωματίδια Αλγόριθμος Monte Carlo Διάδοση σωματιδίων Ανανέωση βαρών Resampling Παραμετροποίηση Γραφικό περιβάλλον Αρχικά υλοποιήθηκε ένα απλό γραφικό περιβάλλον ώστε να οπτικοποιήσουμε την κινηση του ρομπότ ενώ στην συνέχεια εμπλουτίστηκε ως εξής: Το ρομπότ κινείται σε ένα παρκο με 4 δέντρα τα οποία αναπαριστούν τα landmarks. Επίσης περιμετρικά του πάρκου υπάρχουν τοίχοι οι οποίοι εμποδίζουν το ρομπότ να βγει από αυτό. Η αρχική θέση του ρομπότ όπως φαίνεται στην εικόνα 1 είναι (200,200) και στην συνέχεια κινείται σύμφωνα με τις ταχύτητες v και w που έχουμε ορίσει. Μόλις φτάσει στα όρια του χάρτη μεταβάλλει την γωνακή ταχύτητα του ώστε να αποφύγει την σύγκρουση. Εικόνα 1
Ρομπότ Το ρομπότ αναπαρίσταται σαν ένας δίσκος. Η λευκή γραμμή (ακτίνα) δηλώνει την κατεύθυνση στην οποία κινείται και έχει οριστεί αρχικά 0rads. Υποθέτουμε ότι θετικές γωνίες αντιστοιχούν σε δεξιόστροφη κίνηση. Μοντέλο κίνησης: Αρχικά έπρεπε να δημιουργήσουμε το μοντέλο κίνησης του ρομπότ.βασιστήκαμε στο velocity motion model σύμφωνα με το οποίο η κατάστασή του κάθε χρονική στιγμή καθορίζεται από την θέση του στον χώρο, την κατεύθυνση του και 2 ταχύτητες, v και w.οι εξισώσεις κίνησης που προκύπτουν είναι οι εξής: x = x+( -V/W *sin(θ) + V/W * sin(θ+w*δt) ) y = y+( V/W *cos(θ) - V/W * cos(θ+w*δt) ) θ = θ +W * Δt Μοντέλο αισθητήρων: Αισθητήρες που υπάρχουν περιμετρικά του ρομπότ του δίνουν πληροφορία για την απόστασή του από το κοντινότερο landmark η εμπόδιο (τοίχο).στην πρώτη περίπτωση υποθέτουμε ότι το ρομπότ γνωρίζει την γωνία με την οποία κοιτάζει το landmark και μπορεί άμεσα να εντοπίσει την θέση του στον χώρο. Στην δεύτερη περίπτωση δηλαδή όταν βρίκεται κοντά στα όρια του χάρτη πραγματοποιείται η ανανέωση βαρών των σωματιδίων ανάλογα με την απόστασή τους από το κοντινότερο εμπόδιο. Αναπαράσταση θορύβου: Για να αναπαραστήσουμε τον θόρυβο ορίσαμε 8 παραμέτρους a1,..a6 r και φ οι οποίες επιρεάζουν την κίνηση του ρομπότ και τις μετρήσεις που λαμβάνει. Vnoise=V+εb1, εb1 τυχαία μεταβλητή N ( 0, a1* V +a2* W Wnoise=W+εb2, εb2 τυχαία μεταβλητή N ( 0, a3* V +a4* W ) γ=εb3, εb3 τυχαία μεταβλητή N ( 0, a5* V +a6* W ) Οι παράμετροι r και φ προσθέτουν σφάλμα στην μέτρηση της απόστασης και της γωνίας του ρομπότ απο κάποιο landmark.
Σωματίδια Κατά την έναρξη του προσομοιωτή δημιουργούνται 200 σωματίδια τα οποία τοποθετούνται στην αρχική θέση του ρομπότ. Στην συνέχεια κινούνται σύμφωνα με τα drive commands που δίνουμε στο ρομπότ και τον θόρυβο. Για τα σωματίδια ορίσαμε 6 νέες παραμέτρους θορύβου p1,..p6 τις οποίες μπορεί να αλλάξει ο χρηστης από το κατάλληλο μενού. Αλγόριθμος monte carlo O αλγόριθμος monte carlo localization χωρίζεται σε 2 φάσεις. Μετά από μία κίνηση του ρομπότ(ένα βήμα) και την λήψη ή όχι μίας μέτρησης έχουμε τα εξής στάδια Διάδοση σωματιδίων: Κάθε σωματίδιο κινείται ανάλογα με την θέση που είχε την προηγούμενη χρονική στιγμή και το sampling που γίνεται στα drive commands του ρομπότ. Ανανέωση βαρών: Στην περίπτωση που το ρομπότ λάβει κάποια μέτρηση από έναν τοίχο, κάθε σωματίδιο ζυγίζεται ανάλογα με το που βρίσκεται σε σχέση με τα όρια του χάρτη. Σωματίδια τα οποία αποκτούν μεγάλο βάρος συνεισφέρουν περισσότερο στην εκτίμηση της θέσης του ρομπότ αφού υπολογίζεται χρησιμοποιώντας το weighted mean. EstPosition =Σ( Posxi*wi ) Ο συγκεκριμένος τρόπος έχει το μειονέκτημα ότι αν τα σωματίδια διασπαστούν σε 2 η περισσότερες ομάδες, δεν μπορεί να αναπαραστήσει μία σωστή εκτίμηση της θέσης του ρομπότ. Στην επόμενη εικόνα βλέπουμε ένα παράδειγμα όπου μετά την τυχαία τοποθέτηση των σωματιδίων και την λήψη μετρήσεων προέκυψαν αρκετές ομάδες.η εκτιμώμενη θέση του ρομπότ δεν είναι στα όρια του χάρτη αλλά στο εσωτερικό. Για την λύση του παραπάνω προβλήματος μπορούμε να χρησιμοποιήσουμε μόνο το σωματίδιο με το μεγαλύτερο βάρος.
Resampling: Μετά την λήψη μετρήσεων, κάποια σωματίδια είναι πιθανό να αποκτήσουν πολύ μικρό βάρος και συνεπώς να μην επιρεάζουν την εκτίμηση της θέσης του ρομπότ.σε αυτή την περίπτωση πραγματοποιούμε resampling χρησιμοποιώντας την μέθοδο επιλογή με αντικατάσταση αφαιρώντας σωματίδια με μικρό βάρος και τοποθετόντας περισσότερα αντίγραφα σωματιδίων με μεγαλύτερο βάρος. Τα βάρη στην συνέχεια κανονικοποιούνται ξανά ώστε να αθροίζουν στην μονάδα. Ο αλγόριθμος παρουσιάζεται στην παρακάτω εικόνα.
Παραμετροποίηση Μετά την ολοκλήρωση των βασικών τμημάτων της εργασίας δημιουργήθηκε ένα μενού ώστε να μπορεί ο χρήστης να αλλάζει τις παραμέτρους θορύβου του ρομπότ και των σωματιδίων. Επίσης με τα πλήκτρα arrow up,left,down,right μπορεί να μεταβάλλει τις ταχύτητες του ρομπότ και να το κατευθύνει.