Σχεδίαση αλγορίθμου πλοήγησης για την αποφυγή θηρευτή από το ρομπότ Khepera I και υλοποίηση με χρήση FPGA

Μέγεθος: px
Εμφάνιση ξεκινά από τη σελίδα:

Download "Σχεδίαση αλγορίθμου πλοήγησης για την αποφυγή θηρευτή από το ρομπότ Khepera I και υλοποίηση με χρήση FPGA"

Transcript

1 ΑΡΙΣΤΟΤΕΛΕΙΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΟΝΙΚΗΣ ΤΜΗΜΑ ΗΛΕΚΤΡΟΛΟΓΩΝ ΜΗΧΑΝΙΚΩΝ ΚΑΙ ΜΗΧΑΝΙΚΩΝ ΥΠΟΛΟΓΙΣΤΩΝ ΤΟΜΕΑΣ ΗΛΕΚΤΡΟΝΙΚΗΣ ΚΑΙ ΥΠΟΛΟΓΙΣΤΩΝ Σχεδίαση αλγορίθμου πλοήγησης για την αποφυγή θηρευτή από το ρομπότ Khepera I και υλοποίηση με χρήση FPGA Γλάρος Κωνσταντίνος Καλαφάτης Μιχαήλ Επιβλέπων καθηγητής: Λουκάς Πέτρου Ιούνιος 2006

2 Στην οικογένειά μου που με στηρίζει όλα αυτά τα χρόνια και στους συμφοιτητές μου για όλα όσα περάσαμε μαζί Κώστας Στους γονείς μου για τους κόπους τους στην αδερφή μου τη Φωτεινή και σε όσους με κάνουν να χαμογελώ Μιχάλης

3 Περιεχόμενα Περιεχόμενα... I Εισαγωγή Ρομπότ και Έλεγχος Ολικός Σχεδιασμός Κίνησης ή Τοπικός Έλεγχος; Εισαγωγή Η αξιοποίηση της Ασαφούς Λογικής Συνδυασμός ολικού σχεδιασμού κίνησης και τοπικού ελέγχου Συνδυασμός ολικού σχεδιασμού κίνησης και τοπικού ελέγχου στο δικό μας αλγόριθμο Αρχιτεκτονική του ελέγχου Εισαγωγή στις αρχιτεκτονικές βασισμένες σε συμπεριφορές και συσχέτιση τους με βιολογικές ιδιότητες Από τη λειτουργική προσέγγιση (sense-think-act) στις ρομποτικές συμπεριφορές Επιλογή της υβριδικής σχεδίασης Σύνδεση ερεθίσματος και αποτελέσματος με χρήση εικονικών δυναμικών πεδίων Το ρομπότ Κhepera Αισθητήρες IR Κινητήρες Επικοινωνία Τροφοδοσία Η κάρτα επέκτασης K213 (K213 vision turret) Η κάρτα επέκτασης εισόδων/εξόδων (General I/O turret) Θήραμα-Θηρευτής. Περιγραφή του αλγορίθμου Γενική περιγραφή του προβλήματος Σύντομη ανάλυση του βιολογικού προτύπου Το πρόβλημα που θα αντιμετωπίσουμε Εφαρμογή του αλγορίθμου στην αντιμετώπιση ρεαλιστικών προβλημάτων Εισαγωγικά χαρακτηριστικά Παραδοχές του προβλήματος Περιγραφή του αλγορίθμου Εισαγωγή (Σύντομη περιγραφή των συμπεριφορών και επεξήγηση του σεναρίου) Κύριος Κύκλος (main loop) Τυχαία περιήγηση (STATE=[0 0]) Εντοπισμός θηρευτή και αποφυγή του (STATE=[1 0]) Εντοπισμός τροφής και προσέγγισή της (STATE=[0 1]) Εμφάνιση θηρευτή κατά τη διάρκεια προσέγγιση τροφής (STATE=[1 1]) Ανάλυση της υλοποίησης των συμπεριφορών Εισαγωγή Αποφυγή Εμποδίων Διατήρηση Κατεύθυνσης Παρακολούθηση περιμέτρου Εστίαση Προσομοιώσεις με τον Kiks Προσομοιωτής Kiks Εισαγωγή...50 I

4 4.1.2 Πιστότητα της προσομοίωσης Προσομοίωση Συμπεριφορών Αποφυγή Εμποδίων σε αρένα χωρίς διαδρόμους Αποφυγή Εμποδίων σε αρένα με διαδρόμους Παρακολούθηση περιμέτρου Προσομοίωση Εστίασης Διατήρηση κατεύθυνσης Προσέγγιση τροφής και έκτακτη εμφάνιση θηρευτή FPGA και υλοποίηση των ελεγκτών FPGA Αρχιτεκτονική Προγραμματισμός VHDL Διαδικασία σχεδίασης κυκλωμάτων με FPGA Suzaku V Υλοποίηση των ελεγκτών Υλοποίηση ασαφών ελεγκτών στο υλικό Δομή συστήματος Ο ελεγκτής αποφυγής εμποδίων Ο ελεγκτής παρακολούθησης περιμέτρου Ο ελεγκτής εικονικών εμποδίων Ο ελεγκτής εστίασης Ο ελεγκτής επικοινωνίας Στοιχεία για την υλοποίηση των ελεγκτών H είσοδος επιλογής συμπεριφοράς Προσομοιώσεις Link for Modelsim Το μοντέλο του ελεγκτή στο Matlab Επικοινωνία Khepera FPGA Προγραμματισμός του Khepera BIOS Τρόποι προγραμματισμού To πρόγραμμα Συμπεράσματα - Προτάσεις Συμπεράσματα Προτάσεις Βιβλιογραφία Παραρτήματα Α. Προγραμματισμός του Khepera με το KTProject Β. Προγραμματισμός του Suzaku-V με το Xilinx ISE Γ. Link for Modelsim Δ. Αντιστοιχίες ακροδεκτών πλακέτας μετατροπής επιπέδων τάσης Ε. Πλατφόρμα επέκτασης k213 και ιδιαιτερότητες στον Kiks II

5 ΣΤ. Δομή κυκλωμάτων III

6 Εισαγωγή Εισαγωγή Η παρούσα διπλωματική εργασία ασχολείται με την σχεδίαση και υλοποίηση ενός αλγορίθμου πλοήγησης για το ρομπότ Khepera I. Το ρομπότ παίζει το ρόλο του θηράματος, το οποίο κινούμενο τυχαία μέσα σε άγνωστη αρένα αναγνωρίζει και αποφεύγει το θηρευτή του, ενώ παράλληλα αναζητά τη δική του τροφή. Η δουλειά που έγινε ξεκινάει από το επίπεδο του σχεδιασμού του αλγορίθμου, περνάει στη δοκιμή του και καταλήγει στην υλοποίησή του στο hardware. Οι στόχοι της εργασίας μπορούν να αναλυθούν σε δύο άξονες: Σχεδίαση του κατάλληλου αλγορίθμου, υλοποίησή του σε Matlab και προσομοίωση για απόδειξη της ορθής λειτουργίας του. Υλοποίηση των ελεγκτών του παραπάνω αλγορίθμου σε FPGA για συνεργασία με το Khepera. Η γραπτή αναφορά παρουσιάζει τον τρόπο με τον οποίο υλοποιήθηκαν τα παραπάνω, τα θεωρητικά θεμέλια της εργασίας και τα πειράματα που επιβεβαιώνουν την αποτελεσματικότητα των υλοποιήσεων του αλγορίθμου σε software και hardware. Στο πρώτο κεφάλαιο περιγράφονται οι μεθοδολογίες του ελέγχου που επηρέασαν το σχεδιασμό του αλγορίθμου μας. Εξηγούνται τα χαρακτηριστικά των αρχιτεκτονικών που βασίζονται σε συμπεριφορές και της ασαφούς λογικής και τα πλεονεκτήματα που μας οδήγησαν στην υιοθέτηση αυτών των θεωρητικών εργαλείων. Στο δεύτερο κεφάλαιο γίνεται μια παρουσίαση του ρομπότ Khepera. Αναλύονται τα αισθητήριά του, οι κινητήρες του, οι τρόποι ελέγχου του, η τροφοδοσία του και οι κάρτες επέκτασης που μας χρησίμευσαν. Το τρίτο κεφάλαιο ξεκινάει με το γενικό πρόβλημα στο οποίο ζητούμε απάντηση, την προέλευσή του και τις εφαρμογές μιας πιθανής λύσης και ακολουθούν οι παραδοχές που έγιναν για την επίλυση. Στο κυρίως μέρος του παρουσιάζεται το σενάριο κίνησης του ρομπότ και ο αλγόριθμος όπως αυτός σχεδιάστηκε. Το κεφάλαιο κλείνει με μια ανάλυση των συμπεριφορών που κρίθηκαν αναγκαίες και του τρόπου που υλοποιήθηκαν. Στο τέταρτο κεφάλαιο παρατίθενται τα αποτελέσματα των προσομοιώσεων του αλγορίθμου σε software και τα χαρακτηριστικά του προσομοιωτή kiks που χρησιμοποιήθηκε σε αυτές. Στο πέμπτο κεφάλαιο γίνεται η παρουσίαση της μεταφοράς του αλγορίθμου σε hardware. Παρουσιάζονται βασικά στοιχεία των FPGA και της διαδικασίας υλοποίησης κυκλωμάτων σε αυτά, ενώ γίνεται μια πιο αναλυτική περιγραφή της αναπτυξιακής πλακέτας που χρησιμοποιήθηκε, Suzaku V. Το κεφάλαιο 1

7 Εισαγωγή συνεχίζεται με την επεξήγηση της υλοποίησης των ελεγκτών στο hardware και ολοκληρώνεται με την παρουσίαση προσομοιώσεων των μοντέλων των ελεγκτών στο Matlab. Για να έχει μια βάση η αξιολόγηση των αποτελεσμάτων συγκρίνονται με αυτά των software προσομοιώσεων. Το έκτο κεφάλαιο ασχολείται με την επικοινωνία του επεξεργαστή του Khepera με το FPGA. Παρουσιάζεται η πλακέτα που σχεδιάστηκε και κατασκευάστηκε καθώς και το πρωτόκολλο επικοινωνίας που αναπτύχθηκε. Τέλος στο έβδομο κεφάλαιο εξηγείται ο τρόπος που προγραμματίστηκε το Khepera. Παρουσιάζονται γενικά χαρακτηριστικά του BIOS του ρομπότ και γίνεται μια σύντομη περιγραφή ορισμένων από τις συναρτήσεις που υλοποιήθηκαν. Η αναφορά κλείνει με το κεφάλαιο των συμπερασμάτων και με προτάσεις για μελλοντικές εργασίες που μπορούν να βελτιώσουν και να επεκτείνουν τα όσα επετεύχθησαν. Κλείνοντας θέλουμε να ευχαριστήσουμε το Νίκο Τσακαλάκη για τις συζητήσεις που κάναμε στα πρώτα βήματα αυτής της εργασίας και τον Μπάμπη Σερένη για τη βοήθειά του στην κατασκευή της πλακέτας. Τέλος, ιδιαίτερα ευχαριστούμε τον κ. Λουκά Πέτρου για τις πολύτιμες συμβουλές και την υποστήριξή του. 2

8 Ρομπότ και Έλεγχος 1. Ρομπότ και Έλεγχος Στο κεφάλαιο αυτό θα γίνει μια εισαγωγή στις μεθοδολογίες του ρομποτικού ελέγχου που επηρέασαν την υλοποίηση του αλγορίθμου μας. 1.1 Ολικός Σχεδιασμός Κίνησης ή Τοπικός Έλεγχος; Εισαγωγή Πολλές μέθοδοι έχουν αναπτυχθεί για τον έλεγχο ενός κινούμενου ρομπότ. Σε γενικές γραμμές μπορούμε να τις κατηγοριοποιήσουμε σε δύο μεγάλα σύνολα: τον ολικό σχεδιασμό κίνησης(global planning) και τον τοπικό έλεγχο (local control) [14]. Ένα μεγάλο μέρος της έρευνας και κυρίως αυτό που σχετίζεται με πλοήγηση σε απόλυτα γνωστό περιβάλλον χρησιμοποιεί τον ολικό σχεδιασμό κίνησης. Ένα παράδειγμα τέτοιας υλοποίησης είναι η χρήση τεχνητών δυναμικών πεδίων[1]. Αυτές οι μέθοδοι στηρίζονται στη χάραξη μονοπατιών ελεύθερα από εμπόδια στα οποία μπορεί να κινηθεί το ρομπότ. Το μεγάλο τους πλεονέκτημα είναι η άμεση απόδειξη του ότι το ζητούμενο μπορεί να επιτευχθεί. Αυτό σημαίνει ότι με την δημιουργία του χάρτη κίνησης δείχνεται το πώς και το αν το ρομπότ μπορεί να προσεγγίσει το στόχο του χωρίς σύγκρουση. Επιτρέπεται έτσι η περαιτέρω βελτιστοποίηση της επίλυσης ως προς διάφορες παραμέτρους κόστους, όπως π.χ. το χρόνο ή την επικινδυνότητα. Προφανώς υπάρχει ένα πολύ μεγάλο μειονέκτημα: η ακριβής γνώση του περιβάλλοντος μέσα στο οποίο κινείται το ρομπότ είναι κάτι που πολύ δύσκολα επιτυγχάνεται. Οι μέθοδοι του τοπικού ελέγχου είναι κυρίως χρησιμοποιούμενες σε άγνωστο περιβάλλον. Συχνά συναντιόνται με τον όρο στρατηγικές αλληλεπίδρασης (reactive strategies) και είναι αποκλειστικές αντιδράσεις του ρομπότ στην πληροφορία που λαμβάνει κάθε στιγμή από τα αισθητήρια. Για αυτή τη διεργασία η γνώση του περιβάλλοντος δεν είναι απαραίτητη αλλά το ρομπότ πρέπει να είναι εφοδιασμένο με ένα σύνολο κανόνων ερεθίσματος αντίδρασης. Αυτές οι μέθοδοι δεν εγγυώνται την επίλυση κάθε σεναρίου σε κάθε περίπτωση αφού δεν μπορούν να χαράξουν εκ των προτέρων ένα χάρτη κίνησης. Ένα άλλο μειονέκτημα τους είναι η ευαισθησία τους στην ακρίβεια των μετρήσεων. Ανακριβείς μετρήσεις των ερεθισμάτων οδηγούν σε λανθασμένη λήψη απόφασης για την επόμενη ενέργεια του. Στα μειονεκτήματα των δύο παραπάνω μεθόδων πρέπει να προστεθούν δύο ακόμα: Η αδυναμία πρόβλεψης και κατανόησης από το ρομπότ όλων των αλλαγών που μπορεί να προκύπτουν ανά πάσα στιγμή στο περιβάλλον μέσα στο οποίο κινείται. 3

9 Ρομπότ και Έλεγχος Η αδυναμία ακριβής εκτίμησης της θέσης του ρομπότ λόγω των ατελειών των αισθητηρίων του[14] Η αξιοποίηση της Ασαφούς Λογικής Η πλειοψηφία των προβλημάτων που προκύπτουν στις δύο μεθόδους που περιγράψαμε στην προηγούμενη παράγραφο σχετίζονται με την αδυναμία ακρίβειας είτε στη γνώση του περιβάλλοντος είτε στη λήψη της βέλτιστης απόφασης. Για την αντιμετώπιση αυτών των συνθηκών χρησιμοποιούνται μοντέλα που στηρίζονται στην κατά κύριο λόγο ποιοτική αιτιολόγηση της κάθε απόφασης μιμούμενα την ανθρώπινη συμπεριφορά. Αυτό αντισταθμίζει την αναπόφευκτη ανακρίβεια και τα προβλήματα που αυτή εισαγάγει. Μια τέτοια θεωρία είναι αυτή της ασαφούς λογικής (fuzzy logic). Από το 1965 οπότε και ο Lotfi Zadeh εισήγαγε τη θεωρία της ασαφούς λογικής βρήκε πάρα πολλές εφαρμογές στη θεωρία του ελέγχου. Αυτό οφειλόταν στο ότι έδινε απάντηση σε βασικούς περιορισμούς που εισήγαγε ο συμβατικός έλεγχος. Οι περιορισμοί αυτοί σε γενικές γραμμές είναι οι εξής: Περιορίζει τη μη γραμμικότητα. Τα γραμμικά μοντέλα του συμβατικού ελέγχου έχουν πολύ στενά όρια για τα υπό έλεγχο συστήματα ενώ τα μη γραμμικά είναι υπερβολικά απαιτητικά σε υπολογιστική ισχύ και απαιτούν την επίλυση πολύπλοκων προβλημάτων ευστάθειας. Επηρεάζονται σημαντικά από την αβεβαιότητα που πάντα υπάρχει σε ένα σύστημα λόγω της μη πλήρους γνώσης του. Δημιουργούν συστήματα με πολλές μεταβλητές και πολλαπλούς βρόχους, συστήματα δηλαδή με πολύπλοκους περιορισμούς και εξαρτήσεις. Εμφανίζουν «προσωρινές» συμπεριφορές. Τα μοντέλα του κλασικού ελέγχου μεταβάλλονται με το χρόνο. Επιπλέον εισάγονται καθυστερήσεις πολύ δύσκολο να μοντελοποιηθούν[17]. Η ιδέα του Zadeh ξεκινάει από την προσπάθεια του να εφαρμόσει στον έλεγχο τις αρχές λειτουργίας του ανθρώπινου μυαλού. Η προσπάθεια του είχε σημαντικά αποτελέσματα με τους ασαφείς ελεγκτές να παρουσιάζουνε τα εξής πλεονεκτήματα: Οι ασαφείς ελεγκτές είναι πιο εύρωστοι από τους κλασσικούς PID ελεγκτές γιατί καλύπτουν ένα πολύ ευρύτερο πεδίο συνθηκών λειτουργίας και μπορούν να λειτουργούν με θόρυβο. 4

10 Ρομπότ και Έλεγχος Οι ασαφείς ελεγκτές είναι πιο εύκολα αναπροσαρμόσιμοι αφού είναι κατανοητοί οι κανόνες τους, οι οποίοι όχι μόνο στηρίζονται στην ανθρώπινη λογική αλλά είναι και εκφρασμένοι με λεκτικούς όρους. Είναι εξαιρετικά απλή η λειτουργία τους, η κατανόησή τους και άρα ο σχεδιασμός τους. Τέλος αξίζει να σημειωθεί ότι η ασαφής λογική δημιούργησε ένα γεφύρωμα στη διάδραση ανθρώπου υπολογιστή αφού επέτρεψε τον «προγραμματισμό» μηχανών σε μια λογική που προσεγγίζει την ανθρώπινη σκέψη και ξεφεύγει από τα στενά όρια της δυαδικής λογικής[17] [14] Συνδυασμός ολικού σχεδιασμού κίνησης και τοπικού ελέγχου Τα προβλήματα που προκύπτουν στις δύο μορφές ελέγχου οδηγούν συνήθως στην υλοποίηση αλγορίθμων που συνδυάζουν τα πλεονεκτήματα των δύο θεωρήσεων. Μια συνηθισμένη πρακτική είναι η αξιοποίηση της εκ των προτέρων γνώσης του περιβάλλοντος. Έτσι όση ώρα οι μετρήσεις των αισθητηρίων συμφωνούν με τις προβλεπόμενες ακολουθούνται οι ενέργειες που καθορίζει ο ολικός σχεδιασμός κίνησης. Όταν δεν έχουμε ταύτιση πρόβλεψης και πραγματικότητας το ρομπότ αποφασίζει με βάση τον τοπικό έλεγχο. Τα αποτελέσματα των δύο επιλογών οδηγούνται σε συμψηφισμό (fusion) και έτσι πραγματοποιείται ο έλεγχος. Σε περιπτώσεις που το ρομπότ δεν έχει εκ των προτέρων πληροφορία για το περιβάλλον ο έλεγχος ξεκινάει πάντα με μια στρατηγική αλληλεπίδρασης. Καθώς όμως κινείται μέσα στο χώρο μπορεί να συλλέγει πληροφορίες για αυτόν και έτσι μετά από ένα διάστημα να έχει τη δυνατότητα χρησιμοποίησης ολικού σχεδιασμού κίνησης, ο οποίος θα λειτουργεί και πάλι σε συνδυασμό με την στρατηγική αλληλεπίδρασης Συνδυασμός ολικού σχεδιασμού κίνησης και τοπικού ελέγχου στο δικό μας αλγόριθμο Στη δική μας υλοποίηση επειδή το ρομπότ ξεκινάει χωρίς καμία εκ των προτέρων γνώση του χώρου μέσα στον οποίο θα κινηθεί κυριαρχεί η χρήση στρατηγικής αλληλεπίδρασης. Μετά όμως από συγκεκριμένες παρατηρήσεις το ρομπότ διατηρεί προσωρινά στη μνήμη του θέσεις σημείων στόχων σε σχέση με τα οποία γνωρίζει από πριν αν πρέπει να κινηθεί προσεγγιστικά ή αντίθετα. Αυτή η κατάσταση μπορεί να χαρακτηριστεί σαν μια ειδική περίπτωση ολικού σχεδιασμού κίνησης. Οδηγείται έτσι το ρομπότ σε μια συνδυασμένη πλοήγηση με χρήση και των δύο μεθοδολογιών. 5

11 Ρομπότ και Έλεγχος Η μετάβαση από τον τοπικό έλεγχο στη μορφή του ολικού σχεδιασμού κίνησης και η αντίθετη υλοποιούνται με μια αρχιτεκτονική βασισμένη σε ρομποτικές συμπεριφορές. 1.2 Αρχιτεκτονική του ελέγχου Εισαγωγή στις αρχιτεκτονικές βασισμένες σε συμπεριφορές και συσχέτιση τους με βιολογικές ιδιότητες Οι αρχιτεκτονικές βασισμένες στις συμπεριφορές (Behavioral Based Architectures) αναλύουν ένα σύστημα ελέγχου σε σύνολα διεργασιών (tasks) που καλούνται συμπεριφορές. Κάθε συμπεριφορά είναι ένα πλήρες αλλά απλό σύστημα ελέγχου που καθορίζει σε κάθε στιγμή την επόμενη ενέργεια του ρομπότ συναρτήσει των εισόδων στα αισθητήρια του και τον a priori σχεδιασμό του ελεγκτή. Μια σημαντική ιδιότητα των αρχιτεκτονικών αυτών είναι η επεκτασιμότητα. Καινούριες συμπεριφορές μπορούν να τοποθετούνται με βάση την εμπειρία πάνω από τις ήδη υπάρχουσες επεκτείνοντας τα όρια της ικανότητας λήψης αποφάσεων. Κατά μία έννοια η παρέμβαση του μηχανικού μέσω της τοποθέτησης νέων συμπεριφορών σε ένα σύστημα ελέγχου καθιστά την εξέλιξη του συστήματος ελέγχου πιο κοντά στη θεωρία του Λαμάρκ και αντίθετη στη θεωρία του Δαρβίνου όπου επικρατούν τα περισσότερο προσαρμοσμένα στο περιβάλλον άτομα του πληθυσμού αυτή η θεώρηση αξιοποιείται στην εξελικτική ρομποτική. Μια άλλη θεμελιώδης ιδιότητα της υιοθέτησης των συμπεριφορών στη ρομποτική είναι η αλληλεπίδραση του ρομπότ με ένα περιβάλλον μη αναλυτικά αντιληπτό και χωρίς τις ακριβείς ιδιότητες του κόσμου που το περιβάλει. Όπως συμβαίνει και στους οργανισμούς που βρίσκονται στα χαμηλότερα επίπεδα της αλυσίδας εκμάθησης το ρομπότ αντιδράει σε ερεθίσματα για τα οποία δε γνωρίζει από πού προέρχονται. Για παράδειγμα, δεν ασχολείται με τη φύση των εμποδίων μόνο με το να τα αποφύγει και να οδηγηθεί μακριά από «αυτό» που του αυξάνει τις μετρήσεις στα αισθητήριά του. Αυτό που τελικά έχει πολύ μεγάλη σημασία είναι η ένταση του ερεθίσματος. Το μέγεθος της αντίδρασης που προκαλείται από το κάθε ερέθισμα είναι ανάλογο της έντασης του (αυτό είναι ένα ακόμη χαρακτηριστικό που αξιοποιείται από την υιοθέτηση της ασαφούς λογικής)[13]. 6

12 Ρομπότ και Έλεγχος Από τη λειτουργική προσέγγιση (sense think act) στις ρομποτικές συμπεριφορές. Τα πρώτα βήματα του ρομποτικού ελέγχου έγιναν με την καθοδήγηση των μηχανικών, αυτό είχε σαν αποτέλεσμα την υιοθέτηση των αρχών του αυτομάτου ελέγχου. Ο έλεγχος σε αυτή την περίπτωση ανάγεται στην επιλογή μιας συνάρτησης ελέγχου και των κατάλληλων παραμέτρων ώστε το σύστημα να αποκρίνεται σωστά στα ερεθίσματα των αισθητήρων. Αυτό συνεπάγεται ελαχιστοποίηση της συνάρτησης σφάλματος που περιγράφει τη διαφορά ανάμεσα στην επιθυμητή και την παρούσα κατάσταση του συστήματος. Η προσέγγιση έγινε γνωστή με τον όρο cybernetics[16]. Η λειτουργική προσέγγιση (functional approach) ή περισσότερο γνωστή ως sensethink act cycle είναι μια προέκταση της cybernetics. Ο ορισμός του σφάλματος πλέον γενικεύεται και ο έλεγχος γίνεται σε πέντε στάδια όπως φαίνεται στο σχήμα α Αισθητήρια Αντίληψη (Perception) Μοντελοποίηση (Modeling) Σχεδιασμός (Planning) Εκτέλεση Διεργασίας (Task execution) Έλεγχος Κινητήρων (Motor Control) Actuators Σχήμα α Κύκλος Sense-Think-Act Η συνολική διαδικασία ελέγχου περιγράφεται από 5 επιμέρους λειτουργίες. Συνοπτικά σε αυτές καταρχήν υφίστανται επεξεργασία τα δεδομένα των αισθητήρων, και στη συνέχεια χρησιμοποιούνται για τη μοντελοποίηση του περιβάλλοντος του ρομπότ ή συγκρίνονται με ένα προϋπάρχον μοντέλο. Τελικά με την τρίτη διαδικασία σχεδιάζονται οι επόμενες ενέργειες, οι οποίες υλοποιούνται στο τέταρτο και πέμπτο βήμα. Ο κύκλος επαναλαμβάνεται έως την επίτευξη του στόχου. Αξιοσημείωτο είναι το ότι ο σχεδιασμός των επόμενων ενεργειών στηρίζεται στην εικόνα που σχηματίζει το ρομπότ για το περιβάλλον του με βάση τα δεδομένα των αισθητηρίων. Εκτός του πρώτου εμφανούς μειονεκτήματος που έχει να κάνει με τη «σειριακή» επεξεργασία των δεδομένων, έτσι που μια μόνο διεργασία αν συμβαίνει λάθος δε γίνεται σωστά ο έλεγχος, ανέκυψε και ένα πολύ κρισιμότερο ζήτημα: Η μοντελοποίηση του περιβάλλοντος με δεδομένα από αισθητήρια δηλαδή η μετάφραση τιμών σε οντότητες πριν τη λήψη της απόφασης και η ανάλυση 7

13 Ρομπότ και Έλεγχος αυτού σε σχέση με κάθε ενέργεια που θέλει να επιτελέσει το ρομπότ είναι κάτι εξαιρετικά πολύπλοκο και συνεπώς υπερβολικά απαιτητικό σε επεξεργαστική ισχύ και χρόνο. Απάντηση σε αυτό το πρόβλημα ήρθαν να δώσουν οι αρχιτεκτονικές βασισμένες σε συμπεριφορές. Από τα αισθητήρια καταγράφονται και επεξεργάζονται μόνο τα δεδομένα που σχετίζονται με την κάθε εργασία (task) που έχει να επιτελέσει το ρομπότ. Κάθε απλή συμπεριφορά είναι μια απόκριση με άμεση εντολή στους κινητήρες σε αυτά τα δεδομένα. Το σύνολο των συμπεριφορών συσχετίζονται μεταξύ τους και έτσι προκύπτει ένα συνολικό μοντέλο ελέγχου του ρομπότ. Το σχήμα β παρουσιάζει το διάγραμμα ενός τέτοιου μοντέλου. Εστίαση Αποφυγή Θηρευτή Αισθητήρια Προσέγγιση Τροφής Παρακολούθηση Περιμέτρου Διατήρηση Κατεύθυνσης Actuators Σχήμα β Αρχιτεκτονική Βασισμένη σε Συμπεριφορές Τα πλεονεκτήματα μιας τέτοιας προσέγγισης είναι τα εξής: Δεν χρειάζεται πλέον μοντελοποίηση του περιβάλλοντος αφού κάθε ενέργεια προκύπτει σαν άμεσο αποτέλεσμα των δεδομένων των αισθητηρίων. Το σύστημα μπορεί να υποστηρίζει πολλούς στόχους πιο αποτελεσματικά. Διευκολύνεται ο σχεδιασμός και η αποσφαλμάτωση αφού επιτρέπεται η κλιμακωτή ανάπτυξη του μοντέλου με εκκίνηση από τη βάση και η προς τα πάνω ανάπτυξή του. Ενισχύεται η ευρωστία του συστήματος αφού αν έχουμε αστοχία σε μία συμπεριφορά οι άλλες λειτουργούν κανονικά. Η μεγάλη δυσκολία είναι ότι το σύστημα «δεν ξέρει» την κατάσταση στην οποία βρίσκεται ο έλεγχος και άρα δε γίνεται να παρατηρήσουμε εξωτερικά την αλληλουχία των εσωτερικών δράσεων του. Αυτό μας εμποδίζει από το να ξέρουμε τι θα συμβεί αν θέλουμε το ρομπότ να εκτελεί μια αλληλουχία ενεργειών[16] Επιλογή της υβριδικής σχεδίασης Οι παραπάνω μορφές του ρομποτικού ελέγχου σπάνια εμφανίζονται μεμονωμένες. Οι ανάγκες των περισσοτέρων προβλημάτων ποικίλουν και αναγκάζουν τους σχεδιαστές να αντλούν δομές από όλες τις προσεγγίσεις. Ο συνδυασμός που προκύπτει καλείται υβριδικό μοντέλο. 8

14 Ρομπότ και Έλεγχος Στην περίπτωση του δικού μας προβλήματος επιλέξαμε αυτή τη μορφή σχεδίασης γιατί θέλαμε να εκμεταλλευτούμε την απλότητα στην ανάπτυξη που μας προσφέρει το μοντέλο των συμπεριφορών αλλά και λόγω της φύσης του προβλήματος θέλαμε να έχουμε δυνατότητα προγραμματισμού αλληλουχιών ενεργειών και άρα ήταν απαραίτητη η ύπαρξη μεταβλητής κατάστασης του συστήματος. Συνοπτικά ο συνδυασμός που προκύπτει φαίνεται στο Σχήμα Αισθητήρια Επεξεργασία Απλουστευμένη Μοντελοποίηση State : Συμπεριφορές : Actuators Σχήμα Αρχιτεκτονική του Αλγορίθμου μας Σύνδεση ερεθίσματος και αποτελέσματος με χρήση εικονικών δυναμικών πεδίων Όπως ειπώθηκε παραπάνω όταν σχεδιάζουμε αρχιτεκτονικές βασιζόμενες σε συμπεριφορές πρέπει να συνδέουμε σε κάθε περίπτωση ένα σύνολο τιμών ερεθισμάτων με ένα σύνολο τιμών αποκρίσεων. Μια συνηθισμένη διαδικασία είναι η ανάλυση της απόκρισης προς τους κινητήρες σε δύο συνιστώσες: Ένταση: Περιγράφει το «μέτρο» της απόκρισης, το οποίο μπορεί είτε να είναι είτε να μην είναι ανάλογο της έντασης του ερεθίσματος. Καθοριστική παράμετρος για την ένταση της απόκρισης είναι ο στόχος της δεδομένης στιγμής και άρα η κυρίαρχη συμπεριφορά. Προσανατολισμός: Περιγράφει την κατεύθυνση προς την οποία ενεργεί η απόκριση. Αν υποθέσουμε ότι για κάθε σημείο ενός χώρου μέσα στον οποίον γίνεται το πείραμα προσδώσουμε μια ιδιότητα απόκρισης της μορφής (ένταση, προσανατολισμός) τότε ουσιαστικά περιγράφουμε ένα δυναμικό πεδίο. Αυτό το πεδίο μας δείχνει πως ακριβώς θα πρέπει να κινηθεί το ρομπότ αν βρεθεί σε οποιαδήποτε θέση μέσα σε αυτό. Αυτή η προσέγγιση διευκολύνει μια λογική έλξης ή άπωσης του ρομπότ από κάθε φυσικό αντικείμενο του χώρου μέσα στον οποίο κινείται[1]. 9

15 Ρομπότ και Έλεγχος Αξίζει να σημειωθεί ότι το εικονικό δυναμικό πεδίο που δημιουργείται δεν είναι μοναδικό. Εξαρτάται από την συμπεριφορά που βρίσκεται σε κάθε στιγμή το ρομπότ. Δηλαδή το ίδιο φυσικό αντικείμενο μπορεί να παίξει ρόλο ελκτικό ή απωθητικό για διαφορετικές συμπεριφορές. Τελικά κάθε συμπεριφορά αντλεί από το σημείο του χώρου «οδηγίες» για διαφορετική απόκριση και το σύνολο αυτών συνδυάζεται με μια κατάλληλη μέθοδο (fusion). Στα σχήματα που ακολουθούν μπορεί να γίνει κατανοητό πώς η συμπεριφορά «προσέγγισης τροφής» και η «αποφυγή θηρευτή» συνδυάζονται με πρόσθεση για να προκύψει μια εικόνα για το χώρο που κινεί το ρομπότ. ΤΡΟΦΗ ΘΗΡΕΥΤΗΣ Σχήμα Εικονικά Δυναμικά Πεδία και fusion 10

16 Ρομπότ και Έλεγχος Αν μπορεί το ρομπότ να έχει μια τέτοιας μορφής πληροφορία για το χώρο ή για μέρος του χώρου μέσα στον οποίο πρέπει να κινηθεί τότε δε χρειαζόμαστε επιπλέον υπολογισμούς για να υπολογίσουμε την κατεύθυνση και την ταχύτητα του ρομπότ την επόμενη στιγμή. 11

17 Το ρομπότ Khepera 2. Το ρομπότ Κhepera Το Khepera είναι ένα μικροσκοπικό ρομπότ που σχεδιάστηκε στο εργαστήριο μικροϋπολογιστών του πανεπιστημίου EFPL της Λοζάνης στα μέσα της δεκαετίας του 90, με σκοπό να χρησιμοποιηθεί για ερευνητικούς και εκπαιδευτικούς σκοπούς. Το μικροσκοπικό του μέγεθος, η ποικιλία περιφερειακών που διαθέτει και η δυνατότητα εύκολου ελέγχου και προγραμματισμού του με έναν προσωπικό υπολογιστή και γνωστά πακέτα λογισμικού όπως το Matlab και το Labview οδήγησαν στη δεκαετία που ακολούθησε σε εκτεταμένη χρήση του σε εκατοντάδες πειράματα ανάπτυξης ρομποτικών συμπεριφορών και συστημάτων τεχνητής νοημοσύνης και σε μαθήματα ρομποτικής, ενώ αποτέλεσε τη βάση και για βιβλία σχετικά με την τεχνητή νοημοσύνη. Η μεγάλη του εμπορική επιτυχία οδήγησε την εταιρία K Team που δημιουργήθηκε για την εμπορική του εκμετάλλευση να προχωρήσει σε μια δεύτερη αναβαθμισμένη έκδοσή του, ενώ σχεδίασε και εμπορεύεται και μια ποικιλία από άλλα ρομπότ αντίστοιχα με το Khepera. Η έκδοση που χρησιμοποιήσαμε εμείς στην εργασία μας είναι η πρώτη έκδοση του ρομπότ. Τα χαρακτηριστικά του φαίνονται στον παρακάτω πίνακα: Διάμετρος Ύψος Βάρος Ταχύτητα Αυτονομία Επεξεργαστής Μνήμη RAM Μνήμη EEPROM Κινητήρες Επικοινωνία Αισθητήρες 60 mm 30 mm 80 gr 0.02 ως 1 m/sec 45 λεπτά σε κίνηση Motorola στα 16 MHz 256 ΚΒ 512 KB 2 κινητήρες dc με σερβομηχανισμό και οπτικούς κωδικοποιητές Σειριακή θύρα με ταχύτητα ως 38Kbps 8 αισθητήρες υπερύθρων Εκτός από τα παραπάνω χαρακτηριστικά σημαντικό πλεονέκτημα του Khepera είναι ότι υπάρχουν μια σειρά από πλακέτες επέκτασης που μπορούν να τοποθετηθούν πάνω στο ρομπότ προσθέτοντάς του μια σειρά από επιπλέον δυνατότητες, όπως κάμερα, βραχίονας για να μετακινεί αντικείμενα και διεπαφές για σύνδεση με εξωτερικά κυκλώματα. Υπάρχει τέλος και η δυνατότητα ο κάθε χρήστης να κατασκευάσει τη δική του πλακέτα επέκτασης, παρʹ όλο που αυτό είναι αρκετά απαιτητικό για να γίνει μόνο για μια απλή εφαρμογή. 12

18 Το ρομπότ Khepera Σχήμα 2.α Το ρομπότ Khepera Στις επόμενες παραγράφους αυτού του κεφαλαίου θα δώσουμε μερικά πιο αναλυτικά στοιχεία για μερικά στοιχεία του ρομπότ και για τις επιπλέον κάρτες που χρησιμοποιήσαμε. 2.1 Αισθητήρες IR Το Khepera διαθέτει 8 αισθητήρες υπερύθρων (IR) τοποθετημένους στην περιφέρειά του. Η θέση τους και η αρίθμησή τους φαίνεται στο σχήμα 2.1.α. Ο καθένας από τους αισθητήρες διαθέτει έναν πομπό υπέρυθρου φωτός και ένα δέκτη. Ο δέκτης μπορεί να μετρήσει είτε το φως του περιβάλλοντος είτε το υπέρυθρο φως που εκπέμπεται από τον πομπό και ανακλάται στα γύρω εμπόδια. Με τη μέτρηση του ανακλώμενου φωτός μπορεί να εκτιμήσει την ύπαρξη εμποδίων στο γύρω χώρο. Η τιμή που θα μετρήσει ο δέκτης εξαρτάται από πολλούς παράγοντες, όπως η απόσταση, η γωνία, η φύση της επιφάνειας και το χρώμα του εμποδίου στο οποίο ανακλάται το υπέρυθρο φως. Σε γενικές γραμμές μπορούμε να πάρουμε μετρήσεις για εμπόδια μέχρι και 50 χιλιοστά μακριά και σε μια γωνία ως μοίρες από το αισθητήριο. Η μέτρηση του αισθητηρίου μετατρέπεται σε ψηφιακή από έναν μετατροπέα A/D των 10 bit και συνεπώς μπορεί να πάρει τιμές από 0 ως Η λήψη μέτρησης από ένα συγκεκριμένο αισθητήριο γίνεται κάθε 20 ms, με διάστημα 2.5 ms μεταξύ λήψεων μετρήσεων από γειτονικά αισθητήρια. Στο ενδιάμεσο διάστημα εάν διαβάσουμε την τιμή από ένα αισθητήριο μας επιστρέφεται η τελευταία διαθέσιμη τιμή του. 13

19 Το ρομπότ Khepera Σχήμα 2.1.α Θέση και αρίθμηση αισθητήρων υπερύθρων του Khepera Οι υπέρυθροι αισθητήρες χρησιμοποιούνται κυρίως για την αποφυγή σύγκρουσης με τα γύρω εμπόδια, λόγω της μικρής τους εμβέλειας. Μπορούν όμως να χρησιμοποιηθούν και για τον εντοπισμό πηγών φωτός στο γύρω χώρο με τη μέτρηση του φωτός του περιβάλλοντος. 2.2 Κινητήρες Το Khepera διαθέτει δύο dc κινητήρες καθένας από τους οποίους συνδέεται με τον τροχό έτσι ώστε 25 περιστροφές του κινητήρα να οδηγούν σε μια πλήρη περιστροφή του τροχού. Οι οπτικοί κωδικοποιητές είναι συνδεδεμένοι στον άξονα του κινητήρα και δίνουν 24 παλμούς για μια περιστροφή του κινητήρα. Έτσι συνολικά σε κάθε περιστροφή του τροχού δίνουν 600 παλμούς, αριθμός που αντιστοιχεί σε 12 παλμούς ανά χιλιοστό διανυόμενης απόστασης από το ρομπότ. Ο έλεγχος των κινητήρων γίνεται με διαμόρφωση εύρους παλμού (PWM Pulse Width Modulation). Σε αυτή τη μορφή ελέγχου η είσοδος του κινητήρα καθορίζεται από τη μέση τιμή μιας περιοδικής παλμοσειράς την οποία ρυθμίζουμε αλλάζοντας τη διάρκεια κατά την οποία το σήμα είναι high ή low. Η βασική περίοδος της παλμοσειράς είναι σταθερή και τέτοια ώστε ακόμα και αν είναι high το σήμα σε όλη σχεδόν τη διάρκεια της περιόδου, ο κινητήρας να μην προλαβαίνει να φτάσει σε μόνιμη κατάσταση λειτουργίας (σχήμα 2.2.α). Με τις κατάλληλες εντολές μπορούμε να ρυθμίσουμε την τιμή του PWM. Όμως οι διακυμάνσεις μεταξύ των κινητήρων, οι αλλαγές της θερμοκρασίας και το μη σταθερό φορτίο καθιστούν αναποτελεσματικό τον απευθείας έλεγχο με PWM. Για το λόγο αυτό το Khepera διαθέτει υλοποιημένους σε μια ρουτίνα διακοπής δύο ελεγκτές PID, έναν για τον έλεγχο της θέσης και έναν για τον έλεγχο της 14

20 Το ρομπότ Khepera ταχύτητας του τροχού. Το ποιος ελεγκτής θα χρησιμοποιηθεί καθορίζεται από την εντολή που θα χρησιμοποιήσουμε. Σχήμα 2.2.α Διαμόρφωση PWM για έλεγχο των κινητήρων Σχήμα 2.2.β Ελεγκτές θέσης και ταχύτητας τροχών Οι δύο ελεγκτές παίρνουν ανάδραση από τους οπτικούς κωδικοποιητές και ρυθμίζουν ανάλογα την τιμή του PWM έτσι ώστε να έχουμε την επιθυμητή 15

21 Το ρομπότ Khepera κίνηση (Σχήμα 2.2.β). Ο PID ελεγκτής ταχύτητας φροντίζει η ταχύτητα να αποκτήσει την τιμή που ορίζεται από την είσοδο του ελεγκτή. Η μεταβολή της ταχύτητας για να επιτευχθεί κάτι τέτοιο (επιτάχυνση) μπορεί να είναι οποιαδήποτε. Αντίθετα στον ελεγκτή θέσης, που φροντίζει έτσι ώστε οι κινητήρες να περιστραφούν μέχρι μια συγκεκριμένη θέση που ορίζεται από την είσοδό του, η μεταβολή της ταχύτητας ακολουθεί ένα συγκεκριμένο πρότυπο που φαίνεται στο σχήμα 2.2.γ. Όπως φαίνεται στο σχήμα αρχικά ο κινητήρας κινείται με σταθερή επιτάχυνση μέχρι να αποκτήσει μια μέγιστη ταχύτητα. Στη συνέχεια κινείται με αυτή την ταχύτητα για όσο είναι απαραίτητο και τέλος σταματάει με σταθερή επιβράδυνση, ίση με την επιτάχυνση που είχε κατά την εκκίνηση. Τόσο η τιμή της επιτάχυνσης όσο και η τιμή της μέγιστης ταχύτητας μπορούν να ρυθμιστούν. Οι προτεινόμενες τιμές από τον κατασκευαστή είναι 20 μονάδες για την ταχύτητα και 0.25 μονάδες για την επιτάχυνση. Οι μονάδες ταχύτητας και επιτάχυνσης είναι 0.08 mm/10 msec και 0.08 mm/(10 msec^2) αντίστοιχα. Σχήμα 2.2.γ Μεταβολή ταχύτητας και θέσης κατά τον έλεγχο θέσης Τέλος, οι συντελεστές των ελεγκτών kp,ki και kd μπορούν να ρυθμιστούν με κατάλληλη εντολή από τον μικροελεγκτή. Στην εργασία μας χρησιμοποιήσαμε τις προτεινόμενες τιμές από τον κατασκευαστή: kp=3000, ki=20,ki=4000 για τον PID ελεγκτή θέσης και kp=3500, ki=800,ki=100 για τον ελεγκτή ταχύτητας. 16

22 Το ρομπότ Khepera 2.3 Επικοινωνία Η επικοινωνία του Khepera με τον υπολογιστή γίνεται μέσω μιας σειριακής γραμμής (S line) και του κατάλληλου μετατροπέα που κάνει το πρωτόκολλο της γραμμής αυτής συμβατό με το πρωτόκολλο RS232. Για τον έλεγχο του Khepera είναι διαθέσιμο ένα πρωτόκολλο από εντολές σε ASCII χαρακτήρες. Έτσι ο έλεγχος του Khepera μπορεί να γίνει πολύ εύκολα από οποιοδήποτε τερματικό μπορεί να χειριστεί την σειριακή θύρα του υπολογιστή, ή και μέσα από προγράμματα που μπορούν να στείλουν και να δεχτούν χαρακτήρες από αυτή τη θύρα. Το πρωτόκολλο πρέπει να ρυθμιστεί με 1 start και 2 stop bits και χωρίς bit ισοτιμίας ενώ μπορεί να έχει ταχύτητα μεταφοράς 9600 ή bps. 2.4 Τροφοδοσία Για την τροφοδοσία του το Khepera διαθέτει 4 επαναφορτιζόμενες μπαταρίες νικελίου καδμίου χωρητικότητας περίπου 180 mah. Οι μπαταρίες αυτές του επιτρέπουν αυτόνομη κίνηση περίπου για 45 λεπτά εάν δεν χρησιμοποιούνται επιπλέον καρτέλες επέκτασης. Υπάρχει όμως και η δυνατότητα τροφοδοσίας του ρομπότ μέσω της σειριακής γραμμής S line συνδέοντας την τροφοδοσία στον μετατροπέα που διατίθεται. Στο πείραμά μας χρησιμοποιήσαμε την καρτέλα επέκτασης για είσοδο και έξοδο, ενώ τροφοδοτήσαμε και ένα μέρος του κυκλώματος επικοινωνίας του FPGA με το Khepera από τα 5V του Khepera, όπως θα εξηγηθεί στο κεφάλαιο για την επικοινωνία. Για το λόγο αυτό και για να μπορούμε να πραγματοποιήσουμε πειράματα για αρκετό χρόνο είναι προτιμότερη η τροφοδοσία του Khepera μέσω της σειριακής γραμμής. 2.5 Η κάρτα επέκτασης K213 (K213 vision turret) Η κάρτα επέκτασης K213 δίνει στο ρομπότ τη δυνατότητα μιας στοιχειώδους όρασης. Η κάρτα διαθέτει ένα αισθητήριο, που στο εξής θα το αποκαλούμε κάμερα, που επιστρέφει τη φωτεινότητα εξηντατεσσάρων pixel μιας γραμμής. Οι αναλογικές τιμές που επιστρέφονται από την κάμερα μετατρέπονται σε ψηφιακές από τον μικροεπεξεργαστή 68HC11 που βρίσκεται επίσης πάνω στην κάρτα. Η φωτεινότητα κωδικοποιείται με 8 bit, έτσι μπορούμε να διακρίνουμε 256 επίπεδα του γκρι. Η γωνία όρασης είναι περίπου 36 μοίρες (βλέπε σχήμα 2.5.α). Η κάμερα είναι σχεδιασμένη έτσι ώστε να «βλέπει» αντικείμενα μπροστά στο ρομπότ σε απόσταση 5 έως 50 εκατοστών. Έτσι το ρομπότ μπορεί να αντιλαμβάνεται το περιβάλλον του σε πολύ μεγαλύτερη απόσταση απʹ ότι του επιτρέπουν τα αισθητήρια υπερύθρων και έχοντας πλέον καλύτερη γνώση του περιβάλλοντός του να μπορεί να κινηθεί πολύ πιο αποτελεσματικά σε αυτό. 17

23 Το ρομπότ Khepera Εκτός από την κάμερα υπάρχει στην κάρτα επέκτασης και ένα ακόμα αισθητήριο που καταγράφει την ένταση του φωτός στον περιβάλλοντα χώρο και αυτόματα προσαρμόζει την ταχύτητα σάρωσης έτσι ώστε η κάμερα να μπορεί να λειτουργήσει αποτελεσματικά για ένα μεγάλο εύρος συνθηκών περιβάλλοντος φωτός. Εάν το περιβάλλον είναι πολύ φωτεινό τότε η ταχύτητα σάρωσης των αισθητήρων της κάμερας αυξάνεται έτσι ώστε να μην επέρχεται κορεσμός των αισθητήρων. Σε σκοτεινά περιβάλλοντα αντίθετα η ταχύτητα σάρωσης είναι αργή έτσι ώστε να υπάρχει αρκετός χρόνος για να πέσει η απαιτούμενη ποσότητα φωτός στους αισθητήρες της κάμερας. Η λειτουργία αυτή είναι ανάλογη με αυτή που επιτελεί η κόρη στο μάτι μας. Σχήμα 2.5.α Γωνία όρασης κάμερας της κάρτας K213 Η μέγιστη ταχύτητα σάρωσης λοιπόν καθορίζεται από τη φωτεινότητα του περιβάλλοντος χώρου. Ωστόσο ο χρήστης έχει τη δυνατότητα να καθορίσει μικρότερες ταχύτητες σάρωσης δίνοντας εντολή στον μικροεπεξεργαστή 68HC11 να μην διαβάζει όλες τις εικόνες που δίνει η κάμερα σαν έξοδο, αλλά μόνο κάποιες από αυτές. Η μέγιστη συχνότητα ανάγνωσης που μπορεί να επιτευχθεί είναι 5 Hz, δηλαδή μία εικόνα ανά 200 msec. Ο έλεγχος της κάμερας από το χρήστη μπορεί να γίνει με εντολές σε ASCII χαρακτήρες παρόμοιες με αυτές για τον έλεγχο του Khepera. Για την μεταβίβαση μιας εντολής στην κάρτα K213 ο χρήστης πρέπει να στείλει από τον υπολογιστή την εντολή T του βασικού πρωτοκόλλου ελέγχου του Khepera, το οποίο λέει στον να μεταβιβάσει τους χαρακτήρες ASCII που θα δεχτεί στη συνέχεια σε μια συγκεκριμένη κάρτα επέκτασης. Οι χαρακτήρες αυτοί θα πρέπει να αντιστοιχούν σε κάποια από τις εντολές της κάρτας K213. Η μεταφορά των εντολών από και προς την κάρτα, καθώς και η μεταφορά των μετρήσεων τις κάμερας προς τον επεξεργαστή του Khepera γίνεται μέσω του διαδρόμου επέκτασης με συνεργασία του 68HC11, της κάρτας και του του Khepera. 18

24 Το ρομπότ Khepera Τέλος σημειώνουμε ότι η κάρτα K213 πρέπει να τοποθετηθεί στην κορυφή του Khepera και δεν επιτρέπει την προσθήκη άλλων καρτών πάνω από αυτή. Εκτός από αυτή την κάρτα υπάρχουν και οι κάρτες K2D και CMUcam2 που δίνουν στο Khepera τη δυνατότητα λήψης δυσδιάστατων και έγχρωμων εικόνων από το περιβάλλον του. Οι κάμερες αυτές προφανώς παρέχουν πολύ μεγαλύτερες δυνατότητες στο Khepera. Ωστόσο δεν έχει αναπτυχθεί κάποιο μοντέλο για την προσομοίωση τους για το περιβάλλον του Kiks που χρησιμοποιήσαμε. Αυτό σε συνδυασμό με το ότι ο στόχος μας μπορούσε να επιτευχθεί αρκετά ικανοποιητικά με τη σχετικά απλούστερη K213 μας οδήγησε να χρησιμοποιήσουμε αυτήν την κάρτα. Σχήμα 2.5.β Το Khepera με την κάρτα επέκτασης K Η κάρτα επέκτασης εισόδων/εξόδων (General I/O turret) Η κάρτα επέκτασης επιτρέπει την σύνδεση διάφορων αναλογικών ή ψηφιακών ηλεκτρονικών κυκλωμάτων με τον επεξεργαστή του Khepera. Στην περίπτωσή μας ένα τέτοιο εξάρτημα είναι το FPGA Virtex II Pro που θα χρησιμοποιήσουμε για να υλοποιήσουμε τον ελεγκτή μας. Τοποθετείται πάνω στο Khepera, όπως όλες οι κάρτες επέκτασης, ενώ εάν τηρηθεί η αναγκαία γεωμετρία μπορούν να τοποθετηθούν και άλλες κάρτες πάνω από αυτή, όπως η K213. Σχήμα 2.6.α Η κάρτα επέκτασης εισόδων/εξόδων 19

25 Το ρομπότ Khepera Η κάρτα διαθέτει ψηφιακές και αναλογικές εισόδους, ψηφιακές εξόδους, και εξόδους τροφοδοσίας και ισχύος. Στο παρακάτω σχήμα φαίνονται όλοι οι ακροδέκτες της κάρτας: Σχήμα 2.6.β Ακροδέκτες της κάρτας επέκτασης εισόδων/εξόδων Θα παρουσιάσουμε εδώ μόνο τους ακροδέκτες που χρησιμοποιήσαμε στην εργασία μας: Ψηφιακές είσοδοι: Η κάρτα διαθέτει 8 ψηφιακές εισόδους (DIGITAL IN) που μπορούν να διαβαστούν από τον μικροεπεξεργαστή του Khepera στη διεύθυνση 32 της μνήμης. Οι είσοδοι λειτουργούν με επίπεδα τάσης 0 5V. Ψηφιακές έξοδοι: Η κάρτα διαθέτει 7 ψηφιακές εξόδους. Από αυτές οι 2 χρησιμοποιούντα για τον έλεγχο ενός H bridge (MOTOR) και η μία είναι έξοδος ισχύος (PO). Έτσι μόνο οι 4 είναι έξοδοι χαμηλής ισχύος και μπορούν να χρησιμοποιηθούν για την μεταφορά δεδομένων προς περιφερειακά κυκλώματα. Οι ψηφιακές έξοδοι ελέγχονται από το μικροεπεξεργαστή του Khepera γράφοντας ένα byte στη διεύθυνση 32 της μνήμης. Τα 4 λιγότερο σημαντικά bits στέλνονται στις ψηφιακές εξόδους χαμηλής ισχύος και τα άλλα 4 ελέγχουν την έξοδο ισχύος και τις εξόδους MOTOR. Έξοδοι RP και WP: Οι έξοδοι αυτοί χρησιμεύουν έτσι ώστε το Khepera να μπορεί να στείλει σήματα ελέγχου σε διάφορα περιφερειακά (πχ. μνήμες). Κατά την ανάγνωση ή εγγραφή στην θέση μνήμης 36 στις εξόδους RP και WP παράγεται ένας παλμός συγκεκριμένης διάρκειας (βλ. σχήμα 2.6.γ). Σημειώνουμε ότι τα σήματα είναι active low. Είσοδος διακοπής: Η είσοδος αυτή (IR) επιτρέπει σε ένα περιφερειακό να στείλει ένα σήμα διακοπής στον κεντρικό επεξεργαστή του Khepera. Η είσοδος διακοπής ενεργοποιείται όταν η είσοδος γίνεται low. 20

26 Το ρομπότ Khepera Σχήμα 2.6.γ Παλμοί Read Pulse και Write Pulse Έξοδος 5V. H έξοδος αυτή μπορεί να χρησιμοποιηθεί για την τροφοδοσία εξωτερικών κυκλωμάτων όπως αυτοσχέδιων κλακετών με 5 V. To μέγιστο ρεύμα που μπορεί να δώσει εξαρτάται από το είδος της τροφοδοσίας που χρησιμοποιούμε. Αν χρησιμοποιήσουμε τον σταθεροποιητή (regulator) που υπάρχει στο ρομπότ τότε μπορεί να δώσει μέχρι 100 ma. Σε περίπτωση όμως που χρησιμοποιούμε εξωτερική τροφοδοσία μπορεί να δώσει μέχρι 2 A. Κλείνοντας σημειώνουμε ότι παρʹ όλη την μεγάλη χρησιμότητα της κάρτας επέκτασης εισόδων/εξόδων, η εμπειρία μας έδειξε ότι είναι αρκετά δύσκολο να πραγματοποιηθεί μια σταθερή σύνδεση στους ακροδέκτες που παρέχονται πάνω στην κάρτα. Σε μελλοντικές εργασίες θα ήταν χρήσιμο λοιπόν να αποκολληθούν και να αντικατασταθούν με άλλους πιο εύχρηστους. 21

27 Περιγραφή του αλγορίθμου 3. Θήραμα-Θηρευτής. Περιγραφή του αλγορίθμου Στο κεφάλαιο αυτό θα αναλυθεί αρχικά το πρόβλημα που αντιμετωπίστηκε με τον αλγόριθμο που αναπτύχθηκε και οι εφαρμογές ενός τέτοιου αλγορίθμου με σκοπό στη συνέχεια να επεξηγήσουμε εκτενώς τον ίδιο τον αλγόριθμο. 3.1 Γενική περιγραφή του προβλήματος Σύντομη ανάλυση του βιολογικού προτύπου Η ρομποτική αντλεί αρκετά συχνά ιδέες για την ανάπτυξη ρομποτικών συμπεριφορών από τον τρόπο με τον οποίο επιβιώνουν και συνυπάρχουν τα διάφορα είδη του φυσικού περιβάλλοντος. Η συνύπαρξη διαφορετικών ειδών τα οποία πρέπει να τραφούν μέσα σε ένα φυσικό περιβάλλον οδηγεί την ανάπτυξη μιας μεταξύ τους αλληλεπίδρασης στα πλαίσια του κυνηγιού. Η αλληλεπίδραση αυτή κατατάσσει το κάθε είδος ως προς κάθε άλλο σαν θηρευτή ή σαν θήραμα. Τελικά οι συμπεριφορές που αναπτύσσονται σε κάθε μέλος του πληθυσμού ενός είδους στην διαδικασία επιβίωσης έχουν δύο κύριες συνιστώσες: αφενός την εύρεση και περισυλλογή της τροφής του και αφετέρου τον εντοπισμό και αποφυγή κάθε πιθανού θηρευτή. Κάθε φορά που ένας θηρευτής αντιλαμβάνεται την παρουσία ενός θηράματος ξεκινάει μια διαδικασία καταδίωξης (pursuit). Τα χαρακτηριστικά μιας τέτοιας διαδικασίας καθορίζονται από τις ιδιότητες των εμπλεκομένων. Τελικά αυτό που ενδιαφέρει τη ρομποτική είναι το πώς ένας θηρευτής εκμεταλλεύεται αυτά τα χαρακτηριστικά στο να προσεγγίσει το θήραμα και αντίστοιχα το πώς το θήραμα εκμεταλλεύεται τα δικά του στο να ξεφύγει Το πρόβλημα που θα αντιμετωπίσουμε Στην εργασία αυτή θα ασχοληθούμε με την ανάπτυξη ενός αλγορίθμου κίνησης ενός θηράματος με τα εξής χαρακτηριστικά: δυνατότητα τυχαίας περιήγησης σε άγνωστο περιβάλλον και αποφυγής σύγκρουσης με φυσικά εμπόδια δυνατότητα αναγνώρισης και προσδιορισμού θέσης του κινούμενου θηρευτή του δυνατότητα αποφυγής του θηρευτή Σύμφωνα με τις συμπεριφορές των ζωντανών οργανισμών, υπάρχουν τρεις πιθανοί τρόποι αποφυγής του θηρευτή. Αυτοί είναι η αποφυγή με απομάκρυνση 22

28 Περιγραφή του αλγορίθμου (turn and run), το καμουφλάζ ή γενικότερα κρύψιμο δηλαδή η προσαρμογή του οργανισμού στο περιβάλλον του ώστε να μην είναι αναγνωρίσιμος και η επιθετική αποφυγή κατά την οποία το θήραμα με χημικές ουσίες ή με άλλα φυσικά χαρακτηριστικά του αποτρέπει το θηρευτή από το να μπορεί να το προσεγγίσει. Εμείς λόγω της φύσης του ρομπότ δε θα μπορούσαμε να υλοποιήσουμε την τρίτη περίπτωση. Από τις δύο πρώτες λοιπόν θα υλοποιήσουμε την αποφυγή με απομάκρυνση. Επιπλέον θα προσθέσουμε στους σκοπούς της εργασίας την προσθήκη στο ρομπότ την ιδιότητα να αναζητά και να προσεγγίζει έναν στόχο, τον οποίο θα ονομάζουμε τροφή. Έτσι στα παραπάνω χαρακτηριστικά προσθέτονται τα εξής: δυνατότητα αναγνώρισης τροφής που βρίσκεται σε σταθερή θέση πρωτεύουσα προτεραιότητα στην αποφυγή του θηρευτή και δευτερεύουσα στην προσέγγιση της τροφής δυνατότητα απομνημόνευσης της θέσης της εντοπισμένης τροφής ώστε αν ο θηρευτής αποτρέψει την προσέγγισή της να μην ξαναγίνεται αναζήτηση αλλά άμεση κίνηση του ρομπότ προς εκείνη τη θέση Εφαρμογή του αλγορίθμου στην αντιμετώπιση ρεαλιστικών προβλημάτων Ένα ρομπότ που κινείται με έναν τέτοιο αλγόριθμο μπορεί να φανεί πολύ χρήσιμο σε εφαρμογές ασφαλείας όπως σε αστυνομικές αποστολές, σε στρατιωτικές και σε κατασκοπευτικές περιπτώσεις. Ένα τέτοιο παράδειγμα είναι η χρήση του σε περιβάλλον με πολλά εμπόδια που απαιτείται η διακριτική προσέγγιση επικίνδυνου αντικειμένου (π.χ. εκρηκτικός μηχανισμός) χωρίς να υπάρξει περίπτωση συνάντησης του ρομπότ με κάποιο άτομο που πιθανόν περιφρουρεί το αντικείμενο. Μια άλλη περίπτωση είναι το «σενάριο» προσέγγισης ατόμων,που είναι ακινητοποιημένα σε ένα σημείο, (όμηροι ή εγκλωβισμένοι) από το ρομπότ χωρίς να το πλησιάσει κάποιος που θεωρείται επικίνδυνος (απαγωγέας ή άγρια ζώα). Θα μπορούσε βέβαια να υποστηριχθεί ότι ένας άνθρωπος με την ευρύτατη γκάμα αισθήσεων και δυνατοτήτων που έχει λειτουργεί καλύτερα κάτω από τις παραπάνω συνθήκες. Το ρομπότ έχει ωστόσο κάποια σαφή πλεονεκτήματα. Καταρχήν έχει τη δυνατότητα εκτέλεσης ακριβέστερων και πολυπλοκότερων υπολογισμών σε μικρότερο χρόνο, επομένως σε συνθήκες που τα λάθη δεν επιτρέπονται πλεονεκτεί έναντι του ανθρώπου. Επιπλέον, ακόμα κι αν ένας άνθρωπος λειτουργεί καλύτερα κάτω από τις δεδομένες συνθήκες το ρομπότ έχει διαστάσεις που του επιτρέπουν να προσεγγίζει από μη προσιτά για τον άνθρωπο περάσματα. Τέλος τα παραδείγματα των σεναρίων που αναφέρθηκαν 23

29 Περιγραφή του αλγορίθμου παραπάνω ενέχουν κινδύνους για μια ανθρώπινη ζωή κι επομένως είναι ασφαλέστερο να χρησιμοποιούνται ρομπότ παρά άνθρωποι. 3.2 Εισαγωγικά χαρακτηριστικά Παραδοχές του προβλήματος Για να περιοριστεί η γενικότητα του προβλήματος που θέλουμε να αντιμετωπίσουμε είναι απαραίτητο να θέσουμε κάποιους προκαταρκτικούς περιορισμούς που αφορούν το περιβάλλον και τις ιδιότητες του αλλά και το ίδιο το ρομπότ. Όσον αφορά το περιβάλλον, περιλαμβάνει τρία ήδη οντοτήτων: το θηρευτή, την οντότητα που «απειλεί» το ρομπότ κι από την οποία προσπαθεί να ξεφύγει την τροφή, την οντότητα που αναζητεί ρομπότ και άρα εκείνη που προσπαθεί να πλησιάσει τον υπόλοιπο χώρο με εμπόδια και τοίχους μέσα στον οποίο κινείται το ρομπότ, ο οποίος από εδώ και στο εξής θα ονομάζεται αρένα Οι παραδοχές για κάθε μία από τις παραπάνω οντότητες είναι οι ακόλουθες: Η αρένα: είναι στατική αποτελείται από αδιαφανή εμπόδια και τοίχους και από ελεύθερους χώρους τα παραπάνω εμπόδια είναι τέτοια ώστε κοιτώντας τα κατοπτικά θα μπορούσαμε να χαρακτηρίσουμε τα γεωμετρικά τους σχήματα είτε κυρτά, είτε μη κυρτά Η τροφή: είναι ακίνητη μέσα στο χώρο Ο θηρευτής: κινείται μέσα σε έναν γνωστό σε αυτόν χώρο με συγκεκριμένη ταχύτητα και προς τυχαίες διευθύνσεις για όση ώρα δεν αντιλαμβάνεται την παρουσία του θηράματος ρομπότ 24

30 Περιγραφή του αλγορίθμου αντιλαμβάνεται την παρουσία του θηράματος όταν η μεταξύ τους απόσταση γίνει μικρότερη από μία «κρίσιμη» τιμή μετά την αντίληψη του θηράματος, κινείται προς αυτό με ταχύτητα μεγαλύτερη από την προηγούμενη αν η μεταξύ τους απόσταση ξαναυπερβεί την «κρίσιμη» τιμή τότε ο θηρευτής «ξεχνάει» το πού βρίσκεται το θήραμα και επανέρχεται σε τυχαία κίνηση η «κρίσιμη» απόσταση είναι μεγαλύτερη από την ελάχιστη απόσταση που χρειάζεται το θήραμα για να αναγνωρίσει το θηρευτή, το οποίο σημαίνει ότι ο θηρευτής έχει την ικανότητα να αντιλαμβάνεται το θήραμα από μεγαλύτερη απόσταση από ότι το θήραμα αντιλαμβάνεται τον ίδιο Για το θήραμα πρέπει να επιτύχουμε τις ιδιότητες που περιγράφουμε στην παράγραφο Επισημαίνεται ότι το περιβάλλον μέσα στο οποίο κινείται είναι άγνωστο σε αυτό. Επιπλέον αξίζει να σημειωθεί ότι η μέγιστη ταχύτητα του θηράματος ρομπότ θα είναι μεγαλύτερη από εκείνη του θηρευτή. Δηλαδή, αν και ο θηρευτής «βλέπει» σε μεγαλύτερη απόσταση, κινείται βραδύτερα από το θήραμα. Οι υπόλοιπες ιδιότητες του θηράματος προκύπτουν από τις ιδιότητες του ίδιου του ρομπότ Khepera που θα χρησιμοποιήσουμε, οι οποίες περιγράφηκαν στο προηγούμενο κεφάλαιο. 3.3 Περιγραφή του αλγορίθμου Εισαγωγή (Σύντομη περιγραφή των συμπεριφορών και επεξήγηση του σεναρίου) Πριν προχωρήσουμε σε αναλυτικότερη περιγραφή του αλγόριθμου θα θέλαμε να επισημάνουμε ότι η υλοποίηση του βασίστηκε σε πέντε συμπεριφορές. Αυτές περιγράφονται αναλυτικά στην παράγραφο 3.4 για να είναι όμως πιο κατανοητή η περιγραφή του σεναρίου που ακολουθεί θα κάνουμε και εδώ μια σύντομη επεξήγησή τους. Οι συμπεριφορές που υλοποιήθηκαν είναι οι εξής: Αποφυγή εμποδίων: συμπεριφορά που δίνει στο ρομπότ την ικανότητα να κινείται σε ένα χώρο με εμπόδια χωρίς να συγκρούεται με αυτά. Εστίαση: συμπεριφορά που επιτρέπει στο ρομπότ να φέρνει το αντικείμενο που το ενδιαφέρει (τροφή ή θηρευτής) στο μέσον του οπτικού του πεδίου. Έτσι μπορεί το ρομπότ να προσδιορίσει την ακριβή σχετική του θέση με το αντικείμενο. 25

31 Περιγραφή του αλγορίθμου Διατήρηση κατεύθυνσης: όταν το ρομπότ έχει αποφασίσει προς ποια κατεύθυνση πρέπει να κινηθεί (προσεγγίζοντας τροφή ή αποφεύγοντας θηρευτή) στρέφεται προς αυτήν και προσπαθεί να κινείται διατηρώντας την πορεία του παράλληλη σε αυτή την κατεύθυνση. Η συμπεριφορά που ελέγχει αυτή την πορεία λέγεται διατήρηση κατεύθυνσης. Παρακολούθηση περιμέτρου: πρόκειται για συμπεριφορά που οδηγεί το ρομπότ σε κίνηση παράλληλη με την περίμετρο των εμποδίων που συναντά. Για την υλοποίηση της χρειάζεται και μια προκαταρκτική συμπεριφορά που ονομάζεται πλεύρισμα. Περιμετρικός έλεγχος: το ρομπότ μπαίνει σε αυτή τη συμπεριφορά για να ελέγξει τι βρίσκεται στο κοντινό του περιβάλλον σε όλο του τον ορίζοντα (360 ο ) και όχι μόνο στο οπτικό του πεδίο (30 ο ). Στροφή προς την τροφή: κατά την εξέλιξη του σεναρίου το ρομπότ φτάνει σε μια κατάσταση που γνωρίζει τη θέση της τροφής και ότι δεν το κυνηγάει πλέον ο θηρευτής. Τότε στρέφεται προς την τροφή και κινείται προς αυτή. Το πρώτο κομμάτι, δηλαδή η στροφή, εκτελείται από την παρούσα συμπεριφορά. Η ενεργοποίηση των συμπεριφορών κάθε στιγμή εξαρτάται από τη μεταβλητή FLAG. Η αντιστοιχία φαίνεται στον παρακάτω πίνακα. FLAG Συμπεριφορά 2 Εστίαση 1 Περιμετρικός Έλεγχος 0 Αποφυγή Εμποδίων 1 Διατήρηση Κατεύθυνσης 2 Στροφή προς την Τροφή 3 Παρακολούθηση Περιμέτρου 31 Πλεύρισμα Σχήμα Αντιστοιχία FLAG- Ενεργή Συμπεριφορά Για να πετύχουμε μια καλύτερη ανάλυση της χρησιμότητας κάθε μίας από τις συμπεριφορές που υλοποιήσαμε κρίθηκε σκόπιμος ο χωρισμός του σεναρίου σε 5 διαφορετικά μέρη: Τυχαία περιήγηση: σε αυτή τη φάση το ρομπότ απλώς κινείται τυχαία μέσα στο χώρο αποφεύγοντας τα εμπόδια και ελέγχοντας αν υπάρχει τροφή ή θηρευτής Εντοπισμός θηρευτή και αποφυγή του: σε αυτή τη φάση το ρομπότ αναγνωρίζει το θηρευτή, προσδιορίζει τη θέση του και τον αποφεύγει 26

32 Περιγραφή του αλγορίθμου Εντοπισμός τροφής και προσέγγισή της: σε αυτή τη φάση το ρομπότ αναγνωρίζει τροφή και την προσεγγίζει Εμφάνιση θηρευτή κατά τη διάρκεια της προσέγγισης τροφής: αν έχει προηγηθεί ο εντοπισμός της τροφής αλλά εμφανιστεί θηρευτής πριν την προσέγγισή της τότε το ρομπότ αποφεύγει το θηρευτή αλλά συγκρατεί τη θέση της τροφής ώστε να επιστρέψει μετά την αποφυγή του θηρευτή Επιστροφή στη θέση τροφής που έχει απομνημονευθεί: άμεσα από την παραπάνω φάση προκύπτει η παρούσα κατά την οποία όταν το ρομπότ αποφύγει το θηρευτή επιστρέφει πλέον στη θέση όπου γνωρίζει ότι υπάρχει τροφή Η εναλλαγή μεταξύ των συμπεριφορών φαίνεται στο διάγραμμα που ακολουθεί. ΕΝΑΡΞΗ Τυχαία Περιήγηση τίποτα Ανίχνευση θηρευτή Προσέγγιση Τροφής τροφής Αποφυγή Θηρευτή Ολοκληρώθηκε; Εμφάνιση θηρευτή ΟΧΙ Ολοκληρώθηκε; ΝΑΙ ΝΑΙ τέλος Απομνημόνευση θέσης τροφής & αποφυγή θηρευτή. Επαναφορά θέσης τροφής. Σχήμα β Συγκεντρωτικό Διάγραμμα Ροής Για το Σενάριο Πρέπει να τονίσουμε ότι οι παραπάνω φάσεις δεν ταυτίζονται με τις συμπεριφορές του ρομπότ και σε κάθε φάση μπορεί να ενεργοποιούνται περισσότερες από μία συμπεριφορές. Στις παραγράφους που ακολουθούν περιγράφεται ξεχωριστά κάθε μία από τις φάσεις του σεναρίου, παρουσιάζονται τα απαραίτητα διαγράμματα ροής του αλγορίθμου καθώς και τα διαγράμματα ροής της πληροφορίας. Αναφέρονται επίσης και οι συμπεριφορές που δρουν σε κάθε φάση, αλλά αυτές αναλύονται στην επόμενη ενότητα. Πριν ξεκινήσουμε την περιγραφή πρέπει να επισημανθεί ότι σε όλες τις στιγμές του αλγορίθμου υπάρχουν δύο μεταβλητές οι οποίες καθορίζουν την κατάσταση 27

33 Περιγραφή του αλγορίθμου που βρισκόμαστε και επομένως τι εκτελείται. Αυτές είναι η FLAG (ακέραιος όπως φαίνεται στον πίνακα 3.3.1) και η STATE (2 bit). Τα σημεία που αλλάζουν θα φαίνονται μέσα στα υποδιαγράμματα ροής, αλλά το τι σημαίνει η κάθε μία θα επεξηγηθεί στο τέλος όταν θα είναι πλέον αναλυμένες οι διάφορες φάσεις του αλγορίθμου και οι συμπεριφορές Κύριος Κύκλος (main loop) Ο αλγόριθμος μας είναι ένα πρόγραμμα που εκτελείται επαναληπτικά ελέγχοντας την κίνηση του ρομπότ. Κάθε συμπεριφορά δέχεται ως είσοδο πληροφορία από τα αισθητήρια και την κάμερα και δίνει ως έξοδο ταχύτητες για τους κινητήρες. Για να γίνεται η ανάγνωση και η επεξεργασία αυτής της πληροφορίας πριν οδηγηθεί στη συμπεριφορά, για να μεταφέρεται η έξοδος της συμπεριφοράς στους κινητήρες αλλά και για να επιλέγεται κάθε φορά η κατάλληλη συμπεριφορά υπάρχει ένα τμήμα του προγράμματος που εκτελείται σε κάθε επανάληψη. Αυτό αποτελεί τον κύριο κύκλο. Εκτέλεση σε κάθε κύκλο Ανάγνωση Αισθητηρίων Ανάγνωση Κάμερας Επεξεργασία Εικόνας Κάμερας Έλεγχος για παρουσία θηρευτή ή τροφής Αλλαγή FLAG & STATE Επιλογή Συμπεριφ. Συμπεριφορά Έλεγχος ταχύτητας κινητήρων Σχήμα α Διάγραμμα Ροής Κύριου Κύκλου 28

34 Περιγραφή του αλγορίθμου Πώς ακριβώς όμως γίνεται η επεξεργασία της εικόνας της κάμερας; Αν και δεν αποτελεί απαραίτητη πληροφορία για την κατανόηση της λογικής ροής του αλγορίθμου, θα αναφέρουμε ορισμένες γενικές επισημάνσεις για το τι βλέπει η κάμερα και πώς αυτό αξιοποιείται στον έλεγχο. Για εκτενέστερη ανάλυση υπάρχει το αντίστοιχο Παράρτημα. Η κάμερα που διαθέτει το Khepera βλέπει 64 σημεία σε διάταξη γραμμής, που αντιπροσωπεύουν ένα οπτικό πεδίο γωνίας 36 ο. Για κάθε ένα από αυτά τα σημεία επιστρέφει έναν 8μπιτο αριθμό ο οποίος δείχνει το επίπεδο φωτεινότητας του συγκεκριμένου σημείου. Το χρώμα της αρένας μέσα στην οποία γίνονται τα πειράματα είναι λευκό (στάθμη φωτεινότητας αρένας=255), το χρώμα του θηρευτή είναι σχεδόν μαύρο (στάθμη φωτεινότητας θηρευτή 0) και το χρώμα της τροφής τίθεται σε μια ενδιάμεση στάθμη (στάθμη φωτεινότητας τροφής 180). Τα βήματα που ακολουθούν την ανάγνωση της κάμερας είναι τα εξής: Υποδειγματοληψία και φιλτράρισμα: οι 64 ακέραιοι που διαβάζονται χωρίζονται με κατάλληλο τρόπο (βλ. Παράρτημα Ε) σε 16 ομάδες. Υπολογίζεται η μέση τιμή και η διασπορά για κάθε ομάδα. Διαγράφονται από κάθε ομάδα οι ακέραιοι που απέχουν από τη μέση τιμή της ομάδας τους περισσότερο από τη διασπορά της ομάδας. Ξαναϋπολογίζεται η μέση τιμή κάθε ομάδας, και το αποτέλεσμα είναι ο νέος πίνακας 16 θέσεων που δίνει μια δειγματοληπτημένη και φιλτραρισμένη εικόνα της κάμερας. Έλεγχος για θηρευτή και τροφή: Ο πίνακας με τις 16 τιμές περνάει από μια συνάρτηση η οποία δίνει για έξοδο έναν αριθμό 16 bit και έναν αριθμό 2 bit. Με συγκρίσεις με προεπιλεγμένα κατώφλια η συνάρτηση αυτή αποφασίζει αν υπάρχει στο οπτικό πεδίο της κάμερας θηρευτής, τροφή ή τίποτα από τα δύο. Η έξοδος της συνάρτησης φαίνεται στον πίνακα του σχήματος β. Τι βλέπει η κάμερα Τι επιστρέφει στο 16μπιτο Τι επιστρέφει στο 2μπιτο Τίποτα (όχι θηρευτή, όχι τροφή) Θηρευτή 0 σε κάθε σημείο που βλέπει θηρευτή και 1 στα υπόλοιπα 1 0 Τροφή 0 σε κάθε σημείο που βλέπει τροφή και 1 στα υπόλοιπα 0 1 Τροφή και Θηρευτή 0 σε κάθε σημείο που βλέπει θηρευτή και 1 στα υπόλοιπα 1 1 Σχήμα β Πίνακας συνάρτησης ελέγχου για θηρευτή ή τροφή Χωρισμός της εξόδου σε 2 αριθμούς 8 bit: Όπως είναι εμφανές ο αριθμός των 2 bit μας περιγράφει πλέον τι έχει βρεθεί τη δεδομένη χρονική στιγμή στο οπτικό πεδίο της κάμερας. Για λόγους επεξεργασίας που θα χρειαστεί παρακάτω η έξοδος των 16 bit χωρίζεται σε 2 αριθμούς των 8 bit από τους οποίους ο πρώτος αναστρέφεται ώστε να έχει MSB το bit που αντιστοιχεί 29

35 Περιγραφή του αλγορίθμου στο εσωτερικότερο pixel. Όπως γίνεται αντιληπτό η διαφορά αυτών των δύο αριθμών που από εδώ και πέρα θα την ονομάζουμε set είναι μια ένδειξη του πόσο κοντά στο κέντρο του οπτικού πεδίου βρίσκεται ο θηρευτής ή η τροφή που θέλουμε να προσεγγίσουμε. Μετατροπή σε bit A1 A2 A3 A4 A5 A6 A7 A8 A9 A10 A11 A12 A13 A14 A15 A16 left Αναστροφή Α8 Α7 Α6 Α5 Α4 Α3 Α2 Α1 right Όπως είναι εμφανές η διαφορά ανάμεσα στο ανεστραμμένο left και το right είναι ένας αριθμός (set) που δείχνει το πόσο κοντά στο κέντρο είναι ο στόχος (θηρευτής ή τροφή). Σχήμα γ Υπολογισμός αριθμού set Αλλαγή της STATE: όπως γίνεται φανερό και στον παραπάνω πίνακα ο αριθμός των 2 bit που επιστρέφεται είναι ανάλογος του είδους (θηρευτής ή θήραμα) που έχει ανιχνευθεί από το ρομπότ. Αν αυτή η ανίχνευση επικρατήσει πλειοψηφικά για 5 κύκλους (δηλαδή συμφωνούν οι 3 από τις 5 τελευταίες εκτιμήσεις) τότε συνεκτιμάται με λογικό or με την προηγούμενη κατάσταση και έτσι προκύπτει κάθε φορά μια νέα τιμή για τη state η οποία αρχικά ορίζεται [0 0]. Στο σχήμα δ φαίνεται η αντιστοίχιση των τιμών της state με το τι σημαίνει για το ρομπότ. State Το ρομπότ γνωρίζει για την ύπαρξη 00 Τίποτα 01 Τροφής 10 Θηρευτή 11 Θηρευτή και Τροφής Σχήμα δ Σημασία της State Συνολική οδομετρία: Με βάση του απαριθμητές παλμών των κινητήρων του ρομπότ εκτελείται ένας απλός υπολογισμός του πόσο μεταβάλλεται η απόσταση που έχει συνολικά διανυθεί αλλά και η γωνία προς την οποία κινείται το ρομπότ. Αν dleft είναι η μεταβολή του αριθμού παλμών του αριστερού κινητήρα και dright του δεξιού τότε η μεταβολή της απόστασης dleft + dright υπολογίζεται σαν ddist = ενώ η μεταβολή της γωνίας κατά 2 30

36 Περιγραφή του αλγορίθμου dright dleft τη θετική φορά δίνεται από τον τύπο dfora = όπου axes είναι axes η διάμετρος του Khepera. Τώρα που έγινε η περιγραφή του κύριου κύκλου και για να είναι σαφέστερα τα όσα ακολουθούν παραθέτουμε έναν πίνακα με την παρούσα τιμή STATE, μια λεκτική περιγραφή του τι ακριβώς ανιχνεύεται και τι θα γίνει στον επόμενο κύκλο, που δείχνει την εναλλαγή από τη μια φάση του σεναρίου στην άλλη. 31

37 Περιγραφή του αλγορίθμου παρούσα STATE Ανιχνεύεται από τον κύριο κύκλο επόμενη STATE Επεξήγηση 0 0 Θηρευτής 1 0 Ο θηρευτής ανιχνεύεται, πρέπει να περάσουμε στον εντοπισμό και στη συνέχεια στην αποφυγή του 0 0 Τροφή 0 1 Η τροφή ανιχνεύεται, πρέπει να περάσουμε στον εντοπισμό και στην προσέγγισή της 0 0 Τίποτα 0 0 Συνεχίζει να εκτελείται τυχαία περιήγηση 1 0 Θηρευτής 1 0 Συνεχίζει να εκτελείται η αποφυγή θηρευτή αλλά επαναρχικοποιείται που σημαίνει ότι ξαναεκτελείται διαδικασία εντοπισμού του 1 0 Τροφή 0 1 Εδώ η state δεν ενημερώνεται με or, πρωτεύουσα σημασία αποκτά η προσέγγιση της τροφής για να ολοκληρωθεί το σενάριο 1 0 Τίποτα 1 0 Συνεχίζει να εκτελείται αποφυγή θηρευτή 1 0 Τίποτα και ολοκληρώνεται ο περιμετρικός έλεγχος Σημαίνει ότι έχει επιτευχθεί η αποφυγή του θηρευτή 0 1 Θηρευτής 1 1 Έχουμε εμφάνιση του θηρευτή κατά την προσέγγιση στην τροφή. Περνάει στη φάση απομνημόνευσης της θέσης της τροφής και στη συνέχεια αποφυγή θηρευτή. 0 1 Τροφή 0 1 Συνεχίζει να εκτελείται προσέγγιση τροφής 0 1 Τίποτα 0 1 Συνεχίζει να εκτελείται προσέγγιση τροφής 1 1 Θηρευτής 1 1 Συνεχίζει να εκτελείται η αποφυγή θηρευτή αλλά επαναρχικοποιείται που σημαίνει ότι ξαναεκτελείται διαδικασία εντοπισμού του 1 1 Τροφή 0 1 Εδώ η state δεν ενημερώνεται με or, πρωτεύουσα σημασία αποκτά η προσέγγιση της τροφής για να ολοκληρωθεί το σενάριο 1 1 Τίποτα 1 1 Συνεχίζει να εκτελείται αποφυγή θηρευτή 1 1 Τίποτα και ολοκληρώνεται ο περιμετρικός έλεγχος 1 1 Περιστρέφεται προς την κατεύθυνση που «γνωρίζει» ότι βρίσκεται η τροφή Σχήμα ε Πίνακας μεταβάσεων μεταξύ των διαφορετικών φάσεων του σεναρίου Τυχαία περιήγηση (STATE=[0 0]) Το ρομπότ πριν εντοπίσει θηρευτή ή τροφή κινείται τυχαία μέσα σε ένα άγνωστο περιβάλλον. Μέριμνα του σε αυτή την περίπτωση είναι να αποφεύγει κάθε εμπόδιο που εμφανίζεται σε κοντινή σε αυτό απόσταση. Από εδώ προκύπτει η πρώτη συμπεριφορά στην οποία και δόθηκε το όνομα «αποφυγή εμποδίων». Αυτή η συμπεριφορά ακολουθείται όσο η FLAG παραμένει 0. 1 Βλ. επόμενες παραγράφους 32

38 Περιγραφή του αλγορίθμου Τα υπέρυθρα αισθητήρια που έχουν διαβαστεί από τον κύριο κύκλο οδηγούνται στον ασαφή ελεγκτή αυτής της συμπεριφοράς και οι έξοδοί του οδηγούνται στους κινητήρες. Δεν υπάρχει κάτι που να χρήζει αποσαφήνισης για αυτή τη φάση του αλγορίθμου εκτός του πώς αλλάζει η FLAG. Αυτό φαίνεται στο σχήμα α. Αν βρισκόμαστε σε «τυχαία περιήγηση» και αλλάξει η state, τότε αλλάζει και η FLAG State FLAG Σχήμα α Μεταβολές της FLAG συναρτήσει της μεταβολής της State για αρχική FLAG=0 Βλέπουμε λοιπόν εδώ ότι σε κάθε περίπτωση ανίχνευσης θηρευτή ή τροφής ή και των δύο τότε η FLAG γίνεται 2 με σκοπό να ξεκινήσει η εστίαση. Αυτή η τιμή γίνεται κατανοητή στις δύο φάσεις που ακολουθούν και αναφέρονται αντίστοιχα στους εντοπισμούς τροφής και θηρευτή. STATE=[0 0] Από τον κύριο κύκλο έρχονται STATE, ΑΙΣΘΗΤΗΡΙΑ, ddist OXI STATE==[00] NAI αισθητήρια NAI FLAG==0 OXI Αποφυγή Εμποδίων Περιμετρικός Έλεγχος Συνολική Απόσταση>700 NAI Αλλαγή της FLAG σύμφωνα με το Σχήμα α OXI FLAG= 1 (περιμετρικός έλεγχος) Επιστρέφονται στον κύριο κύκλο Ταχύτητες, FLAG Σχήμα β Υποδιάγραμμα ροής Τυχαίας Περιήγησης 33

39 Περιγραφή του αλγορίθμου Σε κάθε κύκλο το ρομπότ κάνοντας χρήση της μεταβολής της απόστασης που του δίνει η συνολική οδομετρία από τον κύριο κύκλο βλέπει τι απόσταση έχει διανύσει σε φάση τυχαίας περιήγησης. Όταν η απόσταση αυτή υπερβεί μια συγκεκριμένη τιμή (700 mm) τότε το ρομπότ μπαίνει στη συμπεριφορά που ονομάζεται «περιμετρικός έλεγχος». Αυτή η συμπεριφορά που εκτελείται για FLAG= 1 περιστρέφει το ρομπότ γύρω από τον εαυτό του επιτρέποντας του να ελέγχει σε 360 ο αν υπάρχει κάπου κοντά του θηρευτής ή τροφή. Αν υπάρχει τότε και πάλι η FLAG= 2 για να ξεκινήσει η εστίαση, αλλιώς FLAG=0 για να παραμείνει ενεργή η αποφυγή εμποδίων και συνεχίζεται η τυχαία περιήγηση. Στο σχήμα β έχει γίνει το υποδιάγραμμα ροής που αναφέρεται στην τυχαία περιήγηση Εντοπισμός θηρευτή και αποφυγή του (STATE=[1 0]) Εισαγωγικά πρέπει να γίνει αντιληπτό ότι με την ανίχνευση του θηρευτή σκοπός μας είναι να τον αντιμετωπίσουμε σαν ένα απωθητικό σημείο και να κινηθούμε παράλληλα με την κατεύθυνση που μας φέρνει στη μέγιστη απόσταση από αυτόν, ακολουθώντας τη λογική των εικονικών δυναμικών πεδίων που περιγράφηκε στην παράγραφο Αυτή η απλοποίηση γίνεται έτσι ώστε να μη χρειάζονται ιδιαίτερα πολύπλοκοι υπολογισμοί για τον προσδιορισμό της φοράς προς την οποία πρέπει να κινηθεί το ρομπότ. Στην συμπεριφορά αυτή περνάμε αν STATE=[1 0]. Για να αρχικοποιηθεί το πεδίο στην «αντίληψη» του ρομπότ πρέπει σε πρώτη φάση να είναι σίγουρο ότι γνωρίζει την ακριβή σχετική θέση του θηρευτή. Αυτό επιτυγχάνεται φέρνοντας τον στο κέντρο του οπτικού του πεδίου. Τη διαδικασία αυτή αναλαμβάνει η εστίαση, για αυτό και εκεί τίθεται το FLAG= 2 αμέσως μετά την ανίχνευση θηρευτή. Με την ολοκλήρωση της εστίασης το ρομπότ πλέον γνωρίζει την ακριβή διεύθυνση του θηρευτή ως προς το ίδιο. Ακολουθώντας τη λογική αποφυγής turn and run περιστρέφεται κατά 180 ο γύρω από τον άξονα του. Πλέον αν κινηθεί σε κατεύθυνση παράλληλη με αυτή προς την οποία βρίσκεται θα απομακρύνεται κατά μέγιστο ρυθμό από το θηρευτή. Πώς το ρομπότ διατηρεί την κατεύθυνση προς την οποία θέλει να κινηθεί; Μετά την περιστροφή κατά 180 ο για να διατηρηθεί το ρομπότ στην κατεύθυνση μέγιστης απομάκρυνσης ενεργοποιείται η συμπεριφορά «διατήρηση κατεύθυνσης», αυτή επιτυγχάνοντας την αποφυγή πιθανών εμποδίων διατηρεί το ρομπότ κατά τον βέλτιστο τρόπο στην κατεύθυνση που το απομακρύνει από το θηρευτή. Για να εκτελείται αυτή η συμπεριφορά η FLAG πρέπει να πάρει την 34

40 Περιγραφή του αλγορίθμου τιμή 1, για αυτό με την ολοκλήρωση της εστίασης και της αναστροφής η FLAG τίθεται ίση με 1. Σε κάθε βήμα εκτέλεσης κατά το οποίο το ρομπότ έχει ανιχνεύσει το θηρευτή καταγράφει την απόσταση που έχει διανύσει. Μετά από μια δεδομένη απόσταση (700mm) ελέγχει περιμετρικά γύρω από τον εαυτό του για να δει αν ο θηρευτής συνεχίζει να το ακολουθεί ή αν έχει επιτευχθεί η αποφυγή. Αυτό γίνεται και πάλι όπως και στην περίπτωση περιμετρικού ελέγχου σε τυχαία περιήγησηθέτοντας FLAG= 1. Με το πέρας του περιμετρικού ελέγχου και αν όντως δεν φαίνεται κάπου κοντά ο θηρευτής η FLAG γίνεται 0 και η STATE [0 0] για να επανέλθει σε φάση τυχαίας περιήγησης. Αν ξαναανιχνευθεί θηρευτής τότε με FLAG= 2 περνάμε σε εστίαση και διατηρούμε STATE=[1 0] STATE=[1 0] Από τον κύριο κύκλο έρχονται STATE, ΑΙΣΘΗΤΗΡΙΑ, ddist,dfora,set set 2 FLAG 1 OXI Εστίαση Ολοκληρώθηκε; Διατήρηση Γραμμής 1 Dfora αισθητήρια OXI Περιμετρικός Έλεγχος Άλλαξε το State; NAI Συνολική Απόσταση>700 NAI NAI Αναστροφή FLAG=1 (διατήρηση κατεύθυνσης) OXI FLAG= 1 (περιμετρικός έλεγχος) Αν δεν έχει ολοκληρωθεί ο περιμετρικός έλεγχος FLAG= 1(συνέχεια) Αλλιώς FLAG=0(αποφυγή εμποδίων) FLAG= 2 (εστίαση) Επιστρέφονται στον κύριο κύκλο Ταχύτητες, FLAG Σχήμα β Υποδιάγραμμα ροής Εντοπισμού Θηρευτή και Αποφυγής του 35

41 Περιγραφή του αλγορίθμου Εντοπισμός τροφής και προσέγγισή της (STATE=[0 1]) Αυτή η φάση του σεναρίου προκύπτει αν κατά την τυχαία περιήγηση ή αν κατά την αποφυγή του θηρευτή ανιχνευθεί τροφή. Αυτό σημαίνει αλλαγή της κατάστασης state. Με μια προσεκτική παρατήρηση στις αρχικές παραδοχές του προβλήματος παρατηρείται ότι η διαφορά ανάμεσα στον τρόπο αντίδρασης αν ανιχνευθεί τροφή και αν ανιχνευθεί θηρευτής είναι ότι το εικονικό δυναμικό πεδίο που δημιουργείται γύρω από την τροφή είναι ελκτικό αντί για απωθητικό. Επομένως τα στάδια που αποτελούν αυτή τη φάση είναι τα ίδια με αυτά της αποφυγής θηρευτή μόνο που τώρα αντί το ρομπότ να «τρέχει» μακριά από το εστιασμένο σημείο τρέχει προς αυτό. Τέλος τώρα δε χρειάζεται έλεγχος μετά το πέρασμα μιας απόστασης αφού αρκεί να κινείται προς την τροφή έως να την προσεγγίσει και να λήξει το σενάριο. STATE=[0 1] Από τον κύριο κύκλο έρχονται STATE, ΑΙΣΘΗΤΗΡΙΑ, ddist,dfora,set set 2 FLAG 1 OXI Εστίαση Ολοκληρώθηκε; Διατήρηση Κατεύθυνσης dfora αισθητήρια NAI FLAG=1 (διατήρηση κατεύθυνσης) Πλήρης κάλυψη οπτικού πεδίου από την τροφή; OXI NAI τέλος Επιστρέφονται στον κύριο κύκλο Ταχύτητες, FLAG Σχήμα α Υποδιάγραμμα ροής Εντοπισμού τροφής και προσέγγισής της Πρέπει εδώ να τονίσουμε ότι επειδή το ρομπότ μετά την ανίχνευση της τροφής αρχίζει να κινείται προς αυτήν είναι λογικό να την ανιχνεύει σε κάθε κύκλο. Αυτό έχει προβλεφθεί και έτσι περιορίζεται ο αλγόριθμος από το να μπαίνει σε φάση εντοπισμού σε κάθε κύκλο. Τι γίνεται όμως αν κατά τι διάρκεια της προσέγγισης της τροφής εμφανιστεί στο οπτικό πεδίο της κάμερας θηρευτής; Αυτή την περίπτωση εξετάζει η επόμενη ενότητα. 36

42 Περιγραφή του αλγορίθμου Εμφάνιση θηρευτή κατά τη διάρκεια προσέγγιση τροφής (STATE=[1 1]) Αν κατά τη διάρκεια προσέγγισης της τροφής εμφανιστεί θηρευτής τότε το ρομπότ άμεσα υπολογίζει τη θέση που βρίσκεται η τροφή ως προς το ίδιο και την απομνημονεύει. Πώς όμως το ρομπότ υπολογίζει τη θέση της τροφής; Αν έχει επιτελεστεί η εστίαση και ξαφνικά εμφανιστεί στο οπτικό του πεδίο θηρευτής, τότε μέσα από την έκταση της κάλυψης των σημείων που βλέπει από σημεία τροφής μπορεί να υπολογίσει την απόσταση της τροφής από το ίδιο. a1 To x0 εκφράζεται σαν κ1*α1+κ2. κ1=0.3 & κ2=0.4 Το Khepera έχει εστιάσει στην τροφή. Για να γνωρίζει τη θέση του δημιουργεί ένα νέο τοπικό σύστημα συντεταγμένων. Το x0 υπολογίζεται όπως φαίνεται στο σχήμα από το ποσοστό κάλυψης. Σχήμα α Απομνημόνευση Θέσης Τροφής Με την έλευση του θηρευτή το Khepera δημιουργεί στη μνήμη του ένα τοπικό σύστημα συντεταγμένων (αυτό που συμβολίζεται με μπλε στο παραπάνω σχήμα). Το ρομπότ θεωρεί ότι βρίσκεται στη θέση (0,0) του συστήματος και η τροφή βρίσκεται στη θέση (x0,0). Πλέον κάνοντας χρήση των μεταβολών γωνίας και απόστασης που προκύπτουν από τη συνολική οδομετρία γνωρίζει τη θέση του στο τοπικό σύστημα συντεταγμένων. Εκτελεί εστίαση και αποφυγή θηρευτή και μόλις αυτή ολοκληρωθεί κατευθύνεται προς τη θέση (x0,0) στρεφόμενο προς τα εκεί και ενεργοποιώντας τη συμπεριφορά διατήρησης κατεύθυνσης όπως στην περίπτωση προσέγγισης τροφής της προηγούμενης φάσης. 37

43 Περιγραφή του αλγορίθμου Ανίχνευση Θηρευτή κατά την προσέγγιση τροφής Αυτά τα δύο βήματα εκτελούνται μόνο κατά τη μετάβαση από την 3 η φάση του σεναρίου στην 4 η Απομνημόνευση Θέσης Τροφής FLAG= 2 STATE= [1 1] STATE=[1 1] Από τον κύριο κύκλο έρχονται STATE, ΑΙΣΘΗΤΗΡΙΑ, ddist, dfora, set Ανανέωση της θέσης του Khepera μέσα στο τοπικό σύστημα συντεταγμένων 2 FLAG 1 OXI set Εστίαση OK Διατήρηση Κατεύθυνσης 1 Dfora αισθητήρια 2 Στροφή προς την τροφή OXI Περιμετρικός Έλεγχος Άλλαξε το State; NAI Αναστροφή FLAG=1 (διατήρηση κατεύθυνσης Συνολική Απόσταση>700 OXI NAI FLAG= 1 (περιμετρικός έλεγχος) FLAG=1 (διατήρηση κατεύθυνσης) STATE=[0 1] Αν δεν έχει ολοκληρωθεί ο περιμετρικός έλεγχος FLAG= 1 (συνέχεια) Αλλιώς FLAG=2 (στροφή προς την τροφή) NAI FLAG= 2 (εστίαση) Επιστρέφονται στον κύριο κύκλο Ταχύτητες, FLAG Σχήμα β Υποδιάγραμμα Ροής για την Εμφάνιση Θηρευτή κατά την Προσέγγιση Για να γίνει περισσότερο κατανοητό το παραπάνω λογικό διάγραμμα αναφέρουμε τις διαδοχικές φάσεις: 38

44 Περιγραφή του αλγορίθμου 1. Έχει ανιχνευθεί τροφή και έχει ξεκινήσει η προσέγγισή της (STATE= [0 1], FLAG=1). 2. Εμφανίζεται θηρευτής. 3. «Αποθηκεύεται» η θέση της τροφής. 4. Γίνεται STATE= [1 1] γιατί έχει ανιχνευθεί θηρευτής μετά από τροφή ([0 1] [1 0]). 5. FLAG= 2 για να γίνει εστίαση στο θηρευτή. 6. Μόλις ολοκληρωθεί η εστίαση, αναστροφή και FLAG=1 για να διατηρηθεί κατεύθυνση απομάκρυνσης από το θηρευτή. 7. Μετά από μια απόσταση πρέπει να εκτελεστεί περιμετρικός έλεγχος για να επιβεβαιωθεί η επιτυχής αποφυγή του θηρευτή, άρα FLAG= Αν δεν έχει αποφευχθεί ο θηρευτής, εκ νέου εστίαση FLAG= 2, μετάβαση στο βήμα Αν έχει αποφευχθεί ο θηρευτής, τότε πρέπει να επιστρέψουμε στην τροφή, έτσι FLAG= Με FLAG=2 στρεφόμαστε προς την αποθηκευμένη θέση της τροφής, τίθεται FLAG=1 έτσι ώστε να διατηρηθεί η κατεύθυνση προσέγγισης της τροφής, και STATE= [0 1] γιατί πλέον το σενάριο επανέρχεται στην 3 η φάση, προσέγγιση τροφής. 3.4 Ανάλυση της υλοποίησης των συμπεριφορών Εισαγωγή Στην ενότητα που προηγήθηκε περιγράψαμε τα διάφορα στάδια του αλγορίθμου αναφερόμενοι απλώς στις συμπεριφορές που λαμβάνουν μέρος στα διάφορα βήματα υλοποίησης χωρίς να τις αναλύουμε περαιτέρω. Σε αυτή την ενότητα θα δείξουμε πώς υλοποιήσαμε αυτές τις συμπεριφορές. Στις περισσότερες περιπτώσεις κάναμε χρήση της Ασαφούς Λογικής. Λόγω όμως κάποιων ιδιαιτεροτήτων σε κάποια βήματα υλοποίησης εισάγαμε κάποια στοιχεία κλασσικού ντετερμινισμού. Συνολικά οι συμπεριφορές που υλοποιήθηκαν με ασαφή λογική είναι οι εξής: Αποφυγή εμποδίων Διατήρηση κατεύθυνσης 39

45 Περιγραφή του αλγορίθμου Παρακολούθηση περιμέτρου Εστίαση Οι τρεις άλλες περιμετρικός έλεγχος, πλεύρισμα και στροφή προς την τροφή έχουν υλοποιηθεί ντετερμινιστικά. Για όσες έχουν υλοποιηθεί με ασαφή λογική τα χαρακτηριστικά (κοινά για όλους) φαίνονται στον επόμενο πίνακα. Όνομα Χαρακτηριστικού FIS type And Method Or Method Implication Aggregation Defuzzification Μέθοδος Υλοποίησης mamdani min max min max mean of maxima (η παρακολούθηση περιμέτρου με cetroid) Σχήμα α Χαρακτηριστικά Ελεγκτών Η ενεργοποίηση κάθε συμπεριφοράς συμβαίνει καθώς εξελίσσεται το σενάριο με κατάλληλες εναλλαγές της FLAG Αποφυγή Εμποδίων Η συμπεριφορά αυτή υλοποιήθηκε με έναν ασαφή ελεγκτή. Είσοδοι στον ελεγκτή ήταν οι τιμές των υπέρυθρων αισθητηρίων και έξοδοι οι ταχύτητες στους κινητήρες. Οι συναρτήσεις συμμετοχής και οι κανόνες που χρησιμοποιήθηκαν φαίνονται στα σχήματα που ακολουθούν. Πριν δείξουμε όμως τα στοιχεία του ελεγκτή παρουσιάζουμε ένα σχήμα του Khepera όπου φαίνεται η ονοματολογία που χρησιμοποιείται. FrontLeft FrontRight Left Right LeftSide RightSide LeftWheel RightWheel Σχήμα α Khepera Ονοματολογία Εισόδων- Εξόδων 40

46 Περιγραφή του αλγορίθμου Σχήμα β Συνολικό Διάγραμμα του Ελεγκτή Μετρήσεις Αισθητηρίου Προσέγγισης Μετρήσεις Αισθητηρίου Προσέγγισης Σχήμα γ Συναρτήσεις Συμμετοχής Εισόδων Στο σχήμα γ φαίνονται οι συναρτήσεις συμμετοχής για τις εισόδους. Υπάρχουν δύο καταστάσεις free και obstacle. Το πρώτο διάγραμμα είναι οι συναρτήσεις συμμέτοχης για τα μπροστά και για τα διαγώνια αισθητήρια ενώ το δεύτερο είναι οι συναρτήσεις συμμετοχής για τα πλάγια. Ταχύτητα Σχήμα δ Συναρτήσεις Συμμετοχής Εξόδου Στο σχήμα δ φαίνονται οι συναρτήσεις συμμετοχής για τις εξόδους του ελεγκτή. Υπάρχουν 2 δυνατές καταστάσεις go_forward και go_backward. Οι συναρτήσεις συμμετοχής στις εξόδους είναι ίδιες και για τον αριστερό και για το δεξιό κινητήρα. 41

47 Περιγραφή του αλγορίθμου If Then FrontLeft FrontRight Left Right LeftSide RightSide LeftWheel RightWheel free obstacle go_backward go_forward obstacle free go_forward go_backward free obstacle go_backward go_forward obstacle free go_forward go_backward free obstacle go_backward go_forward obstacle free go_forward go_backward obstacle obstacle go_forward go_forward free free go_forward go_forward obstacle obstacle obstacle obstacle obstacle obstacle go_forward go_backward Σχήμα δ Κανόνες του Ελεγκτή Αποφυγής Εμποδίων Διατήρηση Κατεύθυνσης Το ρομπότ για να διατηρηθεί σε τροχιά απομάκρυνσης από το θηρευτή ή προσέγγισης της τροφής στρέφεται προς μια συγκεκριμένη κατεύθυνση και στη συνέχεια κινείται σε ευθεία γραμμή. Αν όμως για κάποιο λόγο ξεφύγει από αυτή την κατεύθυνση τότε θα πρέπει μόλις φύγει το αίτιο που προκάλεσε την παρέκκλιση του να επανέλθει σε αυτή. Για να συγκρατήσει την κίνηση παράλληλα στην επιθυμητή κατεύθυνση ο αλγόριθμος κάνει χρήση της οδομετρίας. Υπολογίζοντας κάθε φορά την παρέκκλιση οδηγεί το ρομπότ σε διορθωτικές κινήσεις έτσι ώστε να επανέλθει στην ευθεία. Για να επιτύχει τις διορθωτικές αυτές κινήσεις κάνει χρήση μιας διαδικασίας τοποθέτησης εικονικών εμποδίων. Αυτή η τοποθέτηση συνίσταται στη δημιουργία νέων «εικονικών μετρήσεων» που αντικαθιστούν τις μετρήσεις που στέλνονται από τα υπέρυθρα αισθητήρια. Για των υπολογισμό αυτό χρησιμοποιείται άλλος ένας ασαφής ελεγκτής με είσοδο την παρέκκλιση (για την οποία χρησιμοποιούμε τον όρο fora) και έξοδο τις τιμές των μετρήσεων. Σχήμα α Συνολικό Διάγραμμα του Ελεγκτή Διατήρησης κατεύθυνσης 42

48 Περιγραφή του αλγορίθμου Γωνία κατεύθυνσης κίνησης του ρομπότ ως προς την κατεύθυνση μέγιστης απομάκρυνσης Σχήμα β Συνάρτηση συμμετοχής της εισόδου Συντελεστής εμφάνισης εικονικού εμποδίου Σχήμα γ Συνάρτηση συμμετοχής για κάθε έξοδο Όπως βλέπουμε υπάρχουν 7 δυνατές καταστάσεις για τη μεταβλητή fora: v(ery)right, right, s(lightly)right, straight, sleft, left, vleft οι οποίες προφανώς υποδηλώνουν τη φορά και την έκταση της λανθασμένης πορείας που διαγράφει το ρομπότ. Ενώ για την έξοδο υπάρχουν οι καταστάσεις zero και V(irtual)O(bstacle) που αντιπροσωπεύουν το τι θα βλέπει το κάθε αισθητήριο μετά τη χρήση των εικονικών εμποδίων. Οι κανόνες για την τοποθέτηση εικονικών εμποδίων είναι αυτοί που φαίνονται στον ακόλουθο πίνακα. If Then fora ref1 ref2 ref3 ref4 ref5 ref6 straight zero zero zero zero zero zero sleft VO zero zero zero zero zero left VO VO zero zero zero zero vleft zero zero VO zero zero zero vright zero zero zero VO zero zero right zero zero zero zero VO VO sright zero zero zero zero zero VO Σχήμα δ Κανόνες της Διατήρησης κατεύθυνσης (Η αντιστοιχία είναι ref1=leftside, ref2=left, ref3=frontleft, ref4=frontright, ref5=right, ref6=rightside) 43

49 Περιγραφή του αλγορίθμου Για να γίνει πιο κατανοητό τι ακριβώς κάνει ο παραπάνω ελεγκτής ακολουθεί μια σχηματική αναπαράσταση της τοποθέτησης εικονικών εμποδίων (Σχήμα ε). for Στιγμή Πρώτη: Το ρομπότ εστιάζει στο θηρευτή. Στιγμή Δεύτερη: Αναστροφή και «αντίληψη» δυναμικών γραμμών που το οδηγούν μακριά από το θηρευτή. Στιγμή που έχει συμβεί παρέκκλιση: Όπως φαίνεται το ρομπότ έχει παρεκκλίνει αριστερά σε σχέση με τη διεύθυνση κίνησής του. Η τοποθέτηση ενός εικονικού εμποδίου αριστερά και διαγώνια αριστερά θα το επαναφέρει στη σωστή πορεία. Σχήμα ε Συμπεριφορά Διατήρησης κατεύθυνσης Παρακολούθηση περιμέτρου Αν κατά τη διάρκεια της αποφυγής θηρευτή ή της προσέγγισης τροφής, δηλαδή ενώ είναι ενεργοποιημένη η συμπεριφορά διατήρησης κατεύθυνσης (FLAG=1), το ρομπότ βρεθεί κοντά σε ένα εμπόδιο τότε περνάει σε συμπεριφορά παρακολούθησης περιμέτρου. Στα επόμενα σχήματα φαίνεται γιατί αυτή η συμπεριφορά είναι χρήσιμη ιδιαίτερα σε κυρτά εμπόδια (Γ ή Π). 44

50 Περιγραφή του αλγορίθμου Στην πρώτη θέση ενεργοποιείται η παρακολούθηση περιμέτρου. Η πορεία. δείχνει την απόσταση που διανύεται με π.π.. Μόλις ολοκληρωθεί αναλαμβάνει η διατήρηση κατεύθυνσης που επαναφέρει το ρομπότ παράλληλα στις δυναμικές γραμμές. Σχήμα α Αξιοποίηση της Παρακολούθησης Περιμέτρου Η παρακολούθηση περιμέτρου συνίσταται στη διατήρηση μιας περίπου σταθερής απόστασης των πλευρικών αισθητηρίων από την περίμετρο που παρακολουθείται. Για να γίνει αυτό χρειάζεται μια προκαταρκτική συμπεριφορά που θα γυρίσει το ρομπότ παράλληλα στο εμπόδιο. Αυτό γίνεται ντετερμινιστικά και ανάλογα με τη γωνία προσέγγισης στο εμπόδιο. Η γωνία προσέγγισης εκτιμάται με 6 δυνατές τιμές και ανάλογα με το ποιο από τα 6 υπέρυθρα αισθητήρια είναι μέγιστο. Στη συνέχεια εκτελείται μια επιτόπου στροφή υπό γωνία που φαίνεται στον πίνακα του επόμενου σχήματος. Σε αυτήν την περίπτωση μέγιστο αισθητήριο είναι το Right. Οι πιθανές διαφορετικές γωνίες προσέγγισης είναι συνολικά 6, όσα και τα αισθητήρια. Γωνία Προσέγγισης Μέγιστο Αισθητήριο Μέγιστο Αισθητήριο LeftSide Left FrontLeft FrontRight Right RightSide Γωνία Στροφής +10 o +40 o +80 o 80 o 40 o 10 o Σχήμα β Μέγιστο Αισθητήριο & Γωνία Προσέγγισης Την παραπάνω συμπεριφορά ονομάζουμε πλεύρισμα και πρόκειται για ψευδοσυμπεριφορά αφού συμβαίνει στιγμιαία και δεν υλοποιείται από κανένα πραγματικό ελεγκτή. Εκτελείται όσο FLAG=31 και μόλις ολοκληρωθεί θέτει FLAG=3 για να προχωρήσουμε σε παρακολούθηση περιμέτρου. Η παρακολούθηση περιμέτρου εκτελείται με έναν ασαφή ελεγκτή ίδιο για την 45

51 Περιγραφή του αλγορίθμου παρακολούθηση περιμέτρου που βρίσκεται δεξιά και για αυτή που βρίσκεται αριστερά. Έχει ως εισόδους το πλευρικό (LeftSide/RightSide) και διαγώνιο πλευρικό (Left/Right) και εξόδους τις ταχύτητες των δύο κινητήρων. Σχήμα γ Συνολικά ο ελεγκτής Παρακολούθησης Περιμέτρου Μέτρηση Πλευρικού Αισθητηρίου Προσέγγισης Μέτρηση Διαγωνίως Πλευρικού Αισθητηρίου Προσέγγισης Σχήμα δ Συναρτήσεις Συμμετοχής για τις Δύο Εισόδους 46

52 Περιγραφή του αλγορίθμου Ταχύτητα Σχήμα ε Συνάρτηση Συμμετοχής Εξόδου- Ίδια για αριστερό και δεξιό κινητήρα Όπως φαίνεται και στα σχήματα για τις εισόδους υπάρχουν 3 καταστάσεις (fevgei, kalapaei, koutoulaei) οι οποίες είναι σε διαφορετικό εύρος πραγματικών τιμών για το πλευρικό και το διαγωνίως πλευρικό αισθητήριο και αυτό γιατί σε παράλληλη πορεία με ένα εμπόδιο το πλευρικό είναι πλησιέστερα και συνεπώς έχει μεγαλύτερες μετρήσεις από το διαγωνίως πλευρικό. Για τους κινητήρες υπάρχουν δύο καταστάσεις b(ack)w(ard) και f(or)w(ard). Οι κανόνες για παρακολούθηση περιμέτρου φαίνονται στον επόμενο πίνακα. If Then side notsoside lwheel Rwheel fevgei fw bw koutoulaei bw fw kalapaei kalapaei fw fw fevgei fw bw koutoulaei bw fw Σχήμα στ Κανόνες για την Παρακολούθηση Περιμέτρου Στην ειδική περίπτωση εμφάνισης πολύ κοντινού εμποδίου ενώ βρισκόμαστε σε παρακολούθηση περιμέτρου ενεργοποιείται η αποφυγή εμποδίων και αφού επιτευχθεί η αποφυγή της σύγκρουσης ξαναμπαίνουμε σε διατήρηση κατεύθυνσης FLAG=1. Τέλος πρέπει να παρατηρήσουμε ότι επειδή θέλουμε να παρακολουθείται η κυρτή πλευρά του εμποδίου και μετά να απενεργοποιείται η συμπεριφορά μόλις το διαγωνίως πλευρικό μείνει χωρίς εμπόδιο για ένα χρονικό διάστημα επανερχόμαστε σε διατήρηση κατεύθυνσης τίθεται δηλαδή FLAG=1. Στο τελευταίο σχήμα που παραθέτουμε υπάρχει το λογικό διάγραμμα της διαδικασίας από την στιγμή της ενεργοποίησης της διατήρησης κατεύθυνσης (δηλαδή έναρξη προσέγγισης σε τροφή ή απομάκρυνσης από θηρευτή) και μετά. 47

53 Περιγραφή του αλγορίθμου Έχει κεντραριστεί ο θηρευτής ή η τροφή και κινούμαστε προς την επιθυμητή κατεύθυνση.flag=1. 1 FLAG 3 31 Διατήρηση Γραμμής Πλεύρισμα Παρακολούθηση Περιμέτρου Υπάρχει Κοντινό Εμπόδιο; ΟΧΙ ΝΑΙ FLAG=31 (πλεύρισμα) FLAG=3 (παρακολούθηση περιμέτρου) ΝΑΙ Αποφυγή Εμποδίου Υπάρχει Επικίνδυνα Κοντινό Εμπόδιο; ΟΧΙ ΝΑΙ FLAG=1 (διατήρηση κατεύθυνσης) Ελεύθερο Διαγώνιο Αισθητήριο; ΟΧΙ Συνέχεια Σχήμα ζ Λογικό διάγραμμα Παρακολούθησης Περιμέτρου Εστίαση Η συμπεριφορά αυτή βοηθάει το ρομπότ από τη στιγμή που θα αντιληφθεί το θηρευτή να στραφεί προς αυτόν έτσι ώστε να τον έχει στο μέσον του οπτικού του πεδίου. Έχει για είσοδο τη μεταβλητή set όπως αυτή αναφέρθηκε στην παράγραφο για την επεξεργασία της εικόνας της κάμερας και έξοδο τις ταχύτητες στους δύο κινητήρες. 48

54 Περιγραφή του αλγορίθμου Σχήμα α Ελεγκτής Εστίασης Σχήμα β Συνάρτηση Συμμετοχής Εισόδου Ταχύτητα Σχήμα γ Συνάρτηση Συμμετοχής Εξόδων If Then set lwheel rwheel vn back for n stop for p for stop vp for back Σχήμα Κανόνες Ελεγκτή Εστίασης 49

55 Προσομοιώσεις με τον Kiks 4. Προσομοιώσεις με τον Kiks Σε αυτό το κεφάλαιο θα γίνει ανάλυση των προσομοιώσεων που έγιναν με χρήση του kiks. Μετά από μια εισαγωγική περιγραφή του προσομοιωτή kiks ακολουθούν ξεχωριστές προσομοιώσεις για κάθε μία συμπεριφορά. 4.1 Προσομοιωτής Kiks Εισαγωγή Ο Kiks (Kiks is a khepera simulator) είναι ένας από τους προσομοιωτές που έχουν αναπτυχθεί με σκοπό να προσομοιώνουν τον έλεγχο του ρομπότ Khepera. Είναι γραμμένος σε Matlab επιτρέποντας μας να προσομοιώνουμε σε ένα εικονικό δυσδιάστατο περιβάλλον τον κώδικα που έχουμε γράψει σε Matlab. Υποστηρίζει όλα τα χαρακτηριστικά του ρομπότ Khepera (αισθητήρια προσέγγισης και φωτεινότητας, έλεγχος θέσης και ταχύτητας των κινητήρων) αλλά και τα χαρακτηριστικά των δύο από τα turret (κάρτες επέκτασης) που έχει το ρομπότ. Εμείς από τα turret χρησιμοποιήσαμε στον προσομοιωτή το Κ213. Με το γραφικό περιβάλλον του μπορούμε να δημιουργούμε αρένες με τις επιθυμητές διαστάσεις να τοποθετούμε αντικείμενα μέσα σε αυτές, αλλά και να ορίσουμε με το ποντίκι τη θέση (1.α) και τον προσανατολισμό (1.β) του ρομπότ μέσα στην αρένα. Μπορούμε επίσης να παρατηρούμε την κίνηση του ρομπότ, τις μετρήσεις των αισθητηρίων προσέγγισης (2) και φωτεινότητας (3) και την εικόνα που έχει κάθε στιγμή η κάμερά του (4). Με το πέρας κάθε προσομοίωσης έχουμε την αναπαράσταση της τροχιάς (5) που διήνυσε το ρομπότ και αυτήν παρουσιάζουμε στις επόμενες προσομοιώσεις. 4 1.β 1.α Σχήμα α Παράθυρο Λεπτομερειών Προσομοίωσης και Παράθυρο Προσομοιωτή 50

56 Προσομοιώσεις με τον Kiks Πιστότητα της προσομοίωσης Το κρισιμότερο χαρακτηριστικό ενός προσομοιωτή είναι κατά πόσο αυτός είναι ρεαλιστικός. Πόσο δηλαδή τα αποτελέσματα ενός πειράματος που εκτελείται σε αυτόν με δεδομένες συνθήκες είναι ίδια με όταν το πείραμα εκτελείται σε πραγματικό περιβάλλον με παρόμοιες συνθήκες. Ο Kiks πετυχαίνει άριστη προσομοίωση των χαρακτηριστικών του ρομπότ (αισθητήρια, κάμερα, κινητήρες) και της διαδικασίας ελέγχου του ρομπότ (έλεγχος θέσης και ταχύτητας). Η παράμετρος που επηρεάζει ωστόσο εντονότατα τις προσομοιώσεις με τον Kiks κάνοντάς τις αρκετά εξαρτημένες από τον υπολογιστή στον οποίο εκτελούνται και όχι από τις συνθήκες του προβλήματος είναι ο χρόνος. Κάθε πρόγραμμα ελέγχου του ρομπότ περιλαμβάνει δύο στάδια: εκείνο της επικοινωνίας, λήψη πληροφορίας από το ρομπότ και μεταβίβαση σε αυτό παραμέτρων ελέγχου δηλαδή ταχύτητα ή θέση και εκείνο της επεξεργασίας, χρησιμοποίηση δηλαδή της πληροφορίας από το ρομπότ για να αποφασισθεί η επόμενη ενέργεια και η επόμενη κατάσταση του Ο χρόνος που διαρκεί η επικοινωνία σε πειράματα στον προσομοιωτή καθορίζεται από το baud rate (στα δικά μας πειράματα είναι 9600) και είναι αμελητέος σε σχέση με το χρόνο που διαρκεί η επεξεργασία. Το δεύτερο μέγεθος που ονομάζεται και χρόνος απόφασης εξαρτάται από τον υπολογιστή που εκτελείται η προσομοίωση και από την πολυπλοκότητα του προγράμματος που εκτελείται. Αυτό οδηγεί σε δύο αρνητικά αποτελέσματα: το ίδιο πρόγραμμα εκτελείται διαφορετικά σε διαφορετικούς υπολογιστές η ίδια συμπεριφορά υλοποιημένη με τον ίδιο κώδικα δίνει διαφορετικά αποτελέσματα αν εκτελείται μόνη της και διαφορετικά αν είναι μέρος ενός πολυπλοκότερου αλγορίθμου ελέγχου. Χαρακτηριστικό παράδειγμα αποτελεί η παρακολούθηση περιμέτρου, η οποία υλοποιημένη με τον ίδιο ελεγκτή λειτουργεί διαφορετικά μόνη της και διαφορετικά σαν μέρος ολόκληρου του αλγορίθμου. Για να αποφύγουμε τέτοια φαινόμενα σε κρίσιμα σημεία των συμπεριφορών εισαγάγαμε ορισμούς ταχυτήτων για συγκεκριμένο αριθμό εντολών (ορίζουμε δηλαδή την ταχύτητα σε μία τιμή, μετά τοποθετούμε ένα dummy while και μετά από αυτό ορίζουμε την ταχύτητα μηδέν). Προσπαθήσαμε έτσι να ορίζουμε εμείς το πόσο χρόνο εφαρμόζεται η έξοδος της συμπεριφοράς. Επειδή όμως και η διάρκεια αυτών των dummy καθυστερήσεων διαφέρει από υπολογιστή σε υπολογιστή τα πειράματα παρέμειναν εξαρτημένα. 51

57 Προσομοιώσεις με τον Kiks 4.2 Προσομοίωση Συμπεριφορών Αποφυγή Εμποδίων σε αρένα χωρίς διαδρόμους Εκτελούμε πρώτα την προσομοίωση της συμπεριφοράς σε μια αρένα πλάτους 600 και ύψους 800 χιλιοστών με εμπόδια και χωρίς διαδρόμους. Το ελάχιστο πλάτος ελεύθερου χώρου είναι 1,7 επί τη διάμετρο του ρομπότ ενώ το λεπτότερο εμπόδιο, και άρα η αιχμηρότερη εξωτερική γωνία έχει πλάτος 10mm. Η συνολική πορεία που ακολουθείται είναι αυτή που φαίνεται στο επόμενο σχήμα Σχήμα α Αποφυγή Εμποδίων - Software Υλοποίηση Όπως φαίνεται και στο σχήμα δεν υπάρχουν συγκρούσεις του ρομπότ με εμπόδια ή με τοίχους της αρένας. Με βάση το παραπάνω σχήμα μπορούμε να σχολιάσουμε πιο συγκεκριμένα τα εξής σημεία: 1. Μετωπική προσέγγιση σε εσωτερικές γωνίες: Το ρομπότ ανταποκρίνεται ικανοποιητικότατα σε εσωτερικές ορθές γωνίες αποφεύγοντας τη σύγκρουση με ομαλή στροφή μεγαλύτερη των 90 ο. 52

58 Προσομοιώσεις με τον Kiks Αμέσως μετά επανέρχεται στη σωστή του πορεία βασιζόμενο στις μετρήσεις των πλαϊνών αισθητηρίων. 2. Προσέγγιση σε εξωτερικές γωνίες: Πρόκειται για άλλη μια περίπτωση ενδεχόμενης σύγκρουσης την οποία το ρομπότ αποφεύγει επιτυχώς. Όπως και προηγουμένως δεν έχουμε βίαιη στροφή αλλά μια ομαλή αποφυγή η οποία είναι ανάλογη της καθετότητας με την οποία το ρομπότ προσεγγίζει την «αιχμή». 3. Πλευρική προσέγγιση εμποδίων: Σε αυτή την περίπτωση το ρομπότ εκτελεί απλά μικρές διορθωτικές κινήσεις που το αποτρέπουν από το να συγκρουστεί χωρίς να το οδηγούν σε απότομες απομακρύνσεις. Αν το ρομπότ αντιδρούσε εντονότερα σε μικρά πλευρικά ερεθίσματα η κίνηση σε μια σχετικά «γεμάτη» αρένα θα ήταν σχεδόν αδύνατη λόγω της πληθώρας αντιδράσεων που θα οδηγούσαν σε μακροσκοπικές ταλαντώσεις. 4. Κίνηση σε ανοικτούς χώρους: Το ρομπότ για να καταφέρνει γρηγορότερες μεταβάσεις στην αρένα επιδιώκει μέγιστη εκμετάλλευση του ανοικτού χώρου. Για αυτό κινείται σε απόλυτα ευθείες γραμμές για όση ώρα του το επιτρέπει το περιβάλλον του και εκτελεί αποφυγή σε οριακά σημεία επιτυγχάνοντας μια σταθερή και αποτελεσματική κίνηση χωρίς όμως συγκρούσεις. 53

59 Προσομοιώσεις με τον Kiks Αποφυγή Εμποδίων σε αρένα με διαδρόμους Εκτελούμε πρώτα την προσομοίωση της συμπεριφοράς σε μια αρένα πλάτους 600 και ύψους 800 χιλιοστών με διαδρόμους διάφορων πλατών. Τα διαχωριστικά μεταξύ των διαδρόμων έχουν πλάτος 15mm και οι διάδρομοι ελεύθερο χώρο πλάτους1,5 έως 2,7 επί τη διάμετρο του ρομπότ. Η πορεία που ακολουθείται είναι αυτή που φαίνεται στο επόμενο σχήμα. 1 3.α 3.β γ Σχήμα α Αποφυγή Εμποδίων σε αρένα με διαδρόμους Software Υλοποίηση Όπως και στην προηγούμενη περίπτωση ο πρωταρχικός στόχος της μη σύγκρουσης εμφανώς επιτυγχάνεται. Σχολιάζοντας τα επιμέρους: 1. Κίνηση μέσα στο διάδρομο: Ένα από τα σοβαρότερα προβλήματα της κίνησης σε διάδρομο είναι η εμφάνιση συνεχών διορθωτικών ταλαντώσεων. Για να περιορίσουμε μια τέτοια κατάσταση ορίσαμε τη συνάρτηση συμμετοχής των πλαϊνών αισθητηρίων λιγότερο ευαίσθητη από τις υπόλοιπες (βλ. Κεφάλαιο 3). Ο ελεγκτής έτσι δεν κάνει συνεχείς 54

60 Προσομοιώσεις με τον Kiks διορθωτικές κινήσεις για μικρές διαφορές σε μετρήσεις μεταξύ αριστερού και δεξιού αισθητηρίου. Επιτυγχάνεται έτσι μια αρκετά ευθύγραμμη πορεία για όση ώρα το ρομπότ βρίσκεται σε διάδρομο. 2. Είσοδος στο διάδρομο: Όπως φαίνεται η είσοδος στο διάδρομο όταν δε γίνεται ακριβώς στο μέσον της μεταξύ των τοίχων απόστασης οδηγεί σε ταλαντώσεις. Αυτές είναι φθίνουσες και μετά από ένα διάστημα παύουν αφού πρώτα έχουν φέρει το ρομπότ σε μια θέση κοντά στον μεσαίο χώρο του διαδρόμου. 3. Αναστροφές: Τέλος ένα άλλο κρίσιμο ζήτημα για την κίνηση σε διαδοχικούς διαδρόμους είναι οι αναστροφές κατά τη μετάβαση από τον ένα διάδρομο στον άλλον. Ιδανική θα χαρακτηρίζονταν μια απόλυτα ομαλή αναστροφή όπως αυτή της περίπτωσης 3.α που φέρνει το ρομπότ στο μέσον του επόμενου διαδρόμου. Λόγω όμως της reactive φύσης του αλγόριθμου και όχι μιας υλοποίησης με mapping λογική το ρομπότ απλώς αποφεύγει τα εμπόδια που βλέπει οδηγούμενο προς τον ανοικτό χώρο. Η ρύθμιση του ελεγκτή με τέτοιο τρόπο ώστε η αποφυγή αυτή να είναι ομαλή διευκολύνει την πορεία του ρομπότ από διάδρομο σε διάδρομο. Μια απότομη αντίδραση στην εμφάνιση του τέλους του διαδρόμου π.χ. στην περίπτωση 3.β ίσως ανάγκαζε το ρομπότ σε επιτόπου αναστροφή οδηγώντας το στο διάδρομο από τον οποίο έρχεται περιορίζοντας το από την εξερεύνηση ολόκληρης της αρένας. 55

61 Προσομοιώσεις με τον Kiks Παρακολούθηση περιμέτρου Προσομοιώσαμε αυτή τη συμπεριφορά σε μια αρένα διαστάσεων 600 επί 800 με εμπόδια κατάλληλα για την παρουσίαση της αντιμετώπισης από το ρομπότ περιπτώσεων με ιδιαίτερα χαρακτηριστικά. Συγκεκριμένα το ρομπότ δοκιμάζεται σε περίμετρο ελάχιστου μήκους 70mm και εσωτερικές γωνίες είτε ορθές είτε καμπύλες Σχήμα Παρακολούθηση Περιμέτρου - Software Υλοποίηση Ο ελεγκτής καταφέρνει να συγκρατήσει το ρομπότ σε παρακολούθηση περιμέτρου για την περιοχή που είναι σχεδιασμένος να το κάνει. Αξίζουν να προσεχθούν τα εξής σημεία: 1. Είσοδος στην παρακολούθηση περιμέτρου: Όταν το ρομπότ βρεθεί κοντά σε εμπόδια τότε μπαίνει στη συμπεριφορά που είχαμε περιγράψει σαν «πλεύρισμα» και στρέφεται ώστε να κινηθεί παράλληλα στο εμπόδιο. 56

62 Προσομοιώσεις με τον Kiks Βλέπουμε ότι υπάρχει η δυνατότητα να γίνεται με πολλές διαφορετικές γωνίες εισόδου στη συμπεριφορά. 2. Έξοδος από την παρακολούθηση περιμέτρου με το τέλος του εμποδίου: Το ρομπότ με το που αντιλαμβάνεται το τέλος της περιμέτρου που παρακολουθεί απενεργοποιεί τη συμπεριφορά παρακολούθησης περιμέτρου. Για να συμβεί κάτι τέτοιο πρέπει να διαπιστωθεί απουσία εμποδίου από το διαγωνίως πλάγιο αισθητήριο της μεριάς προς την οποία βρίσκεται η περίμετρος (LeftSide/RightSide) για ένα μικρό αλλά σημαντικό χρονικό διάστημα. Το πρόβλημα που ανακύπτει είναι ότι μέχρι να παρέλθει το χρονικό αυτό διάστημα το ρομπότ προσπαθεί να ευθυγραμμιστεί με την περίμετρο που όμως πλέον δεν υπάρχει. Αποτέλεσμα είναι να βγαίνει κάθε φορά από τη συμπεριφορά έχοντας μια κεκτημένη φορά προς την πλευρά που βρισκόταν η περίμετρος. Αυτό φαίνεται στο παραπάνω σχήμα σε όλες τις περιπτώσεις εξόδου. Θα ήταν ιδανικό αν μπορούσαμε να πετύχουμε έξοδο σε τροχιά παράλληλη με την περίμετρο, ωστόσο δε γίνεται να ελαττώσουμε το χρονικό κατώφλι μη ανίχνευσης εμποδίου γιατί έτσι το ρομπότ θα εξέρχεται και σε στιγμές που δεν πρέπει λόγω αρκετών λανθασμένων μετρήσεων των αισθητηρίων. Τέλος πρέπει να σχολιαστεί ότι ως τέλος του εμποδίου θεωρείται η πρώτη θέση κατά την οποία η περίμετρος σχηματίζει αμβλεία εξωτερική γωνία. Ο λόγος για αυτή την παραδοχή γίνεται κατανοητός στην παράγραφο που προσομοιώνεται η διατήρηση κατεύθυνσης. 3. Παρακολούθηση περιμέτρου: Ο ελεγκτής καταφέρνει σε πολύ μεγάλο βαθμό την κίνηση παράλληλα στην περίμετρο σε ευθύγραμμα ή καμπύλα τμήματα χωρίς να χρειάζεται σχεδόν καμία διόρθωση. 4. Παρακολούθηση περιμέτρου και ορθές εσωτερικές γωνίες: Όταν το ρομπότ προσεγγίζει μετωπικά εσωτερικές γωνίες, τότε για να αποφευχθεί η σύγκρουση απενεργοποιείται ο ελεγκτής παρακολούθησης περιμέτρου και τον έλεγχο αναλαμβάνει η αποφυγή εμποδίων. Μετά την αποφυγή και αν το ρομπότ συνεχίζει να παραμένει κοντά σε περίμετρο, κάτι που συνήθως συμβαίνει αφού το πιθανότερο είναι να παρακολουθεί τη μια πλευρά της ορθής γωνίας και να βρεθεί πολύ κοντά στην άλλη, ξαναενεργοποιείται το πλεύρισμα και στον επόμενο κύκλο το ρομπότ ξαναμπαίνει σε παρακολούθηση περιμέτρου. Όπως φαίνεται και στο σχήμα αυτή η εναλλαγή συμπεριφορών προκαλεί ένα μικρό «σπάσιμο» «στην καμπύλη τροχιά αλλά επιτρέπει το ρομπότ να αλλάζει αρκετά ομαλά πλευρά (εννοείται της γωνίας) παρακολούθησης. 57

63 Προσομοιώσεις με τον Kiks Προσομοίωση Εστίασης Προσομοιώνουμε τη συμπεριφορά εστίασης έχοντας σαν θηρευτή μια κινούμενη μπάλα, που παίζει αυτό το ρόλο σε όλα τα πειράματα με τον kiks. Στο σχήμα που ακολουθεί φαίνεται η αρχική θέση του ρομπότ και του θηρευτή, τα 5 διαδοχικά καρέ της κάμεράς του κατά τους 5 κύκλους που χρειάστηκε για να εστιάσει και η τελική θέση με το ρομπότ να «κοιτάει» πλέον ακριβώς προς το θηρευτή. ` Σχήμα Εστίαση - Software Υλοποίηση Είναι εμφανές το πώς το ρομπότ στρέφεται με επιτόπου κινήσεις προς το θηρευτή. Αξίζει να προσεχθεί ότι η μεταβολή του οπτικού πεδίου είναι εντονότερη τις πρώτες στιγμές και εξομαλύνεται καθώς πλησιάζει στην επιτυχία της εστίασης αποφεύγονται έτσι οι ταλαντώσεις. Πρόκειται για μια χαρακτηριστική ιδιότητα του ασαφούς ελεγκτή. 58

64 Προσομοιώσεις με τον Kiks Διατήρηση κατεύθυνσης Εκτελέσαμε και παρουσιάζουμε μία ακόμα προσομοίωση στην οποία φαίνεται ο τρόπος με τον οποίο το ρομπότ κινείται προκειμένου να απομακρυνθεί από το θηρευτή Σχήμα α Απομάκρυνση από το θηρευτή - Software Υλοποίηση Στη θέση 1 εντοπίζεται και εστιάζεται ο θηρευτής και εκτελείται αναστροφή. Με κίτρινο σημειώνεται η πορεία του ρομπότ από την αναστροφή και μετά. Ο θηρευτής έχει «φωτογραφηθεί» στην αρχική του θέση, δηλαδή εκεί που έγινε η εστίαση. Με κόκκινο σημειώνονται οι δυναμικές γραμμές του «εικονικού» πεδίου που σπρώχνουν το ρομπότ μακριά από το θηρευτή. Στη θέση 2 το ρομπότ μπαίνει σε παρακολούθηση περιμέτρου προκειμένου να αποφύγει το εμπόδιο Π. Στη θέση 3 γίνεται αντιληπτό το τέλος της κυρτής περιμέτρου. Παρατηρείται ότι αν το ρομπότ συνέχιζε να ακολουθεί όλη την περίμετρο, και στην εξωτερική πλευρά του Π εμποδίου, τότε δε θα ευθυγραμμίζονταν με τις γραμμές του πεδίου. Αντίθετα τώρα μετά τη λήξη της παρακολούθησης περιμέτρου, αναλαμβάνει ξανά η διατήρηση κατεύθυνσης και οδηγεί το ρομπότ σε πορεία παράλληλη με τις δυναμικές γραμμές. Φαίνεται ωστόσο ότι δεν επιτυγχάνεται απόλυτος παραλληλισμός με το πεδίο, αυτό οφείλεται σε σφάλματα της ατελούς οδομετρίας πάνω στην οποία στηρίζεται ο προσδιορισμός της κατεύθυνσης προς την οποία κινείται το ρομπότ. 59

65 Προσομοιώσεις με τον Kiks Προσέγγιση τροφής και έκτακτη εμφάνιση θηρευτή Σε αυτή την ενότητα παραθέτουμε μια εκτέλεση με την περίπτωση στην οποία ο θηρευτής μπαίνει στο οπτικό πεδίο του ρομπότ κατά τη διάρκεια της προσέγγισης τροφής α Τροφή 5 Σχήμα Εντοπισμός τροφής και έκτακτη εμφάνιση θηρευτή - Software Υλοποίηση 1. Κεντράρισμα τροφής: Στη θέση 1 έχει κεντραριστεί η τροφή και ξεκινάει η προσέγγιση του ρομπότ προς αυτή. 2. Εμφάνιση του θηρευτή: Όταν το ρομπότ έχει φτάσει στη θέση 2, εμφανίζεται ο θηρευτής στη θέση 2.α (με διακεκομμένο κύκλο φαίνεται η θέση του θηρευτή και με διακεκομμένη κόκκινη γραμμή η πορεία που ακολουθεί από το κεντράρισμα ως το τέλος του σεναρίου). Το ρομπότ κεντράρει στο θηρευτή, αποθηκεύει τη θέση της τροφής και αναστρέφεται για να αποφύγει το θηρευτή. 60

66 Προσομοιώσεις με τον Kiks 3. Παρακολούθηση περιμέτρου: Επειδή το εμπόδιο που εμφανίζεται δεν επιτρέπει στο ρομπότ να κινηθεί κατά την κατεύθυνση μέγιστης απομάκρυνσης, εκτελεί παρακολούθηση περιμέτρου. Με τη λήξη της ευθυγραμμίζεται ξανά με το εικονικό πεδίο απώθησης. 4. Περιμετρικός Έλεγχος: Στη θέση 4 εκτελείται περιμετρικός έλεγχος για να επιβεβαιωθεί η επιτυχής απομάκρυνση από το θηρευτή. Ο θηρευτής που έχει μείνει αρκετά πίσω, έχει χάσει την επαφή του με το Khepera και κινείται σε τυχαίες κατευθύνσεις. Έτσι τελικά όντως επιβεβαιώνεται η επιτυχημένη απομάκρυνση. Μετά από αυτό το ρομπότ περιστρέφεται μέχρι να «κοιτάει» προς την αποθηκευμένη θέση της τροφής και αρχίζει να κινείται προς εκεί. 5. Προσέγγιση και νέος έλεγχος: Λόγω ατελειών που οφείλονται κυρίως στην αδυναμία του ρομπότ κατά την αποθήκευση της θέσης να προσδιορίσει την ακριβή απόσταση με βάση το οπτικό του πεδίο από την τροφή η στροφή προς την τροφή δεν είναι πάντα απολύτως σωστή. Για αυτό όταν η οδομετρία του ρομπότ το ενημερώσει ότι βρίσκεται λιγότερο από 20 cm κοντά στην αποθηκευμένη θέση της τροφής και αν αυτό δεν την έχει ήδη δει εκτελεί έναν νέο περιμετρικό έλεγχο. Εντοπίζει την ακριβή θέση της και πάει προς αυτή. Αυτό συμβαίνει στη θέση 5. 61

67 FPGA και υλοποίηση των ελεγκτών 5. FPGA και υλοποίηση των ελεγκτών Ένα από τα βασικά διλήμματα που αντιμετωπίζει ένας μηχανικός κατά τη σχεδίαση ενός συστήματος είναι τι κομμάτι του συστήματος θα υλοποιήσει με λογισμικό και τι με υλικό. Το λογισμικό μπορεί να ποικίλει από κάποιο πρόγραμμα σε μια γλώσσα προγραμματισμού υψηλού επιπέδου που θα τρέχει σε ένα υπολογιστικό σύστημα με λειτουργικό σύστημα και πολλά περιφερειακά ως ένα απλό πρόγραμμα σε assembly που θα τρέχει σε έναν μικροεπεξεργαστή γενικής χρήσης. Το υλικό μπορεί να είναι από κάποιο ολοκληρωμένο κύκλωμα ειδικά σχεδιασμένο για την περίσταση (ASIC Application Specific Integrated Circuit) μέχρι κάποιο προγραμματιζόμενο ψηφιακό κύκλωμα (όπως μνήμες ROM, PALs, CPLDs και FPGAs) ή κάποιο παραμετροποιήσιμο ολοκληρωμένο κύκλωμα που είναι ήδη διαθέσιμο στο εμπόριο. Το βασικό πλεονέκτημα της υλοποίησης σε λογισμικό είναι το μικρό σχετικά κόστος ανάπτυξης και η πολύ μεγάλη ευελιξία και τροποποιησιμότητα. Ένα λογισμικό μπορεί να αναπτυχθεί σε μικρό σχετικά χρόνο εφόσον υπάρχουν τα κατάλληλα εργαλεία. Ο χρόνος αυτός γίνεται ακόμα μικρότερος γιατί μεγάλο μέρος του λογισμικού είναι επαναχρησιμοποιήσιμο και έτσι μπορούν να χρησιμοποιηθούν έτοιμες ρουτίνες από βιβλιοθήκες που μειώνουν σημαντικά τον όγκο του κώδικα που πρέπει να γραφτεί. Η σχεδίαση και η παραγωγή ενός ολοκληρωμένου κυκλώματος ακόμη και με εργαλεία τελευταίας τεχνολογίας μπορεί να διαρκέσει από μερικές εβδομάδες μέχρι και αρκετούς μήνες. Στη σημερινή εποχή όπου ο χρόνος εμπορικής ζωής μιας ηλεκτρονικής διάταξης είναι μήνες ο χρόνος ανάπτυξης του προϊόντος είναι ένας πάρα πολύ σημαντικός παράγοντας. Επίσης ο έλεγχος της σωστής λειτουργίας του προγράμματος μπορεί να γίνει σχετικά εύκολα με την ανάπτυξη επιπλέον προγραμμάτων ελέγχου. Ο έλεγχος του ολοκληρωμένου κυκλώματος είναι μια χρονοβόρα διαδικασία που τις περισσότερες φορές απαιτεί ειδική σχεδίαση εκ των προτέρων έτσι ώστε μέσα στο ίδιο το ολοκληρωμένο να ενσωματωθούν κατάλληλα κυκλώματα ελέγχου, κυκλώματα τα οποία αυξάνουν το κόστος καθώς καταλαμβάνουν επιφάνεια στο πυρίτιο. Ακόμη ένα πρόγραμμα μπορεί πολύ εύκολα να αλλαχθεί εάν κατά τη διαδικασία ανάπτυξης ή ελέγχου εμφανιστούν σφάλματα, σε αντίθεση με ένα ψηφιακό κύκλωμα όπου αν ένα σφάλμα εντοπιστεί αργά στη διαδικασία παραγωγής μπορεί να απαιτείται επανακατασκευτή μέρους του κυκλώματος που μπορεί να κοστίζει μερικές δεκάδες χιλιάδες ευρώ και να απαιτεί μερικές βδομάδες ή μήνες. Από την άλλη πλευρά η υλοποίηση ενός αλγορίθμου σε ένα κύκλωμα παρέχει μεγάλες δυνατότητες παραλληλοποίησης και γρήγορης υλοποίησης ειδικών λειτουργιών που συνήθως στους επεξεργαστές γενικής χρήσης χρειάζεται μεγάλος αριθμός εντολών για να πραγματοποιηθούν (πχ πολλαπλασιασμός). Κατά συνέπεια η εκτέλεση ενός αλγορίθμου από ένα κύκλωμα είναι τάξεις μεγέθους γρηγορότερη σε σχέση με την αντίστοιχη υλοποίηση σε λογισμικό. Επιπλέον ένα κύκλωμα που σχεδιάζεται ειδικά για τις ανάγκες μιας εφαρμογής 62

68 FPGA και υλοποίηση των ελεγκτών καταλαμβάνει πολύ μικρότερη επιφάνεια και καταναλώνει μικρότερη ισχύ απʹ ότι ένας επεξεργαστής γενικής χρήσης. Σε εφαρμογές όπως τα ενσωματωμένα συστήματα (embedded systems) όπου η επιφάνεια και η κατανάλωση ισχύος είναι ένας σημαντικός παράγοντας η υλοποίηση ενός μέρους του συστήματος με ειδικά σχεδιασμένα ολοκληρωμένα κυκλώματα είναι μονόδρομος. Τα προγραμματιζόμενα λογικά κυκλώματα, με σημαντικότερο εκπρόσωπο σήμερα τα FPGA, είναι μια προσπάθεια να συνδυαστούν τα πλεονεκτήματα της χρησιμοποίησης λογισμικού με τα πλεονεκτήματα χρησιμοποίησης υλικού. Έτσι ενώ υστερούν σαφώς σε σχέση με τα ειδικά σχεδιασμένα κυκλώματα (ASIC) σε κατανάλωση ισχύος και επιφάνεια/πύλη δίνουν τη δυνατότητα για γρήγορη ανάπτυξη, εύκολο έλεγχο και γρήγορη διόρθωση σφαλμάτων με πολύ μικρότερο κόστος. 5.1 FPGA Τα FPGA (Field Programmable Gate Arrays Πίνακες Πυλών Προγραμματιζόμενοι στο Πεδίο Εφαρμογής) είναι διατάξεις από λογικά κυκλώματα, των οποίων οι λογικές συναρτήσεις και οι διασυνδέσεις μπορούν να προγραμματιστούν από το χρήστη στο πεδίο εφαρμογής, δηλαδή μακριά από το εργοστάσιο παραγωγής τους. Με τον προγραμματισμό τους μπορεί να υλοποιηθεί ένα σύνθετο λογικό κύκλωμα με ένα τεράστιο αριθμό λογικών συναρτήσεων, διασυνδέσεων και πυλών. Τα FPGA εμφανίστηκαν στα μέσα της δεκαετίας του 80 σαν συνέχεια των προγραμματιζόμενων κυκλωμάτων CPLD, επιτρέποντας πολύ μεγαλύτερη ελευθερία στον προγραμματισμό των διασυνδέσεων και στην μορφή των λογικών συναρτήσεων που μπορούν να υλοποιηθούν από τα παραπάνω κυκλώματα. Τα πρώτα FPGA όμως έδιναν τη δυνατότητα να υλοποιηθούν κυκλώματα της τάξης των εκατοντάδων πυλών και για το λόγο αυτό δεν μπορούσαν να χρησιμοποιηθούν στην πράξη για οποιαδήποτε σοβαρή εφαρμογή. Με την εξέλιξη της τεχνολογίας κατασκευής και σχεδίασης ολοκληρωμένων κυκλωμάτων σήμερα τα FPGA δίνουν τη δυνατότητα να κατασκευαστούν λογικά κυκλώματα με μερικές εκατοντάδες χιλιάδες ή εκατομμύρια λογικών πυλών, και γίνονται έτσι, λόγω και των υπόλοιπων πλεονεκτημάτων που παρουσιάζουν έναντι των μη προγραμματιζόμενων ολοκληρωμένων κυκλωμάτων, μια ιδιαίτερα ανταγωνιστική και όλο και περισσότερο χρησιμοποιούμενη λύση σε διάφορες εφαρμογές Αρχιτεκτονική Κυρίαρχη σήμερα στην αγορά FPGA είναι η εταιρία Xilinx με τις σειρές Spartan, Virtex και Virtex Pro. Για το λόγο αυτό θα παρουσιάσουμε εδώ την αρχιτεκτονική των FPGA αυτής της εταιρίας και συγκεκριμένα την αρχιτεκτονική της σειράς Virtex II Pro που χρησιμοποιήσαμε η οποία στα βασικά της στοιχεία είναι όμοια 63

69 FPGA και υλοποίηση των ελεγκτών με τις αρχιτεκτονικές και των υπολοίπων οικογενειών της Xilinx. Οι αρχιτεκτονικές των FPGA των υπολοίπων εταιριών παρουσιάζουν σημαντικές ομοιότητες αλλά και σημαντικές διαφορές, ιδίως όταν η τεχνική προγραμματισμού είναι διαφορετική. Η βασική μονάδα του FPGA είναι το προγραμματιζόμενο λογικό κελί ( Configurable Logic Βlock CLB) το οποίο αποτελείται από 4 όμοιες φέτες (slices). Η εσωτερική δομή της κάθε φέτας φαίνεται στο παρακάτω σχήμα: Σχήμα α Δομή φέτας Virtex II Pro Η κάθε φέτα περιέχει δύο μνήμες RAM των 16x1 bit (ή αλλιώς Look Up Tables LUTs) που μπορούν να υλοποιήσουν οποιαδήποτε δυαδική συνάρτηση τεσσάρων εισόδων. Η φέτα περιέχει επίσης πολυπλέκτες (MUX) με τους οποίους οι έξοδοι των LUTs μπορούν να συνδυαστούν και να υλοποιήσουν έτσι οποιαδήποτε δυαδική συνάρτηση μέχρι 8 εισόδων. Οι έξοδοι των συναρτήσεων μπορούν είτε να αποθηκευτούν σε ένα D Flip Flop (registered outputs), είτε να οδηγηθούν απευθείας στην έξοδο της φέτας (non registered outputs). Τα Flip Flops μπορούν να είναι ευαίσθητα είτε σε μεταβάσεις είτε στο επίπεδο του ρολογιού και έτσι να λειτουργήσουν σαν καταχωρητές ή μανδαλωτές. Επίσης οι μνήμες RAM μπορούν να χρησιμοποιηθούν εκτός από την υλοποίηση λογικών συναρτήσεων και σαν κοινές μνήμες για αποθήκευση δεδομένων ή σαν καταχωρητές 64

70 FPGA και υλοποίηση των ελεγκτών ολίσθησης. Τέλος στη φέτα υπάρχουν ακόμα και κάποια ειδικά κυκλώματα για γρήγορη μεταφορά κρατουμένου κατά την εκτέλεση αριθμητικών πράξεων. Τα λογικά κελιά τοποθετούνται σε μια διάταξη ορθογώνιου πλέγματος και ανάμεσά τους διέρχονται οι γραμμές διασύνδεσης, ενώ υπάρχουν και τα σημεία όπου πραγματοποιούνται οι διασυνδέσεις μεταξύ των γραμμών (switch blocks). Υπάρχουν διαφορετικά είδη γραμμών διασύνδεσης, άλλες από τις οποίες χρησιμεύουν για τοπικές διασυνδέσεις, άλλες για μακριές διασυνδέσεις και άλλες για τη μεταφορά κρίσιμων σημάτων, όπως τα σήματα ρολογιού. Στην περιφέρεια του πλέγματος υπάρχουν ειδικά κελιά για την είσοδο και την έξοδο των σημάτων (I/O blocks). Αξιοσημείωτο είναι ότι τα κυκλώματα εισόδου/εξόδου είναι σχεδιασμένα για να μπορούν να λειτουργήσουν με μια μεγάλη ποικιλία από πρότυπα εισόδου εξόδου. Σχήμα β Διάταξη CLB στο FPGA και διασυνδέσεις Εκτός από τα παραπάνω βασικά στοιχεία πολλά FPGA διαθέτουν και επιπλέον κυκλώματα για να πραγματοποιούν ειδικές λειτουργίες όπως: Μνήμες RAM για την αποθήκευση δεδομένων (Block RAM) Πολλαπλασιαστές για τη γρήγορη εκτέλεση πολλαπλασιασμών σε αλγορίθμους επεξεργασίας σήματος κυρίως Ειδικά κυκλώματα για παραγωγή παλμών διαφόρων συχνοτήτων από τη βασική συχνότητα ρολογιού καθώς και για λειτουργίες συγχρονισμού (Digital Clock Managers) Ελεγκτές για επικοινωνία του FPGA με άλλα κυκλώματα (πχ RocketIO transceivers) Ολόκληρους επεξεργαστές όπως ο PowerPC 405 στην σειρά Virtex II Pro 65

71 FPGA και υλοποίηση των ελεγκτών Ο μεγάλος αυτός αριθμός από διαφορετικά κυκλώματα που έχει ενσωματωθεί σε ένα chip FPGA πρέπει να διασυνδεθεί για να πραγματοποιήσει το FPGA την επιθυμητή λειτουργία. Ο καθορισμός των διασυνδέσεων γίνεται με τον προγραμματισμό του FPGA Προγραμματισμός Έχουν αναπτυχθεί FPGA με διαφορετικούς τρόπους προγραμματισμού. Οι δύο πιο σημαντικοί είναι τα FPGA με SRAM, όπου ο προγραμματισμός των λογικών συναρτήσεων και των διασυνδέσεων γίνεται με bits που αποθηκεύονται σε κύτταρα μνήμης RAM και τα FPGA με «αντιασφάλειες» (antifuses) όπου ο προγραμματισμός γίνεται με την εφαρμογή κατάλληλης τάσης σε στοιχεία του κυκλώματος ώστε να δημιουργηθούν οι απαραίτητες επαφές. Σημαντικό πλεονέκτημα των FPGA με SRAM είναι ότι είναι επαναπρογραμματιζόμενα, ενώ αντίθετα τα FPGA με «αντιασφάλειες» μπορούν να προγραμματιστούν μόνο μια φορά. Σήμερα τα FPGA που βασίζονται σε SRAM είναι κυρίαρχα στην αγορά, με κύριες εταιρίες παραγωγής τους τις Xilinx και Altera. Για τον προγραμματισμό του FPGA χρησιμοποιείται μια σειρά από bits που αποθηκεύονται σε μνήμες RAM στο εσωτερικό του FPGA καθορίζοντας τις λογικές συναρτήσεις και τις διασυνδέσεις. Η σειρά αυτή από bit μπορεί να φορτωθεί στο FPGA με διάφορους τρόπους, με πιο διαδεδομένο το πρωτόκολλο JTAG της ΙΕΕΕ. Τα bits για τον προγραμματισμό του FPGA παράγονται από ειδικά εργαλεία λογισμικού σχεδίασης και σύνθεσης ψηφιακών κυκλωμάτων. Το προς σχεδίαση κύκλωμα εισάγεται στο λογισμικό με κάποιο σχηματικό διάγραμμα ή, συνηθέστερα, χρησιμοποιώντας κάποια γλώσσα περιγραφής υλικού (Hardware Description Languages) όπως η Verilog ή η VHDL. Στη συνέχεια το λογισμικό αναλαμβάνει να αντιστοιχίσει το κύκλωμα που περιγράφει ο σχεδιαστής σε κυκλώματα πάνω στο FPGA και να παράγει τη σειρά από bits που είναι απαραίτητη για τον προγραμματισμό του VHDL H VHDL (Very High Speed Integrated Circuit Hardware Description Language) είναι μια γλώσσα που ξεκίνησε να αναπτύσσεται το 1981 από το αμερικανικό υπουργείο άμυνας με στόχο την ενιαία και προτυποποιημένη περιγραφή των κυκλωμάτων που χρησιμοποιούνταν στα διάφορα ψηφιακά συστήματα. Το 1987 εκδίδεται το πρώτο πρότυπο για την VHDL από την IEEE. Από κει και πέρα η χρήση της επεκτείνεται συνεχώς. Το 1993 εκδίδεται το δεύτερο πρότυπο με κάποιες προσθήκες και βελτιώσεις. Σήμερα η VHDL χρησιμοποιείται από δεκάδες χιλιάδες μηχανικούς, περισσότερο στον ευρωπαϊκό χώρο, για την περιγραφή και σχεδίαση ολοκληρωμένων ψηφιακών κυκλωμάτων. 66

72 FPGA και υλοποίηση των ελεγκτών Η VHDL μοιάζει με μια συνηθισμένη γλώσσα προγραμματισμού όπως η ADA, η C ή η Pascal, αλλά παρουσιάζει και σημαντικές διαφορές έτσι ώστε να μπορεί να περιγράψει τον παραλληλισμό που υπάρχει στο υλικό. Εκτός από τις εντολές που εκτελούνται ακολουθιακά η μία μετά την άλλη όπως σε οποιαδήποτε συμβατική γλώσσα προγραμματισμού, υπάρχουν και εντολές που δημιουργούν ή ενεργοποιούνται από γεγονότα (events), όπως η αλλαγή στην τιμή της τάσης ενός κόμβου του κυκλώματος. Επιπλέον η έννοια του χρόνου είναι αναπόσπαστο κομμάτι του προγραμματισμού σε VHDL, δηλαδή κάθε τέτοιο γεγονός συνδέεται με μια συγκεκριμένη χρονική στιγμή στην οποία συμβαίνει. Με αυτό τον τρόπο μπορούν να περιγραφούν αλλαγές σε τιμές σημάτων σε κυκλώματα οι οποίες συνδέονται με την ίδια χρονική στιγμή και άρα συμβαίνουν ταυτόχρονα. Επιπλέον η VHDL περιλαμβάνει τύπους δεδομένων που μπορούν να περιγράψουν τις τιμές που μπορεί να πάρει ένα σήμα σε ένα πραγματικό κύκλωμα, όπως αδιαφορίες, κατάσταση υψηλής αντίστασης κλπ. και ορίζει και διάφορους τελεστές που μπορούν να χρησιμοποιηθούν για την εκτέλεση πράξεων με τις τιμές αυτές των σημάτων. Με τη χρήση της VHDL πραγματοποιείται κατʹ αρχήν μια περιγραφή του ψηφιακού κυκλώματος σε επίπεδο συμπεριφοράς. Περιγράφονται δηλαδή οι συνδέσεις του με τον εξωτερικό κόσμο (είσοδοι και έξοδοι) και η λειτουργία που αυτό επιτελεί, χωρίς κατʹ αρχήν να γίνεται κανένας συσχετισμός με την πραγματική φυσική δομή του κυκλώματος. Με τους κατάλληλους μεταγλωττιστές και προσομοιωτές μπορεί στη συνέχεια το κύκλωμα που έχει περιγραφεί σε VHDL να προσομοιωθεί και να ελεγχθεί για τη σωστή λειτουργία του. Επίσης εξελιγμένα σχεδιαστικά εργαλεία μπορούν να αντιστοιχίσουν ένα μεγάλο μέρος των εντολών της VHDL σε φυσικά κυκλώματα και να οδηγήσουν έτσι στην αυτόματη παραγωγή ενός φυσικού σχεδίου για ένα ψηφιακό κύκλωμα. Με τον τρόπο αυτό η διαδικασία σχεδίασης ψηφιακών κυκλωμάτων απλοποιείται και προσεγγίζει πολύ την διαδικασία προγραμματισμού λογισμικού. Έτσι φαίνεται ότι μπορεί να σχεδιάσει ψηφιακά κυκλώματα και κάποιος που δεν έχει καμία επαφή με τα κυκλώματα αυτά σε επίπεδο τρανζίστορ. Ωστόσο η βαθύτερη κατανόηση των στοιχειωδών δομικών στοιχείων και του τρόπου λειτουργίας των ψηφιακών κυκλωμάτων είναι απαραίτητη προϋπόθεση για να μπορεί κάποιος να γράψει σωστό και αποτελεσματικό κώδικα σε VHDL Διαδικασία σχεδίασης κυκλωμάτων με FPGA H σχεδίαση κυκλωμάτων για υλοποίηση σε κυκλώματα FPGA γίνεται αποκλειστικά με τη χρήση ειδικού λογισμικού σχεδίασης. To λογισμικό αυτό αναλαμβάνει, με την καθοδήγηση του μηχανικού, να εκτελέσει όλες εκείνες τις λειτουργίες που είναι απαραίτητες έτσι ώστε από την αρχική περιγραφή του κυκλώματος να προκύψει το τελικό κύκλωμα στο FPGA. Επίσης με τα κατάλληλα εργαλεία προσομοίωσης μπορεί ο σχεδιαστής να ελέγξει εάν το 67

73 FPGA και υλοποίηση των ελεγκτών σχέδιό του λειτουργεί σύμφωνα με τις προδιαγραφές και αν όχι να κάνει τις αναγκαίες αλλαγές. Στην εργασία μας για τη σχεδίαση χρησιμοποιήσαμε το λογισμικό ISE της εταιρίας Xilinx, που είναι και η κατασκευάστρια εταιρία του FPGA Virtex II Pro, ενώ για τις προσομοιώσεις χρησιμοποιήσαμε τον προσομοιωτή Modelsim της Mentor Graphics. Στο παρακάτω διάγραμμα δίνονται εποπτικά τα σημαντικότερα στάδια της διαδικασίας υλοποίησης ενός ψηφιακού κυκλώματος σε ένα FPGA. Σχεδίαση Έλεγχος Περιγραφή κυκλώματος Προσομοίωση συμπεριφοράς Σύνθεση Τοποθέτηση και δρομολόγηση Λειτουργική προσομοίωση Ανάλυση χρονισμών Προγραμματισμός συσκευής Έλεγχος στο πραγματικό κύκλωμα Σχήμα α Διαδικασία υλοποίησης κυκλώματος σε FPGA Θα περιγράψουμε πολύ συνοπτικά τι περιλαμβάνει το κάθε στάδιο. 1. Διαδικασία σχεδίασης: Περιγραφή κυκλώματος Στην πρώτη αυτή φάση ο σχεδιαστής εισάγει στο λογισμικό σχεδίασης κάποια περιγραφή του κυκλώματός του. Η περιγραφή αυτή είναι συνήθως σε κάποια γλώσσα περιγραφής υλικού (VHDL,Verilog) αλλά μπορεί να γίνει και γραφικά με ένα σχηματικό συντάκτη ή να δοθεί απευθείας μια περιγραφή σε επίπεδο πυλών και συνδέσεων μεταξύ τους (netlist). Επίσης ο σχεδιαστής μπορεί να εισάγει ένα ή περισσότερα αρχεία με περιορισμούς για το σχέδιό του, όπως τα pins στα οποία πρέπει να οδηγούνται οι είσοδοι και οι έξοδοι, τα interfaces των εισόδων και των εξόδων, μέγιστες ανεκτές καθυστερήσεις σε διάφορα σημεία του κυκλώματος κ.ά. 68

74 FPGA και υλοποίηση των ελεγκτών Σύνθεση Η σύνθεση είναι μια διαδικασία κατά την οποία το λογισμικό αυτόματα εξάγει από την περιγραφή ενός κυκλώματος τα επιμέρους στοιχεία που το αποτελούν (πχ πύλες, πολυπλέκτες, καταχωρητές, μνήμες κλπ). Επίσης στη φάση αυτή γίνεται και μια πρώτη βελτιστοποίηση σε επίπεδο καταχωρητών. Η διαδικασία αυτή δεν είναι απαραίτητη αν η αρχική περιγραφή του κυκλώματος από το σχεδιαστή είχε γίνει ήδη σε επίπεδο πυλών. Τοποθέτηση και δρομολόγηση Στη φάση αυτή τα στοιχεία του κυκλώματος που έχουν αναγνωριστεί από το εργαλείο της σύνθεσης ή έχουν προσδιοριστεί από τον σχεδιαστή αντιστοιχίζονται σε πραγματικά κυκλώματα πάνω στο FPGA. Στη συνέχεια με αλγορίθμους δρομολόγησης πραγματοποιούνται οι συνδέσεις που είναι απαραίτητες ανάμεσα στα κυκλώματα αυτά. Σε αυτή τη φάση εκτελείται βελτιστοποίηση σε επίπεδο πυλών. Η σύνθεση, η τοποθέτηση και η δρομολόγηση γίνονται με τέτοιο τρόπο ώστε εάν είναι δυνατόν να ικανοποιούνται όλοι οι περιορισμοί που έθεσε ο σχεδιαστής στη φάση της περιγραφής του κυκλώματος. Προγραμματισμός συσκευής Η περιγραφή του κυκλώματος που έχει προκύψει μετά την τοποθέτηση και τη δρομολόγησή του μετατρέπεται στην κατάλληλη σειρά από bits για τον προγραμματισμό του FPGA. Αυτή η σειρά μεταφέρεται στη συνέχεια στο FPGA ή σε μια μνήμη EPROM ή flash χρησιμοποιώντας ένα από τα διαθέσιμα πρωτόκολλα. 2. Διαδικασία ελέγχου Προσομοίωση συμπεριφοράς Με τη βοήθεια του προσομοιωτή ελέγχεται αν όντως το κύκλωμα που έχει περιγραφεί από το σχεδιαστή λειτουργεί με τον επιθυμητό τρόπο. Σε αυτή τη φάση το κύκλωμα προσομοιώνεται σε επίπεδο καταχωρητών και σημάτων μεταξύ καταχωρητών (Register Transfer Level RTL). Λειτουργική προσομοίωση Το κύκλωμα σε επίπεδο πυλών και μετά την πραγματοποίηση των διασυνδέσεων από τον αλγόριθμο δρομολόγησης προσομοιώνεται για να ελεγχθεί η λειτουργία του. Σημειώνουμε ότι ενδέχεται τα αποτελέσματα της προσομοίωσης αυτής να είναι διαφορετικά από αυτά της προσομοίωσης συμπεριφοράς, αφού σε αυτό το στάδιο λαμβάνονται υπʹ όψη με μεγαλύτερη ακρίβεια από πριν και οι περιορισμοί που εισάγονται από το φυσικό σχέδιο, όπως οι καθυστερήσεις των πυλών και των διασυνδέσεων. 69

75 FPGA και υλοποίηση των ελεγκτών Ανάλυση χρονισμών Από την ανάλυση αυτή προκύπτουν δεδομένα σχετικά με τους χρονισμούς στο κύκλωμα όπως οι καθυστερήσεις σε διάφορα στοιχεία και διαδρομές του κυκλώματος. Χρησιμοποιώντας τα στοιχεία αυτά ο σχεδιαστής μπορεί να τροποποιήσει το σχέδιό του ώστε να πετύχει μικρότερες καθυστερήσεις και έτσι μεγαλύτερη επιτρεπτή συχνότητα λειτουργίας. Έλεγχος στο πραγματικό κύκλωμα Μετά τον προγραμματισμό του FPGA γίνονται μετρήσεις στο πραγματικό κύκλωμα για να επιβεβαιωθεί η καλή λειτουργία. Οι διαδικασίες σχεδίασης και ελέγχου συμπληρώνουν η μία την άλλη, δηλαδή ο σχεδιαστής ανάλογα με τα δεδομένα που προκύπτουν κατά τον έλεγχο τροποποιεί το σχέδιό του μέχρι να πετύχει το επιθυμητό αποτέλεσμα. 5.2 Suzaku V Παρόλο που το FPGA παρέχει τη δυνατότητα να προγραμματιστεί εύκολα από το χρήστη με έναν απλό προσωπικό υπολογιστή, η διασύνδεση του FPGA με άλλα ψηφιακά κυκλώματα δεν είναι τόσο εύκολη υπόθεση και απαιτεί από το χρήστη τη σχεδίαση ειδικού τυπωμένου κυκλώματος για αυτό το σκοπό. Η σχεδίαση αυτή μπορεί να γίνει αρκετά πολύπλοκη, τόσο που να ξεφεύγει από τις δυνατότητες ενός χρήστη που θέλει να χρησιμοποιήσει το FPGA για μια απλή εφαρμογή. Για το σκοπό αυτό διάφορες εταιρίες παρέχουν έτοιμες αναπτυξιακές πλακέτες με κατάλληλους ακροδέκτες που συνδέονται με τους αντίστοιχους ακροδέκτες του FPGA και είναι πλέον εύκολα προσβάσιμοι και χρησιμοποιήσιμοι για τη διασύνδεση του FPGA με άλλα κυκλώματα ή τον προγραμματισμό του. Πολλές φορές οι πλακέτες αυτές φέρουν και μια σειρά από άλλα κυκλώματα που προσθέτουν επιπλέον δυνατότητες στο FPGA όπως μνήμες flash, ελεγκτές για διάφορα πρωτόκολλα επικοινωνίας κλπ. Σχήμα 5.2.α Η πλακέτα Suzaku-V 70

76 FPGA και υλοποίηση των ελεγκτών Η πλακέτα Suzaku V της ιαπωνικής εταιρίας Atmark Techno είναι μια τέτοια αναπτυξιακή πλακέτα. Tα χαρακτηριστικά της πλακέτας φαίνονται στον παρακάτω πίνακα: FPGA Hard Core Processor Crystal Oscillator Memory BRAM SDRAM FLASH Memory Configuration JTAG Ethernet Serial Timer Free I/O Power Supply Xilinx Virtex II Pro XC2VP4 FG256 PowerPC MHz 16Kbyte (internal to FPGA) 32Mbyte 8Mbyte Stored on FLASH memory, Controller TE ports (FPGA and TE7720) 10Base T/100Base TX UART 115.2kbps 2 ch (1 ch is used for OS) 70 pin Voltage: 3.3V±3% Consumption current: 460mA typ. (while processor is operating) Η πλακέτα είναι σχεδιασμένη με στόχο να μπορεί να δημιουργηθεί μια ελάχιστη σύνθεση που να μπορεί να υποστηρίξει ένα λειτουργικό σύστημα Linux έτσι ώστε να μπορεί αυτή να χρησιμοποιηθεί απευθείας για την ανάπτυξη εφαρμογών με γλώσσες υψηλού επιπέδου και να χρησιμοποιηθεί σε συστήματα. Στο χρήστη παρέχονται και μια σειρά από διεπαφές για επικοινωνία του επεξεργαστή με περιφερειακές συσκευές, ενώ υπάρχει και διαθέσιμος χώρος πάνω στο FPGA έτσι ώστε να μπορεί ο χρήστης να αναπτύξει κάποιο δικό του κύκλωμα στο hardware για να το χρησιμοποιήσει σε συνεργασία με τον PowerPC. Σχήμα 5.2.β Μπλοκ διάγραμμα της προτεινόμενης διαμόρφωσης του Suzaku - V 71

77 FPGA και υλοποίηση των ελεγκτών Εμείς στην εργασία μας δεν χρησιμοποιήσαμε καθόλου τον επεξεργαστή και τα περιφερειακά, παρά μόνο τον διαθέσιμο χώρο πάνω στο FPGA για να φτιάξουμε το δικό μας κύκλωμα. Για το λόγο αυτό πρέπει να απενεργοποιήσουμε με τον προγραμματισμό του FPGA όλα τα υπόλοιπα κυκλώματα της πλακέτας (μνήμες RAM, ελεγκτής LAN κλπ). Περισσότερες πληροφορίες για το πως μπορεί να γίνει αυτό υπάρχουν στο παράρτημα B. Tο FPGA της πλακέτας είναι το XC2VP4 της σειράς Virtex II Pro της Xilinx με τη συσκευασία FG256. Τα χαρακτηριστικά αυτού του FPGA είναι: Logic Cells 6768 Block RAM(Kbits) x18 Multipliers 28 PowerPC Processors Gbps RocketIO Transceivers 8 User I/O Pins 140 Το ρολόι παρέχεται εξωτερικά στο FPGA από κρύσταλλο που ταλαντώνεται σε συχνότητα 3,69 MHz. Χρησιμοποιώντας τους Digital Clock Managers του FPGA μπορούμε από αυτή τη συχνότητα ρολογιού να παράγουμε οποιαδήποτε συχνότητα θέλουμε. Εκτός από το FPGA η πλακέτα φέρει και μια σειρά από άλλα κυκλώματα: 32 MBytes SDRAM: Χρησιμοποιείται ως εξωτερική μνήμη RAM για τον επεξεργαστή PowerPC. 8 MBytes Flash Memory: Σε αυτή τη μνήμη φορτώνονται τα δεδομένα για τον προγραμματισμό του FPGA καθώς και το λειτουργικό σύστημα Linux που μπορεί να λειτουργήσει πάνω στον επεξεργαστή PowerPC. Ethernet controller: Προσφέρει τη δυνατότητα εύκολης δικτύωσης της συσκευής χρησιμοποιώντας και τα πρωτόκολλα TCP/IP του Linux. Επίσης στην πλακέτα υπάρχουν ακροδέκτες για σύνδεση συσκευών που επικοινωνούν με το πρωτόκολλο RS232. Ωστόσο δεν υπάρχει ελεγκτής UART, αλλά πρέπει να υλοποιηθεί εσωτερικά στο FPGA. Υπάρχουν ακόμα 2 υποδοχές για τον προγραμματισμό του FPGA μέσω του πρωτοκόλλου JTAG. Η μία υποδοχή συνδέεται με τους ακροδέκτες JTAG του FPGA και έτσι μπορεί να προγραμματιστεί απευθείας η SRAM του FPGA. Το πρόβλημα με αυτή την προσέγγιση είναι ότι κάθε φορά που διακόπτεται η τροφοδοσία θα πρέπει να προγραμματίζεται εκ νέου το FPGA, μιας που τα bits προγραμματισμού αποθηκεύονται εσωτερικά σε μνήμη RAM. Για να μην υπάρχει αυτό το πρόβλημα υπάρχει η δυνατότητα, μέσω του ολοκληρωμένου κυκλώματος ΤΕ7720 που συνδέεται στη δεύτερη υποδοχή προγραμματισμού, να αποθηκευτούν τα δεδομένα προγραμματισμού στη μνήμη Flash και να 72

78 FPGA και υλοποίηση των ελεγκτών μεταφέρονται στο FPGA κάθε φορά που παρέχεται τροφοδοσία στην πλακέτα. Τη δεύτερη προσέγγιση ακολουθήσαμε εμείς κατά την εργασία μας. Τέλος η πλακέτα παρέχει 70 ακροδέκτες για είσοδο και έξοδο σημάτων του χρήστη. 5.3 Υλοποίηση των ελεγκτών H υλοποίηση των ασαφών ελεγκτών που περιγράφηκαν στο κεφάλαιο 2 στο FPGA δεν είναι κάτι που προκύπτει απευθείας, αλλά απαιτεί μια σειρά από παραδοχές ή τροποποιήσεις που επιβάλλονται από τις απαιτήσεις για μια αποτελεσματική υλοποίηση όσον αφορά στο κόστος σε επιφάνεια και στην πολυπλοκότητα των κυκλωμάτων. Η αποτελεσματική υλοποίηση ασαφών ελεγκτών στο υλικό είναι ένα πρόβλημα που απασχολεί την επιστημονική κοινότητα τα τελευταία 20 χρόνια Υλοποίηση ασαφών ελεγκτών στο υλικό Ο πρώτος ασαφής ελεγκτής σε υλικό υλοποιήθηκε το 1986 από τους Watanabe και Togai [21]. Από τότε έχουν προταθεί πολλές διαφορετικές υλοποιήσεις η καθεμία με τα πλεονεκτήματα και τα μειονεκτήματά της. Σκοπός αυτής της παραγράφου είναι να αναφέρουμε μερικά από τα βασικά σημεία στα οποία καλείται ένας μηχανικός να πάρει μια απόφαση υλοποιώντας έναν ασαφή ελεγκτή στο hardware, να αναφέρουμε προτάσεις που έχουν γίνει στη μέχρι τώρα έρευνα και να παρουσιάσουμε τις δικές μας επιλογές. Ένας ασαφής ελεγκτής αποτελείται όπως είναι γνωστό από 3 τμήματα: τον ασαφοποιητή που μετατρέπει την σαφή είσοδο σε ασαφή, το τμήμα συμπερασμού που χρησιμοποιώντας μια βάση κανόνων παράγει από τις ασαφείς εισόδους την ασαφή έξοδο και τον αποασαφοποιητή που μετατρέπει την ασαφή έξοδο σε σαφή. Ο ασαφοποιητής αντιστοιχεί σε μια μετρούμενη τιμή ένα ασαφές σύνολο, το οποίο προκύπτει είτε μέσω της σχετικής με τις μετρήσεις εμπειρίας του χειριστή είτε μέσα από στατιστική ανάλυση των μετρήσεων. Λόγω όμως της επιπλέον πολυπλοκότητας που εισάγει ο χειρισμός της εισόδου ως ασαφούς μεταβλητής, ο ασαφοποιητής πολλές φορές παραλείπεται και χρησιμοποιείται απευθείας η σαφής είσοδο για την εξαγωγή του συμπεράσματος με βάση τους ασαφείς κανόνες[22]. Το μειονέκτημα αυτής της προσέγγισης είναι ότι δεν λαμβάνει υπόψη την ασάφεια της μέτρησης. Εμείς χρησιμοποιήσαμε για λόγους απλότητας σαφείς εισόδους στο τμήμα συμπερασμού. Από τις ασαφοποιημένες ή σαφείς εισόδους πρέπει στη συνέχεια να υπολογιστούν οι βαθμοί εκπλήρωσης των διάφορων κανόνων. Στην περίπτωση 73

79 FPGA και υλοποίηση των ελεγκτών των σαφών εισόδων, όπως στην περίπτωσή μας, το πρώτο στάδιο αυτών των υπολογισμών απαιτεί τον προσδιορισμό της τιμής μιας συνάρτησης συμμετοχής για μια τιμή της εισόδου. Ο υπολογισμός αυτός γίνεται συνήθως είτε παρέχοντας την είσοδο ως διεύθυνση σε μια μνήμη RAM όπου είναι αποθηκευμένες οι τιμές της συνάρτησης συμμετοχής ([21],[23],[25]) είτε κάνοντας κάποιες παραδοχές σχετικά με τη μορφή των συναρτήσεων συμμετοχής των εισόδων και υπολογίζοντας την τιμή της συνάρτησης συμμετοχής με πράξεις ([24],[27],[28]). Η πρώτη προσέγγιση παρέχει τη δυνατότητα για πολύ γρήγορο υπολογισμό της τιμής της συνάρτησης συμμετοχής, ενώ επιτρέπει και τη χρήση συναρτήσεων συμμετοχής οποιασδήποτε μορφής. Από την άλλη η δεύτερη προσέγγιση δεν καταναλώνει πολλή μνήμη και συνεπώς μπορεί να υλοποιηθεί σε μικρότερη επιφάνεια. Στην εργασία μας δοκιμάσαμε και τις δύο προσεγγίσεις. Για την πρώτη κάναμε την παραδοχή ότι η μορφή των μελών της συνάρτησης συμμετοχής της εισόδου είναι τριγωνική και υπολογίζαμε την τιμή της συνάρτησης χρησιμοποιώντας λόγους πλευρών τριγώνων. Για τον υπολογισμό της επιθυμητής τιμής ήταν αναγκαία η ύπαρξη ενός διαιρέτη στο κύκλωμα ο οποίος λειτουργούσε σειριακά και έτσι χρειαζόταν 17 κύκλοι ρολογιού για τον υπολογισμό της τιμής. Στην δεύτερη προσέγγιση με τη μνήμη RAM η επιθυμητή τιμή υπολογίζεται σε ένα κύκλο ρολογιού. Από την άλλη πλευρά η υλοποίηση με το διαιρέτη, καταλαμβάνει σχεδόν το μισό χώρο από τη μνήμη RAM (62 έναντι 128 φετών) εάν υλοποιηθεί σε γενικής χρήσης προγραμματιζόμενα blocks (CLBs). Το XC2VP4 όμως διαθέτει και 28 ξεχωριστά blocks από μνήμες RAM που μπορούν να χρησιμοποιηθούν από το χρήστη και έτσι η υλοποίηση με μνήμες RAM τελικά αποβαίνει πιο συμφέρουσα σε επιφάνεια, αφού δεν χρησιμοποιεί κανένα CLB. Η ψηφιακή υλοποίηση ενός ελεγκτή οδηγεί μοιραία και στον κβαντισμό των αριθμών που μπορούν να χρησιμοποιηθούν. Έτσι κβαντίζεται τόσο η τιμή της εισόδου και της εξόδου (ή αλλιώς το πεδίο ορισμού τους) όσο και ο βαθμός αλήθειας των συναρτήσεων συμμετοχής. Η επιλογή των σταθμών κβαντισμού ποικίλει για το πεδίο ορισμού της εισόδου και της εξόδου από 6 bit ([21],[22],[28]) μέχρι 12 bit [24]. Για τις τιμές των συναρτήσεων συμμετοχής επιλέγεται κβαντισμός από 4 bit ([22],[23]) μέχρι 8 bit ([24],[25]). Εμείς θεωρήσαμε ότι μια ανάλυση των 8 bit τόσο για την είσοδο και την έξοδο όσο και για το βαθμό αλήθειας ήταν παραπάνω από αρκετή για την εφαρμογή μας, όπως θα αναφερθεί και παρακάτω. Όσον αφορά στη διαδικασία συμπερασμού ο τελεστής που χρησιμοποιείται συνήθως στις υλοποιήσεις είναι ο τελεστής του Mamdani ή max min, λόγω της υπολογιστικής απλότητας των πράξεων που απαιτεί. Ωστόσο έχουν πραγματοποιηθεί και υλοποιήσεις που προσφέρουν μια σειρά από άλλους τελεστές (product, bounded sum) [25]. 74

80 FPGA και υλοποίηση των ελεγκτών Η επεξεργασία των κανόνων μπορεί να είναι πλήρως σειριακή [24], ή παράλληλη [28] ή να έχει κάποια ενδιάμεση μορφή [23]. Η πλήρως παράλληλη αρχιτεκτονική έχει συνήθως πολύ μεγάλο κόστος σε επιφάνεια, ενώ η πλήρως σειριακή εμφανίζει μεγάλη καθυστέρηση και δεν μπορεί να χρησιμοποιηθεί σε ελεγκτές για προβλήματα αυτομάτου ελέγχου. Συνήθως γίνονται κάποιες παραδοχές σχετικά με τη μορφή των κανόνων και ακολουθείται κάποια υβριδική προσέγγιση όπου οι κανόνες υπολογίζονται παράλληλα κατά ομάδες. Στην περίπτωσή μας δοκιμάσαμε αρχικά μια πλήρως παράλληλη αρχιτεκτονική όπου για κάθε κανόνα υπήρχαν ξεχωριστά τμήματα υπολογισμού του βαθμού εκπλήρωσής του. Η υλοποίηση αυτή μπορούσε να υπολογίσει τους βαθμούς εκπλήρωσης όλων των κανόνων σε μερικούς κύκλους ρολογιού. Το πρόβλημα που παρουσίαζε όμως ήταν ότι ακόμα και για ένα μικρό σχετικά ελεγκτή με 8 κανόνες, όπως ο ελεγκτής αποφυγής εμποδίων που υλοποιήσαμε, η επιφάνεια που καταλάμβανε ήταν απαγορευτική για να μπορέσει να υλοποιηθεί στο FPGA μαζί με τους υπόλοιπους ελεγκτές. Για το λόγο αυτό και δεδομένου ότι η εφαρμογή μας δεν απαιτεί την ικανοποίηση αυστηρών και δύσκολων χρονικών περιορισμών υλοποιήσαμε τελικά μια δεύτερη αρχιτεκτονική όπου ο βαθμός εκπλήρωσης του κάθε κανόνα υπολογίζεται σειριακά. Τέλος, το στοιχείο που συνήθως θέτει το άνω όριο στην απόδοση των ασαφών ελεγκτών είναι ο ασαφοποιητής. Για το λόγο αυτό έχει γίνει και εκτεταμένη έρευνα για διάφορες μεθόδους αποασαφοποίησης οι οποίες θα επιτρέπουν πιο γρήγορη αποασαφοποίηση ή πιο αποτελεσματική υλοποίηση του αποασαφοποιητή στο υλικό. Οι μέθοδοι που κυριαρχούν είναι συνήθως παραλλαγές της μεθόδου κέντρου βάρους (Center of Gravity COG ή centroid) [22][24][28]. Ωστόσο αρκετά ευρέως έχουν χρησιμοποιηθεί και τεχνικές όπως το μέσο των μέγιστων (Mean of Maxima MOM) ή τεχνικές που ακολουθούν κάποια τεχνική σταθμισμένων μέσων [27]. Οι παραλλαγές της COG πλεονεκτούν στο ότι λαμβάνουν υπʹ όψη τους το σύνολο της συνάρτησης συμμετοχής της εξόδου και συνεπώς κατά μία έννοια μπορούν να καταλήξουν σε πιο ακριβή αποτελέσματα. Παρουσιάζουν όμως μεγάλη υπολογιστική πολυπλοκότητα. Για το λόγο αυτό στην υλοποίηση σε υλικό πολλές φορές χρησιμοποιούνται η MOM ή οι τεχνικές σταθμισμένων μέσων. Στην υλοποίησή μας χρησιμοποιήσαμε σε έναν ελεγκτή τη MOM και τον άλλο ελεγκτή τον υλοποιήσαμε ως ελεγκτή Sugeno μηδενικής τάξης. Ο ελεγκτής αυτός στο συμπέρασμα κάθε κανόνα του δεν έχει ένα fuzzy σύνολο αλλά μια σταθερά. Δηλαδή οι κανόνες γίνονται της μορφής: ΙF x is A THEN y=k, όπου k σταθερά Με αυτό τον τρόπο η λεκτική μεταβλητή της εξόδου μετατρέπεται σε μια διακριτή μεταβλητή όπου η κάθε τιμή της έχει ένα βάρος ανάλογο με τον βαθμό αλήθειας των κανόνων που έχουν στο τμήμα συμπερασμού αυτή τη μεταβλητή και ο υπολογισμός της σαφούς εξόδου ανάγεται στον υπολογισμό ενός σταθμικού μέσου 75

81 FPGA και υλοποίηση των ελεγκτών Η διαφορά στην υπολογιστική πολυπλοκότητα μεταξύ της COG και ενός ελεγκτή τύπου Sugeno μηδενικής τάξης για ένα ασαφή ελεγκτή με 2 εισόδους και 2 κανόνες φαίνεται πολύ καθαρά στο σχήμα α. O = xf ( x) dx f ( xdx ) O = w1* a + w2* β w1+ w2 Σχήμα α Συμπερασμός σε ελεγκτή Mamdani με centroid και ελεγκτή Sugeno Ο αποασαφοποιητής τύπου COG απαιτεί να είναι διαθέσιμες τιμές της συνάρτησης εξόδου για όλο το πεδίο ορισμού της. Για καθεμία από αυτές τις τιμές απαιτεί πολλαπλασιασμό και στη συνέχεια αθροίσεις και μια διαίρεση. Αντίθετα στον ελεγκτή Sugeno μηδενικής τάξης απαιτούνται μόλις 2 πολλαπλασιασμοί, 2 αθροίσεις και μια διαίρεση Δομή συστήματος Όπως περιγράφηκε στο κεφάλαιο 2 ο έλεγχος του ρομπότ γίνεται με μια σειρά από ελεγκτές που υλοποιούν τις διάφορες επιθυμητές συμπεριφορές. Η λογική που ακολουθήσαμε είναι ότι ο μικροεπεξεργαστής του Khepera προσδιορίζει κάθε φορά την κατάσταση στην οποία βρίσκεται το ρομπότ και λαμβάνει την απόφαση για το ποια συμπεριφορά πρέπει να υιοθετηθεί. Στη συνέχεια στέλνει τις εισόδους από τους αισθητήρες και κάποια επιπλέον δεδομένα όπως η γωνία στην οποία θέλει να προσανατολιστεί και η συμπεριφορά που έχει επιλέξει στο FPGA και οι ελεγκτές στο FPGA αναλαμβάνουν να εκτελέσουν τους υπολογισμούς και να δώσουν στην έξοδο τις ταχύτητες που πρέπει να εφαρμοστούν στους τροχούς του Khepera. Με αυτό τον τρόπο ο 76

82 FPGA και υλοποίηση των ελεγκτών μικροεπεξεργαστής αναλαμβάνει την υψηλού επιπέδου σχεδίαση της πλοήγησης και την λήψη των αποφάσεων ενώ το FPGA λειτουργεί σε ένα χαμηλότερο επίπεδο εκτελώντας τους υπολογισμούς. Το block διάγραμμα των ελεγκτών που υλοποιήσαμε στο FPGA φαίνεται παρακάτω: Σχήμα α Μπλοκ διάγραμμα συστήματος Το FPGA δέχεται τις ακόλουθες εισόδους: Επιθυμητή γωνία: Μια τιμή των 8 bit που περιγράφει την γωνία κατά την οποία πρέπει να στραφεί το Khepera στη δεδομένη χρονική στιγμή για να ακολουθήσει μια επιθυμητή κατεύθυνση. Υπέρυθροι αισθητήρες: Οι μετρούμενες τιμές ανακλώμενου υπέρυθρου φωτός από τους αισθητήρες του robot ανηγμένες στο διάστημα [0,255] και με οκτάμπιτο κβαντισμό. Είσοδος για εστίαση: Ένας αριθμός των 9 bit που χρησιμοποιείται για την εστίαση της κάμερας όταν έχει εντοπιστεί τροφή ή θηρευτής Επιλογή συμπεριφοράς : Ένας αριθμός των τριών bits που πληροφορεί το FPGA για τη συμπεριφορά που έχει επιλέξει ο μικροεπεξεργαστής του Khepera τη δεδομένη χρονική στιγμή Σήματα επικοινωνίας: Δύο γραμμές, οι IRQ και RP που χρησιμοποιούνται για την υλοποίηση ενός πρωτοκόλλου χειραψίας ανάμεσα στο FPGA και τον μικροελεγκτή του Khepera. 77

83 FPGA και υλοποίηση των ελεγκτών Η έξοδος του FPGA είναι δύο οκτάμπιτοι αριθμοί που αντιστοιχούν στις ταχύτητες στον αριστερό και το δεξιό τροχό του Khepera. Στο μπλοκ διάγραμμα υπάρχουν ακόμα δύο σημεία στα οποία εκτελείται κάποια επιλογή μέσω πολυπλεκτών με βάση την τιμή της εισόδου επιλογής συμπεριφοράς. Στο πρώτο σημείο αποφασίζεται εάν η είσοδος στον ελεγκτή αποφυγής εμποδίων θα περιλαμβάνει μόνο τα πραγματικά εμπόδια (περίπτωση αποφυγής εμποδίου) ή αν σε αυτά θα προστίθενται και τα φανταστικά εμπόδια (περίπτωση ευθυγράμμισης με μια επιθυμητή κατεύθυνση). Στο δεύτερο σημείο ανάλογα με τη συμπεριφορά την οποία εκτελεί στην δεδομένη στιγμή το Khepera (αποφυγή εμποδίου ή διατήρηση κατεύθυνσης, παρακολούθηση περιμέτρου, εστίαση) επιλέγονται και οι ταχύτητες που θα σταλούν τελικά στους τροχούς Ο ελεγκτής αποφυγής εμποδίων Για να μπορέσουμε να περιγράψουμε καλύτερα την υλοποίηση του ελεγκτή είναι χρήσιμο σε αυτό το σημείο να χρησιμοποιήσουμε κάποιο φορμαλισμό. Έστω λοιπόν x1, x2,..., x 8 οι 8 (singleton) είσοδοι του ελεγκτή που αντιστοιχούν στις τιμές των οκτώ υπέρυθρων αισθητήρων, A = ' free', A = ' obstacle', A = ' free side', A = ' obstacle side' οι λεκτικές τιμές της μεταβλητής εισόδου και 4 B = ' backward ', B = ' forward ' οι λεκτικές τιμές της μεταβλητής εξόδου y. Οι 1 2 κανόνες του ελεγκτή θα έχουν τότε τη μορφή: IF xu is Ai AND xv is Aj THEN y is Bk Έστω ακόμα wmk ο βαθμός πλήρωσης του m οστού κανόνα που έχει στο τμήμα συμπερασμού την λεκτική τιμή της εξόδου Βk. Αν ο παραπάνω κανόνας ήταν πχ ο τρίτος κανόνας του ελεγκτή τότε ο βαθμός πλήρωσής του θα ήταν w3j. Χρησιμοποιώντας τη συνήθη διαδικασία συμπερασμού minmax η διαδικασία εύρεσης της εξόδου διατυπώνεται ως εξής: 1. Παίρνουμε τον r οστό κανόνα: IF xu is Ai AND xv is Aj THEN y is Bk και βρίσκουμε τις τιμές της συνάρτησης συμμετοχής εισόδου που αντιστοιχούν σε αυτές τις singleton εισόδους, δηλαδή τις Ai( xu), Aj( x v). 2. Βρίσκουμε τον βαθμό πλήρωσης wrk για τον r οστό κανόνα: w = min( A( x ), A ( x )) rk i u j v 3. Επαναλαμβάνουμε τη διαδικασία για όλους τους κανόνες. 4. Για κάθε μέλος της συνάρτησης συμμετοχής της εξόδου βρίσκουμε το βάρος t = max( w ). k r rk 78

84 FPGA και υλοποίηση των ελεγκτών 5. Υπολογίζουμε τη σαφή έξοδο του ελεγκτή χρησιμοποιώντας τα βάρη tk σε έναν αποασαφοποιητή τύπου MOM. Η λογική της υλοποίησης του αποασαφοποιητή MOM στο υλικό θα εξηγηθεί παρακάτω. Για την υλοποίηση της παραπάνω διαδικασίας φτιάξαμε έναν ελεγκτή του οποίου η αρχιτεκτονική φαίνεται στο σχήμα α. Ο ελεγκτής του σχήματος ουσιαστικά είναι δύο ασαφείς ελεγκτές, ένας για τον αριστερό και ένας για το δεξιό τροχό. Οι ελεγκτές αυτοί έχουν το ίδιο τμήμα υπόθεσης σε όλους τους κανόνες και συνεπώς είναι πολύ πιο συμφέρον από άποψη χώρου να υλοποιηθούν μαζί με διαφορετικά μόνο τμήματα αποθήκευσης των βαρών tk για τη συνάρτηση εξόδου και με ξεχωριστούς αποασαφοποιητές για τον κάθε τροχό. Οι είσοδοι από τα 8 αισθητήρια εισάγονται στις εισόδους x1 x8 των πολυπλεκτών στην είσοδο. Ανάλογα με την τιμή που δίνεται στον πολυπλέκτη από την μνήμη RAM των κανόνων επιλέγεται μία από τις 8 εισόδους, έστω η xu, και η τιμή της στέλνεται στην είσοδο διεύθυνσης των μνημών RAM1 RAM4 (σημείο 1). Οι μνήμες RAM1 RAM4 υλοποιούν η καθεμία ένα μέλος της συνάρτησης συμμετοχής της εισόδου (Α1 Α4). Έτσι στην έξοδο της RAM i παίρνουμε την τιμή Αi(xu). Ανάλογα με τον κανόνα στέλνεται η κατάλληλη έξοδος στην έξοδο του πολυπλέκτη (σημείο 3). Για τον κανόνα «IF xu is Ai AND xv is Aj THEN y is Bk» στην έξοδο του MUX_1 παίρνουμε την τιμή Αi(xu) και στην έξοδο του MUX_2 την τιμή Αj(xv). Στη συνέχεια το κύκλωμα MIN δίνει στο σημείο 4 τον βαθμό πλήρωσης του r οστού κανόνα w rk. Ανάλογα με την τιμή του k, η οποία είναι αποθηκευμένη και αυτή στη μνήμη RAM των κανόνων, κατευθύνεται αυτή η τιμή σε έναν από τους δύο συσσωρευτές ΜΑΧ_ΑCC στο σημείο 5. Οι συσσωρευτές αυτοί κρατάνε κάθε φορά τη μέγιστη τιμή που έχει εμφανιστεί στην είσοδό τους μετά την αρχικοποίησή τους. Η παραπάνω διαδικασία επαναλαμβάνεται συνεχώς μέχρι να εξαντληθούν όλοι οι κανόνες. Όταν συμβεί αυτό οι τιμές που είναι αποθηκευμένες στους καταχωρητές των MAX_ACC είναι τα βάρη tk των τιμών της μεταβλητής εξόδου. Στη συνέχεια δίνεται το σήμα defuzz_start στον αποασαφοποιητή (σημείο 8) και μετά από μερικούς κύκλους παίρνουμε στην έξοδο του αποασαφοποιητή την σαφή έξοδο (σημείο 9). Στη συνέχεια θα σχολιάσουμε μερικά πράγματα σχετικά με την υλοποίηση των επιμέρους μονάδων του ελεγκτή. Αξίζει να σημειωθεί ότι τα περισσότερα επιμέρους block του ελεγκτή είναι σύγχρονα, δηλαδή λειτουργούν με βάση ένα σήμα ρολογιού, ενώ και τα συνδυαστικά κυκλώματα διαθέτουν καταχωρητές στην έξοδό τους (registered output). Αυτό γίνεται για να αποφύγουμε ασάφειες που μπορεί να προκύψουν στα ασύγχρονα κυκλώματα λόγω δρομήσεων, μιας που η ταχύτητα υπολογισμών που απαιτούμε δεν είναι και τόσο μεγάλη που να δικαιολογεί σχετικά επίπονη προσπάθεια για την κατασκευή ενός ασύγχρονου κυκλώματος χωρίς δρομήσεις. 79

85 FPGA και υλοποίηση των ελεγκτών Σχήμα α Αρχιτεκτονική του ασαφή ελεγκτή αποφυγής εμποδίων 80

86 FPGA και υλοποίηση των ελεγκτών 1. Υλοποίηση συνάρτησης συμμετοχής εισόδου μνήμες RAM Επιλέγουμε να χρησιμοποιήσουμε οκτάμπιτο κβαντισμό τόσο για τις τιμές των αισθητήρων, χρησιμοποιώντας τα 8 πιο σημαντικά bits από τα 10 που δίνουν σαν τιμή οι μετατροπείς A/D του Khepera, όσο και για την τιμή της συνάρτησης συμμετοχής. Ο οκτάμπιτος κβαντισμός για τις τιμές των αισθητήρων είναι κάτι παραπάνω από ικανοποιητικός, αφού η διακριτική ικανότητα των 4 μονάδων εξόδου αισθητήρα που προκύπτει είναι πάρα πολύ μικρή και σίγουρα πολύ κάτω από το περιθώριο θορύβου. Η τιμή της συνάρτησης συμμετοχής αντιστοιχίζεται από το διάστημα [0,1] που ανήκει θεωρητικά, στο διάστημα [0,255]. Η διακριτική ικανότητα είναι περίπου η οποία και σε αυτή την περίπτωση είναι παραπάνω από αρκετή. 2. To block ΜΙΝ Το block ΜΙΝ εμφανίζει στην έξοδο τη μικρότερη από τις δύο τιμές που δέχεται στις εισόδους του. Υλοποιείται πολύ εύκολα με ένα συγκριτή και ένα πολυπλέκτη. 3. O συσσωρευτής μέγιστου (ΜΑΧ_ΑCC) Ο συσσωρευτής μέγιστου είναι ένα κύκλωμα που αποθηκεύει κάθε φορά την μέγιστη τιμή που έχει εμφανιστεί στην είσοδό του από τη στιγμή της αρχικοποίησής του. Για την αρχικοποίησή του διαθέτει είσοδο clear που θέτει την αποθηκευμένη τιμή ίση με 0. Επίσης διαθέτει είσοδο load για να μπορεί να καθοριστεί από τον ελεγκτή χρονισμών πότε η είσοδός του είναι ενεργή και να φορτωθεί. Αυτό γίνεται γιατί από τη στιγμή της έναρξης του υπολογισμού ενός κανόνα απαιτούνται μερικοί κύκλοι ρολογιού μέχρι να ενεργοποιηθούν όλες οι μνήμες, να λειτουργήσουν οι πολυπλέκτες και να φτάσει η σωστή τιμή στην είσοδο του συσσωρευτή, γιατί όλα σχεδόν τα κυκλώματα είναι σύγχρονα. Υλοποιείται κι αυτός εύκολα με ένα συγκριτή, ένα πολυπλέκτη και ένα καταχωρητή. 4. Ο αποασαφοποιητής (defuzzifier) Ο αποασαφοποιητής είναι τύπου μέσου μέγιστων (MOM). Για να μπορούμε να υπολογίσουμε εύκολα και αποτελεσματικά την σαφή έξοδο προσεγγίσαμε τις συναρτήσεις συμμετοχής της εξόδου με τραπέζια. Για να υπολογίσουμε τη σαφή έξοδο πρέπει κατʹ αρχήν να προσδιορίσουμε ποιο μέλος της συνάρτησης συμμετοχής εξόδου είναι αυτό που περιλαμβάνει την τιμή της εξόδου με το μεγαλύτερο βαθμό συμμετοχής. Στην περίπτωσή μας όπου η λεκτική μεταβλητή εξόδου έχει μόνο δύο τιμές ( forward και backward ) αυτό μπορεί να γίνει πολύ εύκολα με ένα συγκριτή που θα συγκρίνει τους βαθμούς εκπλήρωσης που είναι αποθηκευμένοι στους συσσωρευτές μέγιστου MAX_ACC. Εάν είναι ίσοι τότε ο ελεγκτής έχει μηδενική έξοδο. Εάν είναι άνισοι υπολογίζουμε την σαφή έξοδο από το μεγαλύτερο βαθμό εκπλήρωσης με την παρακάτω λογική: 81

87 FPGA και υλοποίηση των ελεγκτών 255 k 0 a x b 256 Σχήμα β Παράδειγμα υπολογισμού σαφούς εξόδου με τη μέθοδο Mean of Maxima Στο παραπάνω σχήμα φαίνεται μια τραπεζοειδής συνάρτηση συμμετοχής. Έστω ότι ο βαθμός εκπλήρωσης που έχει προκύψει από τη διαδικασία συμπερασμού για αυτή τη συνάρτηση είναι k. Τότε αν το k είναι ίσο 255 η σαφής έξοδος θα b είναι MOM =. Διαφορετικά με μερικούς απλούς υπολογισμούς x b b a προκύπτει ότι θα είναι MOM = = k το οποίο μπορεί να λ b γραφεί και ως MOM μ k με μ = 128 +, λ = b a Είναι προφανές ότι με ανάλογο τρόπο με τον παραπάνω μπορούν να προκύψουν οι σταθερές μ και λ για κάθε μορφής τραπεζοειδή συνάρτηση. Αποθηκεύουμε τις σταθερές αυτές για κάθε μέλος της συνάρτησης συμμετοχής της εξόδου στον αποασαφοποιητή και στη συνέχεια για τον υπολογισμό της εξόδου απαιτούνται μόνο ένας πολλαπλασιασμός, μία πρόσθεση και μία διαίρεση με το 510. Ο πολλαπλασιασμός μπορεί να πραγματοποιηθεί σε έναν από τους 28 πολλαπλασιαστές που διαθέτει το FPGA, ενώ αντί της διαίρεσης με το 510 μπορούμε να διαιρέσουμε με το 512 με μια απλή ολίσθηση κατά 9 θέσεις. Έτσι τελικά το μόνο κύκλωμα που χρειάζεται να υλοποιήσουμε στον αποασαφοποιητή για τον υπολογισμό πέραν των καταχωρητών είναι ένας αθροιστής. 5. Η μνήμη κανόνων Στη μνήμη αυτή αποθηκεύονται οι 8 κανόνες του ελεγκτή αποφυγής εμποδίων. Ο κάθε κανόνας αποτελείται από 12 bit τα οποία κατά ομάδες αποτελούν εισόδους στους διάφορους πολυπλέκτες του ελεγκτή, έτσι ώστε να επιλέγονται τα κατάλληλα σήματα. Η δομή μιας θέσης της μνήμης φαίνεται στο σχήμα γ. Έστω ο κανόνας: IF xu is Ai AND xv is Aj THEN y is Bk 82

88 FPGA και υλοποίηση των ελεγκτών Τα bits 11 9 και 6 4 επιλέγουν τα xu,xv αντίστοιχα. Τα Ai,Aj καθορίζονται από τα bits 8 7 και 3 2. Τέλος η τιμή της λεκτικής μεταβλητής στο τμήμα συμπεράσματος, δηλαδή το Bk, επιλέγεται από τα bits 1 και 0, ανάλογα με το αν ο κανόνας αναφέρεται στον αριστερό ή το δεξιό τροχό. Σημειώνουμε ότι αρκεί ένα bit για την επιλογή του συμπεράσματος αφού στους κανόνες του ελεγκτή υπήρχαν στο τμήμα του συμπεράσματος δύο μόνο τιμές τις λεκτικής μεταβλητής της εξόδου, οι forward και backward η είσοδος Υπόθεση 1 ης εισόδου 2 η είσοδος Υπόθεση 2 ης εισόδου Απόδοση αριστερός τροχός Σχήμα γ Δομή λέξης της μνήμης κανόνων του ελεγκτή αποφυγή εμποδίων Απόδοση δεξιός τροχός Στους παρακάτω πίνακες φαίνονται οι επιλογές που αντιστοιχούν στις διάφορες τιμές των θέσεων της μνήμης κανόνων. Bits Αισθητήριο επιλογής εισόδων (11 9 και 6 4) 000 Πλάγιο δεξιά 001 Μεσαίο δεξιά 010 Μπροστά δεξιά 011 Μπροστά αριστερά 100 Μεσαίο αριστερά 101 Πλάγιο αριστερά 110 Πίσω αριστερά 111 Πίσω δεξιά Bits επιλογής υπόθεσης (8 7 και 3 2) Bits επιλογής απόδοσης (1 και 0) Μέλος συνάρτησης εισόδου 00 free 01 obstacle 10 side free 11 side obstacle Μέλος συνάρτησης εξόδου 0 forward 1 backward 6. Ο ελεγκτής χρονισμών Ο ελεγκτής χρονισμών είναι αυτός που συγχρονίζει την λειτουργία των διαφόρων μονάδων του συστήματος. Έτσι δέχεται το σήμα START από τον ελεγκτή επικοινωνίας μόλις τελειώσει η μεταφορά των δεδομένων προς το FPGA και στέλνει το σήμα ενεργοποίησης (rulemem_en) και την κατάλληλη διεύθυνση, που αντιστοιχεί στον αριθμό του κανόνα που πρέπει να υπολογιστεί (rule_num), στη μνήμη κανόνων. Επίσης στέλνει το σήμα για την έναρξη των υπολογισμών στον αποασαφοποιητή μόλις έχουν υπολογιστεί όλοι οι κανόνες (start_defuzz). Τέλος στέλνει σήματα για τον καθαρισμό και τη φόρτωση των συσσωρευτών μέγιστου (accs_load, accs_clear) και για την ενεργοποίηση της εξόδου του αποασαφοποιητή (out_en). 83

89 FPGA και υλοποίηση των ελεγκτών Tα παραπάνω φαίνονται και στο σχήμα δ. Για λόγους οικονομίας χώρου υποθέτουμε εδώ ότι ο ασαφής ελεγκτής που ελέγχεται από τον ελεγκτή χρονισμών έχει μόνο δύο κανόνες και ότι η αποασαφοποίηση διαρκεί 5 κύκλους. Οι αριθμοί αυτοί διαφέρουν στον ελεγκτή που υλοποιήθηκε. Σχήμα δ Χρονικό διάγραμμα ελεγκτή χρονισμών 7. Ο ελεγκτής αποφυγής αδιεξόδου Μια κατάσταση η οποία δεν ήταν δυνατό να αντιμετωπιστεί αποτελεσματικά από τον ασαφή ελεγκτή αποφυγής εμποδίων ήταν η περίπτωση στην οποία το Khepera έφτανε σε αδιέξοδο, δηλαδή ένα εμπόδιο τύπου Π με εμπόδια μπροστά, αριστερά και δεξιά. Για να αντιμετωπιστεί αυτή η περίπτωση τοποθετήθηκε αυτό το επιπλέον μπλοκ στον ελεγκτή, το οποίο ανιχνεύει εάν το ρομπότ έχει φτάσει σε κατάσταση αδιεξόδου και σε αυτή την περίπτωση το οδηγεί να πραγματοποιήσει μια στροφή προς τα δεξιά, μέχρι να πάψει το δεξί μπροστά αισθητήριο να βλέπει κοντινό εμπόδιο. Σε περίπτωση που δεν βρισκόμαστε σε αδιέξοδο ο ελεγκτής αυτός απλά περνάει τις ταχύτητες που δίνει ο ασαφής ελεγκτής στην έξοδο. Για τον υπολογισμό της εξόδου του παραπάνω ελεγκτή απαιτούνται 5 κύκλοι ρολογιού ανά κανόνα, 17 κύκλοι για τον αποασαφοποιητή και 9 ενδιάμεσοι κύκλοι. Έτσι για τον ελεγκτή με 8 κανόνες που έχουμε εμείς απαιτούνται 66 κύκλοι ρολογιού. Ο τρόπος που είναι σχεδιασμένος ο παραπάνω ελεγκτής δεν επιτρέπει την υλοποίηση κανόνων με περισσότερες από δύο μεταβλητές στο τμήμα υπόθεσης, γιατί κάτι τέτοιο δεν ήταν αναγκαίο για τη συγκεκριμένη εφαρμογή. Ωστόσο μπορεί εύκολα να επεκταθεί για να περιλάβει και τέτοιους κανόνες εισάγοντας μια ανατροφοδότηση από την έξοδο του block min στην είσοδό του και ένα επιπλέον bit στη μνήμη κανόνων που θα σηματοδοτεί τους κανόνες με περισσότερες από δυο μεταβλητές στο τμήμα υπόθεσης. 84

90 FPGA και υλοποίηση των ελεγκτών Ο ελεγκτής παρακολούθησης περιμέτρου Ο ελεγκτής παρακολούθησης περιμέτρου είναι κι αυτός ένας ασαφής ελεγκτής με παρόμοια αρχιτεκτονική με τον ελεγκτή αποφυγής εμποδίων. Υλοποιείται ως ελεγκτής Sugeno μηδενικής τάξης, αντί για Mamdani με αποασαφοποιητή MOM ή COG. Έτσι για τον ελεγκτή αυτό η διαδικασία παραγωγής της εξόδου είναι η ίδια με τον ελεγκτή αποφυγής εμποδίων με αντικατάσταση του πέμπτου βήματος από το παρακάτω: 5. Υπολογίζουμε την σαφή έξοδο του ελεγκτή ως: O = D k k= 1 D k= 1 td d k k, όπου D o αριθμός των μελών της συνάρτησης συμμετοχής της εξόδου (εδώ D=2) και dk οι προκαθορισμένες σταθερές τιμές που αντιστοιχίσαμε σε κάθε λεκτική τιμή της μεταβλητής εξόδου. Λόγω της δομής του παρουσιάζει μερικές διαφορές από τον ελεγκτή αποφυγής εμποδίων στο τμήμα εισόδου, πριν το block ΜΙΝ. Το τμήμα αυτό φαίνεται στο σχήμα α. Σχήμα α Τμήμα εισόδου ελεγκτή παρακολούθησης περιμέτρου 85

91 FPGA και υλοποίηση των ελεγκτών Οι πολυπλέκτες στην είσοδο σε αυτή την περίπτωση επιλέγουν εάν θα περάσουν τα αριστερά ή τα δεξιά αισθητήρια σαν είσοδο στον ελεγκτή. Η επιλογή αυτή γίνεται ανάλογα με την είσοδο side, που καθορίζεται από το khepera και δηλώνει εάν έχουμε παρακολούθηση περιμέτρου από τα δεξιά ή από τα αριστερά. Η λεκτική τιμή της μεταβλητής εισόδου για αυτό τον ελεγκτή έχει τρεις τιμές τις A1= φευγει, A2= κινείται καλά και A3= συγκρούεται. Οι συναρτήσεις συμμετοχής για την κάθε τιμή υλοποιούνται και πάλι με μία μνήμη RAM 256x8, δηλαδή έχουμε και εδώ οκτάμπιτο κβαντισμό τόσο της τιμής της εισόδου όσο και της τιμής της συνάρτησης συμμετοχής. Η διαφορά σε αυτό τον ελεγκτή σε σχέση με τον προηγούμενο είναι ότι σε καθένα από τους πολυπλέκτες MUX_1, MUX_2 υπάρχει και μία είσοδος συνδεδεμένη στη VCC, δηλαδή με τιμή Σκοπός αυτής της εισόδου είναι να μπορεί να «απενεργοποιηθεί» η μία είσοδος όταν θέλουμε να υπολογίσουμε κανόνες οι οποίοι έχουν στο τμήμα υπόθεσης μόνο μία μεταβλητή (IF xu is Ai ΤΗΕΝ y is Βκ). Η μορφή της λέξης της μνήμης κανόνων και οι σχετικές αντιστοιχίες φαίνονται στο παρακάτω σχήμα: Bits επιλογής υπόθεσης (5 4 και 3 2) Υπόθεση 1 ης εισόδου Υπόθεση 2 ης εισόδου Μέλος συνάρτησης εισόδου 00 φεύγει 01 κινείται καλά 10 συγκρούεται 11 είσοδος ανενεργή Απόδοση αριστερός τροχός Bits επιλογής απόδοσης (1 και 0) Απόδοση δεξιός τροχός Μέλος συνάρτησης εξόδου 0 forward 1 backward Σχήμα α Δομή λέξης και αντιστοιχίες για τη μνήμη κανόνων του ελεγκτή παρακολούθησης περιμέτρου Ο αποασαφοποιητής περιέχει καταχωρητές στους οποίους είναι αποθηκευμένες οι σταθερές τιμές dk που αντιστοιχούν σε κάθε τιμή της λεκτικής μεταβλητής εξόδου. Επιλέγεται ως αντιπροσωπευτική σταθερή τιμή για την τιμή forward της λεκτικής μεταβλητής η τιμή 165 και για την τιμή backward η τιμή 91. Για να εκτελέσει τους πολλαπλασιασμούς που είναι απαραίτητοι χρησιμοποιεί τους πολλαπλασιαστές 18x18 που είναι διαθέσιμοι στο XC2VP4. Επίσης διαθέτει κάποιους αθροιστές για τον υπολογισμό των αθροισμάτων. Τέλος για τον υπολογισμό του πηλίκου περιέχει έναν διαιρέτη που λειτουργεί σειριακά και υπολογίζει το αποτέλεσμά του σε 17 κύκλους ρολογιού. Για την έναρξη της αποασαφοποίησης πρέπει το σήμα start να γίνει 0. 86

92 FPGA και υλοποίηση των ελεγκτών Τέλος πρέπει να πούμε ότι οι κανόνες του παραπάνω ελεγκτή υπολογίζουν τις ταχύτητες των τροχών για παρακολούθηση περιμέτρου στα δεξιά του ρομπότ. Εάν απαιτείται παρακολούθηση περιμέτρου από τα αριστερά τότε, λόγω της συμμετρίας του ελεγκτή, απλά αντιστρέφονται οι ταχύτητες, δηλαδή η ταχύτητα που προκύπτει για τον αριστερό τροχό δίνεται στον δεξιό και αντίστροφα. Για τον υπολογισμό της εξόδου από τον ελεγκτή απαιτούνται συνολικά 51 κύκλοι ρολογιού Ο ελεγκτής εικονικών εμποδίων Παρόλο που και σε αυτή την περίπτωση πρόκειται για την υλοποίηση ενός ασαφή ελεγκτή ακολουθήσαμε μια τελείως διαφορετική προσέγγιση. Είναι γνωστό ότι ο κάθε fuzzy ελεγκτής ουσιαστικά υλοποιεί μια συνάρτηση εισόδουεξόδου γενικά από ένα n διάστατο χώρο εισόδου, λόγω των πολλών συνήθως εισόδων, σε ένα μονοδιάστατο συνήθως (αλλά ενίοτε και πολυδιάστατο) χώρο N εξόδου. Είναι με άλλα λόγια μια συνάρτηση R R. Στην περίπτωση που η είσοδος είναι μία η συνάρτηση αυτή γίνεται R R. Ο ελεγκτής εικονικών εμποδίων έχει μία είσοδο και 8 εξόδους. Εναλλακτικά μπορούμε να θεωρήσουμε, εφόσον η μία έξοδος δεν επηρεάζει την άλλη, ότι πρόκειται για 8 ασαφείς ελεγκτές με μία είσοδο και μία έξοδο. Έτσι για τον καθένα από τους 8 αυτούς ελεγκτές μπορούμε να βρούμε τη (μονοδιάστατη πλέον) συνάρτηση εισόδου εξόδου. Στο σχήμα α φαίνονται οι 8 συναρτήσεις εισόδου εξόδου που υλοποιεί ο ελεγκτής εικονικών εμποδίων. Στον οριζόντιο άξονα φαίνονται οι τιμές της εισόδου επιθυμητής γωνίας (Σχ α) που χρησιμοποιείται κατά τη συμπεριφορά διατήρησης κατεύθυνσης. Αυτές οι 8 συναρτήσεις μπορούν να υλοποιηθούν με 8 μνήμες RAM ως lookup tables και χρησιμοποιώντας οκτάμπιτο κβαντισμό, τόσο για την είσοδο, όσο και για την έξοδο[29]. Από τα σχήματα όμως φαίνεται αμέσως ότι υπάρχει συμμετρία μεταξύ των συναρτήσεων για τα αντίστοιχα αισθητήρια δεξιά και αριστερά του ρομπότ. Έτσι η έξοδος εικονικού εμποδίου δεξιά για είσοδο γωνία x είναι η ίδια με την έξοδο εικονικού εμποδίου αριστερά για είσοδο x. Τη συμμετρία αυτή μπορούμε να την εκμεταλλευτούμε και να μην υλοποιήσουμε όλες τις συναρτήσεις σε μνήμες RAM, αλλά να υλοποιήσουμε μόνο αυτές που αντιστοιχούν στα εικονικά εμπόδια για τα αριστερά αισθητήρια και να παίρνουμε τα εικονικά εμπόδια για τα δεξιά αισθητήρια εισάγοντας στις μνήμες αυτές ως διεύθυνση το συμπλήρωμα ως προς 2 της εισόδου. 87

93 FPGA και υλοποίηση των ελεγκτών vo-sideleft vo-forwardleft vo-right angle angle angle 60 vo-left vo-forwardright vo-sideright angle angle angle 60 vo-backright angle vo-backleft angle Σχήμα α Συναρτήσεις μεταφοράς του ελεγκτή εικονικών εμποδίων Υλοποιώντας τις συναρτήσεις εισόδου εξόδου απευθείας με μνήμες RAM αποφεύγουμε την κατασκευή ενός ακόμα ασαφή ελεγκτή με παρόμοια αρχιτεκτονική με αυτόν της αποφυγής εμποδίων, ο οποίος και πολύ περισσότερο χώρο θα καταλάμβανε και πιο αργός θα ήταν. Εάν χρησιμοποιούσαμε την παραπάνω αρχιτεκτονική θα χρειαζόμασταν τουλάχιστον 4 μνήμες RAM μόνο για τα μέλη της συνάρτησης συμμετοχής της εισόδου. Επιπρόσθετα θα χρειαζόμασταν μνήμη RAM για τους κανόνες και αρκετά επιπλέον CLBs για τα υπόλοιπα κυκλώματα του ελεγκτή (MIN,MAX_ACC, defuzzifier κλπ). Η υλοποίηση με μνήμες RAM ως look up tables δεν καταλαμβάνει CLBs πάνω στο FPGA καθώς το XC2VP4 διαθέτει αρκετές ελεύθερες μνήμες RAM εκτός των CLBs για να μπορεί να γίνει μια τέτοια υλοποίηση. Επίσης ο ελεγκτής θα ήταν και πιο αργός καθώς με την προηγούμενη αρχιτεκτονική απαιτούνται περίπου 5 κύκλοι ρολογιού για τον υπολογισμό του κάθε κανόνα συν τους κύκλους για την αποασαφοποίηση, δηλαδή περίπου 40 κύκλοι ρολογιού για τον υπολογισμό της εξόδου στην προκείμενη περίπτωση. Με τις μνήμες RAM ο υπολογισμός διαρκεί 4 κύκλους ρολογιού Ο ελεγκτής εστίασης Παρόμοια προσέγγιση με τον ελεγκτή εικονικών εμποδίων ακολουθήσαμε και για τον ελεγκτή εστίασης. Σε αυτή την περίπτωση έχουμε μία είσοδο και δύο 88

94 FPGA και υλοποίηση των ελεγκτών εξόδους. Έτσι προκύπτουν οι δύο συναρτήσεις εισόδου εξόδου που φαίνονται στο παρακάτω σχήμα: 10 velocity-left balance 10 velocity-right balance Σχήμα α Συναρτήσεις μεταφοράς του ελεγκτή εστίασης Και σε αυτή την περίπτωση εμφανίζεται συμμετρία, και έτσι τελικά οι δύο συναρτήσεις μπορούν να υλοποιηθούν με μία μνήμη RAM 512x8 bits χρησιμοποιούμενη ως lookup table και η οποία θα παίρνει ως είσοδο διεύθυνσης την τιμή της εισόδου εστίασης (balance) ή το συμπλήρωμά της ως προς 2, ανάλογα με το αν θέλουμε να υπολογίσουμε την ταχύτητα του αριστερού ή του δεξιού τροχού. Σε αυτό τον ελεγκτή η έξοδος υπολογίζεται σε 4 κύκλους ρολογιού Ο ελεγκτής επικοινωνίας Ο ελεγκτής επικοινωνίας είναι υπεύθυνος για τη μεταφορά των δεδομένων από το Khepera στο FPGA και αντίστροφα. Αφού δεχτεί όλα τα δεδομένα από το FPGA τα μεταφέρει στις εισόδους των κατάλληλων ελεγκτών και θέτει το σήμα ελέγχου για την έναρξη του υπολογισμού της εξόδου. Ταυτόχρονα εκκινεί έναν μετρητή που μετράει πόσοι παλμοί έχουν περάσει από την εκκίνηση των υπολογισμών. Μόλις αυτός ο μετρητής υπερβεί κάποιο προκαθορισμένο αριθμό παλμών, η διαδικασία υπολογισμού έχει ολοκληρωθεί και ο ελεγκτής αρχίζει την διαδικασία εξόδου των αποτελεσμάτων προς το FPGA. Ο ελεγκτής υλοποιείται ως μία μηχανή πεπερασμένων καταστάσεων (Finite State Machine FSM). Περισσότερες πληροφορίες σχετικά με την επικοινωνία του Khepera με το FPGA υπάρχουν στο κεφάλαιο 6. 89

95 FPGA και υλοποίηση των ελεγκτών Στοιχεία για την υλοποίηση των ελεγκτών Μετά την συγγραφή του κώδικα σε VHDL που περιγράφει τη συμπεριφορά των παραπάνω ελεγκτών μπορούμε όπως είπαμε και παραπάνω χρησιμοποιώντας τα αυτόματα εργαλεία του λογισμικού να εξάγουμε από την περιγραφή ένα πραγματικό ψηφιακό κύκλωμα. Η διαδικασία αυτή της εξαγωγής (σύνθεση, τοποθέτηση και δρομολόγηση) μας δίνει τελικά και μια σειρά από πληροφορίες σχετικά με τα στοιχεία του FPGA που χρησιμοποιεί το κύκλωμα στην τελική του υλοποίηση, τον χώρο που καταλαμβάνει, το (συνδυαστικό) μονοπάτι με τη μέγιστη καθυστέρηση, τη μέγιστη συχνότητα λειτουργίας, τις καθυστερήσεις στις διάφορες συνδέσεις, το χρόνο αποκατάστασης και συγκράτησης για τις διάφορες εισόδους, το μέγιστο χρόνο από τον παλμό του ρολογιού μέχρι την έξοδο των δεδομένων κ.ά. Παρακάτω θα παραθέσουμε τα βασικά από αυτά τα στοιχεία. Στους παρακάτω πίνακες φαίνονται τα στοιχεία που χρησιμοποιεί το κύκλωμα που υλοποιήσαμε: Μνήμες RAM x8 bit x8 bit 1 Καταχωρητές bit bit 3 4 bit 2 5 bit 1 6 bit 1 8 bit 38 9 bit 1 12 bit 1 16 bit 6 32 bit 5 Μετρητής 7 bit 1 Πολυπλέκτες 27 2: bit 4:1 4 8 bit 8:1 2 Αθροιστές 23 8 bit 22 9 bit 1 Πολλαπλασιαστές 8x8 bit 8 Συγκριτές 25 4 bit 4 8 bit 21 Εκτός από αυτά τα στοιχεία είναι όμως πολύ χρήσιμο να ξέρουμε τι ποσοστό των διαθέσιμων πόρων του FPGA χρησιμοποιεί τελικά το σχέδιό μας. Τα στοιχεία αυτά φαίνονται στον πίνακα που ακολουθεί: 90

96 FPGA και υλοποίηση των ελεγκτών Στοιχείο Κατειλημμένα Συνολικά διαθέσιμα Ποσοστό κατειλημμένων % Φέτες Flip Flop Lookup Table 4 εισόδων Είσοδοι/Έξοδοι Μνήμες RAM Πολλαπλασιαστές Διάδρομοι ρολογιού Βλέπουμε ότι το σχέδιό μας χρησιμοποιεί μόνο το 24% των φετών και το 14% των διαθέσιμων Flip Flop (τα οποία βέβαια βρίσκονται στο 24% των κατειλημμένων φετών). Επίσης παρʹ όλη την σχετικά εκτεταμένη εκμετάλλευση των μνημών RAM για την αποθήκευση των συναρτήσεων συμμετοχής και των συναρτήσεων εισόδου εξόδου των διάφορων ελεγκτών το ένα τρίτο των μνημών του FPGA παραμένει ελεύθερο. Οι 8 από τους 28 πολλαπλασιαστές χρησιμοποιούνται στους αποασαφοποιητές των ελεγκτών. Τέλος από τους 16 ειδικούς διαδρόμους που υπάρχουν για σήματα ρολογιού καταλαμβάνονται οι 2, ο ένας για το σήμα clock και ο άλλος για την είσοδο διακοπής του ελεγκτή επικοινωνίας (σήμα RP του Khepera). Tέλος εξάγουμε τα παρακάτω στοιχεία σχετικά με τους χρονισμούς: Μέγιστος χρόνος αποκατάστασης (setup time) για την είσοδο Μέγιστος χρόνος συγκράτησης (hold time) για την είσοδο Μέγιστος χρόνος από την άνοδο του ρολογιού μέχρι την εμφάνιση της εξόδου Ελάχιστη περίοδος ρολογιού ns ns ns ns Όσον αφορά στους χρόνους συγκράτησης και αποκατάστασης και τον χρόνο μέχρι την εμφάνιση της εξόδου, η επικοινωνία ανάμεσα στο Khepera και το FPGA είναι δομημένη με τέτοιο τρόπο ώστε να μην υπάρχει κανένα πρόβλημα με αυτούς τους περιορισμούς. Η ελάχιστη περίοδος ρολογιού αντιστοιχεί σε μια μέγιστη επιτρεπτή συχνότητα 83,5 MHz. Η πλακέτα Suzaku παρέχει στο FPGA ένα ρολόι συχνότητας 3,69 MHz. Είναι όμως η συχνότητα αυτή αρκετή; Εάν λάβουμε υπόψη μας ότι για το μέγιστο δυνατό υπολογισμό απαιτούνται 73 κύκλοι ρολογιού (συμπεριφορά ευθυγράμμισης με κατεύθυνση), με μια συχνότητα 3.69 MHz, για τον υπολογισμό της εξόδου χρειάζονται περίπου 20 μsec. Για την μεταφορά των δεδομένων από το Khepera στο FPGA και αντίστροφα δεν χρειάζονται περισσότερα από 66 μsec όπως θα εξηγήσουμε παρακάτω. Το Khepera λαμβάνει μια μέτρηση από ένα υπέρυθρο αισθητήριο ανά 2.5 msec περίπου, άρα η παραπάνω συχνότητα είναι πολύ ικανοποιητική. Έτσι δεν υπάρχει κανένα πρόβλημα και με τον περιορισμό για την ελάχιστη περίοδο ρολογιού. 91

97 FPGA και υλοποίηση των ελεγκτών H είσοδος επιλογής συμπεριφοράς Η είσοδος επιλογής συμπεριφοράς δέχεται έναν αριθμό των τριών bit τον οποίο ο επεξεργαστής του Khepera στέλνει στο FPGA κάθε φορά που εκτελείται κάποιος υπολογισμός ταχύτητας, έτσι ώστε στην έξοδο του FPGA να εμφανιστεί η ταχύτητα που αντιστοιχεί στην συμπεριφορά του ρομπότ που έχει επιλέξει ο μικροεπεξεργαστής του Khepera για τη δεδομένη χρονική στιγμή. Οι τιμές που μπορεί να πάρει η είσοδος επιλογής συμπεριφοράς καθώς και οι συμπεριφορές στις οποίες αυτές αντιστοιχούν φαίνονται στον παρακάτω πίνακα: Συμπεριφορά Τιμή εισόδου επιλογής συμπεριφοράς Τυχαία περιήγηση Αποφυγή εμποδίων 000 Διατήρηση κατεύθυνσης 001 Παρακολούθηση περιμέτρου αριστερά 010 Παρακολούθηση περιμέτρου δεξιά 011 Εστίαση σε θηρευτή ή τροφή 100 Πρέπει να σημειώσουμε ότι κάθε φορά που απαιτείται υπολογισμός ταχύτητας στέλνονται όλα τα δεδομένα στο FPGA ανεξάρτητα από την συμπεριφορά την οποία ακολουθεί το ρομπότ. To FPGA επίσης εκτελεί κάθε φορά όλους τους υπολογισμούς και στο τέλος επιλέγει την κατάλληλη ταχύτητα ανάλογα με την τιμή της εισόδου επιλογής συμπεριφοράς. Ακολουθήσαμε αυτή την παραδοχή για λόγους απλότητας, αφού η μόνη επιβάρυνση που προκαλεί είναι η μεταφορά κάποιων επιπλέον byte προς το FPGA. 5.4 Προσομοιώσεις Link for Modelsim Το Matlab από την έκδοση 7 και μετά παρέχει ένα εργαλείο για τη διασύνδεση του Matlab και του Simulink με τον προσομοιωτή Modelsim της Mentor Graphics. Με αυτό τον τρόπο δίνεται η δυνατότητα ενσωμάτωσης του κώδικα σε VHDL σε ένα μοντέλο του Simulink ή σε μια συνάρτηση του Matlab. Έτσι γίνεται πλέον εφικτή η απευθείας σύγκριση της υλοποίησης ενός συστήματος σε VHDL με την μοντελοποίησή του στο Matlab ή στο Simulink. Η δυνατότητα αυτή αποτελεί πολύ μεγάλη ευκολία και επιτρέπει τον πολύ πιο αποτελεσματικό και γρήγορο έλεγχο της υλοποίησης για σφάλματα, σε σχέση με τον έλεγχο με μεμονωμένα ζεύγη διανυσμάτων εισόδου εξόδου. Στην περίπτωσή μας η διασύνδεση αυτή επιτρέπει την απευθείας προσομοίωση με τον Kiks της συμπεριφοράς του Khepera όταν αυτό ελέγχεται από τον υλοποιημένο στο FPGA ελεγκτή. 92

98 FPGA και υλοποίηση των ελεγκτών Αναλυτικές οδηγίες για τη χρησιμοποίηση του Link for Modelsim υπάρχουν στο εγχειρίδιο βοήθειας του Matlab. Ένας μικρός οδηγός χρήσης υπάρχει και στο Παράρτημα Γ. Παρʹ όλη όμως τη μεγάλη ευκολία που προσφέρει η προσομοίωση δεν μπορεί να δώσει ακριβή αποτελέσματα αλλά μόνο ποιοτικά. Αυτό οφείλεται στη σχετικά μεγάλη καθυστέρηση (της τάξης των δέκατων του δευτερολέπτου) που εισάγει η μετάβαση και η μεταφορά δεδομένων μεταξύ των προγραμμάτων καθώς και στον τρόπο με τον οποίο χειρίζεται τον χρόνο ο KiKs. Για το λόγο αυτό, για να μπορέσουμε να πάρουμε ποσοτικά αποτελέσματα, αναπτύξαμε ένα μοντέλο του υλοποιημένου στο FPGA ελεγκτή στο Matlab Το μοντέλο του ελεγκτή στο Matlab Για να ελέγξουμε την αποτελεσματικότητα του ελεγκτή σε σχέση με τον υλοποιημένο σε software ελεγκτή θα πρέπει να προσομοιώσουμε στο λογισμικό τις διαφορές που έχει η υλοποίησή του στο hardware από τη software υλοποίηση. Οι διαφορές αυτές προέρχονται από 3 πηγές: 1. Τον κβαντισμό, τόσο των χώρων εισόδου και εξόδου όσο και των τιμών των συναρτήσεων συμμετοχής. 2. Την διαφορετική μέθοδο αποασαφοποίησης. 3. Τη χρησιμοποίηση προσεγγίσεων για τις συναρτήσεις συμμετοχής της εξόδου. Και τα τρία στοιχεία μπορούν πολύ εύκολα να υλοποιηθούν στο Matlab. Στις προσομοιώσεις που ακολουθούν χρησιμοποιήσαμε αυτό το μοντέλο Προσομοιώσεις Ακολουθώντας τα είδη των προσομοιώσεων στη software υλοποίηση εκτελέσαμε και παρουσιάζουμε σε αντιπαράθεση με τις software προσομοιώσεις τα εξής πειράματα: Αποφυγή εμποδίων σε αρένα χωρίς διαδρόμους Αποφυγή εμποδίων σε αρένα με διαδρόμους Εστίαση Αποφυγή θηρευτή Προσέγγιση τροφής με έκτακτη εμφάνιση θηρευτή 93

99 FPGA και υλοποίηση των ελεγκτών Οι αρένες που χρησιμοποιήθηκαν έχουν τα ίδια χαρακτηριστικά με αυτές των προσομοιώσεων των software υλοποιήσεων. Η εικόνα που έδωσαν τα πειράματα των προσομοιώσεων με τους ελεγκτές σε software θα έχει την επέκταση Software Υλοποίηση, ενώ με το μοντέλο των υλοποιημένων στο υλικό ελεγκτών Hardware Υλοποίηση. 94

100 FPGA και υλοποίηση των ελεγκτών Αποφυγή εμποδίων σε αρένα χωρίς διαδρόμους Σχήμα α Προσομοίωση Αποφυγής Εμποδίων σε αρένα χωρίς διαδρόμους Software Υλοποίηση Σχήμα β Προσομοίωση Αποφυγής Εμποδίων σε αρένα χωρίς διαδρόμους Hardware Υλοποίηση Όπως φαίνεται το ρομπότ κινείται εξίσου ικανοποιητικά και στη hardware υλοποίηση. Μόνη εμφανής διάφορά υπάρχει στην «βιαιότητα» των στροφών (όπως φαίνεται στα επισημασμένα σημεία) με πιθανή αιτία τη χρήση της πολύ ομαλής Gaussian συνάρτησης συμμετοχής στην περίπτωση της software υλοποίησης. Βέβαια η διαφορά αυτή είναι στο όριο του αισθητού αφού εξάλλου η 95

101 FPGA και υλοποίηση των ελεγκτών στρογγυλοποίηση σε ακέραιο όλων των ταχυτήτων από τον kiks περιορίζει τη διαφορά των δύο υλοποιήσεων. Αποφυγή εμποδίων σε αρένα με διαδρόμους Σχήμα γ Προσομοίωση Αποφυγής Εμποδίων σε αρένα με διαδρόμους Software Υλοποίηση Σχήμα δ Προσομοίωση Αποφυγής Εμποδίων σε αρένα με διαδρόμους Hardware Υλοποίηση 96

102 FPGA και υλοποίηση των ελεγκτών Και πάλι η μόνη διαφορά που εντοπίζεται έχει να κάνει με το πόσο απότομα στρίβει το ρομπότ. Δεν επηρεάζεται όμως η ορθή λειτουργία της συμπεριφοράς. Παρακολούθηση Περιμέτρου Σχήμα ε Παρακολούθηση Περιμέτρου Προσομοίωση Software Σχήμα στ Παρακολούθηση Περιμέτρου Προσομοίωση Hardware Βλέπουμε ότι και στο Hardware ο ελεγκτής λειτουργεί κανονικά. 97

103 FPGA και υλοποίηση των ελεγκτών Εστίαση Από τη Software υλοποίηση παραθέτουμε μόνο τα διαδοχικά καρέ εστίασης. Σχήμα ζ Εστίαση - Software Υλοποίηση Σχήμα η Εστίαση - Hardware Υλοποίηση Και σε αυτή την περίπτωση δεν παρατηρούμε κάποια σημαντική διαφορά μεταξύ των δύο υλοποιήσεων. 98

104 FPGA και υλοποίηση των ελεγκτών Αποφυγή Θηρευτή Σχήμα θ Αποφυγή Θηρευτή Software Υλοποίηση Σχήμα ι Αποφυγή Θηρευτή Hardware Υλοποίηση Τα αποτελέσματα της προσομοίωσης δείχνουν και εδώ ότι το ρομπότ συμπεριφέρεται κατά τον ίδιο τρόπο τόσο στην software υλοποίηση όσο και στο μοντέλο του hardware. 99

105 FPGA και υλοποίηση των ελεγκτών Προσέγγιση Τροφής με έκτακτη εμφάνιση θηρευτή Στην επόμενη εικόνα φαίνεται η εκτέλεση της φάσης προσέγγισης τροφής με έκτακτη εμφάνιση θηρευτή. Σχήμα ια Προσέγγιση τροφής με έκτακτη εμφάνιση θηρευτή Hardware Υλοποίηση 100

106 FPGA και υλοποίηση των ελεγκτών Σχήμα ιβ Προσέγγιση τροφής με έκτακτη εμφάνιση θηρευτή Software Υλοποίηση Ούτε σε αυτή την περίπτωση παρατηρούμε σημαντικές διαφορές ανάμεσα στις δύο υλοποιήσεις. Αυτό που αξίζει να σημειωθεί είναι η διαφορά που υπάρχει στην αποτελεσματικότητα της παρακολούθησης περιμέτρου (περιοχή που τονίζεται δύο παραπάνω σχήματα). Αυτή η ανομοιογένεια εμφανίζεται ανάμεσα σε όλες τις παρακολουθήσεις περιμέτρου των παραπάνω προσομοιώσεων και είναι ένα αποτέλεσμα του χρόνου απόφασης που σχολιάστηκε στο κεφάλαιο

107 Επικοινωνία Khepera FPGA 6. Επικοινωνία Khepera FPGA Όπως παρουσιάστηκε στα προηγούμενα κεφάλαια o μικροεπεξεργαστής του Khepera διαβάζει όλες τις μετρήσεις και σύμφωνα με αυτές και το παρελθόν εκτιμά την κατάσταση στην οποία βρίσκεται το ρομπότ. Στη συνέχεια στέλνει τα δεδομένα από τα αισθητήρια και κάποια επιπλέον δεδομένα που περιγράφουν την κατάσταση του ρομπότ στο FPGA. To FPGA εκτελεί όλους τους υπολογισμούς που είναι αναγκαίοι και ανάλογα με τη συμπεριφορά που ακολουθεί το ρομπότ επιστρέφει στο Khepera τις ταχύτητες που πρέπει να εφαρμοστούν στους τροχούς τη δεδομένη χρονική στιγμή. Ο αλγόριθμος και ο τρόπος με τον οποίο υλοποιείται στο FPGA παρουσιάστηκε στα προηγούμενα κεφάλαια. Σε αυτό το κεφάλαιο θα περιγράψουμε πώς τα δεδομένα μεταφέρονται από τον μικροεπεξεργαστή του Khepera στο FPGA και αντίστροφα. Υπάρχουν δύο γενικοί τρόποι για την επικοινωνία ενός επεξεργαστή με ένα περιφερειακό, ο σύγχρονος και ο ασύγχρονος. Το Khepera δεν προσφέρει κάποια δυνατότητα για τη χρησιμοποίηση ενός σύγχρονου τρόπου επικοινωνίας. Συνεπώς θα χρησιμοποιήσουμε κάποιον ασύγχρονο. Το Khepera παρέχει τη δυνατότητα ασύγχρονης επικοινωνίας με τον επεξεργαστή του είτε μέσω ενός σειριακού πρωτοκόλλου RS232, είτε μέσω ενός τοπικού δικτύου για επικοινωνία μεταξύ των επεξεργαστών των διάφορων καρτών και του κύριου επεξεργαστή του Khepera. Το τοπικό αυτό δίκτυο λειτουργεί με ένα συγκεκριμένο πρωτόκολλο και ελέγχεται από τον επεξεργαστή του Khepera που λειτουργεί ως master ενώ όλοι οι άλλοι επεξεργαστές που συνδέονται στο δίκτυο λειτουργούν ως slave. Το πρόβλημα είναι ότι για να χρησιμοποιηθεί οποιοδήποτε από τα δύο πρωτόκολλα πρέπει να φτιαχτεί μία καινούρια πλακέτα επέκτασης που θα μπορεί να συνδεθεί απευθείας στον διάδρομο επέκτασης του Khepera. Η κατασκευή μιας τέτοιας πλακέτας δεν είναι ιδιαίτερα εύκολη. Για το λόγο αυτό για την επικοινωνία ανάμεσα στο Khepera και το FPGΑ επιλέξαμε να χρησιμοποιήσουμε τις εισόδους και τις εξόδους που διατίθενται στην γενική κάρτα επέκτασης εισόδων εξόδων. Εφόσον οι ψηφιακές είσοδοι και έξοδοι δεδομένων (DIGITAL IN, DIGITAL OUT) χρησιμοποιούνται για τη μεταφορά των δεδομένων, αποφασίσαμε να χρησιμοποιήσουμε το σήμα διακοπής (IR) και τον παλμό ανάγνωσης (RP) ως σήματα ελέγχου για την επικοινωνία ανάμεσα στο FPGA και το Khepera με χειραψία (handshake). Έτσι όταν το Khepera θέλει να μεταφέρει δεδομένα στο FPGA θα στέλνει ένα παλμό ανάγνωσης. Το FPGA θα διαβάζει τα δεδομένα και θα στέλνει μια διακοπή ως επιβεβαίωση. Η αντίστοιχη λειτουργία θα γίνεται κατά την αποστολή δεδομένων από το FPGA στο Khepera. 102

108 Επικοινωνία Khepera FPGA Σχήμα 6.1 Είσοδοι και έξοδοι που θα χρησιμοποιηθούν από την πλακέτα επέκτασης Ε/Ε Πριν παρουσιάσουμε αναλυτικά τη διαδικασία επικοινωνίας ανάμεσα στο FPGA και το Khepera θα δούμε μερικά προβλήματα που προκύπτουν από την προσέγγιση που ακολουθήσαμε. Ένας σημαντικός περιορισμός που εμφανίζεται εάν χρησιμοποιήσουμε την κάρτα επέκτασης εισόδου εξόδου είναι ότι αυτή διαθέτει μόλις 4 ψηφιακές εξόδους για σήματα. Έτσι είμαστε αναγκασμένοι κατά τη μεταφορά δεδομένων από το Khepera στο FPGA να μεταφέρουμε μισό byte κάθε φορά. Ένα άλλο πολύ σημαντικό πρόβλημα είναι ότι οι είσοδοι και οι έξοδοι του Khepera λειτουργούν με επίπεδα τάσης 0 και 5 V, ενώ αντίθετα το FPGA λειτουργεί με εισόδους και εξόδους σε επίπεδα 0 3.3V. Και ενώ η τάση των 3.3 V πιθανόν θα μπορούσε να διαβαστεί ως high χωρίς πρόβλημα από το Khepera, η τάση των 5 V θα κατάστρεφε το FPGA εάν εφαρμοζόταν στους ακροδέκτες του. Έτσι είναι απαραίτητο να κατασκευαστεί ένα κύκλωμα που θα μετατρέπει τα επίπεδα τάσης 0 5V σε 0 3.3V και αντίστροφα. Υπάρχουν έτοιμα ολοκληρωμένα κυκλώματα στο εμπόριο, οι μεταφραστές επιπέδου τάσης (level translators), τα οποία εκτελούν ακριβώς αυτή την εργασία. Ένα τέτοιο κύκλωμα είναι το 74LVX3245 της Fairchild Semiconductors. Το διάγραμμα ακροδεκτών του ολοκληρωμένου φαίνεται στο σχήμα 6.2. Οι Α0 Α7 και Β0 Β7 είναι οι γραμμές δεδομένων και μπορεί να λειτουργούν ως είσοδοι ή ως έξοδοι. Αυτό καθορίζεται από την τιμή του pin Τ/R. Αν είναι high είσοδοι είναι οι Αi, αλλιώς οι Bi. Tα επίπεδα τάσης των σημάτων στις γραμμές Αi και Bi καθορίζονται από τις τάσεις τροφοδοσίας στα pins VCCA αντίστοιχα. και VCCB 103

109 Επικοινωνία Khepera FPGA Σχήμα 6.2 Διάγραμμα ακροδεκτών του 74LVX3245 Δεδομένου ότι εμείς χρειαζόμαστε τόσο εισόδους όσο και εξόδους από την πλευρά των 5V, χρησιμοποιήσαμε δύο τέτοια ολοκληρωμένα 2. Οι έξοδοι είναι 5 (RP,DIGITAL IN 0 3), ενώ οι έξοδοι 9 (DIGITAL OUT 0 8, IR). Αυτό σημαίνει ότι θα χρειαζόμασταν ένα ακόμα ολοκληρωμένο για τη μία έξοδο που περισσεύει. Προκειμένου να αποφύγουμε αυτό το επιπλέον κόστος επιλέξαμε να αγνοήσουμε την DIGITAL OUT 0 και να οδηγήσουμε στο ένα ολοκληρωμένο τις DIGITAL OUT 1 7 και το σήμα IR. Το κόστος αυτής της επιλογής είναι ότι χάνουμε το λιγότερο σημαντικό bit από την έξοδο του FPGA, δηλαδή το λιγότερο σημαντικό bit των ταχυτήτων. Αντί λοιπόν να έχουμε 256 διαφορετικά επίπεδα για τις ταχύτητες, έχουμε 128. Τα επίπεδα αυτά όμως για τον ορισμό της τιμής της ταχύτητας είναι και πάλι παραπάνω από αρκετά. Πρακτικά μειώνεται το βήμα καθορισμού της ταχύτητας από 3.8 mm/sec σε 7.6 mm/sec, διαφορά που είναι πολύ μικρή για να έχει επίδραση στην απόδοση του συστήματος. Σχήμα 6.3 Διάγραμμα συνδέσεων πλακέτας 2 Οι όροι είσοδος και έξοδος χρησιμοποιούνται εδώ ως προς το ολοκληρωμένο. Έτσι οι έξοδοι του Khepera και του FPGA είναι είσοδοι για το ολοκληρωμένο. Το αντίστροφο ισχύει για τις εισόδους του Khepera και του FPGA. 104

110 Επικοινωνία Khepera FPGA Σχήμα 6.4 Πλακέτα για την επικοινωνία Khepera - FPGA Χρησιμοποιώντας αυτά τα ολοκληρωμένα λοιπόν κατασκευάσαμε μια μικρή πλακέτα που συνδέει τα pins των ολοκληρωμένων με κατάλληλους ακροδέκτες έτσι ώστε να μπορούν να συνδεθούν στο Suzaku και στο Khepera. Στο σχήμα 6.3 φαίνεται το διάγραμμα διασυνδέσεων της πλακέτας που κατασκευάσαμε. Οι αντιστοιχίες των ακροδεκτών βρίσκονται στο Παράρτημα Δ. Τέλος, ένα άλλο πρόβλημα που υπάρχει είναι ότι ο παλμός ανάγνωσης (Read Pulse RP) έχει διάρκεια μεταξύ 200 και 300 ns. Έτσι υπάρχει κίνδυνος ένας τέτοιος παλμός να μην γίνει αντιληπτός από το FPGA αν αυτό λειτουργεί στην βασική συχνότητα των 3.69 MHz (περίοδος περίπου 271 ns). Αυτό το πρόβλημα μπορούμε να το λύσουμε είτε χρησιμοποιώντας μεγαλύτερη συχνότητα λειτουργίας για το FPGA, είτε χρησιμοποιώντας δεύτερο ρολόι για την είσοδο του παλμού ανάγνωσης, είτε χρησιμοποιώντας ένα SR Flip Flop στην είσοδο που θα κρατάει την αλλαγή στην τιμή ανάγνωσης μέχρι να γίνει αντιληπτή από το FPGA. Η μεγαλύτερη συχνότητα λειτουργίας δεν ενδείκνυται καθώς απαιτεί τη λειτουργία επιπλέον ειδικών κυκλωμάτων στο FPGA για την αύξηση της συχνότητας (Digital Clock Managers) και οδηγεί και σε μεγαλύτερη κατανάλωση ισχύος. Έτσι επιλέξαμε τον τρόπο με το Flip Flop που είναι και ο πιο απλός. Παρακάτω δίνουμε με βήματα τη διαδικασία επικοινωνίας Khepera FPGA. A. Αποστολή δεδομένων στο FPGA 1. Ο επεξεργαστής του Khepera τοποθετεί τα λιγότερο σημαντικά 4 bits του byte προς μετάδοση στο διάδρομο επέκτασης, γράφοντάς τα στη θέση 32 της μνήμης. 2. Ο επεξεργαστής του Khepera δημιουργεί έναν παλμό στην έξοδο RP διαβάζοντας από τη θέση μνήμης Το FPGA αντιλαμβάνεται τον παλμό RP και διαβάζει τα δεδομένα. 4. Το FPGA απαντάει στέλνοντας ένα σήμα διακοπής στην είσοδο IR. 5. To Khepera αναγνωρίζει το σήμα διακοπής και συνεχίζει στην μεταφορά των επόμενων 4 bits, εφόσον υπάρχουν. 6. Τα βήματα 1 5 επαναλαμβάνονται μέχρι να σταλούν όλα τα δεδομένα στο FPGA. 105

111 Επικοινωνία Khepera FPGA Η σειρά με την οποία αποστέλλονται τα δεδομένα στο FPGΑ είναι: 1. Οι τιμές των 8 αισθητήρων υπερύθρων με τη σειρά: πλάγιο δεξί, δεξί, μπροστά δεξί,...,πλάγιο αριστερά, πίσω αριστερά και πίσω δεξιά. 2. Η επιθυμητή γωνία προς την οποία θέλουμε να προσανατολιστεί το ρομπότ. 3. Ο αριθμός για την εστίαση της κάμερας. 4. Ο αριθμός που δείχνει τη συμπεριφορά που ακολουθεί το ρομπότ. Για τα παραπάνω δεδομένα στέλνονται πρώτα τα λιγότερο σημαντικά και έπειτα τα περισσότερο σημαντικά bits σε ομάδες των τεσσάρων. Σχήμα 6.5 Χρονικό διάγραμμα αποστολής δεδομένων στο FPGA Στο σχήμα 6.5 φαίνεται το χρονικό διάγραμμα για την αποστολή δύο ομάδων δεδομένων των τεσσάρων bit στο FPGA. Σημειώνουμε ότι η είσοδος IRQ επίτηδες κρατιέται στο low από το FPGA μέχρι την λήψη του επόμενου δεδομένου έτσι ώστε να είναι σίγουρο ότι η διακοπή θα γίνει αντιληπτή από το Khepera. Ταυτόχρονα από την πλευρά του Khepera έχει ληφθεί ειδική πρόνοια ώστε αυτή να μην αναγνωρίζεται ως πολλαπλή διακοπή. Ο χρόνος ανάμεσα στην κάθοδο του σήματος IRQ και την επόμενη κάθοδο του RP εξαρτάται από το χρόνο που κάνει ο για να αναγνωρίσει την διακοπή. B. Λήψη δεδομένων από το FPGA 1. Αφού το FPGA ολοκληρώσει τον υπολογισμό των ταχυτήτων τοποθετεί το byte που αντιστοιχεί στην τιμή της πρώτης ταχύτητας στη έξοδο που συνδέεται στις εισόδους DIGITAL IN της κάρτας επέκτασης εισόδωνεξόδων. 2. Στη συνέχεια στέλνει ένα σήμα διακοπής στην είσοδο IR. 3. O επεξεργαστής του Khepera αναγνωρίζει το σήμα διακοπής και διαβάζει τα δεδομένα. 4. Στη συνέχεια απαντάει δημιουργώντας έναν παλμό στην έξοδο RP. 5. To FPGA αντιλαμβάνεται τον παλμό και επαναλαμβάνει τα βήματα 1 4 για τη μεταφορά και της άλλης ταχύτητας. 106

112 Επικοινωνία Khepera FPGA Η σειρά λήψης των ταχυτήτων είναι πρώτα του αριστερού και έπειτα του δεξιού τροχού. Στο σχήμα 6.6 φαίνεται το χρονικό διάγραμμα για τη λήψη των δεδομένων. Ισχύουν οι παρατηρήσεις που έγιναν παραπάνω για το σχήμα 6.5. Η διαδικασία αποστολής των δεδομένων προς το Khepera αρχίζει με κατάλληλο σήμα εντός του FPGA που σηματοδοτεί το τέλος των υπολογισμών. Σχήμα 6.6 Χρονικό διάγραμμα αποστολής δεδομένων στο Khepera Πόσο χρόνο όμως χρειαζόμαστε για τη μεταφορά ενός byte με την παραπάνω διαδικασία; Θα μπορούσαμε να υπολογίσουμε αυτό το χρόνο εάν προγραμματίζαμε το Khepera απευθείας σε γλώσσα assembly και τρέχαμε πάνω σ αυτό μόνο το πρόγραμμά μας, έτσι ώστε να ξέρουμε ακριβώς ποιες εντολές μηχανής εκτελούνται, πόσους κύκλους διαρκεί η καθεμία, καθώς και τι συμβαίνει μόλις ο δεχτεί μία διακοπή. Στην εργασία μας όμως χρησιμοποιήσαμε το Khepera με το βασικό λειτουργικό του σύστημα (BIOS) και για τις διάφορες λειτουργίες χρησιμοποιήσαμε είτε τις συναρτήσεις του λειτουργικού συστήματος είτε τις συναρτήσεις βιβλιοθήκης που παρέχονται από την K Team για τον προγραμματισμό του Khepera σε γλώσσα C. Συνεπώς ο ακριβής υπολογισμός του χρόνου αυτού είναι αδύνατος. Θα επιχειρήσουμε όμως να κάνουμε μια πολύ χοντρική εκτίμηση χειρότερης περίπτωσης. Έστω ότι μεσολαβούν το πολύ 10 κύκλοι ρολογιού από την κάθοδο του σήματος διακοπής μέχρι την αρχή μετάβασης στη ρουτίνα διακοπής. Έστω ακόμα για την μετάβαση στη ρουτίνα διακοπής (αποθήκευση καταχωρητών, program counter, stack pointer κλπ) απαιτούνται 1000 κύκλοι ρολογιού. Η ανάγνωση και η εγγραφή δεδομένων έστω ότι διαρκούν 10 κύκλους μηχανής ακόμα. Έτσι για μια μεταφορά από την πλευρά του Khepera απαιτούνται περίπου 1030 κύκλοι. Από την πλευρά του FPGA απαιτούνται το πολύ 3 κύκλοι ρολογιού. Η περίοδος ρολογιού του Khepera είναι περίπου 63 ns ενώ του FPGA περίπου 271 ns. Έτσι με αυτή την εκτίμηση για μία μεταφορά απαιτούνται 1030*63+3*271=65703 ns ή 66 μsec περίπου. Ο χρόνος αυτός είναι κατά πολύ μικρότερος των 2.5 msec που μεσολαβούν ανάμεσα στην ανάγνωση διαδοχικών αισθητηρίων υπερύθρων. 107

113 Επικοινωνία Khepera FPGA Κλείνοντας θα πρέπει να σημειώσουμε ότι όπως ίσως έγινε προφανές από την παρουσίαση του τρόπου επικοινωνίας, δεν υλοποιήσαμε ένα γενικό πρωτόκολλο επικοινωνίας για τη μεταφορά οποιονδήποτε δεδομένων ανάμεσα στο Khepera και το FPGA αλλά ένα πρωτόκολλο για τη μεταφορά των συγκεκριμένων δεδομένων που θέλουμε, με τη συγκεκριμένη σειρά. Μια γενικότερη υλοποίηση θα απαιτούσε μια επέκταση του παραπάνω πρωτοκόλλου με συγκεκριμένες εντολές, έτσι ώστε να μπορεί το FPGA και το Khepera κάθε φορά να ξέρουν τι είδους δεδομένα είναι αυτά που λαμβάνουν. Κάτι τέτοιο όμως δεν ήταν αναγκαίο για αυτή τη συγκεκριμένη εφαρμογή. Σχήμα 6.7 To Khepera με τo FPGA 108

114 Προγραμματισμός του Khepera 7. Προγραμματισμός του Khepera Από την παρουσίαση που έγινε στα προηγούμενα κεφάλαια είναι πλέον αντιληπτό ότι ο μεγάλος όγκος των υπολογισμών που είναι απαραίτητοι για τον έλεγχο του ρομπότ γίνονται στο FPGA. Υπάρχουν όμως μερικές βασικές λειτουργίες όπως η συλλογή μετρήσεων, η επικοινωνία με το FPGA, ο έλεγχος των κινητήρων και, κυρίως, η εκτίμηση της κατάστασης του ρομπότ και η επιλογή της συμπεριφοράς που πρέπει να εκδηλώσει το ρομπότ στη δεδομένη χρονική στιγμή, οι οποίες γίνονται από το μικροεπεξεργαστή του Khepera. Είναι λοιπόν απαραίτητη η ανάπτυξη κάποιου προγράμματος που θα τρέχει στον και θα εκτελεί τις παραπάνω λειτουργίες. Σε αυτό το κεφάλαιο θα παρουσιάσουμε συνοπτικά μερικά στοιχεία που είναι απαραίτητο να γνωρίζει κάποιος για να μπορέσει να προγραμματίσει εύκολα το ρομπότ και θα αναφερθούμε σύντομα στον κώδικα που αναπτύξαμε. 7.1 BIOS Η πολυπλοκότητα των λειτουργιών του ρομπότ οδήγησε τους δημιουργούς του να αναπτύξουν ένα λογισμικό χαμηλού επιπέδου (BIOS) το οποίο παρέχει στον χρήστη ρουτίνες για την εκτέλεση βασικών λειτουργιών σε ένα υψηλότερο επίπεδο από τον απευθείας προγραμματισμό τους σε γλώσσα μηχανής καθώς και επιπλέον δυνατότητες όπως πολυεπεξεργασία (multitasking), επικοινωνία μεταξύ διεργασιών (tasks), επικοινωνία με άλλους μικροεπεξεργαστές, επεξεργασία συμβολοσειρών κ.ά. Το BIOS είναι οργανωμένο σε μια σειρά από διαχειριστές (managers) καθένας από τους οποίους είναι υπεύθυνος για την εκτέλεση ενός διαφορετικού συνόλου λειτουργιών. Ένα διάγραμμα των διαχειριστών του BIOS και του επιπέδου στο οποίο αυτοί λειτουργούν φαίνεται στο σχήμα 7.1.α. Στη συνέχεια θα περιγράψουμε συνοπτικά το ρόλο κάθε διαχειριστή. Αναλυτικές πληροφορίες υπάρχουν στο εγχειρίδιο του BIOS[5]. ΤΙΜ: Είναι ο διαχειριστής που δίνει στο σύστημα τη δυνατότητα multitasking, δηλαδή τη δυνατότητα να τρέχουν έως 32 διεργασίες «ταυτόχρονα». Επίσης παρέχει συναρτήσεις για τη διαχείριση των καθολικών (global) πόρων του συστήματος, το συγχρονισμό μεταξύ των διεργασιών, καθώς και το συγχρονισμό με εξωτερικά γεγονότα. ΜΟΤ: Είναι ο διαχειριστής που είναι υπεύθυνος για τη λειτουργία των κινητήρων. Παρέχει συναρτήσεις για ρύθμιση της θέσης ή της ταχύτητάς τους, καθώς και για την ρύθμιση των παραμέτρων των PID ελεγκτών που ελέγχουν τους κινητήρες των τροχών. VAR: Ο διαχειριστής αυτός παρέχει συναρτήσεις για μια σειρά από λειτουργίες χαμηλού επιπέδου που δεν εντάσσονται στους υπόλοιπους διαχειριστές, όπως ο έλεγχος των LED, η αποστολή και λήψη δεδομένων 109

115 Προγραμματισμός του Khepera προς και από τις κάρτες επέκτασης μέσω του διαδρόμου επέκτασης, ο χειρισμός των εξωτερικών διακοπών και η επιλογή της ταχύτητας ρολογιού του μικροεπεξεργαστή. Σχήμα 7.1.α Οι διαχειριστές του BIOS του Khepera SENS: Είναι υπεύθυνος για την λήψη μετρήσεων από τους υπέρυθρους αισθητήρες καθώς και από άλλες αναλογικές εισόδους, όπως η είσοδος στην οποία μετριέται η τάση της μπαταρίας του ρομπότ. STR: Ο διαχειριστής αυτός παρέχει μια σειρά από συναρτήσεις για τη διαχείριση συμβολοσειρών (strings) και ειδικότερα για τη μετατροπή ανάμεσα σε διάφορους τρόπους αναπαράστασης των δεδομένων (δυαδικό, δεκαεξαδικό, ASCII). SER: Ελέγχει τις επικοινωνίες μέσω του ασύγχρονου σειριακού διαύλου SCI. COM: Διαχειρίζεται όλα τα κανάλια επικοινωνίας του συστήματος, μεταξύ αυτών το σειριακό, και κανάλια επικοινωνίας με διάφορες κάρτες επέκτασης. MSG: Είναι υπεύθυνος για την επικοινωνία μεταξύ μικροεπεξεργαστών. Ο κάθε διαχειριστής παρέχει μια σειρά από ρουτίνες οι οποίες μπορούν να κληθούν τόσο σε γλώσσα μηχανής του όσο και σε γλώσσα C. Είναι προφανές ότι για λόγους ευκολίας συνήθως επιλέγεται η δεύτερη μέθοδος. 7.2 Τρόποι προγραμματισμού Εξαρχής από την κατασκευή του Khepera υπήρχε η δυνατότητα για προγραμματισμό του μικροεπεξεργαστή του σε γλώσσα μηχανής, απευθείας ή με χρήση του BIOS. Στην πορεία αναπτύχθηκαν και διάφορα άλλα εργαλεία. 110

116 Προγραμματισμός του Khepera Έτσι σήμερα για τον προγραμματισμό του Khepera υπάρχουν οι εξής δυνατότητες: 1. Προγραμματισμός χρησιμοποιώντας τη γλώσσα μηχανής του και τις συναρτήσεις του BIOS. O τρόπος αυτός αν και παρέχει μέγιστο έλεγχο πάνω στο υλικό σπάνια χρησιμοποιείται αποκλειστικά λόγω της πολυπλοκότητας που εμφανίζει η ανάπτυξη προγραμμάτων σε γλώσσα μηχανής, ιδίως σε ένα περιβάλλον με πολυεπεξεργασία. Συνήθως χρησιμοποιείται σε συνδυασμό με τον προγραμματισμό σε υψηλότερο επίπεδο για λειτουργίες που δύσκολα μπορούν να ελεγχθούν σε υψηλότερο επίπεδο, όπως η παραγωγή συγκεκριμένων χρονικών καθυστερήσεων. 2. Προγραμματισμός σε γλώσσα C χρησιμοποιώντας τις βιβλιοθήκες που έχουν αναπτυχθεί από την K Team και παρέχουν συναρτήσεις για τις λειτουργίες του BIOS, καθώς και για μια σειρά από άλλες λειτουργίες. Οι βιβλιοθήκες αυτές παρέχονται δωρεάν από την ιστοσελίδα της K Team μαζί με τον απαραίτητο compiler για τη μετατροπή του κώδικα σε C σε γλώσσα μηχανής εκτελέσιμη από τον Για τον εύκολο προγραμματισμό του Khepera με τη χρήση αυτού του compiler η K Team ανέπτυξε και ένα γραφικό περιβάλλον, το KTProject, το οποίο παρέχεται επίσης ελεύθερα από την ιστοσελίδα της. Το KTProject παρέχει λειτουργίες για την ανάπτυξη και διαχείριση αρχείων πηγαίου κώδικα και για τη μεταφορά των προγραμμάτων στο Khepera. 3. Προγραμματισμός σε γλώσσα C χρησιμοποιώντας το εμπορικό πρόγραμμα Webots. To Webots είναι ένα λογισμικό που ανέπτυξε η Cyberbotics για την προσομοίωση της λειτουργίας πολλών τύπων ρομπότ, πέρα του Khepera. Παρέχει δυνατότητες υψηλά παραμετροποιημένης τρισδιάστατης προσομοίωσης, ενώ το μεγάλο πλεονέκτημα που έχει εάν χρησιμοποιηθεί για την ανάπτυξη κώδικα είναι ότι μπορεί να ελεγχθεί άμεσα με προσομοίωση η σωστή λειτουργία του προγράμματος. Στην εργασία μας χρησιμοποιήσαμε το KTProject, καθώς η μη δωρεάν διάθεση του Webots για παραπάνω από ένα μήνα δεν επέτρεπε τη χρήση του. Ένας μικρός οδηγός χρήσης του KTProject για τον προγραμματισμό του Khepera υπάρχει στο Παράρτημα Α. 7.3 To πρόγραμμα Σε αυτή την παράγραφο θα αναφερθούμε συνοπτικά στο πρόγραμμα που γράψαμε για τον ελεγκτή του Khepera και θα κάνουμε μερικά σχόλια όπου αυτό είναι απαραίτητο. Το πρόγραμμα αποτελείται από τις παρακάτω συναρτήσεις: Συνάρτηση mainloop() Είναι η κύρια συνάρτηση του προγράμματος. Η συνάρτηση αυτή: 111

117 Προγραμματισμός του Khepera α. Διαβάζει τα αισθητήρια υπερύθρων και την κάμερα β. Επεξεργάζεται την εικόνα της κάμερας χρησιμοποιώντας κάποιες άλλες συναρτήσεις που γράψαμε για αυτό το σκοπό για να εντοπίσει τροφή ή θηρευτή και στη συνέχεια για την παραγωγή ενός αριθμού 9 bit που είναι απαραίτητος για την εστίαση γ. Αποφασίζει για την κατάσταση στην οποία βρίσκεται το ρομπότ με βάση ορισμένα κριτήρια και επιλέγει τη συμπεριφορά που πρέπει να ακολουθήσει το ρομπότ θέτοντας την σημαία FLAG όπως αναλύθηκε στο Κεφάλαιο 3 δ. Εκτελεί τις πράξεις για την οδομετρία, έτσι ώστε να γνωρίζει το ρομπότ τη θέση του στην αρένα ε. Μετατρέπει τα δεδομένα που προέκυψαν από την επεξεργασία των αισθητηρίων σε κατάλληλη μορφή και τα στέλνει στο FPGA καλώντας τη συνάρτηση comm() στ. Λαμβάνει την απάντηση από τη συνάρτηση comm() και εφαρμόζει τις ταχύτητες στους τροχούς. Όλες οι παραπάνω λειτουργίες βρίσκονται μέσα σε ένα ατέρμονα βρόχο και εκτελούνται επαναληπτικά. Συνάρτηση comm() H συνάρτηση αυτή αναλαμβάνει την υλοποίηση του πρωτοκόλλου επικοινωνίας με το FPGA από την πλευρά του Khepera. Χωρίζει τα προς αποστολή δεδομένα σε ομάδες των τεσσάρων bit ώστε να μπορούν να αποσταλούν μέσω τις κάρτας επέκτασης εισόδων/εξόδων και στη συνέχεια φροντίζει για την αποστολή τους χρησιμοποιώντας τη μέθοδο χειραψίας μέσω των ακροδεκτών RP και IRQ όπως περιγράφηκε στο Κεφάλαιο 6. Αφού αποσταλούν όλα τα δεδομένα αναμένει διακοπή από το FPGA. Μόλις σταλεί η διακοπή λαμβάνει τις ταχύτητες σε ομάδες των 8 bit χρησιμοποιώντας και πάλι τη χειραψία. Για την αναγνώριση της διακοπής που στέλνει το FPGA στον ακροδέκτη IRQ γίνεται διαρκής εξέταση σε μια καθολική μεταβλητή (polling) η οποία τίθεται από την συνάρτηση εξυπηρέτησης της διακοπής. Αυτό έγινε γιατί οι συναρτήσεις που παρέχουν οι διαχειριστές του Khepera για τον συγχρονισμό με εξωτερική διακοπή (tim_wait_synch(),tim_wait_event()) στην πράξη δεν λειτουργούσαν σωστά. 112

118 Προγραμματισμός του Khepera Συνάρτηση intr() Αυτή η συνάρτηση είναι η ρουτίνα εξυπηρέτησης της διακοπής. O μικροεπεξεργαστής του Khepera μεταβαίνει σε αυτή τη συνάρτηση κάθε φορά που αναγνωρίζει ότι έχει ενεργοποιηθεί η είσοδος εξωτερικής διακοπής IRQ. Η συνάρτηση αυτή απενεργοποιεί τις διακοπές και στη συνέχεια θέτει την καθολική μεταβλητή την οποία αναφέραμε στη συνάρτηση comm(). Οι διακοπές δεν ξαναενεργοποιούνται από τη ρουτίνα εξυπηρέτησης διακοπής, αλλά σε κατάλληλα σημεία της συνάρτησης comm() για να είμαστε σίγουροι ότι δεν θα αναγνωριστεί μία ενεργοποίηση της εισόδου IRQ από το FPGΑ παραπάνω από μία φορές ως διακοπή. Συνάρτηση main() Η συνάρτηση αυτή καλείται στην αρχή της εκτέλεσης του προγράμματος. Αφού αρχικοποιήσει τους διάφορους διαχειριστές του Khepera, προσθέτει τη συνάρτηση mainloop() στη λίστα των ενεργών διεργασιών (task) και ορίζει ότι η ρουτίνα εξυπηρέτησης διακοπής είναι η συνάρτηση intr(). Στη συνέχεια ενεργοποιεί τις διακοπές και τερματίζει. Το πρόγραμμα περιλαμβάνει και μια σειρά από άλλες συναρτήσεις για την επεξεργασία των δεδομένων της κάμερας (subsample() για την υποδειγματοληψία της κάμερας και masc() για την αναγνώριση της τροφής και του θηρευτή) ή για την εκτέλεση μαθηματικών πράξεων ( mean() για την εύρεση της μέσης τιμής των στοιχείων ενός πίνακα, linearmap() για την μετατροπή των τιμών των δεδομένων από ένα σύνολο τιμών σε ένα άλλο κ.ά.) οι οποίες ωστόσο δεν είναι σκόπιμο να αναλυθούν εδώ. Μπορεί εύκολα κάποιος να καταλάβει τη λειτουργία τους με μια ανάγνωση του πηγαίου κώδικα. 113

119 Συμπεράσματα Προτάσεις 8. Συμπεράσματα - Προτάσεις 8.1 Συμπεράσματα Σκοπός της διπλωματικής αυτής εργασίας ήταν η ανάπτυξη ενός αλγορίθμου που θα επιλύει ένα πρόβλημα πλοήγησης του ρομπότ έτσι ώστε να πετυχαίνει τους συγκεκριμένους στόχους που περιγράφηκαν στο Κεφάλαιο 3, και η υλοποίηση αυτού του αλγορίθμου με αποτελεσματικό τρόπο σε ένα FPGA. Το βασικό πρόβλημα που καλούμαστε να επιλύσουμε είναι η πλοήγηση του ρομπότ σε ένα άγνωστο εξ αρχής περιβάλλον. Το ρομπότ πρέπει να καταφέρει να εκτελέσει τις λειτουργίες που απαιτούνται χωρίς να έχει σχεδόν καμία εκ των προτέρων πληροφορία για το περιβάλλον του, αντιδρώντας απλά στα ερεθίσματα που δέχεται από τα αισθητήριά του και τα οποία αφορούν στο περιβάλλον του αλλά και στην κατάσταση στην οποία βρίσκεται. Η προσέγγιση που ακολουθήσαμε βασίστηκε στις ρομποτικές συμπεριφορές και στην ασαφή λογική. Οι ρομποτικές συμπεριφορές μας έδωσαν τη δυνατότητα να αναπτύξουμε σταδιακά το σύστημά μας, προσθέτοντας και ελέγχοντας μία συμπεριφορά τη φορά. Έτσι αναπτύξαμε αρχικά την βασική συμπεριφορά της αποφυγής εμποδίων και στη συνέχεια προσπαθώντας να επιλύσουμε επιμέρους δυσκολίες που εμφανιζόταν κατά την μελέτη του προβλήματος εισαγάγαμε σταδιακά άλλες 4 συμπεριφορές. Το τελικό σύστημα που προέκυψε μπορεί τελικά να εκτελεί σύνθετα σενάρια κίνησης, το καθένα από τα οποία συντίθεται δυναμικά από περισσότερες από μία συμπεριφορές. Η ανυπαρξία εκ των προτέρων πληροφορίας για το περιβάλλον σε συνδυασμό με την αβεβαιότητα που ενυπάρχει στην πληροφορία που αποκομίζεται γι αυτό από τα αισθητήρια του ρομπότ (θόρυβος) καθώς και η μεταβολή του περιβάλλοντος με το χρόνο (κίνηση θηρευτή) είναι στοιχεία που οδηγούν αρκετά φυσικά στην χρήση ασαφών ελεγκτών ως εργαλεία για την υλοποίηση των επιμέρους συμπεριφορών. Η ασαφής λογική μας επιτρέπει να χειριστούμε την αβέβαιη πληροφορία που αντλούμε από το περιβάλλον αρκετά αποτελεσματικότερα απ ότι θα μας επέτρεπε η κλασσική δυαδική λογική. Η δυνατότητα για άμεση μεταφορά της ανθρώπινης εμπειρίας σε κανόνες χρησιμοποιώντας λεκτικές μεταβλητές βοηθά στην ανάπτυξη αποτελεσματικών ελεγκτών μετά και από εκτεταμένες δοκιμές για την επιλογή των επιμέρους παραμέτρων των ελεγκτών. Η σαφής αναπαράσταση της αποθηκευμένης γνώσης του ρομπότ με τη μορφή κανόνων διευκολύνει επίσης την πραγματοποίηση αλλαγών στους ελεγκτές, την προσθήκη νέων κανόνων καθώς και την ολική ή εν μέρει χρήση τους σε μελλοντικές εργασίες, καθώς η λειτουργία τους μπορεί να γίνει εύκολα κατανοητή. 114

120 Συμπεράσματα Προτάσεις Παρά την αποτελεσματικότητα της προσέγγισης ο έλεγχος της πλοήγησης του ρομπότ από ασαφείς ελεγκτές απαιτεί εκτεταμένους υπολογισμούς σε πραγματικό χρόνο. Παρόλο που οι χρονικοί περιορισμοί που θέτει η συγκεκριμένη εφαρμογή μπορεί να μην είναι τόσο αυστηροί ώστε να καθιστούν την υλοποίηση των ασαφών ελεγκτών στο μικροελεγκτή του ρομπότ ή σε ένα προσωπικό υπολογιστή αδύνατη, ωστόσο η υλοποίησή τους σε ένα ξεχωριστό ψηφιακό κύκλωμα απαλλάσσει το μικροελεγκτή από το επιπλέον υπολογιστικό φορτίο δίνοντας τη δυνατότητα να εκτελούνται και άλλοι υπολογισμοί παράλληλα με αυτούς των ασαφών ελεγκτών, ενώ επιτρέπει την παραπέρα επέκταση του συστήματος χρησιμοποιώντας πιο πολύπλοκους ή και επιπλέον ελεγκτές. Ακόμη καθιστά δυνατή τη χρήση του ρομπότ ως αυτόνομου συστήματος χωρίς να απαιτείται σύνδεση με κάποιον εξωτερικό υπολογιστή, σύνδεση που θα ήταν απαραίτητη εάν οι υπολογισμοί για τους ασαφείς ελεγκτές εκτελούνταν σε έναν εξωτερικό υπολογιστή. Η χρήση ενός FPGA για την ανάπτυξη αυτού του εξωτερικού ψηφιακού κυκλώματος δίνει τη δυνατότητα για γρήγορη και μεθοδική σχεδίαση και εύκολο και αποτελεσματικό έλεγχο της λειτουργίας του. Η σχεδίαση του ψηφιακού κυκλώματος έγινε για το FPGA XC2VP4 της εταιρίας Xilinx, καθώς αυτό ήταν το μόνο διαθέσιμο σε πλακέτα μικρού μεγέθους (Suzaku V) που θα μπορούσε στη συνέχεια να τοποθετηθεί πάνω στο ρομπότ Khepera. Κατά τη σχεδίαση ενός ψηφιακού κυκλώματος οι απαιτήσεις για μεγαλύτερη ταχύτητα και μικρότερη επιφάνεια κυκλώματος είναι συνήθως αντικρουόμενες. Έτσι και στην περίπτωσή μας. Δοκιμάστηκαν δύο διαφορετικές αρχιτεκτονικές, μία πλήρως παράλληλη και μια σε μεγάλο βαθμό σειριακή. Η παράλληλη αρχιτεκτονική παρόλο που προσέφερε μεγαλύτερη ταχύτητα, καταλάμβανε μεγάλη επιφάνεια και έτσι δεν ήταν δυνατή η χρήση της για την υλοποίηση όλων των ελεγκτών στο XC2VP4. Εξάλλου οι χρονικοί περιορισμοί που θέτει η εφαρμογή μας είναι σχετικά χαλαροί και μπορούσαν να ικανοποιηθούν και από την σειριακή αρχιτεκτονική, η οποία παράλληλα καταλάμβανε και πολύ μικρότερη επιφάνεια. Γι αυτούς τους λόγους τελικά επιλέχθηκε η σειριακή αρχιτεκτονική. Με αυτή την αρχιτεκτονική και με την υλοποίηση κάποιων ελεγκτών χρησιμοποιώντας lookup tables η τελική υλοποίηση των ελεγκτών στο FPGA είναι πολύ αποτελεσματική όσον αφορά στην επιφάνεια που καταλαμβάνει, αφού όλοι οι ελεγκτές μαζί με το κύκλωμα επικοινωνίας με το ρομπότ καταλαμβάνουν τελικά μόλις το 24% του FPGA. Έτσι για τη συγκεκριμένη εφαρμογή θα μπορούσαμε να χρησιμοποιήσουμε ένα πολύ μικρότερο, και συνεπώς φτηνότερο FPGA. Ενδεικτικά αναφέρουμε ότι ένα XC2VP4 εάν αγοραστεί σε μικρές ποσότητες κοστίζει περίπου 110$, ενώ το XC3S400 της σειράς Spartan 3 της Xilinx, στο οποίο επίσης θα μπορούσε να υλοποιηθεί το συγκεκριμένο κύκλωμα, κοστίζει μόλις 40$. Εάν χρησιμοποιούσαμε τη σειριακή αρχιτεκτονική και για τον ελεγκτή εικονικών εμποδίων, τότε το κύκλωμα θα μπορούσε να υλοποιηθεί και στο XC3S200 που κοστίζει μόλις 14$. Εξυπακούεται ότι οι παραπάνω τιμές σε ποσότητες που απαιτούνται για μαζική παραγωγή είναι πολύ μικρότερες. 115

121 Συμπεράσματα Προτάσεις Παρά τη σε μεγάλο βαθμό σειριακή εκτέλεση των υπολογισμών ένας ασαφής ελεγκτής που υλοποιείται με βάση την αρχιτεκτονική που προτείνουμε πετυχαίνει καλές επιδόσεις και στον τομέα της ταχύτητας. Εάν χρησιμοποιήσουμε για το FPGA ρολόι με συχνότητα 80 MHz, συχνότητα που είναι επιτρεπτή για την υλοποίησή μας, τότε ένας ασαφής ελεγκτής μπορεί να υπολογίζει περίπου 16 εκατομμύρια κανόνες το δευτερόλεπτο, αφού ο υπολογισμός του βαθμού εκπλήρωσης κάθε κανόνα απαιτεί 5 κύκλους ρολογιού. Στην περίπτωσή μας σε έναν ελεγκτή με 8 κανόνες απαιτείται συνολικά λιγότερο από 1 μsec για τον υπολογισμό της σαφούς εξόδου. Η σύγκριση των παραπάνω αριθμών με παλιότερους ελεγκτές της βιβλιογραφίας δείχνει ότι είναι πολύ ικανοποιητικοί. Βέβαια όπως είπαμε και πριν καθώς δεν έχουμε πολύ αυστηρούς χρονικούς περιορισμούς για τους υπολογισμούς χρησιμοποιούμε το ενσωματωμένο ρολόι του Suzaku V συχνότητας 3.69 MHz, οπότε στον προηγούμενο ελεγκτή για τον υπολογισμό της σαφούς εξόδου απαιτούνται περίπου 18 μsec, χρόνος και πάλι πολύ μικρότερος από τα 2.5 msec που μεσολαβούν μεταξύ διαδοχικών λήψεων μετρήσεων από τους υπέρυθρους αισθητήρες. Θα πρέπει να σημειώσουμε επίσης ότι η αρχιτεκτονική που προτείνουμε δεν εισάγει περιορισμούς στον αριθμό των κανόνων, ενώ νέοι κανόνες μπορούν να προστεθούν πολύ εύκολα με την αποθήκευση επιπλέον κωδικών λέξεων στη μνήμη κανόνων. Επιπλέον η αναπαράσταση των κανόνων με σειρές από bit καθιστά δυνατή την απευθείας χρησιμοποίηση τεχνικών γενετικών αλγορίθμων για τη βελτίωση της βάσης κανόνων. Πέραν όμως της σχεδίασης μιας ικανοποιητικής υλοποίησης των ασαφών ελεγκτών στο υλικό ήταν αναγκαία και η εύρεση ενός τρόπου επικοινωνίας ανάμεσα στον επεξεργαστή του Khepera και το FPGA. Έτσι αναπτύξαμε ένα στοιχειώδες πρωτόκολλο επικοινωνίας βασισμένο στη μέθοδο της χειραψίας και χρησιμοποιώντας εισόδους και εξόδους της κάρτας επέκτασης εισόδων/ εξόδων του ρομπότ. Επιπλέον επειδή το ρομπότ και το FPGA χρησιμοποιούν διαφορετικά επίπεδα τάσης για την αναπαράσταση των λογικών σημάτων χρειάστηκε να αναπτύξουμε και μια πλακέτα που αναλαμβάνει τις μετατροπές των σημάτων ανάμεσα στα δύο επίπεδα τάσης. Το τελικό σύστημα που προέκυψε μπορεί να στερεωθεί πάνω στο ρομπότ και έτσι να προκύψει ένα αυτόνομο σύστημα. Οι εκτεταμένες προσομοιώσεις τόσο με τους ασαφείς ελεγκτές που αναπτύχθηκαν στο Matlab όσο και με τα μοντέλα των υλοποιημένων στο FPGA ελεγκτών δείχνουν ότι το σύστημα που προτείνουμε μπορεί να λειτουργήσει ικανοποιητικά και να πετύχει όλους τους στόχους που θέσαμε. Ωστόσο η υλοποίησή μας δεν είναι σε καμία περίπτωση τέλεια. Για το λόγο αυτό θα προτείνουμε μερικές κατευθύνσεις στις οποίες θα μπορούσε να βελτιωθεί το σύστημά μας σε μελλοντικές εργασίες. 116

122 Συμπεράσματα Προτάσεις 8.2 Προτάσεις Η απλούστερη εκδοχή βελτίωσης συνίσταται στην σχεδίαση και προσθήκη νέων συμπεριφορών. Κάτι τέτοιο διευκολύνεται από την αρχιτεκτονική που έχει ο αλγόριθμος. Ιδιαιτέρως χρήσιμη θα ήταν μια συμπεριφορά που θα αναλάμβανε τη χαρτογράφηση του περιβάλλοντος χώρου (mapping) χρησιμοποιώντας τα στοιχεία από τα αισθητήρια του ρομπότ έτσι ώστε να είναι γνωστή σε κάθε στιγμή η θέση των εμποδίων και της τροφής που έχει συναντήσει το ρομπότ κατά την κίνησή του. Η ύπαρξη ενός τέτοιου χάρτη θα καθιστούσε δυνατή τη σχεδίαση της κίνησης του ρομπότ με κριτήρια ελαχιστοποίησης του μήκους της διανυόμενης διαδρομής. Έτσι θα περιοριζόταν η τυχαία περιήγηση και θα εξοικονομούνταν ενέργεια. Είτε σε συνδυασμό με την πρόσθεση νέων συμπεριφορών, όπως του mapping, είτε με μόνο τις παρούσες θα ήταν χρήσιμη η υιοθέτηση μιας διαδικασίας fusion των εξόδων. Η αρχιτεκτονική που εμείς υλοποιήσαμε ενεργοποιεί μια μόνο συμπεριφορά κάθε στιγμή ανάλογα με την κατάσταση και το παρελθόν του ρομπότ. Αν αντίθετα σχεδιάζονταν μια νέα δομή όπου θα ήταν ενεργές όλες οι συμπεριφορές και οι έξοδοί τους θα συνδυάζονταν κατάλληλα ίσως προέκυπτε ένα σύστημα πιο αποτελεσματικό. Ιδιαίτερο μάλιστα ενδιαφέρον θα είχε η χρησιμοποίηση ασαφούς λογικής στη διαδικασία fusion. Μια τέτοια θεώρηση πιθανότατα θα επέτρεπε την απεξάρτηση του συστήματος από μια κλασσική μεταβλητή κατάστασης και την ορθή λειτουργία του ακόμα και σε συνθήκες που δεν υπάρχει απόλυτη βεβαιότητα για το τι έχει ανιχνευθεί στο περιβάλλον του. Σημαντικότερη όμως και από το mapping και μάλλον προαπαιτούμενη για την ορθή υλοποίησή του είναι η ικανότητα του ρομπότ για αυτοπροσδιοριμό της θέσης του. Η οδομετρία βασισμένη στις μετρήσεις των παλμών των κινητήρων έχει σοβαρά σφάλματα και θα πρέπει να βελτιωθεί. Η χρήση πυξίδας θα έδινε στο ρομπότ μια επιπλέον πληροφορία και σε συνδυασμό με την οδομετρία όπως είναι τώρα υλοποιημένη θα επέτρεπε γνώση της κατεύθυνσης κίνησης και άρα καλύτερο προσδιορισμό της θέσης του. Μια τέτοια προσθήκη εκτός από χρήσιμη στο mapping θα έκανε ακριβέστερη και τη λειτουργία κάποιων από τις συμπεριφορές που έχουμε ήδη υλοποιήσει (πχ διατήρηση κατεύθυνσης). Μια ακόμα πιθανή βελτίωση που αφορά το υλικό που χρησιμοποιήθηκε είναι η χρήση μιας κάμερας με την ικανότητα συλλογής ουσιαστικότερης πληροφορίας από το περιβάλλον. Αυτό θα έκανε αποτελεσματικότερη την αναγνώριση θηρευτή, τροφής και εμποδίων και θα επέτρεπε την επανασχεδίαση του αλγορίθμου με είσοδο πολύ αναλυτικότερη πληροφορία για το περιβάλλον του ρομπότ. Στο επίπεδο του υλικού η εύρεση ταχύτερων και πιο αποτελεσματικών υλοποιήσεων ενός ασαφή ελεγκτή αποτελεί πάντα ένα ανοικτό πεδίο έρευνας. Θα ήταν ακόμη συμφέρον να υλοποιηθεί ο ελεγκτής σε ένα FPGA μικρότερου κόστους όπως αναφέραμε παραπάνω. Επίσης θα μπορούσε να κατασκευαστεί 117

123 Συμπεράσματα Προτάσεις μία πλακέτα σύμφωνα με τις προδιαγραφές των καρτών επέκτασης για το Khepera, η οποία θα περιλάμβανε το FPGA και τα κυκλώματα επικοινωνίας με το ρομπότ και έτσι θα μειωνόταν σημαντικά ο όγκος και το βάρος από τα πρόσθετα κυκλώματα και το ακατάλληλο σχήμα της πλακέτας που κατασκευάσαμε και της πλακέτας Suzaku V που φέρει το FPGA. Μια τέτοια πλακέτα θα μπορούσε να χρησιμοποιηθεί και σε άλλες εφαρμογές που απαιτούν την συνεργασία ενός FPGA με το Khepera. Τέλος η λύση που δώσαμε στο πρόβλημα μπορεί να αποτελέσει ένα σημείο εκκίνησης για περαιτέρω βελτιώσεις των συμπεριφορών με χρήση αλγορίθμων βελτιστοποίησης ή τεχνικών εκμάθησης. Όπως αναφέραμε και προηγουμένως η υλοποίηση του ελεγκτή μας προσφέρεται για την χρησιμοποίηση γενετικών αλγορίθμων για την εύρεση μιας καλύτερης βάσης κανόνων. Επίσης η χρησιμοποίηση NeuroFuzzy συστημάτων θα έδινε τη δυνατότητα στο ρομπότ να μαθαίνει από το περιβάλλον του και να τροποποιεί ακόμα και σε πραγματικό χρόνο τη συμπεριφορά του. Η εργασία αυτή είχε ως στόχο την δημιουργία ενός «ευφυούς» ρομπότ, ενός ρομπότ δηλαδή που θα μπορούσε να αντιδρά με έξυπνο τρόπο στα ερεθίσματα που δέχεται από το περιβάλλον του ώστε να φέρει σε πέρας την εργασία που του έχει ανατεθεί. Είναι μια ακόμα σταγόνα στο μεγάλο ποτάμι των προσπαθειών των ερευνητών για την κατασκευή μηχανών με «τεχνητή νοημοσύνη». Το πρόβλημα που αντιμετωπίζεται μπορεί σήμερα να μη φαίνεται τόσο πολύπλοκο. Ωστόσο πριν μερικά χρόνια θα ήταν αδιανόητο ότι η επίλυση ενός τέτοιου προβλήματος θα μπορούσε να αποτελέσει αντικείμενο μιας διπλωματικής εργασίας. Παρά τη μεγάλη πολυπλοκότητα των προβλημάτων που καλείται η επιστήμη να αντιμετωπίσει πιστεύουμε λοιπόν ότι είναι θέμα χρόνου η εξεύρεση των τεχνικών και των εργαλείων για την επίλυσή τους. Σχετικά σύντομα «έξυπνα» ρομπότ θα κυκλοφορούν ανάμεσά μας εκτελώντας μια μεγάλη ποικιλία από εργασίες. Δίνοντάς μας έτσι περισσότερο χρόνο και δυνατότητες για να κάνουμε τη ζωή μας ποιοτικότερη. 118

124 Βιβλιογραφία 9. Βιβλιογραφία 1. R.C. Arkin, Behavior based robotics, The MIT Press, Ι. Θεοχάρης, Aσαφή Συστήματα σημειώσεις μαθήματος, ΑΠΘ, C.v. Altrock, Fuzzy Logic Band I Technologie, Oldenbourg R. Verlag, Khepera User Manual, K Team, Khepera BIOS Manual, K Team, K213 Vision Turret User Manual, K Team, General I/O Turret User Manual, K Team, Khepera 2 Programming Manual, K Team, Khepera bus and turret specifications, K Team, 2000, team.com 10. T. Storm, KiKS User Guide 11. Joanne Walker, Simon Garrett, Myra Wilson, Evolving Controllers for Real Robots: A Survey of Literature, Society of Adaptive Behavior, pp , S. Thongchai, S. Suksakulchai, D. M. Wilkes, and N. Sarkar, Sonar Behavior Based Fuzzy Control for a Mobile Robot, Proceedings of the IEEE Conference on Systems, Man, and Cybernetics, Nashville, Tennessee, October 8 11, Antonio Abreu, Luis Correia, Behavior Based Decision Control in Autonomous Vehicles: A fuzzy Approach using Khepera, FUZZ IEEE 2000 The 9 th IEEE International Conference on Fuzzy Systems, San Antonio, Texas, USA, May 7 10, H. Maaref, C. Barret, Sensor based fuzzy navigation of an autonomous mobile robot in an indoor environment, Elsevier Science Ltd., Paolo Pirjanian and Maja Mataric, Multiple Objective vs. Fuzzy Behavior Coordination, USC Robotics Research Laboratory, University of Southern California, Los Angeles 16. Ulrich Nehmzow, Mobile Robotics: A Practical Introduction, Springer Verlag London Limited, chapters: 1 & 5, Leonid Reznik, Fuzzy Controllers, Newnes,

125 Βιβλιογραφία 18. M. Marzouqi and R. Jarvis, Covert Robotics, Developing Robots for Covert Missions, Monash University, Suzaku V Hardware Manual, Atmark Techno, 2005, techno.com 20. Virtex II Pro and Virtex II Pro X User Guide, Xilinx, 2005, M. Togai and H. Watanabe, An inference engine for real time approximate reasoning: Toward an expert on a chip,ieee Expert,vo1 1., no. 3, pp.55 62, S. H. Huang and J. Y. Lai, A High Speed VLSI Fuzzy Inference Processor for Trapezoid Shaped Membership Functions, Journal of Information Science and Engineering, vol.21, pp , V. Samoladas and L. Petrou, Special purpose architectures for fuzzy logic controllers, Microprocessing and Microprogramming, vol. 40, issue 4, pp , K. Nakamura, N.Sakashita, Y. Nitta, K. Shimomura and T. Tokuda, Fuzzy inference and fuzzy inference processor, IEEE Micro, vol.13,pp , Y. D. Kim and H. Lee Kwang, High speed flexible fuzzy hardware for fuzzy information processing, IEEE Trans. Syst., Man, Cybern. A, vol. 27, pp , M.J. Patyra, J.L. Grantner, K. Koster, Digital fuzzy logic controller: design and implementation, IEEE Trans. Fuzzy Systems, vol. 4,no. 4,pp , I. Baturone, S. Sánchez Solano, A. Barriga, and J. L. Huertas, ʺImplementation of CMOS Fuzzy Controllers as Mixed Signal Integrated Circuitsʺ, IEEE Trans. on Fuzzy Systems, vol. 5, no. 1, pp. 1 19, H. Watanabe, W. Dettloff, and K. Yount, A VLSI fuzzy logic controller with reconfigurable, cascadable architecture, IEEE J. Solid State Circuits, vol. 25, no. 2, pp , Mahmoud, A. Manzoul and D. Jayabharathi, FPGA for fuzzy controllers, IEEE Trans. on Syst.,Man, Cybern., vol. 25, no. 1, pp , D.L. Perry, VHDL Programming by example, McGraw Hill, Trenz JTAG Programmer with Suzaku Boar, Trenz Electronic, 2005, electronic.de 120

126 Παράρτημα Α Παραρτήματα Α. Προγραμματισμός του Khepera με το KTProject Όπως αναφέραμε και στο κεφάλαιο 7 ο πιο εύκολος δωρεάν τρόπος για τον προγραμματισμό του Khepera είναι με τη χρήση του KTProject που παρέχεται δωρεάν από την ιστοσελίδα της K Team. Το KTProject είναι ένα γραφικό περιβάλλον για τη διαχείριση project ανάπτυξης κώδικα σε C βασισμένο στον Source navigator της Redhat. Επιπλέον διαθέτει μια βιβλιοθήκη με συναρτήσεις για τον έλεγχο όλων των λειτουργιών χαμηλού επιπέδου του Khepera και των πιο σημαντικών επεκτάσεών του, όπως την ανάγνωση των αισθητήρων, τον έλεγχο των κινητήρων, τη λήψη εικόνας από την κάμερα K213 και τη διαχείριση των εισόδων και εξόδων της κάρτας επέκτασης εισόδου/ εξόδου. Τέλος περιέχει τον compiler που είναι απαραίτητος για τη μετατροπή των πηγαίων αρχείων που γράφει ο προγραμματιστής σε γλώσσα C σε αρχεία s37 που είναι εκτελέσιμα από τον επεξεργαστή του Khepera και το Tera Term Pro που μπορεί να χρησιμοποιηθεί για την επικοινωνία με το Khepera μέσω της σειριακής θύρας του υπολογιστή και για το «κατέβασμα» των προς εκτέλεση προγραμμάτων στο Khepera. Το KTProject παρέχεται ακόμα σε δοκιμαστική (beta) έκδοση από την K Team και έτσι δεν υπάρχουν ολοκληρωμένα εγχειρίδια που να περιγράφουν τις συναρτήσεις που περιλαμβάνει η βιβλιοθήκη του και τη χρήση του. Αρκετά κατατοπιστικές πληροφορίες μπορεί να βρει ο ενδιαφερόμενος στις συχνές ερωτήσεις και απαντήσεις (FAQ) στην ιστοσελίδα της K Team και στα παραδείγματα που υπάρχουν στο φάκελο <φάκελος εγκατάστασης KTProject>\khepack51\examples. H έλλειψη των απαραίτητων εγχειριδίων μας οδήγησε στην απόφαση να περιλάβουμε σε αυτό το παράρτημα μια σύντομη περιγραφή μιας ενδεικτικής διαδικασίας συγγραφής ενός προγράμματος και μεταφοράς του στο Khepera, Για τα παρακάτω θα υποθέσουμε ότι το KTProject είναι εγκατεστημένο στον κατάλογο C:\Program Files\KTProject. Θα δημιουργήσουμε ένα νέο project που θα προγραμματίζει το Khepera να πραγματοποιεί αποφυγή εμποδίων με τον αλγόριθμο του Braitenberg. Θα τοποθετήσουμε το project αυτό στον κατάλογο C:\KTProject\braitenberg. Με την εκκίνηση του KTProject εμφανίζεται το παράθυρο που φαίνεται στο σχήμα Α.1. Στο παράθυρο αυτό επιλέγουμε Create New Project. Σημειώνουμε σε αυτό το σημείο ότι κάθε φορά που θέλουμε να δημιουργήσουμε καινούριο project θα πρέπει να το κάνουμε από αυτό το παράθυρο και όχι από άλλα παράθυρα όπου 121

127 Παράρτημα Α παρέχεται η δυνατότητα, γιατί δεν θα αντιγραφούν αυτόματα όλα τα αρχεία που είναι απαραίτητα (Makefiles) στον κατάλογο του project μας. Σχήμα Α.1 Αρχικό παράθυρο KTProject Στο παράθυρο που εμφανίζεται στη συνέχεια εισάγουμε το όνομα του project (braiten) και τον κατάλογο που θέλουμε να το τοποθετήσουμε και επιλέγουμε ότι προορίζεται για το Khepera I. Στο ίδιο παράθυρο μπορούμε να προσθέσουμε στο project και τυχόν ήδη έτοιμα αρχεία πηγαίου κώδικα. Σχήμα Α.2 Παράθυρο δημιουργίας νέου project 122

128 Παράρτημα Α Το παράθυρο που ακολουθεί ονομάζεται Symbols και είναι το κεντρικό παράθυρο διαχείρισης των αρχείων του project. Βλέπουμε ότι σε αυτά έχει ήδη προστεθεί το απαραίτητο Makefile. Για να δημιουργήσουμε ένα νέο αρχείο πηγαίου κώδικα ανοίγουμε τον Editor πηγαίνοντας στο μενού Windows. Σχήμα Α.3 Δημιουργία νέου αρχείου πηγαίου κώδικα Σχήμα Α.4 Το αρχείο πηγαίου κώδικα braiten.c 123

129 Παράρτημα Α Στο παράθυρο του Editor ανοίγουμε το αρχείο C:\Program Files\KTProject \khepack51\examples\braiten\braiten.c ή αντιγράφουμε το περιεχόμενό του στον κενό Editor (εικόνα Α.4). Προτιμάμε τη δεύτερη λύση για να μην προστεθεί το αρχείο που ανοίξαμε στο project, ωστόσο το αποτέλεσμα είναι ίδιο και με τους δύο τρόπους γατί το αρχείο που ανοίγουμε στον Editor δεν αντιγράφεται στον κατάλογο του project, απλά προστίθεται στη λίστα με τα αρχεία του project. Στη συνέχεια σώζουμε το αρχείο ως braiten.c στον κατάλογο του project μας (Save As). Αφού έχουμε γράψει πλέον τον πηγαίο μας κώδικα είμαστε έτοιμοι να τον μεταγλωττίσουμε και να τον μεταφέρουμε στο Khepera. Για τη μεταγλώττιση επιλέγουμε Build από το μενού Tools του Editor ή του Symbols. Σχήμα Α.5 Επιλογή του Build για τη μεταγλώττιση του πηγαίου κώδικα Στο παράθυρο που ανοίγει πατάμε το Start. Στον κενό χώρο κάτω από τα πλαίσια εισαγωγής κειμένου εμφανίζονται κάποια πληροφοριακά μηνύματα, τα μηνύματα σφαλμάτων και οι προειδοποιήσεις. 124

130 Παράρτημα Α Σχήμα Α.6 Το παράθυρο για τη μεταγλώττιση, την εμφάνιση των λαθών και τη μεταφορά στο Khepera Σε αυτό το σημείο εάν δεν εμφανιστούν σφάλματα η μετατροπή του πηγαίου αρχείου σε κώδικα εκτελέσιμο από το Khepera έχει ολοκληρωθεί. Εάν κοιτάξουμε στον κατάλογο του project βλέπουμε ότι υπάρχουν τα εξής αρχεία: - Makefile : αρχείο που περιέχει κανόνες για την αυτόματη μεταγλώττιση των αρχείων με τον πηγαίο κώδικα - braiten.proj : το αρχείο του project - braiten.c : ο πηγαίος κώδικας - braiten.o : ο αντικείμενος κώδικας - braiten.s37 : το εκτελέσιμο αρχείο για τον Το αρχείο s37 μπορούμε στη συνέχεια να το κατεβάσουμε στη μνήμη RAM του Khepera με δύο τρόπους: είτε χειροκίνητα, είτε αυτοματοποιημένα μέσω του KTProject. Ανοίγουμε το Khepera και το θέτουμε με τα jumpers σε λειτουργία 1, 2 ή 3 ανάλογα με την ταχύτητα που θέλουμε να μεταφερθεί το αρχείο. Εάν μεταφέρουμε το αρχείο με το KTProject την ταχύτητα αυτή πρέπει να ρυθμίσουμε και στο Makefile όπως θα αναλυθεί παρακάτω. Για τον πρώτο τρόπο ανοίγουμε το πρόγραμμα επικοινωνίας που χρησιμοποιούμε και στέλνουμε στο Khepera την εντολή run sloader και στη συνέχεια το αρχείο braiten.s37, συνήθως μέσα από κάποιο μενού του προγράμματος. Για το δεύτερο τρόπο γράφουμε στο πλαίσιο Build Command του παραπάνω παραθύρου gmake braiten.dwn (ή γενικότερα το όνομα του αρχείου ακολουθούμενο από την επέκταση dwn) και πατάμε Start. Το KTProject θα 125

131 Παράρτημα Α ανοίξει αυτόματα το πρόγραμμα επικοινωνίας και θα μεταφέρει το αρχείο στο Khepera. Η εκτέλεση του προγράμματος θα αρχίσει μόλις τελειώσει η μεταφορά του. Να σημειώσουμε σε αυτό το σημείο ότι το Khepera I δεν διαθέτει μνήμη flash και δεν είναι δυνατή η χρήση της εντολής gmake <όνομα αρχείου>.flash, που προτείνεται στο μήνυμα μετά τη μεταγλώττιση του προγράμματος. Διαθέτει μία μνήμη EEPROM για προγράμματα του χρήστη, η εγγραφή της οποίας όμως δεν μπορεί να γίνει όσο είναι πάνω στο ρομπότ, αλλά χρειάζεται να αφαιρεθεί και να προγραμματιστεί με ειδική συσκευή. Έτσι, δυστυχώς, είναι αναγκαίο κάθε φορά που θέλουμε να τρέξουμε ένα πρόγραμμα να το κατεβάζουμε εκ νέου στη μνήμη RAM του Khepera με τη διαδικασία που περιγράφηκε παραπάνω. Τέλος αξίζει να αναφέρουμε δυο λόγια για το Makefile. Τα Makefiles είναι μια πολύ διαδεδομένη πλέον τακτική που χρησιμοποιείται κατά κύριο λόγο στις διάφορες μορφές του Unix, για την περιγραφή των εξαρτήσεων μεταξύ αρχείων πηγαίου κώδικα και την αυτόματη μεταγλώττιση πολλών τέτοιων αρχείων σύμφωνα με μια σειρά από κανόνες. Κατά τη δημιουργία ενός νέου project το KTProject δημιουργεί αυτόματα ένα Makefile και το τοποθετεί στον κατάλογο του project. Έτσι όταν επιλέγουμε να εκτελεστεί η εντολή make πατώντας το Start στο παράθυρο Build, το πρόγραμμα αναζητεί το Makefile στον κατάλογο του project και μεταγλωττίζει τα αρχεία σύμφωνα με τους κανόνες που περιέχονται σε αυτό. Εάν ο πηγαίος κώδικας που θέλουμε να εκτελέσουμε στο Khepera περιέχεται μόνο σε ένα αρχείο τότε δεν χρειάζεται να κάνουμε καμία τροποποίηση στο Makefile που δημιουργεί αυτόματα το KTProject, με εξαίρεση αυτές που αφορούν στην ταχύτητα μεταφοράς. Αν χωρίζεται όμως σε παραπάνω αρχεία, τότε θα πρέπει να τροποποιήσουμε τους κανόνες και σε αυτή την περίπτωση είναι αναγκαίο να κατανοήσουμε πρώτα μερικά βασικά πράγματα για το πως λειτουργούν οι κανόνες αυτοί. Δεν θα αναλύσουμε σε αυτό το σημείο τη δομή ενός Makefile. Πληροφορίες για αυτό το θέμα μπορεί πολύ εύκολα να βρει ο αναγνώστης με μια αναζήτηση στο διαδίκτυο. Τονίζουμε όμως ότι για να γίνει σωστά η μεταγλώττιση απαιτείται τόσο το Makefile όσο και το αρχείο πηγαίου κώδικα να είναι στον ίδιο φάκελο. Όπως αναφέραμε και παραπάνω στο Makefile πρέπει να ορίσουμε τη σειριακή θύρα και την ταχύτητα μεταφοράς που χρησιμοποιούμε. Εάν ανοίξουμε το Makefile που βρίσκεται στον φάκελο του project με έναν editor (κατά προτίμηση όχι το Notepad) τότε βρίσκουμε τις παρακάτω γραμμές: # Hardware Debug Settings port = COM1 speed = τις οποίες και μπορούμε να τροποποιήσουμε ανάλογα με τις ρυθμίσεις που εμείς χρησιμοποιούμε. 126

132 Παράρτημα Α Τέλος αναφέρουμε για μία ακόμα φορά ότι στον κατάλογο εγκατάστασης του KTProject και στο φάκελο KTerm περιέχεται το πρόγραμμα επικοινωνίας Tera Term Pro που μπορούμε να χρησιμοποιήσουμε για την αποστολή εντολών και τη λήψη δεδομένων από το Khepera, μέσω της σειριακής θύρας και με βάση το πρωτόκολλο επικοινωνίας που περιγράφεται στο εγχειρίδιο χρήσης του ρομπότ. 127

133 Παράρτημα Β Β. Προγραμματισμός του Suzaku-V με το Xilinx ISE Όπως αναφέρθηκε και στο σχετικό με τα FPGA κεφάλαιο, το Suzaku V είναι μια αναπτυξιακή πλακέτα, η οποία εκτός από το FPGA, περιέχει και μια σειρά από άλλα στοιχεία (μνήμες, ελεγκτές δικτύου κλπ) που δημιουργούν ένα σύστημα ικανό να υποστηρίξει ένα λειτουργικό σύστημα Linux, έτσι ώστε να μπορούν να αναπτυχθούν απευθείας εφαρμογές σε υψηλό επίπεδο. Για να λειτουργήσει ο επεξεργαστής PowerPC του FPGA σε συνεργασία με τα εξωτερικά κυκλώματα τις πλακέτας στην προτεινόμενη από την εταιρία κατασκευής εκδοχή υλοποιούνται στο FPGA και μια σειρά από ελεγκτές, όπως ένας ελεγκτής για τις μνήμες ή ελεγκτής UART. Έτσι ο χώρος που είναι διαθέσιμος για υλοποίηση κυκλωμάτων από το χρήστη πάνω στο FPGA περιορίζεται σημαντικά. Σε εφαρμογές λοιπόν που δεν είναι απαραίτητη η χρησιμοποίηση Linux, αλλά θέλουμε απλά να χρησιμοποιήσουμε το FPGA για την υλοποίηση δικών μας κυκλωμάτων, πρέπει όλοι αυτοί οι ελεγκτές να μην υλοποιηθούν. Τα εγχειρίδια χρήσης της πλακέτας παρουσιάζουν μόνο τη διαδικασία προγραμματισμού του FPGA παίρνοντας σαν δεδομένη την ταυτόχρονη υλοποίηση και όλων των ελεγκτών που αναφέρθηκαν παραπάνω. Για το λόγο αυτό περιλαμβάνουμε αυτό το παράρτημα που εξηγεί πως πρέπει να γίνει ο προγραμματισμός του FPGA εάν όλοι οι επιπλέον ελεγκτές και τα εξωτερικά κυκλώματα της πλακέτας μας είναι περιττά. Εφόσον όλα τα εξωτερικά κυκλώματα είναι περιττά θα πρέπει να φροντίσουμε να τα απενεργοποιήσουμε έτσι ώστε να μην προκύψει οποιοδήποτε πρόβλημα λόγω θορύβου ή απρόσεκτης χρήσης των εισόδων/ εξόδων που θα μπορούσε να οδηγήσει ακόμα και στην καταστροφή του FPGA. Για να απενεργοποιήσουμε τα εξωτερικά κυκλώματα πρέπει να δημιουργήσουμε μερικές επιπλέον εξόδους στο κύκλωμα που υλοποιούμε στο FPGA οι οποίες θα συνδέονται στις εισόδους Chip Select των εξωτερικών κυκλωμάτων και θα τα απενεργοποιούν. Στον παρακάτω πίνακα παρουσιάζονται οι ακροδέκτες του FPGA στους οποίους πρέπει να οδηγούνται αυτές οι έξοδοι και οι τιμές που πρέπει να έχουν: Ονομασία σήματος Ακροδέκτης Τιμή RAM_CSn B14 1 FLASH_CEn C5 1 MAC_BE0n C4 1 MAC_BE1n A2 1 BUS_REQ C15 1 Εννοείται πως για τον καθορισμό των ακροδεκτών για όλα τα υπόλοιπα σήματα εισόδου/ εξόδου θα πρέπει να καθοριστούν τα κατάλληλα διαθέσιμα για είσοδο/ έξοδο από το χρήστη pins. Αυτά μπορούν να βρεθούν στο εγχειρίδιο υλικού του Suzaku V. Tέλος η είσοδος ρολογιού θα πρέπει να συνδεθεί στο pin C8, ενώ καλό 128

134 Παράρτημα Β είναι να απενεργοποιηθεί και το LED του χρήστη θέτοντας στο pin Α9 μια έξοδο με τιμή 1. Παρακάτω δίνεται το απόσπασμα του κώδικα VHDL όπου ορίζονται αυτές οι έξοδοι και τίθενται στις κατάλληλες τιμές. H αντιστοιχία με τα κατάλληλα pins θα πρέπει να γίνει είτε τροποποιώντας το κατάλληλο αρχείο περιορισμών με επέκταση.ucf, είτε με το PACE. Σχήμα Β.1 Αναγκαίες έξοδοι της κορυφαίας οντότητας για υλοποίηση στο Suzaku Για τον προγραμματισμό του Suzaku V χωρίς τη χρήση του Power PC και των περιφερειακών του είναι αρκετό το Xilinx ISE και δεν χρειάζεται το Xilinx Platform Studio ή το EDK που αναφέρονται στο εγχειρίδιο χρήσης. Για τα παρακάτω θα υποθέσουμε ότι θέλουμε να προγραμματίσουμε το FPGA έτσι ώστε να υλοποιηθεί ένας αντιστροφέας όπως παρουσιάζεται στο παραπάνω κομμάτι κώδικα. Δημιουργούμε ένα νέο Project με τις παρακάτω παραμέτρους για το FPGA: Device Family Virtex2P Device xc2vp4 Package fg256 Speed Grade 5 129

135 Παράρτημα Β Αφού γράψουμε τον κώδικά μας δημιουργούμε το αρχείο προγραμματισμού κάνοντας διπλό κλικ στο Generate Programming File. Σχήμα B.2 Δημιουργία αρχείου προγραμματισμού Στη συνέχεια δημιουργούμε το αρχείο που θα φορτωθεί στη μνήμη ROM που υπάρχει πάνω στην πλακέτα για την αποθήκευση των bits προγραμματισμού του FPGA (ΤΕ7720). Κάνουμε διπλό κλικ στο Generate PROM,ACE or JTAG File και επιλέγουμε τη δημιουργία αρχείου για μνήμη PROM. 130

136 Παράρτημα Β Σχήμα Β.3 Επιλογή αρχείου τύπου μνήμης PROM Στο επόμενο παράθυρο επιλέγουμε τις default ρυθμίσεις και ορίζουμε το όνομα του αρχείου προγραμματισμού που θέλουμε να δημιουργήσουμε και τον κατάλογο στον οποίο θα αποθηκευτεί. Στην προκείμενη περίπτωση το αρχείο που θα παραχθεί θα είναι το inverter.mcs. Σχήμα Β.4 Καθορισμός του αρχείου που θα παραχθεί Επιλέγουμε τη μνήμη xc18v04 και κάνουμε κλικ στο Add και στη συνέχεια στο Next. Στο επόμενο παράθυρο επίσης κάνουμε κλικ στο Next. 131

137 Παράρτημα Β Σχήμα Β.5 Επιλογή τύπου PROM Στη συνέχεια επιλέγουμε Add Files για να συνδέσουμε τα αρχεία προγραμματισμού που παράχθηκαν από το σχέδιό μας με το αρχείο προγραμματισμού της PROM. Σχήμα Β.6 Συσχετισμός του αρχείου PROM με αρχεία προγραμματισμού Στο παράθυρο που ανοίγει επιλέγουμε το αρχείο.bit του σχεδίου μας και πατάμε Open. 132

138 Παράρτημα Β Σχήμα Β.7 Επιλογή αρχείου προγραμματισμού που θα γραφεί στη μνήμη PROM Στο επόμενο παράθυρο επιλέγουμε No και στο τελικό παράθυρο Finish για να ξεκινήσει η διαδικασία παραγωγής του αρχείου προγραμματισμού της μνήμης. Σχήμα Β.8 Προσθήκη επιπλέον αρχείων Τα παραπάνω screenshots δημιουργήθηκαν σε γερμανική έκδοση των Windows γιʹ αυτό και υπάρχουν γερμανικά στα πλαίσια. Στο κείμενο όπου γίνεται αναφορά χρησιμοποιούνται τα αγγλικά αντίστοιχα. Μετά την παραπάνω διαδικασία το αρχείο προγραμματισμού για την PROM inverter.mcs βρίσκεται πλέον στον κατάλογο που επιλέξαμε. Στον ίδιο κατάλογο πρέπει να αντιγράψουμε και τα αρχεία lbplay2.exe και device.def που βρίσκονται στο CD που παρέχεται μαζί με το Suzaku V. Για να προγραμματίσουμε το FPGA πρέπει αυτό με κάποιο τρόπο να συνδεθεί με τον υπολογιστή. Αυτό μπορεί να γίνει με τον προγραμματιστή JTAG της εταιρίας Trenz Electronic ο οποίος επιτρέπει την σύνδεση της παράλληλης θύρας του υπολογιστή με ακροδέκτες που υποστηρίζουν το πρωτόκολλο JTAG. Πληροφορίες για τον τρόπο σύνδεσης του προγραμματιστή με το Suzaku V υπάρχουν σε σχετικό application note που παρέχει η εταιρία[31]. 133

139 Παράρτημα Β Σχήμα Β.9 Ο προγραμματιστής JTAG της Τrenz Electronic Το Suzaku V διαθέτει 2 σετ ακροδεκτών για προγραμματισμό μέσω του πρωτοκόλλου JTAG. Η πρώτη ομάδα βρίσκεται στον κοννέκτορα 7 (CON7) και συνδέεται απευθείας στο FPGA και η δεύτερη στους πρώτους ακροδέκτες του κοννέκτορα 2 (CON2) και συνδέεται με τη μνήμη PROM. Θα χρησιμοποιήσουμε τους ακροδέκτες του κοννέκτορα 2 για να προγραμματίσουμε τη μνήμη PROM με το αρχείο που δημιουργήσαμε παραπάνω. Από τους ακροδέκτες του προγραμματιστή θα χρησιμοποιήσουμε τους HDR10 όπως προτείνεται. Δυστυχώς δεν μπορεί να γίνει απευθείας σύνδεση των ακροδεκτών του προγραμματιστή με αυτούς του Suzaku Vμε καλωδιοταινία, αλλά πρέπει να γίνει κάποια κατασκευή που θα αντιστοιχεί τους ακροδέκτες του προγραμματιστή στους κατάλληλους ακροδέκτες του Suzaku V. H αντιστοιχία ακροδεκτών φαίνεται στον παραπάνω πίνακα. Η τροφοδοσία του προγραμματιστή γίνεται από το Suzaku V θέτοντας το jumper του προγραμματιστή στη θέση Vref. 134

140 Παράρτημα Β Αφού πραγματοποιήσουμε σωστά τις παραπάνω συνδέσεις και συνδέσουμε το παράλληλο καλώδιο στον προγραμματιστή και στον υπολογιστή, τοποθετούμε ένα jumper στη θέση JP2 του Suzaku V και ανοίγουμε την τροφοδοσία. Στη συνέχεια ανοίγουμε ένα παράθυρο γραμμής εντολών στον υπολογιστή, πληκτρολογούμε lbplay2.exe deb inverter.mcs και περιμένουμε να ολοκληρωθεί ο προγραμματισμός. Εάν ολοκληρωθεί σωστά, όπως μπορούμε να δούμε από το checksum, τότε κλείνουμε την τροφοδοσία και βγάζουμε το jumper στη θέση JP2. Σχήμα Β.10 Μεταφορά του προγράμματος στο Suzaku-V Ο προγραμματισμός του Suzaku V έχει ολοκληρωθεί. 135

141 Παράρτημα Γ Γ. Link for Modelsim Το Link for Modelsim είναι ένα Toolbox του Matlab που παρέχει τη δυνατότητα αμφίδρομης επικοινωνίας ανάμεσα στο Modelsim και το Matlab και κατʹ επέκταση την ενσωμάτωση μοντέλων γραμμένων σε VHDL στο Matlab. Σκοπός αυτού του παραρτήματος δεν είναι να καλύψει αναλυτικά όλες τις παραμέτρους της λειτουργίας του Link for Modelsim, αλλά, παρουσιάζοντας μια απλή υλοποίηση ενός συστήματος με έναν αντιστροφέα, να αποτελέσει ένα γρήγορο οδηγό για χρήση σε μελλοντικές εργασίες. Στο παράδειγμά μας θα φτιάξουμε έναν αντιστροφέα των 8 bit σε VHDL. Στη συνέχεια θα χρησιμοποιήσουμε τη γραμμή εντολών του Matlab για να του δώσουμε είσοδο, να καλέσουμε το Modelsim να τον προσομοιώσει και να δούμε την έξοδό του. Γ.1 Αρχικοποίηση του Link for Modelsim Για τη χρησιμοποίηση του εργαλείου πρέπει να γίνουν αρχικά μερικές βασικές ρυθμίσεις. Στη γραμμή εντολών του Matlab γράφουμε εισάγουμε την εντολή setupmodelsim. Το Matlab μας ρωτάει εάν θέλουμε να εντοπίσει αυτόματα τις εγκατεστημένες εκδόσεις του Modelsim ή να εισάγουμε εμείς τον κατάλογο στον οποίο βρίσκεται ο προσομοιωτής. Εισάγουμε τα αναγκαία στοιχεία: Σχήμα Γ.1.α Κώδικας για την αρχικοποίηση του Modelsim στο Matlab 136

142 Παράρτημα Γ Γ.2 Δημιουργία του μοντέλου στο Simulink Για τις ανάγκες τις προσομοίωσης φτιάχνουμε τον κατάλογο C:\inverter και τον κάνουμε τρέχοντα κατάλογο του Matlab. Σε αυτόν τον κατάλογο θα πρέπει να βρίσκονται όλα τα αρχεία που είναι απαραίτητα κατά την προσομοίωση. Δημιουργούμε το αρχείο πηγαίου κώδικα VHDL inverter.vhd με τον παρακάτω κώδικα: Σχήμα Γ.2.α O πηγαίος κώδικας για τον αντιστροφέα Υπάρχουν 2 βασικοί τρόποι χρησιμοποίησης του Link for Modelsim. Στον πρώτο το Modelsim καλεί συναρτήσεις του Matlab. Στον δεύτερο το Simulink καλεί το Modelsim για την προσομοίωση ενός σχεδίου, που αποτελεί υποσύστημα ενός μοντέλου. Προφανώς εμάς μας χρειάζεται ο δεύτερος τρόπος χρήσης. Ανοίγουμε το Simulink και δημιουργούμε ένα νέο αρχείο. Από τη βιβλιοθήκη Link for Modelsim σύρουμε και εισάγουμε σε αυτό το Block VHDL Cosimulation. Επίσης εισάγουμε blocks για είσοδο και έξοδο από και προς το χώρο εργασίας (Workspace) που βρίσκονται στις κατηγορίες Sources και Sinks αντίστοιχα. Το αρχείο του Simulink σε αυτή τη φάση θα έχει την εικόνα του σχήματος Γ.2.γ. 137

143 Παράρτημα Γ Σχήμα Γ.2.β Τα block του Link for Modelsim για το Simulink Σχήμα Γ.2.γ Τα blocks μετά την τοποθέτηση Στη συνέχεια πρέπει να ρυθμίσουμε τις ιδιότητες των επιμέρους block. Κάνουμε διπλό κλικ πάνω στο block VHDL Cosimulation. 138

144 Παράρτημα Γ Σχήμα Γ.2.δ VHDL Cosimulation Block Καρτέλα ports Στην πρώτη καρτέλα του παραθύρου ορίζουμε τις εισόδους και τις εξόδους του σχεδίου μας που θα προσομοιωθεί στο Modelsim. Για τις εισόδους και τις εξόδους πρέπει να χρησιμοποιηθούν ολόκληρα τα ονόματά τους, περιλαμβάνοντας και το όνομα της οντότητας. Στο πεδίο Output sample time θέτουμε 1 ώστε ο χρόνος αυτός να κληρονομείται από το προηγούμενο block, δηλαδή το block της εισόδου. Η δεύτερη καρτέλα (σχήμα Γ.2.ε) μας επιτρέπει να ορίσουμε τον τρόπο επικοινωνίας του Simulink με το Modelsim. Δίνονται δύο δυνατότητες. Η μία είναι η επικοινωνία με διαμοιρασμό μνήμης RAM και η άλλη είναι μέσω μιας θύρας TCP/IP. Στην έκδοση του Matlab που χρησιμοποιούσαμε (R14) υπήρχε ένα πρόβλημα με τη χρησιμοποίηση κοινής μνήμης (σύμφωνα με τη Mathworks έχει διορθωθεί σε νεότερες εκδόσεις). Γιʹ αυτό απενεργοποιούμε το διαμοιρασμό μνήμης και χρησιμοποιούμε την επικοινωνία μέσω TCP/IP μέσω της (προεπιλεγμένης) θύρας Για την επιλογή μιας άλλης θύρας υπάρχουν οδηγίες στο εγχειρίδιο βοήθειας του Matlab. 139

145 Παράρτημα Γ Σχήμα Γ.2.ε VHDL Cosimulation Block Καρτέλα Comm Στην τρίτη καρτέλα (σχήμα Γ.2.στ) ορίζουμε τα σήματα ρολογιού και αν θέλουμε να είναι θετικής ή αρνητικής αιχμής. Σχήμα Γ.2.στ VHDL Cosimulation Block Καρτέλα Clocks Τέλος στην τέταρτη καρτέλα μπορούμε να ορίσουμε εντολές του Modelsim που θέλουμε να εκτελούνται πριν και μετά την προσομοίωση. 140

146 Παράρτημα Γ Στη συνέχεια κάνουμε διπλό κλικ πάνω στο block εισόδου μεταβλητής από το χώρο εργασίας (Workspace). Αλλάζουμε το όνομα της μεταβλητής σε invin, ορίζουμε τον χρόνο δειγματοληψίας σε 100, απενεργοποιούμε την επιλογή Interpolate data και ορίζουμε ότι η δημιουργία νέων δειγμάτων μετά το τέλος των δεδομένων θα γίνεται κρατώντας την τελική τιμή (Holding Final Value). Σχήμα Γ.2.ζ Ρυθμίσεις μεταβλητής εισόδου Ο χρόνος δειγματοληψίας ορίζει κάθε πότε θα εφαρμόζεται ένα νέο δείγμα της εισόδου στην είσοδο της οντότητας που προσομοιώνεται και ταυτόχρονα ορίζει και την περίοδο του ρολογιού. Οι μονάδες του χρόνου εκφράζονται ως πολλαπλάσιο της βασικής μονάδας χρόνου που έχει οριστεί στο Modelsim. Η προεπιλεγμένη και συνήθης τιμή είναι 1 ns, συνεπώς το παραπάνω 100 σημαίνει ότι το ρολόι θα έχει περίοδο 100 ns και ότι θα εφαρμόζεται ένα δείγμα της εισόδου στην είσοδο του VHDL Cosimulation Block κάθε 100 ns. H επιλογή της συγκράτησης της τελικής τιμής όταν δεν υπάρχουν νέα δείγματα μας εξυπηρετεί όταν έχουμε εισόδους που θέλουμε να μείνουν σταθερές σε όλη τη διάρκεια της προσομοίωσης, η οποία διαρκεί για παραπάνω από 1 χρόνο δειγματοληψίας. Σε αυτή την περίπτωση με αυτή τη ρύθμιση δεν χρειάζεται να ορίσουμε τις τιμές τις εισόδου για t=100,200,300,400 κοκ ns αλλά αρκεί να την ορίσουμε για t=100 ns και στις υπόλοιπες χρονικές στιγμές θα μείνει σταθερή. 141

147 Παράρτημα Γ Σχήμα Γ.2.η Ρυθμίσεις μεταβλητής εξόδου Ανάλογες ρυθμίσεις κάνουμε και για το block εξόδου (σχήμα Γ.2.η). Επιλέγουμε να κληρονομείται ο χρόνος δειγματοληψίας από το προηγούμενο block και να αποθηκεύεται η έξοδος σαν πίνακας και όχι σαν δομή γιατί είναι πιο εύχρηστο σε περίπτωση μονοδιάστατων σημάτων. Ενώνοντας τα επιμέρους block μεταξύ τους το σύστημα παίρνει την τελική του μορφή της εικόνας Γ.2.θ. Στο αρχικό παράθυρο του Simulink ορίζουμε επίσης τον τελικό χρόνο προσομοίωσης σε 500. Αυτός ο χρόνος πάλι μετριέται σε μονάδες χρόνου που ορίζονται από το Modelsim, δηλαδή εδώ σημαίνει 500 ns. Σώζουμε το μοντέλο με το όνομα inverter. Σχήμα Γ.2.θ Το τελικό διάγραμμα του μοντέλου Γ.3 Αρχικοποίηση του Modelsim Για να ανοίξουμε το Modelsim, ενώ βρισκόμαστε στον κατάλογο C:\inverter εισάγουμε στη γραμμή εντολών του Matlab: 142

148 Παράρτημα Γ Η παράμετρος socketsimulink μαζί με έναν αριθμό θύρας που ακολουθεί καθορίζει ποια TCP/IP θύρα θα χρησιμοποιηθεί για την επικοινωνία Simulink και Modelsim. Η θύρα αυτή πρέπει να είναι η ίδια με αυτή που ρυθμίσαμε στο Simulink. Στη συνέχεια μεταβαίνουμε στο Modelsim για να το ετοιμάσουμε για προσομοίωση σε συνεργασία με το Simulink. Αρχικά δημιουργούμε τη βιβλιοθήκη work με τις εντολές vlib work και vmap work work. Στη συνέχεια μεταγλωττίζουμε το αρχείο του πηγαίου κώδικα με την εντολή vcom inverter.vhd. Οι δύο πρώτες εντολές χρειάζεται να εκτελεστούν μόνο την πρώτη φορά που δημιουργούμε την βιβλιοθήκη, ενώ η μεταγλώττιση πρέπει να γίνεται κάθε φορά που αλλάζουμε κάτι στον πηγαίο κώδικα της οντότητας. Τέλος φορτώνουμε το σχέδιο για προσομοίωση με το Simulink με την εντολή vsimulink inverter: Η εντολή αυτή πρέπει να εκτελείται κάθε φορά που φορτώνουμε εκ νέου το Modelsim για προσομοίωση με το Simulink. Γ.4 Είσοδοι, έξοδοι και εκτέλεση προσομοίωσης Οι μεταβλητές που αποτελούν είσοδο στο VHDL cosimulation block πρέπει να έχουν τη μορφή structure με δύο πεδία. Το πρώτο είναι το πεδίο time και το δεύτερο το πεδίο signals. Το πεδίο signals έχει ένα υποπεδίο values. Στο πεδίο time εισάγουμε διάφορες χρονικές στιγμές και στο πεδίο values την τιμή του σήματος στις αντίστοιχες χρονικές στιγμές. Η τιμή του σήματος πρέπει να είναι ένα διάνυσμα από τιμές boolean. 143

149 Παράρτημα Γ Έτσι για να εισάγουμε στον αντιστροφέα τις τιμές και τις χρονικές στιγμές 100 και 300 ns πληκτρολογούμε τις εντολές: Παρατηρούμε ότι οι τιμές εισάγονται αντεστραμμένες. Αυτό οφείλεται στο ότι η είσοδος του αντιστροφέα έχει δηλωθεί ως std_logic_vector(7 downto 0) και έτσι η πρώτη τιμή κάθε σειράς του πεδίου values αντιστοιχεί στο bit7, η δεύτερη στο 6 κοκ. Τέλος για να καλέσουμε το Simulink και να προσομοιώσουμε το σχέδιο εισάγουμε την εντολή sim( inverter,500). Η εντολή sim λέει στο Matlab να τρέξει το μοντέλο του Simulink με όνομα inverter με τελικό χρόνο προσομοίωσης τα 500 (ns). To μήνυμα σφάλματος μπορεί να απαλειφθεί με μια αλλαγή στη μέθοδο που χρησιμοποιεί το Simulink για την προσομοίωση. Στη συνέχεια τυπώνουμε το περιεχόμενο της μεταβλητής invout (βλ. παραπάνω εικόνα). Η μεταβλητή invout περιέχει 5 τιμές εξόδου που αντιστοιχούν στις χρονικές στιγμές ns με βήματα των 100 ns όπως ορίζεται από την περίοδο δειγματοληψίας της εξόδου. Εάν η έξοδος είναι std_logic_vector μήκους 7 το Matlab την εκλαμβάνει αυτόματα ως μη προσημασμένο ακέραιο των 8 bit (unit8). Για να δούμε το δυαδικό ανάλογο χρησιμοποιούμε την συνάρτηση dec2bin(). 144

150 Παράρτημα Γ Το αποτέλεσμα είναι το αναμενόμενο, όπως μπορούμε και να επιβεβαιώσουμε και από τις κυματομορφές που μας δίνει το Modelsim. Σχήμα Γ.4.α Κυματομορφές από τον προσομοίωση του αντιστροφέα Η παραπάνω διαδικασία είναι εύκολο να ενσωματωθεί σε ένα.m αρχείο και να εκτελείται αυτοματοποιημένα. Στην περίπτωσή μας οι παραπάνω εντολές ενσωματώνονται στη συνάρτηση που ελέγχει την κίνηση του ρομπότ και έτσι μπορεί να προσομοιωθεί με τον Kiks η κίνησή του όταν ελέγχεται από τον υλοποιημένο σε VHDL ελεγκτή. 145

151 Παράρτημα Δ Δ. Αντιστοιχίες ακροδεκτών πλακέτας μετατροπής επιπέδων τάσης Παρακάτω φαίνονται το διάγραμμα συνδέσεων και η αντιστοιχία ακροδεκτών της πλακέτας που κατασκευάσαμε για τη μετατροπή των επιπέδων τάσης από 3.3 σε 5 V και αντίστροφα που είναι απαραίτητη για την επικοινωνία ανάμεσα στο Khepera και το FPGA. Σχήμα Δ.1 Διάγραμμα συνδέσεων πλακέτας Ομάδα ακροδεκτών Α Είσοδοι και έξοδοι της κάρτας επέκτασης εισόδων εξόδων του Khepera Αριθμός ακροδέκτη Ονομασία ακροδέκτη στην κάρτα Ε/Ε 1 DIGITAL OUT 0 2 DIGITAL OUT 1 3 DIGITAL OUT 2 4 DIGITAL OUT 3 5 NC 6 RP 7 IRQ 8 DIGITAL IN 1 9 DIGITAL IN 2 10 DIGITAL IN 3 11 DIGITAL IN 4 12 DIGITAL IN 5 13 DIGITAL IN 6 14 DIGITAL IN 7 146

152 Παράρτημα Δ Ομάδα ακροδεκτών B Είσοδοι του FPGA Ονομασία σήματος / Αριθμός ακροδέκτη ενδεικτικός αριθμός ακροδέκτη στην πλακέτα Suzaku V 1 khep_in(0) 2 khep_in(1) 3 khep_in(2) 4 khep_in(3) 5 irq_in 6 irq_out Ομάδα ακροδεκτών C Έξοδοι του FPGA Ονομασία σήματος / Αριθμός ακροδέκτη ενδεικτικός αριθμός ακροδέκτη στην πλακέτα Suzaku V 1 NC 2 khep_out(1) 3 khep_out(2) 4 khep_out(3) 5 khep_out(4) 6 khep_out(5) 7 khep_out(6) 8 khep_out(7) 147

153 Παράρτημα Ε Ε. Πλατφόρμα επέκτασης k213 και ιδιαιτερότητες στον Kiks Όπως αναφέρθηκε χρησιμοποιήσαμε τη γραμμική κάμερα που δέχεται το Khepera σε πειράματα που εκτελέσαμε στον Kiks. Οι ιδιότητές της ήταν αρκετά σημαντικές αφού δίνει στο ρομπότ τη δυνατότητα ανίχνευσης αντικειμένων και εκτίμησης της φωτεινότητας τους σε απόσταση 50cm δηλαδή μια τάξη μεγέθους μεγαλύτερη από εκείνη που έχει το ρομπότ μόνο με τα υπέρυθρα αισθητήρια. Ωστόσο η κάμερα τουλάχιστον όπως την προσομοιώνει ο Kiks αφού για την πραγματική δεν βρήκαμε ανάλογες αναφορές παρουσιάζει ορισμένα χαρακτηριστικά που δυσχεραίνουν τη χρήση της. Η κάμερα επιστρέφει 64 αριθμούς (0 έως 255 δηλαδή 8 bit) που θεωρητικά αντιστοιχούν στις τιμές φωτεινότητας των 64 σημείων του οπτικού πεδίου της κάμερας (εύρους 36 μοιρών)[6]. Ωστόσο αν δούμε τι αποτέλεσμα δίνει η κάμερα όταν «κοιτάει» έναν λευκό τοίχο θα παρατηρήσουμε ότι είναι 64 τιμές παραβολικά διατεταγμένες οι οποίες μάλιστα παρουσιάζουν αρκετό θόρυβο. Έτσι ενώ θα έπρεπε να δίνει μετρήσεις γύρω στο 250 επιστρέφει τιμές από 130 έως 240. Σχήμα Ε.α Θέση του ρομπότ και έξοδος του k213 Λευκός Τοίχος Το πρόβλημα ενός τέτοιου εύρους τιμών φαίνεται περισσότερο στα επόμενα σχήματα όπου η κάμερα «κοιτάει» σε δυο τετράγωνα εμπόδια επιπέδων φωτεινότητας αντίστοιχων της τροφής (180) και του θηρευτή (0). 148

154 Παράρτημα Ε ε2 ε1 1.α 1.β Σχήμα Ε.β Θέση του ρομπότ και έξοδος του k213 Θηρευτής και Τροφή Βλέπουμε λοιπόν ότι υπάρχει διαφοροποίηση ανάμεσα στο τμήμα που φαίνεται ο θηρευτής (1.α) και σε εκείνο που φαίνεται η τροφή (1.β) γεγονός που θα μας επέτρεπε να τοποθετήσουμε ένα κατώφλι (ε1) που να διαχωρίζει τις δύο περιοχές και ένα δεύτερο κατώφλι (ε2) που διαχωρίζει το φωτεινότερο σχήμα, την τροφή από το λευκό περιβάλλον. Εμφανίζεται όμως ένα πολύ σοβαρό πρόβλημα, στα όρια των σχημάτων (θηρευτής ή τροφή) η κάμερα βλέπει «σκιές» (στο σχήμα είναι επισημασμένες με πράσινο), δείγματα δηλαδή που οι τιμές τους παρουσιάζουν μια κλιμάκωση ανάμεσα στη φωτεινότητα του λευκού περιβάλλοντος και εκείνη του σχήματος. Άρα βλέποντας την τροφή δίνει τιμές που θα μπορούσαν να ανήκουν στο λευκό περιβάλλον (πάνω από την ε1), και βλέποντας τον θηρευτή δίνει τιμές οι οποίες θα μπορούσαν να ανήκουν στην τροφή (πάνω από την ε1 ή και πάνω από την ε2). Άρα τα κατώφλια μπορούν να προκαλέσουν σύγχυση αφού το ρομπότ βλέποντας μόνο θηρευτή θα θεωρεί ότι βλέπει θηρευτή και τροφή. Η σύγχυση αυτή επιτείνεται από την παραβολική μορφή που όπως είπαμε έχει η έξοδος της κάμερας για λευκό περιβάλλον αφού κάνει τα εξωτερικά δείγματα παρόλο που προέρχονται από λευκό περιβάλλον να πέφτουν κάτω από την ε2. Για να λυθεί αυτό το πρόβλημα υλοποιήθηκε μια συνάρτηση υποδειγματοληψίας και φιλτραρίσματος που μειώνει το θόρυβο, απαλείφει τις σκιές και παίρνει λιγότερα δείγματα από τα εξωτερικά σημεία του οπτικού πεδίου της κάμερας όπου είναι εντονότερη η παραβολική παραμόρφωση. Η συνάρτηση ονομάζεται subsample και τα αποτελέσματα φαίνονται στα σχήματα που ακολουθούν. 149

155 Παράρτημα Ε Σχήμα Ε.γ Λευκός Τοίχος - Έξοδος του k213 πριν και μετά τη subsample ε2 ε1 Σχήμα Ε.δ Θηρευτής και Τροφή Έξοδος του k213 πριν και μετά τη subsample Όπως φαίνεται και στις δύο περιπτώσεις ο θόρυβος απαλείφεται σημαντικά. Ειδικά στην περίπτωση της τροφής και του θηρευτή καθίσταται πλέον δυνατή η τοποθέτηση κατωφλίων (ε1 και ε2) που να διακρίνουν ποιες τιμές ανήκουν στο θηρευτή, ποιες στην τροφή και ποιες στο λευκό περιβάλλον. Σχήμα Ε.ε Το k213 «βλέπει» το σχήμα λευκό όταν καλύπτεται όλο το οπτικό του πεδίο από αυτό 150

Αναγνώριση Προτύπων. Σημερινό Μάθημα

Αναγνώριση Προτύπων. Σημερινό Μάθημα Αναγνώριση Προτύπων Σημερινό Μάθημα Bias (απόκλιση) και variance (διακύμανση) Ελεύθεροι Παράμετροι Ελεύθεροι Παράμετροι Διαίρεση dataset Μέθοδος holdout Cross Validation Bootstrap Bias (απόκλιση) και variance

Διαβάστε περισσότερα

Αποδεικτικές Διαδικασίες και Μαθηματική Επαγωγή.

Αποδεικτικές Διαδικασίες και Μαθηματική Επαγωγή. Αποδεικτικές Διαδικασίες και Μαθηματική Επαγωγή. Mαθηματικό σύστημα Ένα μαθηματικό σύστημα αποτελείται από αξιώματα, ορισμούς, μη καθορισμένες έννοιες και θεωρήματα. Η Ευκλείδειος γεωμετρία αποτελεί ένα

Διαβάστε περισσότερα

Ας υποθέσουμε ότι ο παίκτης Ι διαλέγει πρώτος την τυχαιοποιημένη στρατηγική (x 1, x 2 ), x 1, x2 0,

Ας υποθέσουμε ότι ο παίκτης Ι διαλέγει πρώτος την τυχαιοποιημένη στρατηγική (x 1, x 2 ), x 1, x2 0, Οικονομικό Πανεπιστήμιο Αθηνών Τμήμα Στατιστικής Εισαγωγή στην Επιχειρησιακή Ερευνα Εαρινό Εξάμηνο 2015 Μ. Ζαζάνης Πρόβλημα 1. Να διατυπώσετε το παρακάτω παίγνιο μηδενικού αθροίσματος ως πρόβλημα γραμμικού

Διαβάστε περισσότερα

ΑΡΧΗ 1ΗΣ ΣΕΛΙΔΑΣ Γ ΤΑΞΗ

ΑΡΧΗ 1ΗΣ ΣΕΛΙΔΑΣ Γ ΤΑΞΗ ΑΡΧΗ 1ΗΣ ΣΕΛΙΔΑΣ ΑΠΟΛΥΤΗΡΙΕΣ ΕΞΕΤΑΣΕΙΣ Σ ΕΝΙΑΙΟΥ ΛΥΚΕΙΟΥ ΔΕΥΤΕΡΑ 12 ΙΟΥΝΙΟΥ 2000 ΕΞΕΤΑΖΟΜΕΝΟ ΜΑΘΗΜΑ ΤΕΧΝΟΛΟΓΙΚΗΣ ΚΑΤΕΥΘΥΝΣΗΣ (ΚΥΚΛΟΣ ΠΛΗΡΟΦΟΡΙΚΗΣ ΚΑΙ ΥΠΗΡΕΣΙΩΝ): ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ

Διαβάστε περισσότερα

Αναγνώριση Προτύπων. Σημερινό Μάθημα

Αναγνώριση Προτύπων. Σημερινό Μάθημα Αναγνώριση Προτύπων Σημερινό Μάθημα Εκτίμηση Πυκνότητας με k NN k NN vs Bayes classifier k NN vs Bayes classifier Ο κανόνας ταξινόμησης του πλησιέστερου γείτονα (k NN) lazy αλγόριθμοι O k NN ως χαλαρός

Διαβάστε περισσότερα

ΣΧΟΛΙΚΟ ΕΤΟΣ ΕΥΘΥΓΡΑΜΜΗ ΟΜΑΛΗ ΚΙΝΗΣΗ ΤΡΙΩΡΗ ΓΡΑΠΤΗ ΕΞΕΤΑΣΗ ΣΤΗ ΦΥΣΙΚΗ A ΛΥΚΕΙΟΥ. Ονοματεπώνυμο Τμήμα

ΣΧΟΛΙΚΟ ΕΤΟΣ ΕΥΘΥΓΡΑΜΜΗ ΟΜΑΛΗ ΚΙΝΗΣΗ ΤΡΙΩΡΗ ΓΡΑΠΤΗ ΕΞΕΤΑΣΗ ΣΤΗ ΦΥΣΙΚΗ A ΛΥΚΕΙΟΥ. Ονοματεπώνυμο Τμήμα Σελίδα 1 ΣΧΟΛΙΚΟ ΕΤΟΣ 2014 2015 ΕΥΘΥΓΡΑΜΜΗ ΟΜΑΛΗ ΚΙΝΗΣΗ ΤΡΙΩΡΗ ΓΡΑΠΤΗ ΕΞΕΤΑΣΗ ΣΤΗ ΦΥΣΙΚΗ A ΛΥΚΕΙΟΥ Ονοματεπώνυμο Τμήμα ΘΕΜΑ Α Οδηγία: Να γράψετε στην κόλλα σας τον αριθμό καθεμιάς από τις παρακάτω ερωτήσεις

Διαβάστε περισσότερα

{ i f i == 0 and p > 0

{ i f i == 0 and p > 0 ΟΙΚΟΝΟΜΙΚΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΑΘΗΝΩΝ - ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΜΕΤΑΠΤΥΧΙΑΚΟ ΠΡΟΓΡΑΜΜΑ ΕΠΙΣΤΗΜΗΣ ΥΠΟΛΟΓΙΣΤΩΝ Σχεδίαση και Ανάλυση Αλγορίθμων Διδάσκων: Ε. Μαρκάκης, Φθινοπωρινό εξάμηνο 014-015 Λύσεις 1ης Σειράς Ασκήσεων

Διαβάστε περισσότερα

ΣΤΟ ΙΑΤΡΕΙΟ. Με την πιστοποίηση του αποκτά πρόσβαση στο περιβάλλον του ιατρού που παρέχει η εφαρμογή.

ΣΤΟ ΙΑΤΡΕΙΟ. Με την πιστοποίηση του αποκτά πρόσβαση στο περιβάλλον του ιατρού που παρέχει η εφαρμογή. ΣΤΟ ΙΑΤΡΕΙΟ Ο ιατρός αφού διαπιστώσει εάν το πρόσωπο που προσέρχεται για εξέταση είναι το ίδιο με αυτό που εικονίζεται στο βιβλιάριο υγείας και ελέγξει ότι είναι ασφαλιστικά ενήμερο (όπως ακριβώς γίνεται

Διαβάστε περισσότερα

ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ. Εαρινό Εξάμηνο

ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ. Εαρινό Εξάμηνο ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΕΠΛ231: Δομές Δεδομένων και Αλγόριθμοι Εαρινό Εξάμηνο 2017-2018 Φροντιστήριο 3 - Λύσεις 1. Εστω ο πίνακας Α = [12, 23, 1, 5, 7, 19, 2, 14]. i. Να δώσετε την κατάσταση

Διαβάστε περισσότερα

Το κράτος είναι φτιαγμένο για τον άνθρωπο και όχι ο άνθρωπος για το κράτος. A. Einstein Πηγή:

Το κράτος είναι φτιαγμένο για τον άνθρωπο και όχι ο άνθρωπος για το κράτος. A. Einstein Πηγή: Ας πούμε και κάτι για τις δύσκολες μέρες που έρχονται Το κράτος είναι φτιαγμένο για τον άνθρωπο και όχι ο άνθρωπος για το κράτος. A. Einstein 1879-1955 Πηγή: http://www.cognosco.gr/gnwmika/ 1 ΚΥΚΛΙΚΟΣ

Διαβάστε περισσότερα

ΣΤΟ ΦΑΡΜΑΚΕΙΟ. Με την πιστοποίηση του έχει πρόσβαση στο περιβάλλον του φαρμακείου που παρέχει η εφαρμογή.

ΣΤΟ ΦΑΡΜΑΚΕΙΟ. Με την πιστοποίηση του έχει πρόσβαση στο περιβάλλον του φαρμακείου που παρέχει η εφαρμογή. ΣΤΟ ΦΑΡΜΑΚΕΙΟ Ο ασθενής έχοντας μαζί του το βιβλιάριο υγείας του και την τυπωμένη συνταγή από τον ιατρό, η οποία αναγράφει τον μοναδικό κωδικό της, πάει στο φαρμακείο. Το φαρμακείο αφού ταυτοποιήσει το

Διαβάστε περισσότερα

ΑΣΕΠ 2000 ΑΣΕΠ 2000 Εμπορική Τράπεζα 1983 Υπουργείο Κοιν. Υπηρ. 1983

ΑΣΕΠ 2000 ΑΣΕΠ 2000 Εμπορική Τράπεζα 1983 Υπουργείο Κοιν. Υπηρ. 1983 20 Φεβρουαρίου 2010 ΑΣΕΠ 2000 1. Η δεξαμενή βενζίνης ενός πρατηρίου υγρών καυσίμων είναι γεμάτη κατά τα 8/9. Κατά τη διάρκεια μιας εβδομάδας το πρατήριο διέθεσε τα 3/4 της βενζίνης αυτής και έμειναν 4000

Διαβάστε περισσότερα

Αναγνώριση Προτύπων. Σήμερα! Λόγος Πιθανοφάνειας Πιθανότητα Λάθους Κόστος Ρίσκο Bayes Ελάχιστη πιθανότητα λάθους για πολλές κλάσεις

Αναγνώριση Προτύπων. Σήμερα! Λόγος Πιθανοφάνειας Πιθανότητα Λάθους Κόστος Ρίσκο Bayes Ελάχιστη πιθανότητα λάθους για πολλές κλάσεις Αναγνώριση Προτύπων Σήμερα! Λόγος Πιθανοφάνειας Πιθανότητα Λάθους Πιθανότητα Λάθους Κόστος Ρίσκο Bayes Ελάχιστη πιθανότητα λάθους για πολλές κλάσεις 1 Λόγος Πιθανοφάνειας Ας υποθέσουμε ότι θέλουμε να ταξινομήσουμε

Διαβάστε περισσότερα

ΠΑΝΕΠΙΣΤΗΜΙΑΚΑ ΦΡΟΝΤΙΣΤΗΡΙΑ ΚΟΛΛΙΝΤΖΑ ΜΑΘΗΜΑ: ΟΙΚΟΝΟΜΙΚΗ ΘΕΩΡΙΑ

ΠΑΝΕΠΙΣΤΗΜΙΑΚΑ ΦΡΟΝΤΙΣΤΗΡΙΑ ΚΟΛΛΙΝΤΖΑ ΜΑΘΗΜΑ: ΟΙΚΟΝΟΜΙΚΗ ΘΕΩΡΙΑ ΜΑΘΗΜΑ: ΟΙΚΟΝΟΜΙΚΗ ΘΕΩΡΙΑ Την ευθύνη του εκπαιδευτικού υλικού έχει ο επιστημονικός συνεργάτης των Πανεπιστημιακών Φροντιστηρίων «ΚOΛΛΙΝΤΖΑ», οικονομολόγος συγγραφέας θεμάτων ΑΣΕΠ, Παναγιώτης Βεργούρος.

Διαβάστε περισσότερα

Αναγνώριση Προτύπων. Σημερινό Μάθημα

Αναγνώριση Προτύπων. Σημερινό Μάθημα Αναγνώριση Προτύπων Σημερινό Μάθημα Μη Παραμετρικός Υπολογισμός πυκνότητας με εκτίμηση Ιστόγραμμα Παράθυρα Parzen Εξομαλυμένη Kernel Ασκήσεις 1 Μη Παραμετρικός Υπολογισμός πυκνότητας με εκτίμηση Κατά τη

Διαβάστε περισσότερα

ΜΑΘΗΜΑ: ΟΙΚΟΝΟΜΙΚΗ ΘΕΩΡΙΑ

ΜΑΘΗΜΑ: ΟΙΚΟΝΟΜΙΚΗ ΘΕΩΡΙΑ ΜΑΘΗΜΑ: ΟΙΚΟΝΟΜΙΚΗ ΘΕΩΡΙΑ Tα Πανεπιστημιακά Φροντιστήρια «ΚΟΛΛΙΝΤΖΑ» προετοιμάζοντας σε ολιγομελείς ομίλους τους υποψήφιους για τον επικείμενο διαγωνισμό του Υπουργείου Οικονομικών, με κορυφαίο επιτελείο

Διαβάστε περισσότερα

ΤΑΞΙΝΟΜΗΣΗ ΟΡΓΑΝΙΣΜΩΝ

ΤΑΞΙΝΟΜΗΣΗ ΟΡΓΑΝΙΣΜΩΝ ΦΥΛΛΟ ΕΡΓΑΣΙΑΣ 1α ΤΑΞΙΝΟΜΗΣΗ ΟΡΓΑΝΙΣΜΩΝ Οι επιστήμονες ταξινομούν τους οργανισμούς σε ομάδες ανάλογα με τα κοινά τους χαρακτηριστικά. Τα πρώτα συστήματα ταξινόμησης βασιζόταν αποκλειστικά στα μορφολογικά

Διαβάστε περισσότερα

ΨΗΦΙΑΚΑ ΗΛΕΚΤΡΟΝΙΚΑ Σχεδίαση Λογικών Κυκλωμάτων

ΨΗΦΙΑΚΑ ΗΛΕΚΤΡΟΝΙΚΑ Σχεδίαση Λογικών Κυκλωμάτων ΨΗΦΙΑΚΑ ΗΛΕΚΤΡΟΝΙΚΑ Σχεδίαση Λογικών Κυκλωμάτων Γιάννης Λιαπέρδος [gliaperd@teikal.gr] Μάρτιος 2012 1 Ηλεκτρονικά Ελεγχόμενοι ιακόπτες Για την υλοποίηση των λογικών κυκλωμάτων χρησιμοποιούνται ηλεκτρονικά

Διαβάστε περισσότερα

Οι γέφυρες του ποταμού... Pregel (Konigsberg)

Οι γέφυρες του ποταμού... Pregel (Konigsberg) Οι γέφυρες του ποταμού... Pregel (Konigsberg) Β Δ Β Δ Γ Γ Κύκλος του Euler (Euler cycle) είναι κύκλος σε γράφημα Γ που περιέχει κάθε κορυφή του γραφήματος, και κάθε ακμή αυτού ακριβώς μία φορά. Για γράφημα

Διαβάστε περισσότερα

Μονάδες 5 1.2.α. Να γράψετε στο τετράδιό σας τον παρακάτω πίνακα σωστά συµπληρωµένο.

Μονάδες 5 1.2.α. Να γράψετε στο τετράδιό σας τον παρακάτω πίνακα σωστά συµπληρωµένο. ΑΡΧΗ 1ΗΣ ΣΕΛΙ ΑΣ Γ ΤΑΞΗ ΠΡΟΑΓΩΓΙΚΕΣ ΕΞΕΤΑΣΕΙΣ Γ ΤΑΞΗΣ ΕΝΙΑΙΟΥ ΛΥΚΕΙΟΥ ΕΥΤΕΡΑ 12 ΙΟΥΝΙΟΥ 2000 ΕΞΕΤΑΖΟΜΕΝΟ ΜΑΘΗΜΑ ΤΕΧΝΟΛΟΓΙΚΗΣ ΚΑΤΕΥΘΥΝΣΗΣ (ΚΥΚΛΟΣ ΤΕΧΝΟΛΟΓΙΑΣ ΚΑΙ ΠΑΡΑΓΩΓΗΣ): ΧΗΜΕΙΑ - ΒΙΟΧΗΜΕΙΑ ΣΥΝΟΛΟ ΣΕΛΙ

Διαβάστε περισσότερα

ΑΠΟΛΥΤΗΡΙΕΣ ΕΞΕΤΑΣΕΙΣ Γ ΤΑΞΗΣ ΗΜΕΡΗΣΙΟΥ ΓΕΝΙΚΟΥ ΛΥΚΕΙΟΥ ΕΞΕΤΑΖΟΜΕΝΟ ΜΑΘΗΜΑ: ΑΡΧΕΣ ΟΙΚΟΝΟΜΙΚΗΣ ΘΕΩΡΙΑΣ ΜΑΘΗΜΑ ΕΠΙΛΟΓΗΣ Γ ΛΥΚΕΙΟΥ

ΑΠΟΛΥΤΗΡΙΕΣ ΕΞΕΤΑΣΕΙΣ Γ ΤΑΞΗΣ ΗΜΕΡΗΣΙΟΥ ΓΕΝΙΚΟΥ ΛΥΚΕΙΟΥ ΕΞΕΤΑΖΟΜΕΝΟ ΜΑΘΗΜΑ: ΑΡΧΕΣ ΟΙΚΟΝΟΜΙΚΗΣ ΘΕΩΡΙΑΣ ΜΑΘΗΜΑ ΕΠΙΛΟΓΗΣ Γ ΛΥΚΕΙΟΥ ΑΠΟΛΥΤΗΡΙΕΣ ΕΞΕΤΑΣΕΙΣ Γ ΤΑΞΗΣ ΗΜΕΡΗΣΙΟΥ ΓΕΝΙΚΟΥ ΛΥΚΕΙΟΥ ΕΞΕΤΑΖΟΜΕΝΟ ΜΑΘΗΜΑ: ΑΡΧΕΣ ΟΙΚΟΝΟΜΙΚΗΣ ΘΕΩΡΙΑΣ ΜΑΘΗΜΑ ΕΠΙΛΟΓΗΣ Γ ΛΥΚΕΙΟΥ ΗΜΕΡΟΜΗΝΙΑ: ΕΠΩΝΥΜΟ: ΟΝΟΜΑ: ΟΜΑΔΑ Α Για τις προτάσεις Α1 μέχρι και Α6 να

Διαβάστε περισσότερα

ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ. Εαρινό Εξάμηνο

ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ. Εαρινό Εξάμηνο ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΕΠΛ231: Δομές Δεδομένων και Αλγόριθμοι Εαρινό Εξάμηνο 2017-2018 Φροντιστήριο 3 1. Εστω η στοίβα S και ο παρακάτω αλγόριθμος επεξεργασίας της. Να καταγράψετε την κατάσταση

Διαβάστε περισσότερα

Ταξινόμηση των μοντέλων διασποράς ατμοσφαιρικών ρύπων βασισμένη σε μαθηματικά κριτήρια.

Ταξινόμηση των μοντέλων διασποράς ατμοσφαιρικών ρύπων βασισμένη σε μαθηματικά κριτήρια. ΠΡΟΤΕΙΝΟΜΕΝΑ ΘΕΜΑΤΑ Ταξινόμηη των μοντέλων διαποράς ατμοφαιρικών ρύπων βαιμένη ε μαθηματικά κριτήρια. Μοντέλο Ελεριανά μοντέλα (Elerian) Λαγκρατζιανά μοντέλα (Lagrangian) Επιπρόθετος διαχωριμός Μοντέλα

Διαβάστε περισσότερα

Εφαρμογές στην κίνηση Brown

Εφαρμογές στην κίνηση Brown 13 Εφαρμογές στην κίνηση Brown Σε αυτό το κεφάλαιο θέλουμε να κάνουμε για την πολυδιάστατη κίνηση Brown κάτι ανάλογο με αυτό που κάναμε στην Παράγραφο 7.2 για τη μονοδιάστατη κίνηση Brown. Δηλαδή να μελετήσουμε

Διαβάστε περισσότερα

HY 280. θεμελιακές έννοιες της επιστήμης του υπολογισμού ΑΣΚΗΣΕΙΣ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΡΗΤΗΣ ΤΜΗΜΑ ΕΠΙΣΤΗΜΗΣ ΥΠΟΛΟΓΙΣΤΩΝ. Γεώργιος Φρ.

HY 280. θεμελιακές έννοιες της επιστήμης του υπολογισμού ΑΣΚΗΣΕΙΣ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΡΗΤΗΣ ΤΜΗΜΑ ΕΠΙΣΤΗΜΗΣ ΥΠΟΛΟΓΙΣΤΩΝ. Γεώργιος Φρ. HY 280 «ΘΕΩΡΙΑ ΥΠΟΛΟΓΙΣΜΟΥ» θεμελικές έννοιες της επιστήμης του υπολογισμού ΑΣΚΗΣΕΙΣ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΡΗΤΗΣ ΤΜΗΜΑ ΕΠΙΣΤΗΜΗΣ ΥΠΟΛΟΓΙΣΤΩΝ Γεώργιος Φρ. Γεωργκόπουλος μέρος Α Εισγωγή, κι η σική θεωρί των πεπερσμένων

Διαβάστε περισσότερα

Ψηφιακή Εικόνα. Σημερινό μάθημα!

Ψηφιακή Εικόνα. Σημερινό μάθημα! Ψηφιακή Εικόνα Σημερινό μάθημα! Ψηφιακή Εικόνα Αναλογική εικόνα Ψηφιοποίηση (digitalization) Δειγματοληψία Κβαντισμός Δυαδικές δ έ (Binary) εικόνες Ψηφιακή εικόνα & οθόνη Η/Υ 1 Ψηφιακή Εικόνα Μια ακίνητη

Διαβάστε περισσότερα

Η ανισότητα α β α±β α + β με α, β C και η χρήση της στην εύρεση ακροτάτων.

Η ανισότητα α β α±β α + β με α, β C και η χρήση της στην εύρεση ακροτάτων. A A N A B P Y T A Άρθρο στους Μιγαδικούς Αριθμούς 9 5 0 Η ανισότητα α β α±β α + β με α, β C και η χρήση της στην εύρεση ακροτάτων. Δρ. Νίκος Σωτηρόπουλος, Μαθηματικός Εισαγωγή Το άρθρο αυτό γράφεται με

Διαβάστε περισσότερα

Eισηγητής: Μουσουλή Μαρία

Eισηγητής: Μουσουλή Μαρία Eισηγητής: Μουσουλή Μαρία Κλασικός Αθλητισμός Δρόμοι : Μεσαίες και μεγάλες αποστάσεις Ταχύτητες Σκυταλοδρομίες Δρόμοι με εμπόδια Δρόμοι Μεσαίων και Μεγάλων αποστάσεων Στην αρχαία εποχή ο δρόμος που είχε

Διαβάστε περισσότερα

τεσσάρων βάσεων δεδομένων που θα αντιστοιχούν στους συνδρομητές

τεσσάρων βάσεων δεδομένων που θα αντιστοιχούν στους συνδρομητές Σ Υ Π Τ Μ Α 8 Ιουνίου 2010 Άσκηση 1 Μια εταιρία τηλεφωνίας προσπαθεί να βρει πού θα τοποθετήσει τις συνιστώσες τηλεφωνικού καταλόγου που θα εξυπηρετούν τους συνδρομητές της. Η εταιρία εξυπηρετεί κατά βάση

Διαβάστε περισσότερα

Επίλυση ειδικών μορφών ΣΔΕ

Επίλυση ειδικών μορφών ΣΔΕ 15 Επίλυση ειδικών μορφών ΣΔΕ Σε αυτό το κεφάλαιο θα δούμε κάποιες ειδικές μορφές ΣΔΕ για τις οποίες υπάρχει μέθοδος επίλυσης. Περισσότερες μπορεί να δει κανείς στο Kloeden and Plaen (199), 4.-4.4. Θα

Διαβάστε περισσότερα

Αλγόριθμοι & Βελτιστοποίηση

Αλγόριθμοι & Βελτιστοποίηση Αλγόριθμοι & Βελτιστοποίηση ΠΜΣ/ΕΤΥ: Μεταπτυχιακό Μάθημα 8η Ενότητα: Γραμμικός Προγραμματισμός ως Υπορουτίνα για Επίλυση Προβλημάτων Χρήστος Ζαρολιάγκης (zaro@ceid.upatras.gr) Σπύρος Κοντογιάννης (kontog@cs.uoi.gr)

Διαβάστε περισσότερα

Προτεινόμενα θέματα. στο μάθημα. Αρχές οργάνωσης και διοίκησης επιχειρήσεων. ΟΜΑΔΑ Α: Ερωτήσεις Σωστού Λάθους.

Προτεινόμενα θέματα. στο μάθημα. Αρχές οργάνωσης και διοίκησης επιχειρήσεων. ΟΜΑΔΑ Α: Ερωτήσεις Σωστού Λάθους. Προτεινόμενα θέματα στο μάθημα Αρχές οργάνωσης και διοίκησης επιχειρήσεων ΟΜΑΔΑ Α: Ερωτήσεις Σωστού Λάθους Στις παρακάτω προτάσεις να γράψετε δίπλα στον αριθμό της καθεμιάς τη λέξη Σωστό αν κρίνετε ότι

Διαβάστε περισσότερα

ΜΑΘΗΜΑ: ΕΜΠΟΡΙΚΟ ΔΙΚΑΙΟ

ΜΑΘΗΜΑ: ΕΜΠΟΡΙΚΟ ΔΙΚΑΙΟ ΜΑΘΗΜΑ: ΕΜΠΟΡΙΚΟ ΔΙΚΑΙΟ Tα Πανεπιστημιακά Φροντιστήρια «ΚΟΛΛΙΝΤΖΑ» προετοιμάζοντας σε ολιγομελείς ομίλους τους υποψήφιους για τον επικείμενο διαγωνισμό του Υπουργείου Οικονομικών, με κορυφαίο επιτελείο

Διαβάστε περισσότερα

Εργαστηριακή Άσκηση Θερμομόρφωση (Thermoforming)

Εργαστηριακή Άσκηση Θερμομόρφωση (Thermoforming) Σελίδα 1 Πανεπιστήμιο Κύπρου Τμήμα Μηχανικών Μηχανολογίας και Κατασκευαστικής ΜΜΚ 452: Μηχανικές Ιδιότητες και Κατεργασία Πολυμερών Εργαστηριακή Άσκηση Θερμομόρφωση (Thermoforming) Σελίδα 2 Εισαγωγή: Η

Διαβάστε περισσότερα

CSE.UOI : Μεταπτυχιακό Μάθημα

CSE.UOI : Μεταπτυχιακό Μάθημα Θέματα Αλγορίθμων Αλγόριθμοι και Εφαρμογές στον Πραγματικό Κόσμο CSE.UOI : Μεταπτυχιακό Μάθημα 10η Ενότητα: Χρονικά Εξελισσόμενες ικτυακές Ροές Σπύρος Κοντογιάννης kntg@cse.ui.gr Τμήμα Μηχανικών Η/Υ &

Διαβάστε περισσότερα

Ολοκληρωμένη Χωρική Ανάπτυξη. Ειδική Υπηρεσία Στρατηγικής, Σχεδιασμού Και Αξιολόγησης (ΕΥΣΣΑ) Μονάδα Α Στρατηγικής και Παρακολούθησης Πολιτικών

Ολοκληρωμένη Χωρική Ανάπτυξη. Ειδική Υπηρεσία Στρατηγικής, Σχεδιασμού Και Αξιολόγησης (ΕΥΣΣΑ) Μονάδα Α Στρατηγικής και Παρακολούθησης Πολιτικών Ολοκληρωμένη Χωρική Ανάπτυξη Ειδική Υπηρεσία Στρατηγικής, Σχεδιασμού Και Αξιολόγησης (ΕΥΣΣΑ) Μονάδα Α Στρατηγικής και Παρακολούθησης Πολιτικών Ξάνθη, 12 Μαΐου 2015 Χωρική Συνοχή σύνολο αρχών για την αρμονική,

Διαβάστε περισσότερα

Εξαναγκασμένες ταλαντώσεις, Ιδιοτιμές με πολλαπλότητα, Εκθετικά πινάκων. 9 Απριλίου 2013, Βόλος

Εξαναγκασμένες ταλαντώσεις, Ιδιοτιμές με πολλαπλότητα, Εκθετικά πινάκων. 9 Απριλίου 2013, Βόλος ιαφορικές Εξισώσεις Εξαναγκασμένες ταλαντώσεις, Ιδιοτιμές με πολλαπλότητα, Ατελείς ιδιοτιμές Εκθετικά πινάκων Μανόλης Βάβαλης Τμήμα Μηχανικών Η/Υ Τηλεπικοινωνιών και ικτύων Πανεπιστήμιο Θεσσαλίας 9 Απριλίου

Διαβάστε περισσότερα

Δήμος Σωτήριος Υ.Δ. Εργαστήριο Λογικής & Επιστήμης Υπολογιστών. Τομέας Τεχνολογίας Πληροφορικής & Υπολογιστών Σ.Η.Μ.Μ.Υ. Ε.Μ.Π.

Δήμος Σωτήριος Υ.Δ. Εργαστήριο Λογικής & Επιστήμης Υπολογιστών. Τομέας Τεχνολογίας Πληροφορικής & Υπολογιστών Σ.Η.Μ.Μ.Υ. Ε.Μ.Π. Δήμος Σωτήριος Υ.Δ. Εργαστήριο Λογικής & Επιστήμης Υπολογιστών Τομέας Τεχνολογίας Πληροφορικής & Υπολογιστών Σ.Η.Μ.Μ.Υ. Ε.Μ.Π. Θεωρία Παιγνίων (;) αυτά είναι video παίγνια...... αυτά δεν είναι θεωρία παιγνίων

Διαβάστε περισσότερα

Επίλυση δικτύων διανομής

Επίλυση δικτύων διανομής ΑστικάΥδραυλικάΈργα Υδρεύσεις Επίλυση δικτύων διανομής Δημήτρης Κουτσογιάννης & Ανδρέας Ευστρατιάδης Τομέας Υδατικών Πόρων Εθνικό Μετσόβιο Πολυτεχνείο Διατύπωση του προβλήματος Δεδομένου ενός δικτύου αγωγών

Διαβάστε περισσότερα

ΜΙΚΡΟΟΙΚΟΝΟΜΙΚΗ Η ΚΑΤΑΝΑΛΩΤΙΚΗ ΑΠΟΦΑΣΗ. Άσκηση με θέμα τη μεγιστοποίηση της χρησιμότητας του καταναλωτή

ΜΙΚΡΟΟΙΚΟΝΟΜΙΚΗ Η ΚΑΤΑΝΑΛΩΤΙΚΗ ΑΠΟΦΑΣΗ. Άσκηση με θέμα τη μεγιστοποίηση της χρησιμότητας του καταναλωτή ΤΕΧΝΟΛΟΓΙΚΟ ΕΚΠΑΙΔΕΥΤΙΚΟ ΙΔΡΥΜΑ ΙΟΝΙΩΝ ΝΗΣΩΝ ΣΧΟΛΗ ΔΙΟΙΚΗΣΗΣ ΚΑΙ ΟΙΚΟΝΟΜΙΑΣ ΤΜΗΜΑ ΔΙΟΙΚΗΣΗΣ ΕΠΙΧΕΙΡΗΣΕΩΝ ΕΙΣΑΓΩΓΙΚΗ ΚΑΤΕΥΘΥΝΣΗ: ΔΙΟΙΚΗΣΗ ΕΠΙΧΕΙΡΗΣΕΩΝ ΑΚΑΔΗΜΑΪΚΟ ΕΤΟΣ 07 08 ΛΕΥΚΑΔΑ ΜΙΚΡΟΟΙΚΟΝΟΜΙΚΗ Η ΚΑΤΑΝΑΛΩΤΙΚΗ

Διαβάστε περισσότερα

Εισαγωγικά. 1.1 Η σ-αλγεβρα ως πληροφορία

Εισαγωγικά. 1.1 Η σ-αλγεβρα ως πληροφορία 1 Εισαγωγικά 1.1 Η σ-αλγεβρα ως πληροφορία Στη θεωρία μέτρου, όταν δουλεύει κανείς σε έναν χώρο X, συνήθως έχει διαλέξει μια αρκετά μεγάλη σ-άλγεβρα στον X έτσι ώστε όλα τα σύνολα που εμφανίζονται να ανήκουν

Διαβάστε περισσότερα

Αναγνώριση Προτύπων 1

Αναγνώριση Προτύπων 1 Αναγνώριση Προτύπων 1 Σημερινό Μάθημα Βασικό σύστημα αναγνώρισης προτύπων Προβλήματα Πρόβλεψης Χαρακτηριστικά και Πρότυπα Ταξινομητές Classifiers Προσεγγίσεις Αναγνώρισης Προτύπων Κύκλος σχεδίασης Συστήματος

Διαβάστε περισσότερα

ΜΑΘΗΜΑ: ΠΟΛΙΤΙΚΗ ΟΙΚΟΝΟΜΙΑ-ΔΗΜΟΣΙΑ ΟΙΚΟΝΟΜΙΚΗ

ΜΑΘΗΜΑ: ΠΟΛΙΤΙΚΗ ΟΙΚΟΝΟΜΙΑ-ΔΗΜΟΣΙΑ ΟΙΚΟΝΟΜΙΚΗ ΜΑΘΗΜΑ: ΠΟΛΙΤΙΚΗ ΟΙΚΟΝΟΜΙΑ-ΔΗΜΟΣΙΑ ΟΙΚΟΝΟΜΙΚΗ Σύνταξη: Παπαδόπουλος Θεοχάρης, Οικονομολόγος, MSc, PhD Candidate Κατηγορίες οφέλους και κόστους που προέρχονται από τις δημόσιες δαπάνες Για την αξιολόγηση

Διαβάστε περισσότερα

21/11/2005 Διακριτά Μαθηματικά. Γραφήματα ΒΑΣΙΚΗ ΟΡΟΛΟΓΙΑ : ΜΟΝΟΠΑΤΙΑ ΚΑΙ ΚΥΚΛΟΙ Δ Ι. Γεώργιος Βούρος Πανεπιστήμιο Αιγαίου

21/11/2005 Διακριτά Μαθηματικά. Γραφήματα ΒΑΣΙΚΗ ΟΡΟΛΟΓΙΑ : ΜΟΝΟΠΑΤΙΑ ΚΑΙ ΚΥΚΛΟΙ Δ Ι. Γεώργιος Βούρος Πανεπιστήμιο Αιγαίου Γραφήματα ΒΑΣΙΚΗ ΟΡΟΛΟΓΙΑ : ΜΟΝΟΠΑΤΙΑ ΚΑΙ ΚΥΚΛΟΙ A Ε B Ζ Η Γ K Θ Δ Ι Ορισμός Ένα (μη κατευθυνόμενο) γράφημα (non directed graph) Γ, είναι μία δυάδα από σύνολα Ε και V και συμβολίζεται με Γ=(Ε,V). Το σύνολο

Διαβάστε περισσότερα

Αναγνώριση Προτύπων. Σημερινό Μάθημα

Αναγνώριση Προτύπων. Σημερινό Μάθημα Αναγνώριση Προτύπων Σημερινό Μάθημα Η κατάρα της διαστατικότητας Μείωση διαστάσεων εξαγωγή χαρακτηριστικών επιλογή χαρακτηριστικών Αναπαράσταση έναντι Κατηγοριοποίησης Ανάλυση Κυρίων Συνιστωσών PCA Γραμμική

Διαβάστε περισσότερα

ΑΠΟΛΥΤΗΡΙΕΣ ΕΞΕΤΑΣΕΙΣ Γ ΤΑΞΗΣ ΕΝΙΑΙΟΥ ΛΥΚΕΙΟΥ ΤΡΙΤΗ 30 ΜΑΪΟΥ 2000 ΕΞΕΤΑΖΟΜΕΝΟ ΜΑΘΗΜΑ ΘΕΤΙΚΗΣ ΚΑΤΕΥΘΥΝΣΗΣ: ΧΗΜΕΙΑ ΣΥΝΟΛΟ ΣΕΛΙ ΩΝ: ΕΞΙ (6)

ΑΠΟΛΥΤΗΡΙΕΣ ΕΞΕΤΑΣΕΙΣ Γ ΤΑΞΗΣ ΕΝΙΑΙΟΥ ΛΥΚΕΙΟΥ ΤΡΙΤΗ 30 ΜΑΪΟΥ 2000 ΕΞΕΤΑΖΟΜΕΝΟ ΜΑΘΗΜΑ ΘΕΤΙΚΗΣ ΚΑΤΕΥΘΥΝΣΗΣ: ΧΗΜΕΙΑ ΣΥΝΟΛΟ ΣΕΛΙ ΩΝ: ΕΞΙ (6) ΑΡΧΗ 1ΗΣ ΣΕΛΙ ΑΣ ΑΠΟΛΥΤΗΡΙΕΣ ΕΞΕΤΑΣΕΙΣ Σ ΕΝΙΑΙΟΥ ΛΥΚΕΙΟΥ ΤΡΙΤΗ 30 ΜΑΪΟΥ 2000 ΕΞΕΤΑΖΟΜΕΝΟ ΜΑΘΗΜΑ ΘΕΤΙΚΗΣ ΚΑΤΕΥΘΥΝΣΗΣ: ΧΗΜΕΙΑ ΣΥΝΟΛΟ ΣΕΛΙ ΩΝ: ΕΞΙ (6) ΘΕΜΑ 1ο Στις ερωτήσεις 1.1 έως 1.3, να γράψετε στο τετράδιό

Διαβάστε περισσότερα

Συναρτήσεις. Σημερινό μάθημα

Συναρτήσεις. Σημερινό μάθημα Συναρτήσεις Σημερινό μάθημα C++ Συναρτήσεις Δήλωση συνάρτησης Σύνταξη συνάρτησης Πρότυπο συνάρτησης & συνάρτηση Αλληλο καλούμενες συναρτήσεις συναρτήσεις μαθηματικών Παράμετροι συναρτήσεων Τοπικές μεταβλητές

Διαβάστε περισσότερα

Έννοια. Η αποδοχή της κληρονομίας αποτελεί δικαίωμα του κληρονόμου, άρα δεν

Έννοια. Η αποδοχή της κληρονομίας αποτελεί δικαίωμα του κληρονόμου, άρα δεν 1 1. Αποδοχή κληρονομίας Έννοια. Η αποδοχή της κληρονομίας αποτελεί δικαίωμα του κληρονόμου, άρα δεν μπορεί να ασκηθεί από τους δανειστές του κληρονόμου, τον εκτελεστή της διαθήκης, τον κηδεμόνα ή εκκαθαριστή

Διαβάστε περισσότερα

ΠΑΝΕΠΙΣΤΗΜΙΑΚΑ ΦΡΟΝΤΙΣΤΗΡΙΑ ΚΟΛΛΙΝΤΖΑ ΜΑΘΗΜΑ: ΕΡΩΤΗΣΕΙΣ ΟΙΚΟΝΟΜΙΚΗΣ ΘΕΩΡΙΑΣ

ΠΑΝΕΠΙΣΤΗΜΙΑΚΑ ΦΡΟΝΤΙΣΤΗΡΙΑ ΚΟΛΛΙΝΤΖΑ ΜΑΘΗΜΑ: ΕΡΩΤΗΣΕΙΣ ΟΙΚΟΝΟΜΙΚΗΣ ΘΕΩΡΙΑΣ ΜΑΘΗΜΑ: ΕΡΩΤΗΣΕΙΣ ΟΙΚΟΝΟΜΙΚΗΣ ΘΕΩΡΙΑΣ Tα Πανεπιστημιακά Φροντιστήρια «ΚΟΛΛΙΝΤΖΑ» προετοιμάζοντας σε ολιγομελείς ομίλους τους υποψήφιους για τον επικείμενο διαγωνισμό του Υπουργείου Οικονομικών, με κορυφαίο

Διαβάστε περισσότερα

Μεγέθη ταλάντωσης Το απλό εκκρεμές

Μεγέθη ταλάντωσης Το απλό εκκρεμές Μεγέθη ταλάντωσης Το απλό εκκρεμές 1.Σκοποί: Οι μαθητές Να κατανοήσουν τις έννοιες της περιοδικής κίνησης και της ταλάντωσης Να κατανοήσουν ότι η περιοδική κίνηση δεν είναι ομαλή Να γνωρίσουν τα μεγέθη

Διαβάστε περισσότερα

ΣΥΝΟΛΑ (προσέξτε τα κοινά χαρακτηριστικά των παρακάτω προτάσεων) Οι άνθρωποι που σπουδάζουν ΤΠ&ΕΣ και βρίσκονται στην αίθουσα

ΣΥΝΟΛΑ (προσέξτε τα κοινά χαρακτηριστικά των παρακάτω προτάσεων) Οι άνθρωποι που σπουδάζουν ΤΠ&ΕΣ και βρίσκονται στην αίθουσα ΣΥΝΟΛΑ (προσέξτε τα κοινά χαρακτηριστικά των παρακάτω προτάσεων) Οι άνθρωποι που σπουδάζουν ΤΠ&ΕΣ και βρίσκονται στην αίθουσα Τα βιβλία διακριτών μαθηματικών του Γ.Β. Η/Υ με επεξεργαστή Pentium και χωρητικότητα

Διαβάστε περισσότερα

Εστω X σύνολο και A μια σ-άλγεβρα στο X. Ονομάζουμε το ζεύγος (X, A) μετρήσιμο χώρο.

Εστω X σύνολο και A μια σ-άλγεβρα στο X. Ονομάζουμε το ζεύγος (X, A) μετρήσιμο χώρο. 2 Μέτρα 2.1 Μέτρα σε μετρήσιμο χώρο Εστω X σύνολο και A μια σ-άλγεβρα στο X. Ονομάζουμε το ζεύγος (X, A) μετρήσιμο χώρο. Ορισμός 2.1. Μέτρο στον (X, A) λέμε κάθε συνάρτηση µ : A [0, ] που ικανοποιεί τις

Διαβάστε περισσότερα

Βελτίωση Εικόνας. Σήμερα!

Βελτίωση Εικόνας. Σήμερα! Βελτίωση Εικόνας Σήμερα! Υποβάθμιση εικόνας Τεχνικές Βελτίωσης Restoration (Αποκατάσταση) Τροποποίηση ιστογράμματος Ολίσθηση ιστογράμματος Διάταση (stretching) Ισοστάθμιση του ιστογράμματος (histogram

Διαβάστε περισσότερα

ΘΕΜΑ: Διαφορές εσωτερικού εξωτερικού δανεισμού. Η διαχρονική κατανομή του βάρους από το δημόσιο δανεισμό.

ΘΕΜΑ: Διαφορές εσωτερικού εξωτερικού δανεισμού. Η διαχρονική κατανομή του βάρους από το δημόσιο δανεισμό. 1 ΘΕΜΑ: Διαφορές εσωτερικού εξωτερικού δανεισμού. Η διαχρονική κατανομή του βάρους από το δημόσιο δανεισμό. Σύνταξη: Παπαδόπουλος Θεοχάρης, Οικονομολόγος, Οικονομολόγος, MSc, PhD Candidate, εισηγητής Φροντιστηρίων

Διαβάστε περισσότερα

2. Κατάθεσε κάποιος στην Εθνική Τράπεζα 4800 με επιτόκιο 3%. Μετά από πόσο χρόνο θα πάρει τόκο 60 ; α) 90 ημέρες β) 1,5 έτη γ) 5 μήνες δ) 24 μήνες

2. Κατάθεσε κάποιος στην Εθνική Τράπεζα 4800 με επιτόκιο 3%. Μετά από πόσο χρόνο θα πάρει τόκο 60 ; α) 90 ημέρες β) 1,5 έτη γ) 5 μήνες δ) 24 μήνες 20 Φεβρουαρίου 2010 1. Ένας έμπορος αγόρασε 720 κιλά κρασί προς 2 το κιλό. Πρόσθεσε νερό, το πούλησε προς 2,5 το κιλό και κέρδισε 500. Το νερό που πρόσθεσε ήταν σε κιλά: α) 88 β) 56 γ) 60 δ) 65 2. Κατάθεσε

Διαβάστε περισσότερα

ΚΛΑΔΟΣ: ΠΕ11 ΦΥΣΙΚΗΣ ΑΓΩΓΗΣ

ΚΛΑΔΟΣ: ΠΕ11 ΦΥΣΙΚΗΣ ΑΓΩΓΗΣ ΚΛΑΔΟΣ: ΠΕ11 ΦΥΣΙΚΗΣ ΑΓΩΓΗΣ Μάθημα: Ενόργανη Γυμναστική Χρήσιμα θεωρία στο κεφάλαιο της ενόργανης γυμναστικής για το γνωστικό αντικείμενο ΠΕ11 της Φυσικής Αγωγής από τα Πανεπιστημιακά Φροντιστήρια Κολλίντζα.

Διαβάστε περισσότερα

ΑΡΧΗ 1ΗΣ ΣΕΛΙ ΑΣ Β ΤΑΞΗ. ΘΕΜΑ 1ο

ΑΡΧΗ 1ΗΣ ΣΕΛΙ ΑΣ Β ΤΑΞΗ. ΘΕΜΑ 1ο ΑΡΧΗ 1ΗΣ ΣΕΛΙ ΑΣ ΘΕΜΑ 1ο ΠΡΟΑΓΩΓΙΚΕΣ ΕΞΕΤΑΣΕΙΣ Σ ΕΝΙΑΙΟΥ ΛΥΚΕΙΟΥ ΤΡΙΤΗ 30 ΜΑΪΟΥ 2000 ΕΞΕΤΑΖΟΜΕΝΟ ΜΑΘΗΜΑ ΘΕΤΙΚΗΣ ΚΑΙ ΤΕΧΝΟΛΟΓΙΚΗΣ ΚΑΤΕΥΘΥΝΣΗΣ: ΦΥΣΙΚΗ ΣΥΝΟΛΟ ΣΕΛΙ ΩΝ: ΕΞΙ (6) Στις ερωτήσεις 1-4 να γράψετε

Διαβάστε περισσότερα

"Η απεραντοσύνη του σύμπαντος εξάπτει τη φαντασία μου. Υπάρχει ένα τεράστιο σχέδιο, μέρος του οποίου ήμουν κι εγώ".

Η απεραντοσύνη του σύμπαντος εξάπτει τη φαντασία μου. Υπάρχει ένα τεράστιο σχέδιο, μέρος του οποίου ήμουν κι εγώ. "Η απεραντοσύνη του σύμπαντος εξάπτει τη φαντασία μου. Υπάρχει ένα τεράστιο σχέδιο, μέρος του οποίου ήμουν κι εγώ". "Ότι ανόητο είπα μπορεί και να είναι ένα ρέψιμο κάποιου ξεχασμένου αστέρα..." "Δεν κάνει

Διαβάστε περισσότερα

ΕΛΛΗΝΙΚΟ ΑΝΟΙΚΤΟ ΠΑΝΕΠΙΣΤΗΜΙΟ. Πρώτη Γραπτή Εργασία. Εισαγωγή στους υπολογιστές Μαθηματικά

ΕΛΛΗΝΙΚΟ ΑΝΟΙΚΤΟ ΠΑΝΕΠΙΣΤΗΜΙΟ. Πρώτη Γραπτή Εργασία. Εισαγωγή στους υπολογιστές Μαθηματικά ΕΛΛΗΝΙΚΟ ΑΝΟΙΚΤΟ ΠΑΝΕΠΙΣΤΗΜΙΟ Πρόγραμμα Σπουδών: ΙΟΙΚΗΣΗ ΕΠΙΧΕΙΡΗΣΕΩΝ και ΟΡΓΑΝΙΣΜΩΝ Θεματική Ενότητα: ΕΟ-13 Ποσοτικές Μέθοδοι Ακαδημαϊκό Έτος: 2012-13 Πρώτη Γραπτή Εργασία Εισαγωγή στους υπολογιστές Μαθηματικά

Διαβάστε περισσότερα

Προτεινόμενα θέματα. στο μάθημα. Αρχές οργάνωσης και διοίκησης επιχειρήσεων. ΟΜΑΔΑ Α: Ερωτήσεις Σωστού Λάθους.

Προτεινόμενα θέματα. στο μάθημα. Αρχές οργάνωσης και διοίκησης επιχειρήσεων. ΟΜΑΔΑ Α: Ερωτήσεις Σωστού Λάθους. Προτεινόμενα θέματα στο μάθημα Αρχές οργάνωσης και διοίκησης επιχειρήσεων ΟΜΑΔΑ Α: Ερωτήσεις Σωστού Λάθους Στις παρακάτω προτάσεις να γράψετε δίπλα στον αριθμό της καθεμιάς τη λέξη Σωστό αν κρίνετε ότι

Διαβάστε περισσότερα

ΗΛΕΚΤΡΙΚΗ ΕΝΕΡΓΕΙΑ ΣΤΗ ΚΡΗΤΗ

ΗΛΕΚΤΡΙΚΗ ΕΝΕΡΓΕΙΑ ΣΤΗ ΚΡΗΤΗ ΗΛΕΚΤΡΙΚΗ ΕΝΕΡΓΕΙΑ ΣΤΗ ΚΡΗΤΗ ΑΝΤΙΟΠΗ ΓΙΓΑΝΤΙ ΟΥ Τοµεάρχης Λειτουργίας Κέντρων Ελέγχου Συστηµάτων Μεταφοράς ιεύθυνσης ιαχείρισης Νησιών ΗΛΕΚΤΡΙΚΟ ΣΥΣΤΗΜΑ ΚΡΗΤΗΣ 2009 Εγκατεστηµένη Ισχύς (Ατµοµονάδες, Μονάδες

Διαβάστε περισσότερα

17 Μαρτίου 2013, Βόλος

17 Μαρτίου 2013, Βόλος Συνήθεις ιαφορικές Εξισώσεις 1ης Τάξης Σ Ε 1ης τάξης, Πεδία κατευθύνσεων, Υπαρξη και μοναδικότητα, ιαχωρίσιμες εξισώσεις, Ολοκληρωτικοί παράγοντες, Αντικαταστάσεις, Αυτόνομες εξισώσεις Μανόλης Βάβαλης

Διαβάστε περισσότερα

ΘΕΜΑ: Aποτελεσματικότητα της νομισματικής και δημοσιονομικής πολιτικής σε μια ανοικτή οικονομία

ΘΕΜΑ: Aποτελεσματικότητα της νομισματικής και δημοσιονομικής πολιτικής σε μια ανοικτή οικονομία ΘΕΜΑ: ποτελεσματικότητα της νομισματικής και δημοσιονομικής πολιτικής σε μια ανοικτή οικονομία Σύνταξη: Μπαντούλας Κων/νος, Οικονομολόγος, Ms Χρηματοοικονομικών 1 Η πρώτη θεωρία σχετικά με τον αυτόματο

Διαβάστε περισσότερα

Αναγνώριση Προτύπων. Σημερινό Μάθημα

Αναγνώριση Προτύπων. Σημερινό Μάθημα Αναγνώριση Προτύπων 1 Σημερινό Μάθημα Βασικό σύστημα αναγνώρισης προτύπων Προβλήματα Πρόβλεψης Χαρακτηριστικά και Πρότυπα Ταξινομητές Classifiers Προσεγγίσεις Αναγνώρισης Προτύπων Κύκλος σχεδίασης Συστήματος

Διαβάστε περισσότερα

Eισηγητής: Μουσουλή Μαρία

Eισηγητής: Μουσουλή Μαρία Eισηγητής: Μουσουλή Μαρία Τεχνική φλοπ Φορά Σκοπός της φοράς είναι να αναπτυχθεί μια ιδανική για τον κάθε αθλητή ταχύτητα και ταυτόχρονα να προετοιμάσει το πάτημα. Το είδος της φοράς του Fosbury ήτα, μια

Διαβάστε περισσότερα

«ΔΙΑΚΡΙΤΑ ΜΑΘΗΜΑΤΙΚΑ»

«ΔΙΑΚΡΙΤΑ ΜΑΘΗΜΑΤΙΚΑ» HY 118α «ΔΙΚΡΙΤ ΜΘΗΜΤΙΚ» ΣΚΗΣΕΙΣ ΠΝΕΠΙΣΤΗΜΙΟ ΚΡΗΤΗΣ ΤΜΗΜ ΕΠΙΣΤΗΜΗΣ ΥΠΟΛΟΙΣΤΩΝ εώργιος Φρ. εωργακόπουλος ΜΕΡΟΣ (1) ασικά στοιχεία της θεωρίας συνόλων. Π. ΚΡΗΤΗΣ ΤΜ. ΕΠ. ΥΠΟΛΟΙΣΤΩΝ «ΔΙΚΡΙΤ ΜΘΗΜΤΙΚ». Φ. εωργακόπουλος

Διαβάστε περισσότερα

23/2/07 Sleep out Πλατεία Κλαυθμώνος

23/2/07 Sleep out Πλατεία Κλαυθμώνος 23/2/07 Sleep out Πλατεία Κλαυθμώνος Μια βραδιά στο λούκι με τους αστέγους «Έχετε ποτέ σκεφτεί να κοιμηθείτε μια χειμωνιάτικη νύχτα στο δρόμο;» Με αυτό το ερώτημα απευθύναμε και φέτος την πρόσκληση στους

Διαβάστε περισσότερα

Συμπεριφοριακή Επιχειρηματικότητα

Συμπεριφοριακή Επιχειρηματικότητα Συμπεριφοριακή Επιχειρηματικότητα Great talent can come from anywhere, free your mind Το ταλέντο μπορεί να εμφανιστεί από οπουδήποτε, ελευθερώστε το μυαλό σας 1 Επιχειρηματίας Entrepreneur Γαλλική προέλευση

Διαβάστε περισσότερα

Ημέρα 3 η. (α) Aπό την εργασιακή διαδικασία στη διαδικασία παραγωγής (β) Αξία του προϊόντος και αξία της εργασιακής δύναμης

Ημέρα 3 η. (α) Aπό την εργασιακή διαδικασία στη διαδικασία παραγωγής (β) Αξία του προϊόντος και αξία της εργασιακής δύναμης Ημέρα 3 η. (α) Aπό την εργασιακή διαδικασία στη διαδικασία παραγωγής (β) Αξία του προϊόντος και αξία της εργασιακής δύναμης Η εργασιακή διαδικασία και τα στοιχεία της. Η κοινωνική επικύρωση των ιδιωτικών

Διαβάστε περισσότερα

Σχέσεις και ιδιότητές τους

Σχέσεις και ιδιότητές τους Σχέσεις και ιδιότητές τους Διμελής (binary) σχέση Σ από σύνολο Χ σε σύνολο Υ είναι ένα υποσύνολο του καρτεσιανού γινομένου Χ Υ. Αν (χ,ψ) Σ, λέμε ότι το χ σχετίζεται με το ψ και σημειώνουμε χσψ. Στην περίπτωση

Διαβάστε περισσότερα

Κεφάλαιο 2.4: Τα βασικά στοιχεία ενός Επιχειρηματικού Σχεδίου (Business Plan) Μέσα από αυτό το κεφάλαιο φαίνεται ότι αφενός η σωστή δημιουργία και

Κεφάλαιο 2.4: Τα βασικά στοιχεία ενός Επιχειρηματικού Σχεδίου (Business Plan) Μέσα από αυτό το κεφάλαιο φαίνεται ότι αφενός η σωστή δημιουργία και Κεφάλαιο 2.4: Τα βασικά στοιχεία ενός Επιχειρηματικού Σχεδίου (Business Plan) Περίληψη Κεφαλαίου: Μέσα από αυτό το κεφάλαιο φαίνεται ότι αφενός η σωστή δημιουργία και αφετέρου η σωστή εφαρμογή του Επιχειρηματικού

Διαβάστε περισσότερα

Προτεινόμενα θέματα στο μάθημα. Αρχές Οικονομικής Θεωρίας ΟΜΑΔΑ Α. Στις προτάσεις από Α.1. μέχρι και Α10 να γράψετε στο τετράδιό σας τον αριθμό της

Προτεινόμενα θέματα στο μάθημα. Αρχές Οικονομικής Θεωρίας ΟΜΑΔΑ Α. Στις προτάσεις από Α.1. μέχρι και Α10 να γράψετε στο τετράδιό σας τον αριθμό της Προτεινόμενα θέματα στο μάθημα Αρχές Οικονομικής Θεωρίας ΟΜΑΔΑ Α Στις προτάσεις από Α.1. μέχρι και Α10 να γράψετε στο τετράδιό σας τον αριθμό της καθεμιάς και δίπλα σε κάθε αριθμό την ένδειξη Σωστό, αν

Διαβάστε περισσότερα

5.1 Μετρήσιμες συναρτήσεις

5.1 Μετρήσιμες συναρτήσεις 5 Μετρήσιμες συναρτήσεις 5.1 Μετρήσιμες συναρτήσεις Ορισμός 5.1. Εστω (Ω, F ), (E, E) μετρήσιμοι χώροι. Μια συνάρτηση f : Ω E λέγεται F /Eμετρήσιμη αν f 1 (A) F για κάθε A E. (5.1) Συμβολίζουμε το σύνολο

Διαβάστε περισσότερα

Υπολογιστική Νοημοσύνη

Υπολογιστική Νοημοσύνη Υπολογιστική Νοημοσύνη Σημερινή Διάλεξη Περιεχόμενο μαθήματος Διαδικαστικά Εργασίες Μαθήματος Εισαγωγή στο αντικείμενο του μαθήματος Εφαρμογές 1 Περιεχόμενο μαθήματος οµή και Χαρακτηριστικά ενός Γενετικού

Διαβάστε περισσότερα

Γενικό Λύκειο Μαραθοκάμπου Σάμου. Άλγεβρα Β λυκείου. 13 Οκτώβρη 2016

Γενικό Λύκειο Μαραθοκάμπου Σάμου. Άλγεβρα Β λυκείου. 13 Οκτώβρη 2016 Γενικό Λύκειο Μαραθοκάμπου Σάμου Άλγεβρα Β λυκείου Εργασία2 η : «Συναρτήσεις» 13 Οκτώβρη 2016 Ερωτήσεις Θεωρίας 1.Πότελέμεότιμιασυνάρτησηfείναιγνησίωςάυξουσασεέναδιάστημα του πεδίου ορισμού της; 2.Πότελέμεότιμιασυνάρτησηfείναιγνησίωςφθίνουσασεέναδιάστημα

Διαβάστε περισσότερα

Σκιαγράφηση της διάλεξης. Γλώσσες Περιγραφής Υλικού Ι. nkavv@uop.gr. Ανασκόπηση ϑεμάτων παλαιών εξετάσεων του μαθήματος. Περιεχόμενο εξετάσεων

Σκιαγράφηση της διάλεξης. Γλώσσες Περιγραφής Υλικού Ι. nkavv@uop.gr. Ανασκόπηση ϑεμάτων παλαιών εξετάσεων του μαθήματος. Περιεχόμενο εξετάσεων Σκιαγράφηση της διάλεξης Γλώσσες Περιγραφής Υλικού Ι Θέματα πρακτικής εξάσκησης Νικόλαος Καββαδίας nkavv@uop.gr 08 Ιουνίου 2011 Ανασκόπηση ϑεμάτων παλαιών εξετάσεων του μαθήματος Εξεταστική περίοδος Ιουνίου-Ιουλίου

Διαβάστε περισσότερα

τους στην Κρυπτογραφία και τα

τους στην Κρυπτογραφία και τα Οι Ομάδες των Πλεξίδων και Εφαρμογές τους στην Κρυπτογραφία και τα Πολυμερή Σχολή Εφαρμοσμένων Μαθηματικών και Φυσικών Επιστημών ΕΜΠ Επιβλέπουσα Καθηγήτρια: Λαμπροπούλου Σοφία Ιούλιος, 2013 Περιεχόμενα

Διαβάστε περισσότερα

( ιμερείς) ΙΜΕΛΕΙΣ ΣΧΕΣΕΙΣ Α Β «απεικονίσεις»

( ιμερείς) ΙΜΕΛΕΙΣ ΣΧΕΣΕΙΣ Α Β «απεικονίσεις» ( ιμερείς) ΙΜΕΛΕΙΣ ΣΧΕΣΕΙΣ Α Β «πεικονίσεις» 1. ΣΧΕΣΕΙΣ: το σκεπτικό κι ο ορισμός. Τ σύνολ νπριστούν ιδιότητες μεμονωμένων στοιχείων: δεδομένου συνόλου S, κι ενός στοιχείου σ, είνι δυντόν είτε σ S είτε

Διαβάστε περισσότερα

ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ. Εαρινό Εξάμηνο

ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ. Εαρινό Εξάμηνο ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΕΠΛ31: Δομές Δεδομένων και Αλγόριθμοι Εαρινό Εξάμηνο 017-018 Φροντιστήριο 5 1. Δικαιολογήστε όλες τις απαντήσεις σας. i. Δώστε τις 3 βασικές ιδιότητες ενός AVL δένδρου.

Διαβάστε περισσότερα

- 1 - Ποιοι κερδίζουν από το εμπόριο αγαθών και υπηρεσιών; Γιατί η άμεση ανταλλαγή αγαθών, ορισμένες φορές, είναι δύσκολο να

- 1 - Ποιοι κερδίζουν από το εμπόριο αγαθών και υπηρεσιών; Γιατί η άμεση ανταλλαγή αγαθών, ορισμένες φορές, είναι δύσκολο να - 1 - Ο παράξενος πραματευτής Ανθολόγιο Ε & Στ τάξης: 277-279 Οικονομικές έννοιες Ανταλλαγή Αντιπραγματισμός Εμπόριο Ερωτήσεις Ποιοι κερδίζουν από το εμπόριο αγαθών και υπηρεσιών; Γιατί η άμεση ανταλλαγή

Διαβάστε περισσότερα

Μητροπολιτικά Οπτικά Δίκτυα. 11.1. Εισαγωγή

Μητροπολιτικά Οπτικά Δίκτυα. 11.1. Εισαγωγή Μητροπολιτικά Οπτικά Δίκτυα 11.1. Εισαγωγή Τα τηλεπικοινωνιακά δίκτυα είναι διαιρεμένα σε μια ιεραρχία τριών επιπέδων: Στα δίκτυα πρόσβασης, τα μητροπολιτικά δίκτυα και τα δίκτυα κορμού. Τα δίκτυα κορμού

Διαβάστε περισσότερα

ΜΑΘΗΜΑ: ΓΕΝΙΚΟ ΔΙΟΙΚΗΤΙΚΟ ΔΙΚΑΙΟ ΔΙΚΑΣΤΩΝ

ΜΑΘΗΜΑ: ΓΕΝΙΚΟ ΔΙΟΙΚΗΤΙΚΟ ΔΙΚΑΙΟ ΔΙΚΑΣΤΩΝ ΜΑΘΗΜΑ: ΓΕΝΙΚΟ ΔΙΟΙΚΗΤΙΚΟ ΔΙΚΑΙΟ ΔΙΚΑΣΤΩΝ ΕΠΙΜΕΛΕΙΑ : Γεώργιος Κ. Πατρίκιος, Δικηγόρος, ΜΔΕ Δημοσίου Δικαίου, Υπ. Διδάκτωρ Νομικής Σχολής Πανεπιστημίου Αθηνών. ΘΕΜΑΤΙΚΗ : Η αρμοδιότητα των διοικητικών

Διαβάστε περισσότερα

Ευρωπαϊκά παράγωγα Ευρωπαϊκά δικαιώματα

Ευρωπαϊκά παράγωγα Ευρωπαϊκά δικαιώματα 17 Ευρωπαϊκά παράγωγα 17.1 Ευρωπαϊκά δικαιώματα Ορισμός 17.1. 1) Ευρωπαϊκό δικαίωμα αγοράς σε μία μετοχή είναι ένα συμβόλαιο που δίνει στον κάτοχό του το δικαίωμα να αγοράσει μία μετοχή από τον εκδότη

Διαβάστε περισσότερα

Συγκέντρωση Κίνησης. 6.1. Εισαγωγή. 6.2. Στατική Συγκέντρωση Κίνησης

Συγκέντρωση Κίνησης. 6.1. Εισαγωγή. 6.2. Στατική Συγκέντρωση Κίνησης Συγκέντρωση Κίνησης 6.1. Εισαγωγή Σε ένα οπτικό WDM δίκτυο, οι κόμβοι κορμού επικοινωνούν μεταξύ τους και ανταλλάσουν πληροφορία μέσω των lightpaths. Ένα WDM δίκτυο κορμού είναι υπεύθυνο για την εγκατάσταση

Διαβάστε περισσότερα

Τρίτη, 05 Ιουνίου 2001 ΤΕΧΝΟΛΟΓΙΚΗ ΚΑΤΕΥΘΥΝΣΗ Γ ΛΥΚΕΙΟΥ ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ

Τρίτη, 05 Ιουνίου 2001 ΤΕΧΝΟΛΟΓΙΚΗ ΚΑΤΕΥΘΥΝΣΗ Γ ΛΥΚΕΙΟΥ ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ Τρίτη, 05 Ιουνίου 2001 ΤΕΧΝΟΛΟΓΙΚΗ ΚΑΤΕΥΘΥΝΣΗ Γ ΛΥΚΕΙΟΥ ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ ΘΕΜΑ 1 Α. Να µεταφέρετε στο τετράδιό σας και να συµπληρώσετε τον παρακάτω πίνακα αλήθειας δύο προτάσεων

Διαβάστε περισσότερα

Το υπόδειγμα IS-LM: Εισαγωγικά

Το υπόδειγμα IS-LM: Εισαγωγικά 1/35 Το υπόδειγμα IS-LM: Εισαγωγικά Νίκος Γιαννακόπουλος Επίκουρος Καθηγητής Τμήμα Οικονομικών Επιστημών Πανεπιστήμιο Πατρών Ακαδημαϊκό Ετος 2014-2015 Εαρινό Εξάμηνο Τι γνωρίζουμε; 2/35 Αγορά αγαθών και

Διαβάστε περισσότερα

Ημέρα 4 η (α) Αγορά και πώληση της εργασιακής δύναμης. (β) Η απόλυτη υπεραξία. Αγορά και πώληση της εργασιακής δύναμης

Ημέρα 4 η (α) Αγορά και πώληση της εργασιακής δύναμης. (β) Η απόλυτη υπεραξία. Αγορά και πώληση της εργασιακής δύναμης Ημέρα 4 η (α) Αγορά και πώληση της εργασιακής δύναμης (β) Η απόλυτη υπεραξία Αγορά και πώληση της εργασιακής δύναμης Στο κεφάλαιο για την αγορά και την πώληση της εργατικής δύναμης (ελληνική έκδοση: τόμος

Διαβάστε περισσότερα

Eισηγητής: Μουσουλή Μαρία

Eισηγητής: Μουσουλή Μαρία Eισηγητής: Μουσουλή Μαρία Κινητική Μάθηση Μέρος Πρώτο : Ανθρώπινη απόδοση εκτέλεση 1. Εισαγωγή «Η ικανότητα που έχει κάποιος, να πετυχαίνει ένα τελικό αποτέλεσμα με την μεγαλύτερη δυνατή σιγουριά και τη

Διαβάστε περισσότερα

1. Σε περίπτωση κατά την οποία η τιμή ενός αγαθού μειωθεί κατά 2% και η ζητούμενη

1. Σε περίπτωση κατά την οποία η τιμή ενός αγαθού μειωθεί κατά 2% και η ζητούμενη Tα Πανεπιστημιακά Φροντιστήρια «ΚΟΛΛΙΝΤΖΑ» προετοιμάζοντας σε ολιγομελείς ομίλους τους υποψήφιους για τον επικείμενο διαγωνισμό του Υ- πουργείου Οικονομικών και στοχεύοντας στην όσο το δυνατό πληρέστερη

Διαβάστε περισσότερα

Δ Ι Α Κ Ρ Ι Τ Α Μ Α Θ Η Μ Α Τ Ι Κ Α. 1η σειρά ασκήσεων

Δ Ι Α Κ Ρ Ι Τ Α Μ Α Θ Η Μ Α Τ Ι Κ Α. 1η σειρά ασκήσεων Δ Ι Α Κ Ρ Ι Τ Α Μ Α Θ Η Μ Α Τ Ι Κ Α 1η σειρά ασκήσεων Ονοματεπώνυμο: Αριθμός μητρώου: Ημερομηνία παράδοσης: Μέχρι την Τρίτη 2 Απριλίου 2019 Σημειώστε τις ασκήσεις για τις οποίες έχετε παραδώσει λύση: 1

Διαβάστε περισσότερα

ΑΠΟΛΥΤΗΡΙΕΣ ΕΞΕΤΑΣΕΙΣ Γ ΤΑΞΗΣ ΕΝΙΑΙΟΥ ΛΥΚΕΙΟΥ ΤΕΤΑΡΤΗ 14 ΙΟΥΝΙΟΥ 2000 ΕΞΕΤΑΖΟΜΕΝΟ ΜΑΘΗΜΑ ΓΕΝΙΚΗΣ ΠΑΙΔΕΙΑΣ: ΦΥΣΙΚΗ ΣΥΝΟΛΟ ΣΕΛΙΔΩΝ: ΕΞΙ (6)

ΑΠΟΛΥΤΗΡΙΕΣ ΕΞΕΤΑΣΕΙΣ Γ ΤΑΞΗΣ ΕΝΙΑΙΟΥ ΛΥΚΕΙΟΥ ΤΕΤΑΡΤΗ 14 ΙΟΥΝΙΟΥ 2000 ΕΞΕΤΑΖΟΜΕΝΟ ΜΑΘΗΜΑ ΓΕΝΙΚΗΣ ΠΑΙΔΕΙΑΣ: ΦΥΣΙΚΗ ΣΥΝΟΛΟ ΣΕΛΙΔΩΝ: ΕΞΙ (6) ΑΡΧΗ ΜΗΝΥΜΑΤΟΣ ΑΠΟΛΥΤΗΡΙΕΣ ΕΞΕΤΑΣΕΙΣ Σ ΕΝΙΑΙΟΥ ΛΥΚΕΙΟΥ ΘΕΜΑ 1 ο ΤΕΤΑΡΤΗ 14 ΙΟΥΝΙΟΥ 2000 ΕΞΕΤΑΖΟΜΕΝΟ ΜΑΘΗΜΑ ΓΕΝΙΚΗΣ ΠΑΙΔΕΙΑΣ: ΦΥΣΙΚΗ ΣΥΝΟΛΟ ΣΕΛΙΔΩΝ: ΕΞΙ (6) Στις ερωτήσεις 1 5 να γράψετε στο τετράδιό σας

Διαβάστε περισσότερα

Συναρτήσεις & Κλάσεις

Συναρτήσεις & Κλάσεις Συναρτήσεις & Κλάσεις Overloading class member συναρτήσεις/1 #include typedef unsigned short int USHORT; enum BOOL { FALSE, TRUE}; class Rectangle { public: Rectangle(USHORT width, USHORT

Διαβάστε περισσότερα

Pointers. Σημερινό Μάθημα! Χρήση pointer Τελεστής * Τελεστής & Γενικοί δείκτες Ανάκληση Δέσμευση μνήμης new / delete Pointer σε αντικείμενο 2

Pointers. Σημερινό Μάθημα! Χρήση pointer Τελεστής * Τελεστής & Γενικοί δείκτες Ανάκληση Δέσμευση μνήμης new / delete Pointer σε αντικείμενο 2 Pointers 1 Σημερινό Μάθημα! Χρήση pointer Τελεστής * Τελεστής & Γενικοί δείκτες Ανάκληση Δέσμευση μνήμης new / delete Pointer σε αντικείμενο 2 1 Μνήμη μεταβλητών Κάθε μεταβλητή έχει διεύθυνση Δεν χρειάζεται

Διαβάστε περισσότερα

Κεφάλαιο 2.3: Marketing Κοινωνικών Επιχειρήσεων. Στο παρόν κεφάλαιο παρουσιάζονται εν τάχει τα βασικά

Κεφάλαιο 2.3: Marketing Κοινωνικών Επιχειρήσεων. Στο παρόν κεφάλαιο παρουσιάζονται εν τάχει τα βασικά Κεφάλαιο 2.3: Marketing Κοινωνικών Επιχειρήσεων Περίληψη Κεφαλαίου: Στο παρόν κεφάλαιο παρουσιάζονται εν τάχει τα βασικά χαρακτηριστικά του μείγματος Marketing (Μ.Κ.Τ.), στο πλαίσιο της εύρυθμης λειτουργίας

Διαβάστε περισσότερα

Παντού σε αυτό το κεφάλαιο, αν δεν αναφέρεται κάτι διαφορετικό, δουλεύουμε σε ένα χώρο πιθανότητας (Ω, F, P) και η G F είναι μια σ-άλγεβρα.

Παντού σε αυτό το κεφάλαιο, αν δεν αναφέρεται κάτι διαφορετικό, δουλεύουμε σε ένα χώρο πιθανότητας (Ω, F, P) και η G F είναι μια σ-άλγεβρα. 2 Δεσμευμένη μέση τιμή 2.1 Ορισμός Παντού σε αυτό το κεφάλαιο, αν δεν αναφέρεται κάτι διαφορετικό, δουλεύουμε σε ένα χώρο πιθανότητας (Ω, F, P) και η G F είναι μια σ-άλγεβρα. Ορισμός 2.1. Για X : Ω R τυχαία

Διαβάστε περισσότερα

Εκφωνήσεις και Λύσεις των Θεμάτων

Εκφωνήσεις και Λύσεις των Θεμάτων ΑΠΟΛΥΤΗΡΙΕΣ ΕΞΕΤΑΣΕΙΣ Γ ΤΑΞΗΣ ΗΜΕΡΗΣΙΟΥ ΓΕΝΙΚΟΥ ΛΥΚΕΙΟΥ ΚΑΙ ΠΑΝΕΛΛΗΝΙΕΣ ΕΞΕΤΑΣΕΙΣ Γ ΤΑΞΗΣ ΕΠΑΛ (ΟΜΑΔΑ Β ) ΜΑΘΗΜΑΤΙΚΑ ΘΕΤΙΚΗΣ ΚΑΙ ΤΕΧΝΟΛΟΓΙΚΗΣ ΚΑΤΕΥΘΥΝΣΗΣ Δευτέρα 8 Μαΐου 0 Εκφωνήσεις και Λύσεις των Θεμάτων

Διαβάστε περισσότερα

Φυσική Β Λυκείου Θετικής & Τεχνολογικής Κατεύθυνσης Παναγόπουλος Γιώργος Φυσικός

Φυσική Β Λυκείου Θετικής & Τεχνολογικής Κατεύθυνσης Παναγόπουλος Γιώργος Φυσικός Φυσική Β Λυκείου Θετικής & Τεχνολογικής Κατεύθυνσης Παναγόπουλος Γιώργος Φυσικός gior.panagopoulos@gmail.com Βουλδής Άγγελος Φυσικός angelos_vouldis@hotmail.com Μεντζελόπουλος Λευτέρης Φυσικός MSc Περιβαλλοντολογία

Διαβάστε περισσότερα

ΠΑΝΕΠΙΣΤΗΜΙΑΚΑ ΦΡΟΝΤΙΣΤΗΡΙΑ ΚΟΛΛΙΝΤΖΑ ΜΑΘΗΜΑ: ΕΜΠΟΡΙΚΟ ΔΙΚΑΙΟ

ΠΑΝΕΠΙΣΤΗΜΙΑΚΑ ΦΡΟΝΤΙΣΤΗΡΙΑ ΚΟΛΛΙΝΤΖΑ ΜΑΘΗΜΑ: ΕΜΠΟΡΙΚΟ ΔΙΚΑΙΟ ΜΑΘΗΜΑ: ΕΜΠΟΡΙΚΟ ΔΙΚΑΙΟ Διδάσκων : Πομπιέρη Βασιλεία, Δικηγόρος, LLM UCL Πτωχευτικό Δίκαιο Σημαντικότερες ρυθμίσεις σε προπτωχευτικό στάδιο. Εισαγωγή της διαδικασίας συνδιαλλαγής Σκοπός Η διάσωση και εξυγίανση

Διαβάστε περισσότερα

ΔΙΚΑΙΩΜΑΤΑ ΠΡΟΣΟΡΜΙΣΗΣ, ΠΑΡΑΒΟΛΗΣ, ΠΡΥΜΝΟΔΕΤΗΣΗΣ ΚΑΙ ΕΛΛΙΜΕΝΙΣΜΟΥ ΣΚΑΦΩΝ ΣΕ ΘΑΛΑΣΣΙΕΣ ΠΕΡΙΟΧΕΣ. (ΛΙΜΑΝΙΑ κ.λπ.) ΤΟΠΙΚΗΣ ΑΡΜΟΔΙΟΤΗΤΑΣ ΛΙΜΕΝΙΚΩΝ

ΔΙΚΑΙΩΜΑΤΑ ΠΡΟΣΟΡΜΙΣΗΣ, ΠΑΡΑΒΟΛΗΣ, ΠΡΥΜΝΟΔΕΤΗΣΗΣ ΚΑΙ ΕΛΛΙΜΕΝΙΣΜΟΥ ΣΚΑΦΩΝ ΣΕ ΘΑΛΑΣΣΙΕΣ ΠΕΡΙΟΧΕΣ. (ΛΙΜΑΝΙΑ κ.λπ.) ΤΟΠΙΚΗΣ ΑΡΜΟΔΙΟΤΗΤΑΣ ΛΙΜΕΝΙΚΩΝ ΔΙΚΑΙΩΜΑΤΑ ΠΡΟΣΟΡΜΙΣΗΣ, ΠΑΡΑΒΟΛΗΣ, ΠΡΥΜΝΟΔΕΤΗΣΗΣ ΚΑΙ ΕΛΛΙΜΕΝΙΣΜΟΥ ΣΚΑΦΩΝ ΣΕ ΘΑΛΑΣΣΙΕΣ ΠΕΡΙΟΧΕΣ (ΛΙΜΑΝΙΑ κ.λπ.) ΤΟΠΙΚΗΣ ΑΡΜΟΔΙΟΤΗΤΑΣ ΛΙΜΕΝΙΚΩΝ ΤΑΜΕΙΩΝ ΚΑΙ ΔΗΜΟΤΙΚΩΝ ΛΙΜΕΝΙΚΩΝ ΤΑΜΕΙΩΝ Επιμέλεια Άγγελου Αργυρακόπουλου

Διαβάστε περισσότερα

Αναλυτικές ιδιότητες

Αναλυτικές ιδιότητες 8 Αναλυτικές ιδιότητες 8. Βαθμός συνέχειας* Ξέρουμε ότι η κίνηση Brown είναι συνεχής και θα δείξουμε αργότερα ότι είναι πουθενά διαφορίσιμη. Πόσο ομαλή είναι λοιπόν; Μια ασθενέστερη μορφή ομαλότητας είναι

Διαβάστε περισσότερα