Περίληψη: | Η τεχνολογία συνεχώς και εξελίσσεται με σκοπό να βελτιώνει και να κάνει ευκολότερη την ζωή των ανθρώπων. Στα σύγχρονα συστήματα έχει υιοθετηθεί η τάση να μπορούν να κάνουν όσο το δυνατόν περισσότερες διεργασίες χωρίς την επέμβαση του ανθρωπίνου χεριού. Μια εφαρμογή είναι η αυτόνομη οδήγηση ενός συστήματος, δηλαδή να μπορεί το κάθε σύστημα να ξέρει που βρίσκεται κάθε δεδομένη στιγμή καθώς και να μπορεί να πάει από μια αρχική θέση σε μια τελική. Αυτό το πρόβλημα βρίσκει πολλές εφαρμογές στο σύγχρονο κόσμο όπως είναι αυτοκινούμενα αυτοκίνητα, ρομπότ τα οποία έχουν τη δυνατότητα να κινούνται στο χώρο τους αυτόνομα κ.α.
Στην παρούσα διπλωματική εργασία θα ασχοληθούμε με αυτοκινούμενα ρομπότ και πιο συγκεκριμένα στον αλγόριθμο χαρτογράφησης και εντοπισμού θέσης SLAM (Simultaneous Localization and Mapping). Στην παρακάτω εφαρμογή θέτουμε ένα θεωρητικό υπόβαθρο του αλγορίθμου με όλα τα επιμέρους βήματα του, το μαθηματικό μοντέλο και δημιουργούμε ένα πλαίσιο εργασίας
(framework) στο οποίο θα βασιστούμε για να στήσουμε τον κώδικα του αλγορίθμου. Κυρίο χαρακτηριστικό του αλγορίθμου είναι η επιλογή σημείων στο χώρο με βάση ένα πιθανοτικο μοντέλο. Το ρομπότ μας κάθε στιγμή του χρόνου θα χρησιμοποιεί πιθανοτικές κατανομές για να ορίσει την θέση του καθώς και την θέση των σημείων στο χώρο. Ο αλγόριθμος υπολογισμού πιθανοτήτων είναι ο Kalman Filter ο οποίος είναι όλο το υπόβαθρο της παρούσας διπλωματικής και γίνεται μια επέκταση του στον γνωστό Extended Kalman Filter ο οποίος είναι μια βελτιστοποιημένη του μορφή που έρχεται να λύσει προβλήματα όπως εμπόδια χωρίς αρχικοποιημενες τιμές καθώς και κινητά εμπόδια στο χώρο.
Η παρούσα διπλωματική υλοποιήθηκε σε περιβάλλον προσομοίωσης. Έγινε χρήση του λογισμικού Webots και το ρομπότ το οποίο χρησιμοποιήθηκε για την υλοποίηση του είναι το e-puck της gc-robotronics. Το παραπάνω λογισμικό αποτυπώνει σε ένα πάρα πολύ μεγάλο βαθμό τη φυσική των αντικειμένων του και έχει πολύ εξελιγμένα renders των ρομπότ. Επιπλέον δίνει την δυνατότητα ανάπτυξης του κώδικα εντός του λογισμικού και έχει ένα μεγάλο εύρος γλωσσών προγραμματισμού. Στην δική μας περίπτωση έγινε χρήση της Python. Η επιλογή οφείλεται στο ότι υπήρχαν κάποιες βιβλιοθήκες που θα έλυναν κάποια προβλήματα στον κώδικα που θέλαμε να αναπτύξουμε καθώς και το ότι αποτελεί μια πολύ φιλική προς τον χρήστη γλώσσα.
|