H παρουσίαση περιλαμβάνει: Λίγα λόγια για την Τεχνητή Νοημοσύνη Λίγα λόγια για το πρόγραμμα Webots Τεχνικά χαρακτηριστικά του αυτόνομου E-puckmobile-robot Σχεδίαση του αλγορίθμου για το παιχνίδι Rat s Life
Τι είναι η Τεχνητή Νοημοσύνη Η Τεχνητή Νοημοσύνη είναι ο πιο δύσκολος και συναρπαστικότερος κλάδος της πληροφορικής. Είναι και αυτή ένα πρόγραμμα όπως όλα τα άλλα αλλά με μία σημαντικότατη διαφορά.τα κανονικά προγράμματα απλώς εκτελούν τις εντολές του προγραμματιστή.όμως το πρόγραμμα της Τεχνητής Νοημοσύνης είναι σχεδιασμένο έτσι ώστε να μπορεί να αυτοπρογραμματίζεται κατά τον καλύτερο δυνατό τρόπο στις υπάρχουσες συνθήκες. Ήδη η Τεχνητή Νοημοσύνη έχει καταφέρει απίστευτα πράγματα.ένα παράδειγμα είναι η αναμέτρηση της στο σκάκι με τον παγκόσμιο πρωταθλητή σκακιού Γκάρι Κασπάροβ το 1997.Το παιχνίδι ήταν ιδιαίτερα αμφίρροπο και στο κρισιμότερο σημείο ο παγκόσμιος πρωταθλητής έκανε μία κίνηση ώστε να ψαρέψει την Τεχνητή Νοημοσύνη και να νικήσει στο ματς.όπως παραδέχθηκε και ο ίδιος αργότερα η Τεχνητή Νοημοσύνη όχι μόνο δε ψάρεψε αλλά είδε ασύλληπτα για τον ανθρώπινο νου μακριά και έκανε μία απροσδόκητη και ριψοκίνδυνη κίνηση που χάρη σε αυτήν τελικά νίκησε στο παιχνίδι.φυσικά η ομάδα των επιστημόνων προγραμματιστών που κατασκεύασε τη συγκεκριμένη Τεχνητή Νοημοσύνη ήξερε μόνο για το σκάκι το πως παίζεται.αλλά αυτό που γνώριζε πολύ καλά ήταν πως να προγραμματίζει. Οι τρεις κανόνες με τους οποίους για την ανθρώπινη ασφάλεια πρέπει να έχουν προγραμματιστεί με Τεχνητή Νοημοσύνη οπωσδήποτε τα ρομπότς είναι οι εξής: 1) Το ρομπότ δεν επιτρέπεται να βλάψει άνθρωπο ή να επιτρέψει - μέσω της απραξίας του - να πάθει ένας άνθρωπος κακό. 2) Το ρομπότ πρέπει να υπακούει στις διαταγές των ανθρώπων,εκτός εάν οι διαταγές αυτές αντιβαίνουν τον πρώτο κανόνα. 3) Το ρομπότ πρέπει να προστατεύει την ύπαρξή του,εφόσον η ύπαρξή του δεν παραβιάζει τον πρώτο ή το δεύτερο κανόνα.
Τι είναι το πρόγραμμα Webots Το πρόγραμμα Webots παρέχει τη δυνατότητα εικονικού προγραμματισμού του ρομπότ.αυτό είναι πολύ σημαντικό καθόσον όταν προγραμματίζεις ένα αληθινό ρομπότ είναι χρονοβόρα η εκσφαλμάτωση. Εκτός από αυτό ο τρισδιάστατος κόσμος του Webots μέσα στο οποίο υπάρχει το ρομπότ δίνει μία πολύ καλή οπτική εικόνα για την αποφυγή εμποδίων ενώ παράλληλα δίνεται η δυνατότητα στον προγραμματιστή να μπορεί να προγραμματίσει το ρομπότ σε διάφορες γλώσσες συμπεριλαμβανομένης της γλώσσας Java.Αυτό είναι σημαντικότατο καθώς η γλώσσα Java είναι αυτήν τη στιγμή η καλύτερη γλώσσα προγραμματισμού στον πλανήτη.η γλώσσα Java είναι η καλύτερη γλώσσα προγραμματισμού σήμερα διότι γράφτηκε πάνω στη γλώσσα C και τη γλώσσα C++ αλλά αφαίρεσε τους δείκτες και τις μνήμες.αυτό είχε ως συνέπεια να γίνει ευκολότερη στην εκμάθηση αλλά συγχρόνως να διατηρεί και τις δυνατότητες των γλωσσών C και C++.Επιπρόσθετα εμπλουτίστηκε με ακόμη περισσότερες δυνατότητες και δικαίως κατέληξε να θεωρείται η κορυφαία γλώσσα στον κόσμο.το μόνο κόστος της συγγραφής της γλώσσας Java πάνω στις γλώσσες C και C++ είναι ότι έχει μικρότερη ταχύτητα από αυτές τις γλώσσες ωστόσο και πάλι η ταχύτητα της δεν είναι απαγορευτικά αργή. Τέλος το πρόγραμμα Webots διαθέτει υπέρυθρους αισθητήρες,αισθητήρες φωτός,αισθητήρες αφής, επιταχυνσιόμετρα,gps,κάμερες και άλλα τα οποία κάνουν το πρόγραμμα ένα ακαταμάχητο εργαλείο για τον προγραμματισμό των ρομπότς.
E-puck-mobile-robot Το Ε-puck-mobile-robot αντιπροσωπεύει καθένα από τα δύο ρομπότς που συναγωνίζονται μέσα στο λαβύρινθο ποιο από τα δύο θα επιβιώσει το μεγαλύτερο χρονικό διάστημα στο παιχνίδι που λέγεται Rat s Life.Τα τεχνικά χαρακτηριστικά αυτού του αυτόνομου ρομπότ είναι τα εξής: Διάμετρος: 70 mm Ύψος: 50 mm Βάρος: 200 g Μέγιστη ταχύτητα: 13 cm/s Αυτονομία: 2 ώρες κίνησης Μνήμη - RAM: 8 KB Λάμψη - Flash: 144 ΚΒ Κινήσεις: 2 Υπέρυθρους αισθητήρες μέτρησης απόστασης: 8 κατανεμημένους στο ρομπότ κυκλικά με τη φορά του ρολογιού Κάμερα: 640x480 στο μπροστινό μέρος του ρομπότ LEDs:8 LEDs κυκλικά + ένα στο κέντρο LED + ένα LED μπροστά Επιταχυνσιόμετρα: 3D Μικρόφωνα: 3 Ηχεία: 1
Ο αλγόριθμος έχει τρία σκέλη: Γρήγορη πλοήγηση Αποφυγή εμποδίων Εξερεύνηση για πλοήγηση σε αριστερούς ή δεξιούς διαδρόμους Για να διατηρηθεί στη ζωή το ρομπότ πρέπει να βρίσκει τις λάμπες που ανανεώνουν τη μπαταρία του δηλαδή παρατείνουν τη ζωή του στο ανταγωνιστικό αυτό παιχνίδι.συνεπώς ο αλγόριθμος που χρησιμοποιώ περιέχει καταρχάς γρηγορότερη πλοήγηση μέσα στο λαβύρινθο.η ταχύτητα της πλοήγησης του ρομπότ είναι ζωτικής σημασίας καθόσον αν του ρομπότ του μένει λίγος χρόνος για να παραμείνει ζωντανό και ανάψει μία λάμπα η οποία είναι μακριά από το ρομπότ τότε είναι ευκολονόητο το ότι το ρομπότ πρέπει να κινηθεί ταχύτατα.για αυτό λοιπόν η ταχύτητα του ρομπότ τριπλασιάστηκε. Εκτός από τη γρήγορη πλοήγηση ο αλγόριθμος συγκαταλέγει την αποφυγή εμποδίων.
Η αποφυγή εμποδίων πραγματοποιείται με τους αισθητήρες απόστασης distancesensor[0] και distancesensor[1] οι οποίοι ανιχνεύουν εμπόδια από τη μπροστινή πλευρά του ρομπότ εώς τη γωνία με αυτήν περίπου 45 μοίρες και τους αισθητήρες απόστασης distancesensor[6] και distancesensor[7] που εντοπίζουν εμπόδια από τη μπροστινή πλευρά του ρομπότ εώς τη γωνία με αυτήν περίπου -45 μοίρες.στην πρώτη περίπτωση γίνεται στροφή προς τα αριστερά ενώ στη δεύτερη,στροφή προς τα δεξιά.για να γίνει στροφή προς τα δεξιά θέτουμε την αριστερή ταχύτητα του ρομπότ ίση με τη μέγιστη ταχύτητα του ρομπότ (900) και τη δεξιά ταχύτητα του ρομπότ ίση με την αντίθετη τιμή της μέγιστης ταχύτητας του ρομπότ (-900).Τα ανάποδα κάνουμε για την αριστερή στροφή του ρομπότ. Επειδή υπάρχει η περίπτωση να κολλήσει στον τοίχο το ρομπότ επειδή δε θα βλέπει καθόλου στα αριστερά εμπόδια για το ρομπότ που χρησιμοποιεί για την αποφυγή εμποδίων τους αισθητήρες distancesensor[0] και distancesensor[1] τουτέστιν του ρομπότ Rat1 έχω προσθέσει και τον αισθητήρα distancesensor[7] για ανίχνευση πάρα πολύ κοντινών εμποδίων λίγο προς τα αριστερά. Ομοίως για το ρομπότ που χρησιμοποιεί για την αποφυγή εμποδίων τους αισθητήρες distancesensor[6] και distancesensor[7] δηλαδή του ρομπότ Rat0 έχω προσθέσει και τον αισθητήρα distancesensor[0] για ανίχνευση πάρα πολύ κοντινών εμποδίων λίγο προς τα δεξιά. Τέλος ο αλγόριθμος συμπεριλαμβάνει εξερεύνηση για πλοήγηση σε αριστερούς ή δεξιούς διαδρόμους.
Δηλαδή ο αλγόριθμος περιλαμβάνει πλοήγηση προς τα δεξιά όταν βρεθεί διάδρομος προς τα δεξιά για το ένα ρομπότ και πλοήγηση προς τα αριστερά όταν βρεθεί διάδρομος προς τα αριστερά για το άλλο ρομπότ.αυτή η στρατηγική είναι πολύ εποικοδομητική καθόσον αν δε δινόταν η δυνατότητα στο ρομπότ να στρίψει προς τα αριστερά για το ρομπότ που κάνει αποφυγή εμποδίων μόνο προς τα δεξιά ή δε δινόταν η δυνατότητα στο άλλο ρομπότ να στρίψει προς τα δεξιά ενώ κάνει αποφυγή εμποδίων μόνο προς τα αριστερά θα υπήρχε πρόβλημα.το πρόβλημα θα ήταν αν δεν υπήρχαν αυτές οι δυνατότητες ότι το ρομπότ το οποίο κάνει αποφυγή εμποδίων μόνο προς τα αριστερά να παγιδευόταν και να έκανε συνεχώς την ίδια κίνηση δηλαδή αποφυγή εμποδίων αποκλειστικά προς τα αρι στερά.το αντίστοιχο θα γινόταν και για το άλλο ρομπότ το οποίο θα έκανε κίνηση μόνο προς τα δεξιά και θα επαναλάμβανε διηνεκώς την ίδια κίνηση.αυτό υλοποιείται στο πρόγραμμα με τη χρήση του αισθητήρα distancesensor[2] για το ρομπότ Rat1 που ψάχνει διαδρόμους προς τα δεξιά ενώ αποφεύγει εμπόδια στρίβοντας πάντα αριστερά και του αισθητήρα distancesensor[5] για το ρομπότ Rat0 που ερευνά διαδρόμους προς τα αριστερά ενώ αποφεύγει εμπόδια στρίβοντας πάντα δεξιά. Ήτοι του αισθητήρα που σχηματίζει γωνία 90 μοίρες με το μπροστινό μέρος του πρώτου ρομπότ και του αισθητήρα που σχηματίζει γωνία -90 μοίρες με το μπροστινό μέρος του δεύτερου ρομπότ.
Οι αισθητήρες αυτοί είναι αισθητήρες μέτρησης απόστασης πράγμα που σημαίνει πως μετρούν την απόσταση του ρομπότ με τον τοίχο του λαβυρίνθου (εμπόδιο).ουσιαστικά όσο πιο μεγάλη τιμή έχουν αυτοί οι αισθητήρες τόσο πιο κοντά είναι το εμπόδιο από το ρομπότ.οπότε για απόσταση μικρότερη του 50 αυτών των αισθητήρων κάνω το Rat1 να κινηθεί προς τα δεξιά και το Rat0 να κινηθεί προς τα αριστερά. Η διπλανή εικόνα έχει μία γεύση αλήθειας...!!!