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

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

Download "Διπλωματική Εργασία των φοιτητών του Τμήματος Ηλεκτρολόγων Μηχανικών και Τεχνολογίας Υπολογιστών της Πολυτεχνικής Σχολής του Πανεπιστημίου Πατρών"

Transcript

1 ΠΑΝΕΠΙΣΤΗΜΙΟ ΠΑΤΡΩΝ ΤΜΗΜΑ ΗΛΕΚΤΡΟΛΟΓΩΝ ΜΗΧΑΝΙΚΩΝ ΚΑΙ ΤΕΧΝΟΛΟΓΙΑΣ ΥΠΟΛΟΓΙΣΤΩΝ ΤΟΜΕΑΣ: ΣΥΣΤΗΜΑΤΩΝ ΚΑΙ ΑΥΤΟΜΑΤΟΥ ΕΛΕΓΧΟΥ ΕΡΓΑΣΤΗΡΙΟ ΓΕΝΙΚΗΣ ΗΛΕΚΤΡΟΤΕΧΝΙΑΣ Διπλωματική Εργασία των φοιτητών του Τμήματος Ηλεκτρολόγων Μηχανικών και Τεχνολογίας Υπολογιστών της Πολυτεχνικής Σχολής του Πανεπιστημίου Πατρών Κανελλάκης Χριστόφορος του Ιωάννη Αριθμός Μητρώου: 7003 Κυρίτσης Γεώργιος του Φραγκούλη-Σωτήρη Αριθμός Μητρώου: 7031 Θέμα «Ανάπτυξη διάταξης βιομηχανικής όρασης για προσδιορισμό θέσης και προσανατολισμού κινούμενων αντικειμένων και οδήγηση ρομποτικού βραχίονα» Επιβλέπων Καθηγητής Σταμάτης Μάνεσης Αριθμός Διπλωματικής Εργασίας: ΠΑΤΡΑ, Οκτώβριος 2014

2 2

3 ΠΙΣΤΟΠΟΙΗΣΗ Πιστοποιείται ότι η Διπλωματική εργασία με θέμα «Ανάπτυξη διάταξης βιομηχανικής όρασης για προσδιορισμό θέσης και προσανατολισμού κινούμενων αντικειμένων και οδήγηση ρομποτικού βραχίονα» Των φοιτητών του Τμήματος Ηλεκτρολόγων Μηχανικών και Τεχνολογίας Υπολογιστών Κανελλάκης Χριστόφορος του Ιωάννη Αριθμός Μητρώου: 7003 Κυρίτσης Γεώργιος του Φραγκούλη-Σωτήρη Αριθμός Μητρώου: 7031 Παρουσιάστηκε δημόσια και εξετάστηκε στο Τμήμα Ηλεκτρολόγων Μηχανικών και Τεχνολογίας Υπολογιστών στις 13/10/2014 Ο Επιβλέπων Καθηγητής Σταμάτης Μάνεσης Ο Διευθυντής του Τομέα Καθηγητής Νικόλαος Κούσουλας 3

4 4

5 Αριθμός Διπλωματικής Εργασίας: Θέμα: «Ανάπτυξη διάταξης βιομηχανικής όρασης για προσδιορισμό θέσης και προσανατολισμού κινούμενων αντικειμένων και οδήγηση ρομποτικού βραχίονα» Φοιτητές: Κυρίτσης Γεώργιος Κανελλάκης Χριστόφορος Επιβλέπων: Καθηγητής Σταμάτης Μάνεσης Περίληψη Ο πρωταρχικός στόχος αυτής της εργασίας είναι η υλοποίηση μιας βιομηχανικής διάταξης σε εργαστηριακή κλίμακα στην οποία να συνεργάζονται ένα στερεοσκοπικό σύστημα και ένας ρομποτικός βραχίονας. Πιο συγκεκριμένα, η διαδικασία χωρίζεται σε δύο μέρη, την αναγνώριση στο χώρο των επιθυμητών αντικειμένων και την οδήγηση βάση αυτής του ρομποτικού βραχίονα. Για το πρώτο μέρος έγινε χρήση της βιβλιοθήκης OpenCV σε γλώσσα C++ και ως στερεοσκοπικό υλικό χρησιμοποιήθηκαν δύο παράλληλα διατεταγμένες κάμερες τύπου webcam. Η διαδικασία που ακολουθήθηκε για την αναγνώριση θέσης χωρίστηκε σε αρκετά βήματα. Αρχικά δημιουργήθηκε ένα πρόγραμμα το οποίο αποθηκεύει καρέ από τις δύο κάμερες στα οποία απεικονίζεται ένα μοτίβο βαθμονόμησης. Στη συνέχεια, αυτές οι εικόνες εισάγονται στον κώδικα βαθμονόμησης με στόχο να υπολογιστούν οι εγγενείς και εξωγενείς παράμετροι των καμερών. Έπειτα, με τη χρήση των παραμέτρων αυτών και τη θεωρία της επιπολικής γεωμετρίας μπορεί να γίνει η αναγνώριση θέσης ενός αντικειμένου στο χώρο. Τέλος, χρησιμοποιείται ένας αλγόριθμος εντοπισμού του κέντρου ενός αντικειμένου στην οθόνη με βάση το χρώμα έτσι ώστε να καθοριστεί για ποιο αντικείμενο ο αλγόριθμος θα υπολογίσει τη θέση. Στο δεύτερο μέρος χρησιμοποιήθηκε ο ρομποτικός βραχίονας Katana s400 6M90G της εταιρείας Neuronics, ο οποίος προγραμματίστηκε σε γλώσσα C++, σε περιβάλλον Visual Studio Αρχικά, βρέθηκαν οι γωνίες Euler της αρπάγης, για διαφορετικές προσεγγίσεις του προσανατολισμού της. Με τον συνδυασμό των συντεταγμένων του αντικειμένου, που βρίσκονται από το στερεοσκοπικό σύστημα καθοδηγείται το Katana ώστε να το πιάσει. Τα πειράματα που διεξαχθήκαν περιλάμβαναν την αρπαγή στάσιμων αντικειμένων με γενικό και οριζόντιο προσανατολισμό εργαλείου. Τέλος, πραγματοποιήθηκαν πειράματα με αντικείμενα εν κινήσει, τυχαίας θέσης με γενικό, κάθετο και οριζόντιο προσανατολισμό αρπάγης. 5

6 6

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

8 8

9 Περιεχόμενα 1. Εισαγωγή Τεχνητή Όραση Ιστορικά στοιχεία Μέρη της Υπολογιστικής Όρασης Υπολογιστική Όραση στην Βιομηχανία Θεωρία Υπολογιστικής Όρασης Μετάβαση από τον 3D χώρο της σκηνής στον 2D χώρο της κάμερας Λήψη και αναπαράσταση εικόνας (image acquisition-representation) Συστήματα συντεταγμένων Απεικόνιση μέσω κάμερας λεπτού φακού Απεικόνιση μέσω Pinhole κάμερας Προοπτική προβολή (perspective transform) Παράμετροι κάμερας Εξωγενείς παράμετροι Εγγενείς παράμετροι Πίνακας προβολής της pin-hole κάμερας Βαθμονόμηση κάμερας Μετάβαση από τον 2D χώρο της κάμερας στον 3D χώρο της σκηνής Στερεοσκοπικό Σύστημα Επιπολική Γεωμετρία (Epipolar Geometry) Ανόρθωση εικόνας (image rectification) Πρόβλημα αντιστοιχίας Πρόβλημα ανακατασκευής Ο ρομποτικός βραχίονας Katana s400 6M90G Σύνδεση του Katana με τον ηλεκτρονικό υπολογιστή Σύνδεση μέσω καλωδίου USB Σύνδεση μέσω καλωδίου Ethernet Κινηματικές Εξισώσεις Denavit Hartenberg Παράμετροι Ορθή Κινηματική Χώρος Εργασίας Συστήματα συντεταγμένων Σύστημα συντεταγμένων του KATANA Γωνίες Euler Μετασχηματισμοί συστημάτων συντεταγμένων [31] Υπολογιστική Όραση με χρήση της βιβλιοθήκης OpenCV

10 4.1. Περιβάλλον OpenCV Εγκατάσταση της OpenCV Εγκατάσταση στο λειτουργικό σύστημα Windows Χρήση OpenCV με το Microsoft Visual Studio Εγκατάσταση στο λειτουργικό σύστημα Linux Βασικές εντολές/ δομή OpenCV Υλοποίηση αλγορίθμου στερεοσκοπικής όρασης για τον υπολογισμό των συντεταγμένων ενός σημείου στο χώρο Λήψη ζεύγους εικόνων του μοτίβου βαθμονόμησης Στέρεο-Βαθμονόμηση καμερών (stereo calibration) Διόρθωση εικόνας (image rectification & undistortion) Ανίχνευση αντικειμένου (object recognition) Υπολογισμός χάρτη στερεοσκοπικών διαφορών και 3D συντεταγμένων Η εργαλειοθήκη GTKMM (GNU Image Manipulation Program Toolkit) Περιβάλλον προγραμματισμού και προσανατολισμός αρπάγης του Katana Katana Native Interface (ΚΝΙ) Οι βασικές βιβλιοθήκες του KNI Οι βασικές συναρτήσεις του ΚΝΙ Προσανατολισμός της αρπάγης Επίλυση γενικού προσανατολισμού Επίλυση κάθετου προσανατολισμού Επίλυση οριζόντιου προσανατολισμού Επίλυση διαγώνιου προσανατολισμού Προετοιμασία Πειράματος Στερεοσκοπικό σύστημα δύο καμερών Μεταφορική ταινία Χαρακτηριστικά της μεταφορικής ταινίας Έλεγχος ταχύτητας κινητήρα Μετατροπή του συστήματος συντεταγμένων Μικροεπεξεργαστής ODROID-U Εγκατάσταση λειτουργικού Linux σε κάρτα SD Προσθετικά αρπάγης Katana Πειράματα με την μεταφορική ταινία στάσιμη Αντικείμενα εν στάσει με τυχαίο προσανατολισμό αρπάγης Katana Αντικείμενα εν στάσει με διαγώνιο προσανατολισμό αρπάγης Katana Πειράματα με αντικείμενα εν κινήσει Αντικείμενα εν κινήσει με τυχαίο προσανατολισμό αρπάγης Αντικείμενα εν κινήσει με κάθετο προσανατολισμό αρπάγης

11 8.3. Αντικείμενα εν κινήσει με οριζόντιο προσανατολισμό αρπάγης Συμπεράσματα Παράρτημα Α Παράρτημα Β Παράρτημα Γ

12 12

13 Πίνακας εικόνων Εικόνα 1.1. Εφαρμογές της υπολογιστικής όρασης Εικόνα 1.2. Μηχανική όραση και visual servoing Εικόνα D, 2.5D και 3D πλέγμα Εικόνα 1.4. Εικόνα με λανθασμένη εστίαση, πριν και μετά την επεξεργασία Εικόνα 1.5. Εικόνα από κουνημένη κάμερα, πριν και μετά την επεξεργασία Εικόνα 1.6. Θολή εικόνα, πριν και μετά την επεξεργασία Εικόνα 1.7. Ρομποτικός βραχίονας FANUC καθοδηγούμενος από σύστημα καμερών Εικόνα 1.8. Προσομοίωση εφαρμογής αναγνώρισης συνδυασμού καμερών με Laser Εικόνα 2.1. Λήψη εικόνας από CCD κάμερα Εικόνα 2.2. CMOS αισθητήρας Εικόνα 2.3. Αριστερά-Rolling shutter effect, Δεξιά-Blooming effect Εικόνα 2.4. Εικόνα σε κλίμακα του γκρι [7] Εικόνα 2.5. Μαθηματική αναπαράσταση εικόνας σε κλίμακα του γκρι [7] Εικόνα 2.6. Συστήματα αναφοράς [9] Εικόνα 2.7. Συστήματα αναφοράς [10] Εικόνα 2.8. Τομή παράλληλων εισερχόμενων ακτίνων στην εστία F [12] Εικόνα 2.9. Εισερχόμενες ακτίνες στο φακό από ένα σημείο στο χώρο [13] Εικόνα Προοπτική προβολή [15] Εικόνα Κάμερα οπής [17] Εικόνα Εξωγενείς παράμετροι [7] Εικόνα Αριστερά-συγκλίνουσες κάμερες, δεξιά-παράλληλες κάμερες [19] Εικόνα Επιπολική γεωμετρία. [10] Εικόνα Επιπολικές γραμμές. [15] Εικόνα Σύστημα παράλληλων καμερών [7] Εικόνα Τμήματα της εικόνας που δε μπορούν να αντιστοιχιθούν (occlusion) [10] Εικόνα 3.1. Roll- Pitch-Yaw κινήσεις Εικόνα 3.2. Μήκη των στοιχείων του Katana Εικόνα 3.3. WebInterface του Katana Εικόνα 3.4. Denavit-Hartenberg παράμετροι Εικόνα 3.5. Σχηματικό διάγραμμα περιβάλλοντος εργασίας Katana Εικόνα 3.6. Τομή περιβάλλονοντος εργασίας που σχεδιάστηκε σε Matlab Εικόνα 3.7. Συστήματα Συντεταγμένων Εικόνα 3.8. Σύστημα συντεταγμένων βάσης Εικόνα 3.9. Σύστημα συντεταγμένων εργαλείου Εικόνα 3.10: Στροφή συστήματος με ZXZ γωνίες Euler Εικόνα 4.1. Προσθήκη της OpenCV στο μονοπάτι του συστήματος (1) Εικόνα 4.2. Προσθήκη της OpenCV στο μονοπάτι του συστήματος (2) Εικόνα 4.3. Δημιουργία καινούριου Project στο Visual Studio Εικόνα 4.4. Ολοκλήρωση δημιουργίας νέου Project Εικόνα 4.5. C/C++ "General" Additional Include Directories

14 Εικόνα 4.6. "C/C++" "Linker" "General "Additional Library Directories" Εικόνα 4.7. Additional dependencies Εικόνα 4.8. Καρέ αριστερής και δεξιάς κάμερας Εικόνα 4.9. Κάμερες Logitech C Εικόνα Στερεοσκοπικό ζεύγος μοτίβου βαθμονόμησης Εικόνα Σκακιέρα-Μοτίβο βαθμονόμησης Εικόνα Σφάλμα (reprojection error) από stereo βαθμονόμηση Εικόνα Σειρά εκτέλεσης βημάτων ανόρθωσης εικόνας Εικόνα Ανόρθωση εικόνων και αφαίρεση παραμόρφωσης (un-distortion) Εικόνα Χρωματικός χώρος HSV Εικόνα Αναγνώριση αντικειμένου Εικόνα Αριστερά-Χάρτης στερεοσκοπικών διαφορών, Δεξιά-3D συντεταγμένες Εικόνα Μέτριος χάρτης στερεοσκοπικών διαφορών Εικόνα Ικανοποιητικός χάρτης στερεοσκοπικών διαφορών Εικόνα Σχεδιαστής Glade Εικόνα GUI επιλογής χρώματος αντικειμένων Εικόνα 5.1. Demo πρόγραμμα για έλεγχο Katana Εικόνα 5.2. Συστήματα συντεταγμένων βάσης και αρπάγης Εικόνα 5.3. Αριστερά-αρχική μορφή συστήματος συντεταγμένων. Δεξία-στροφή γύρω από τον άξονα Z της βάσης κατά γωνία phi Εικόνα 5.4. Αριστερά-στροφή γύρω από τον νέο άξονα X της αρπάγης κατά γωνία theta. Δεξιάστροφή γύρω από τον νέο άξονα Ζ κατά γωνία psi Εικόνα 5.5. Γωνίες θ1-θ5 των Links του βραχίονα Εικόνα 5.6. Αριστερά-τρίγωνο προσέγγισης για theta=180 o, Δεξιά-τρίγωνο προσέγγισης υπολογισμού γωνίας δ και γωνίας ω Εικόνα 5.7. Κάθετος Προσανατολισμός αρπάγης Εικόνα 5.8. Αριστερά-οριζόντιος προσανατολισμός αρπάγης. Δεξιά-διάνυσμα p της αρπάγης Εικόνα 5.9. Διαγώνιος προσανατολισμός αρπάγης Εικόνα 6.1. Πειραματική διάταξη από περιβάλλον Solidworks Εικόνα 6.2. Αποσυναρμολόγηση των καμερών Εικόνα 6.3. Διάταξη τοποθέτησης των καμερών Εικόνα 6.4. Μεταφορική ταινία Misumi Εικόνα 6.5. Κάτοψη και πρόσοψη της μεταφορικής ταινίας Εικόνα 6.6. Διάγραμμα ταχύτητας ιμάντα-μάζας αντικειμένου Εικόνα 6.7. Βάσεις στήριξης της μεταφορικής ταινίας Εικόνα 6.8. Πρόσοψη και πλάγια όψη του ελεγκτή Εικόνα 6.9. Κυκλωματικό διάγραμμα σύνδεσης του ελεγκτή Εικόνα Αλλαγή συστημάτων συντεταγμένων Εικόνα 6.11: Ο μικροεπεξεργαστής ODROID-U Εικόνα Win32 Disk Imager for ODROID Εικόνα Περιβάλλον εργασίας του ODROID-U3 με λογισμικό LUbuntu Εικόνα Διάταξη με χρήση ODROID-U Εικόνα Προσθετικά αρπάγης Katana Εικόνα 7.1. Αντικείμενα πειράματος

15 Εικόνα 7.2. Αριστερά-η αρχική θέση του βραχίονα, δεξιά-η τελική θέση του βραχίονα Εικόνα 7.3. Διαφορετικοί τρόποι προσσέγγισης ενός αντικειμένου Εικόνα 7.4. Πίνακας στερεοσκοπικών διαφορών Εικόνα 7.5. Κέντρο βάρους αντικειμένου και περιγεγραμμένο κουτί Εικόνα 7.6. Δυαδικές εικόνες κατωφλίου Εικόνα 7.7.Αριστερά-αρχικό σημείο, δεξιά-τελικό σημείο Εικόνα 7.8. Αριστερά-αρπαγή αντικειμένου, δεξιά-εντοπισμός κέντρου αντικειμένου Εικόνα 7.9. Αριστερά-χάρτης στερεοσκοπικών διαφορών, δεξιά-εικόνα κατωφλίου Εικόνα 8.1. Αριστερά αρχικό σημείο βραχίονα, δεξιά τελικό σημείο βραχίονα Εικόνα 8.2. Ενδιάμεσο σημείο κίνησης Katana Εικόνα 8.3. Αριστερά-αρπαγή αντικειμένου, δεξιά-εντοπισμός κέντρου αντικειμένου Εικόνα 8.4. Αριστερά-χάρτης στερεοσκοπικών διαφορών, δεξιά-εικόνα κατωφλίου Εικόνα 8.5. Αριστερά-αρχική θέση, δεξιά-τελική θέση Εικόνα 8.6. Ενδιάμεσο σημείο Εικόνα 8.7. Αριστερά-αρπαγή αντικειμένου, δεξιά-εντοπισμός κέντρου εικόνας Εικόνα 8.8. Αριστερά-χάρτης στερεοσκοπικών διαφορών, δεξιά-εικόνα κατωφλίου Εικόνα 8.9. Αρχικό σημείο Εικόνα Αριστερά-αρπαγή αντικειμένου, δεξιά-εντοπισμός κέντρου αντικειμένου Εικόνα Αριστερά χάρτης στερεοσκοπικών διαφορών, δεξιά εικόνα κατωφλίου Εικόνα Τελικό σημείο

16 16

17 Πρόλογος Ο σκοπός αυτής της εργασίας είναι η υλοποίηση μιας βιομηχανικής διάταξης σε εργαστηριακή κλίμακα στην οποία να συνεργάζονται ένα στερεοσκοπικό σύστημα και ένας ρομποτικός βραχίονας. Πιο συγκεκριμένα η διαδικασία χωρίζεται σε δύο μέρη, την αναγνώριση στο χώρο των επιθυμητών αντικειμένων και την οδήγηση του ρομποτικού βραχίονα. Για το πρώτο μέρος έγινε χρήση της βιβλιοθήκης OpenCV σε γλώσσα C++ και ως στερεοσκοπικό υλικό χρησιμοποιήθηκαν δύο παράλληλα διατεταγμένες κάμερες τύπου webcam. Ο ρομποτικός βραχίονας που χρησιμοποιήθηκε είναι ο Katana s400 6M90G της εταιρείας Neuronics, ο οποίος προγραμματίστηκε επίσης, σε γλώσσα C++ σε περιβάλλον Visual Studio 2008, καθώς και στο λειτουργικό σύστημα Linux με μεταφραστή τον g++. Τα πειράματα που διεξαχθήκαν περιλάμβαναν την αρπαγή τόσο στάσιμων, όσο και κινούμενων αντικειμένων. Συγκεκριμένα για κάθε κεφάλαιο: Στο Κεφάλαιο 1 γίνεται μια εισαγωγή στην τεχνητή όραση και στην εφαρμογή της σε βιομηχανικά περιβάλλοντα. Στο Κεφάλαιο 2 παρουσιάζεται η θεωρία γύρω από τη ψηφιακή επεξεργασία εικόνας και τη στερεοσκοπική όραση. Στο Κεφάλαιο 3 περιγράφεται η θεωρητική ανάλυση του ρομποτικού βραχίονα Katana, καθώς και των συστημάτων συντεταγμένων του. Στο Κεφάλαιο 4 περιγράφεται η βιβλιοθήκη υπολογιστικής όρασης OpenCV και αναλύεται ο κώδικας αναγνώρισης θέσης αντικειμένου. Στο Κεφάλαιο 5 παρουσιάζεται το περιβάλλον προγραμματισμού (KNI) του βραχίονα Katana. Επίσης, περιγράφονται οι διαφορετικοί τρόποι προσανατολισμού της αρπάγης που χρησιμοποιήθηκαν για τη διεξαγωγή των πειραμάτων. Στο Κεφάλαιο 6 αναλύεται η διαδικασία που ακολουθήθηκε για την προετοιμασία των πειραμάτων, καθώς και τα στοιχεία που χρησιμοποιήθηκαν σε αυτά. Στο Κεφάλαιο 7 παρουσιάζονται τα πειράματα που υλοποιούν μια βιομηχανική διαδικασία στην οποία, τα αντικείμενα προς αναγνώριση είναι στάσιμα σε διάφορους προσανατολισμούς. Στο Κεφάλαιο 8 παρουσιάζονται τα πειράματα που υλοποιούν μια βιομηχανική διαδικασία στην οποία, τα αντικείμενα προς αναγνώριση είναι εν κινήσει και με τυχαίους προσανατολισμούς. Ολοκληρώνοντας παρατίθενται συγκεντρωτικά τα συμπεράσματα, που εξήχθησαν με βάση τη χρήση στερεοσκοπικής όρασης για την καθοδήγηση του ρομποτικού βραχίονα Katana. Στο Παράρτημα Α παρουσιάζονται οι αλγόριθμοι σε κώδικα Matlab που χρησιμοποιήθηκαν στη θεωρητική ανάλυση του βραχίονα. Στο Παράρτημα Β παρουσιάζονται οι αλγόριθμοι σε κώδικα C++ οι οποίοι χρησιμοποιούνται για την προετοιμασία των καμερών ώστε να μπορούν να αναγνωρίσουν τη θέση αντικειμένων στο χώρο. Στο Παράρτημα Γ παρουσιάζονται οι αλγόριθμοι που υλοποιήσαν τα πειράματα των κεφαλαίων 7,8 της διάταξης. 17

18 Κατά την ανάθεση της Διπλωματικής Εργασίας την ευθύνη της αναγνώρισης αντικειμένων με τεχνητή όραση ανέλαβε ο Χριστόφορος Κανελλάκης, ενώ την ευθύνη της καθοδήγησης του ρομποτικού βραχίονα με βάση τα δεδομένα της στερεοσκοπικής αναγνώρισης ανέλαβε ο Γεώργιος Κυρίτσης. Κατά την εκπόνηση της Διπλωματικής Εργασίας ωστόσο, λόγω αφενός των δυσκολιών που αντιμετωπίσαμε και αφετέρου του ενδιαφέροντος μας και για τα δύο επιμέρους αντικείμενα, εργασθήκαμε από κοινού σε όλα σχεδόν τα στάδια της εργασίας τόσο στα θεωρητικά όσο και στα πειραματικά. Τέλος, για τη συγγραφή του τεύχους της Διπλωματικής Εργασίας, Ο Γεώργιος Κυρίτσης ήταν υπεύθυνος για τη συγγραφή των κεφαλαίων 1, 3, 5, 6 και 8, ενώ ο Χριστόφορος Κανελλάκης για τη συγγραφή των κεφαλαίων 2, 4, 7 και 9. 18

19 1. Εισαγωγή 1.1. Τεχνητή Όραση Η τεχνητή όραση είναι ένα επιστημονικό πεδίο της τεχνητής νοημοσύνης το οποίο επιχειρεί να αναπαράγει αλγοριθμικά την αίσθηση της όρασης, συνήθως σε ηλεκτρονικό υπολογιστή ή ρομπότ. Η τεχνητή όραση σχετίζεται με τη θεωρία και την τεχνολογία που εμπλέκονται στη σχεδίαση και κατασκευή συστημάτων που λαμβάνουν και αναλύουν δεδομένα από ψηφιακές εικόνες, βίντεο, όψεις από πολλαπλές κάμερες, πολυδιάστατες εικόνες από ιατρικό σαρωτή κλπ. Οι εικόνες περιέχουν πληθώρα στοιχείων, τα οποία πρέπει πρώτα να εντοπιστούν, να μετρηθούν και στη συνέχεια να καταχωρηθούν ώστε να γίνει η επεξεργασία τους και να παρθεί από αυτά η χρήσιμη πληροφορία ανάλογα με την εφαρμογή. Συνήθως τα Οπτικά Υπολογιστικά Συστήματα, βασίζονται σε αισθητήρες εικόνας, οι οποίοι ανιχνεύουν ηλεκτρομαγνητική ακτινοβολία, συνήθως σε μορφή ορατού φωτός ή σε μορφή υπεριώδους ακτινοβολίας. [1] Η τεχνητή όραση κατηγοριοποιείται στην υπολογιστική και στην μηχανική όραση. Η υπολογιστική όραση καλύπτει την βάση της τεχνολογίας για την αυτόματη ψηφιακή επεξεργασία εικόνας, η οποία βρίσκει εφαρμογή σε πολλά πεδία. Έχει πληθώρα εφαρμογών (εικόνα 1.1), από πιο απλές εφαρμογές όπως απλή αναγνώριση χώρου μέχρι και πιο σύνθετες όπως η επικοινωνία ανθρώπου-μηχανής. Πιο αναλυτικά η θεωρία της υπολογιστικής όρασης έχει εφαρμογή στα παρακάτω μέρη: Εφαρμογές ελέγχου (π.χ. καθοδήγηση βιομηχανικού βραχίονα) Καθοδήγηση αυτόματου οχήματος (unmanned vehicles) Μοντελισμός αντικειμένων καθώς και περιοχών (π.χ. τοπογραφικά μοντέλα) Οργάνωση πληροφορίας Στρατιωτικές εφαρμογές (π.χ. Hovering Autonomous Underwater Vehicles, Predator) Ιατροδικαστική Σήμανση Ανάλυση ιατρικών εικόνων (3D ακτινογραφίες εν κινήσει) Οπτικά Εφέ Εικόνα 1.1. Εφαρμογές της υπολογιστικής όρασης. 19

20 Η μηχανική όραση εφαρμόζεται κυρίως ως οπτική ανατροφοδότηση (visual feedback) για την καθοδήγηση ρομποτικών βραχιόνων. Η μέθοδος αυτή είναι γνωστή ως Visual Servoing, και χρησιμοποιείται σε πληθώρα εφαρμογών όπως η παρακολούθηση της τροχιάς κινούμενων οχημάτων, ο χειρισμός αντικειμένων σε βιομηχανίες σε εφαρμογές που απαιτείται υψηλή ακρίβεια. [2] Εικόνα 1.2. Μηχανική όραση και visual servoing. Η χρήση της τεχνητής όρασης προσφέρει αρκετά πλεονεκτήματα στους κλάδους στους οποίους εφαρμόζεται. Η σχεδόν αδιάκοπη λειτουργία της αυξάνει τον ρυθμό της παραγωγής στην βιομηχανία. Η λήψη εικόνας από μηχανή και η εφαρμογή αλγορίθμων υπολογιστικής όρασης, σε περιβάλλοντα απρόσιτα από τον άνθρωπο, παρέχει λύσεις σε προβλήματα που δεν είναι δυνατή η ανθρώπινη παρέμβαση. Ο συνδυασμός λειτουργιών αναγνώρισης με τη δυνατότητα αποθήκευσης μεγάλου όγκου πληροφοριών προσφέρει μεγάλη ταχύτητα εκτέλεσης υπολογισμών και λήψης αποφάσεων Ιστορικά στοιχεία Η θεωρία της τεχνητής όρασης ξεκίνησε το 1950 όταν αναπτύχθηκε από τον Αμερικανό ψυχολόγο James Jerome Gibson η θεωρητική βάση για την οπτική ροή (optical flow) και όταν με βάση αυτή αναπτύχθηκαν μαθηματικά μοντέλα για τον υπολογισμό της οπτικής ροής σε εικονοστοιχείο ανά εικονοστοιχείο. Ο πατέρας όμως της υπολογιστικής όρασης θεωρείται ο Lawrence G. Roberts ο οποίος στην διδακτορική του διατριβή (MIT, 1963, Machine Perception of Three-Dimensional Solids) ανέπτυξε την εξαγωγή 3D γεωμετρικών πληροφοριών από 2D εικόνες. Με βάση την διατριβή αυτή, η ομάδα του εργαστηρίου Τεχνητής Νοημοσύνης του MIT προχώρησε στην έρευνα της Τεχνητής Όρασης παίρνοντας εικόνες από τον πραγματικό κόσμο και μελετώντας εργασίες όπως αναγνώριση ακμής και η κατάτμηση εικόνας. Το 1978, ο νευρολόγος David Marr του ΜΙΤ εφάρμοσε χαμηλού επιπέδου αλγόριθμους επεξεργασίας εικόνας ώστε από 2D (2-Dimentional, δισδιάστατες) εικόνες να κατασκευάσει το primal sketch *1 της. Στη συνέχεια, πήρε από αυτό το 2.5D sketch *2 της σκηνής χρησιμοποιώντας διπολική γεωμετρία. Τέλος, υψηλού επιπέδου αλγόριθμοι χρησιμοποιήθηκαν ώστε να καταλήξει σε μία 3D αναπαράσταση του αρχικού 2D μοντέλου. [3] *1:Το Primal sketch μίας σκηνής, βασίζεται στην εξαγωγή των θεμελιωδών στοιχείων της, συμπεριλαμβανομένων των ακμών, των περιοχών κλπ. *2: Το 2.5D sketch μιας σκηνής, βασίζεται στην εξαγωγή στοιχείων όπως το βάθος της με την χρήση οπτικής ροής. Αυτό το σχέδιο αναπαριστά το γεγονός πως στην πραγματικότητα δεν βλέπουμε ολόκληρη την σκηνή αλλά ανακατασκευάζουμε την σκήνη από το δικό μας οπτικό πεδίο. 20

21 Εικόνα D, 2.5D και 3D πλέγμα Μέρη της Υπολογιστικής Όρασης Τμήματα της υπολογιστικής όρασης είναι η ανοικοδόμηση σκηνής, η ανίχνευση γεγονότων, η αναγνώριση αντικειμένων και χειρονομιών, η εκτίμηση της κίνησης καθώς και η αποκατάσταση της εικόνας. Ένα από τα βασικά προβλήματα στην όραση υπολογιστών, στην επεξεργασία εικόνας και στην μηχανική όραση είναι, το να διαπιστωθεί κατά πόσον ή όχι τα δεδομένα μιας εικόνας περιέχουν κάποιο συγκεκριμένο αντικείμενο και χαρακτηριστικό ή αν πραγματοποιείται μία δραστηριότητα. Για την αντιμετώπιση του προβλήματος αυτού, με χρήση των υπαρκτών μεθόδων είναι εφικτό να βρεθεί λύση μόνο για συγκεκριμένα αντικείμενα (με γεωμετρικά χαρακτηριστικά π.χ. πολύεδρα), τυπωμένοι ή χειρόγραφοι χαρακτήρες, οχήματα, ανθρώπινα πρόσωπα και σε ειδικές περιπτώσεις το υπόβαθρο. Οι διαφορετικές όψεις του προβλήματος αναγνώρισης περιγράφονται από τις παρακάτω κατηγορίες: [4], [5] Ταυτοποίηση: αναγνωρίζεται ένα αποσπασματικό στιγμιότυπο ενός αντικειμένου. Η ταυτοποίηση εφαρμόζεται σε περιπτώσεις που περιλαμβάνουν την αναγνώριση του προσώπου ή των δακτυλικών αποτυπωμάτων ενός συγκεκριμένου ατόμου, ή την αναγνώριση ενός συγκεκριμένου οχήματος. Ανίχνευση: τα δεδομένα εικόνας σαρώνονται για μια συγκεκριμένη κατάσταση. Περιοχές στις οποίες εφαρμόζεται είναι η ανίχνευση των πιθανών ή μη φυσιολογικών κυττάρων ή ιστών σε ιατρικές εικόνες ή ανίχνευση ενός οχήματος σε ένα αυτόματο σύστημα διοδίων. Η ανίχνευση βασίζεται σε απλούς και γρήγορους αλγόριθμους και χρησιμοποιείται μερικές φορές για την εύρεση μικρότερων περιοχών ενδιαφέροντος δεδομένων μιας εικόνας, τα οποία μπορούν να αναλύονται περαιτέρω με πιο απαιτητικές υπολογιστικά τεχνικές για να παράγουν μια σωστή ερμηνεία. Αναγνώριση αντικειμένων: ένα ή περισσότερα προκαθορισμένα αντικείμενα ή κλάσεις αντικειμένων μπορούν να αναγνωριστούν, συνήθως στις 2D θέσεις τους στην εικόνα ή 3D θέσεις στη σκηνή. [4] Υπάρχουν αρκετές εξειδικευμένες εργασίες που βασίζονται στην αναγνώριση, όπως: Εκτίμηση θέσης: εκτίμηση της θέσης ή του προσανατολισμού ενός συγκεκριμένου αντικειμένου σε σχέση με την κάμερα. Η τεχνική αυτή εφαρμόζεται για να καθοδηγηθεί ένα 21

22 ρομπότ στην αρπαγή αντικειμένων από μία μεταφορική ταινία σε γραμμή συναρμολόγησης ή στην επιλογή στοιχείων από έναν κάδο. Ανάκτηση εικόνων βάσει περιεχομένου: η ανάκτηση αυτή περιλαμβάνει την εύρεση όλων των εικόνων σε ένα μεγαλύτερο φάσμα εικόνων που έχουν καθορισμένο περιεχόμενο. Το τελευταίο μπορεί να καθοριστεί με διάφορους τρόπους, όπως, από την άποψη της σχετικής ομοιότητας με μια εικόνα «στόχο», είτε από την άποψη του υψηλού επιπέδου κριτηρίων όπως η εισαγωγή κειμένου. Η οπτική αναγνώριση χαρακτήρων (OCR): αναγνώριση χαρακτήρων στις εικόνες εντύπων ή χειρόγραφων κείμενων, συνήθως με σκοπό την κωδικοποίηση του κειμένου σε μορφή πιο προσφιλή στην επεξεργασία ή την τιμαριθμική αναπροσαρμογή (π.χ. ASCII). [4] Ένα άλλο πρόβλημα στην υπολογιστική όραση είναι η ανοικοδόμηση σκηνής (Scene Reconstruction). Στόχος της είναι ο υπολογισμός ενός 3D μοντέλου της σκηνής με την χρήση μίας, ή συνήθως περισσότερων φωτογραφιών από μια σκηνή ή ένα βίντεο. Στην απλούστερη περίπτωση το μοντέλο μπορεί να είναι ένα σύνολο από 3D σημεία ενώ με την χρήση πιο εξελιγμένων μεθόδων είναι δυνατό να παραχθεί ένα πλήρες 3D μοντέλο επιφάνειας. Η λήψη της 3D απεικόνισης δεν απαιτεί κίνηση ή σάρωση αλλά μόνο την εφαρμογή των σχετικών αλγορίθμων επεξεργασίας. Ένα 3D πλέγμα αναφοράς μπορεί να χρησιμοποιηθεί για την απόκτηση 3D εικόνων από πολλαπλές γωνίες. [4] Τέλος η αποκατάσταση εικόνας (Image restoration) αποτελεί ένα ακόμα ένα πρόβλημα στον τομέα της υπολογιστικής όρασης. Ο στόχος της είναι η απομάκρυνση του θορύβου (θόρυβος αισθητήρα, θαμπάδα κινήσεων, κλπ.) από τις εικόνες. Η απλούστερη δυνατή προσέγγιση για την αφαίρεση του θορύβου είναι διάφορα είδη φίλτρων, όπως χαμηλής διέλευσης φίλτρα (low-pass filter) ή φίλτρα διάμεσου. Μεταγενέστερες μέθοδοι περιλαμβάνουν ένα μοντέλο για τη μορφή των τοπικών δομών της εικόνας. Ξεκινώντας με την ανάλυση των δεδομένων της εικόνας από την άποψη δομών, όπως οι γραμμές ή ακμές, και στη συνέχεια με τον έλεγχο του φιλτραρίσματος με βάση τις τοπικές πληροφορίες από το στάδιο ανάλυσης, επιτυγχάνεται ένα καλύτερο επίπεδο αφαίρεσης θορύβου. Στις εικόνες 1.4 έως 1.6 εμφανίζονται μερικά παραδείγματα αποκατάστασης εικόνας. [4] Εικόνα 1.4. Εικόνα με λανθασμένη εστίαση, πριν και μετά την επεξεργασία. 22

23 Εικόνα 1.5. Εικόνα από κουνημένη κάμερα, πριν και μετά την επεξεργασία. Εικόνα 1.6. Θολή εικόνα, πριν και μετά την επεξεργασία Υπολογιστική Όραση στην Βιομηχανία Από τα τέλη της δεκαετίας του 1990, με την εξαιρετική αύξηση της υπολογιστικής ισχύος των επεξεργαστών και την συχνότερη εμφάνιση στεροσκοπικών συστημάτων καμερών, η υπολογιστική όραση απέκτησε ευρεία εφαρμογή στην βιομηχανία. Η ανάγκη για αξιόπιστη λειτουργία με το μικρότερο δυνατό χρόνο διακοπής της παραγωγής είναι ένα κοινό αίτημα. Έτσι, άρχισε να εφαρμόζεται στην καθοδήγηση εξοπλισμού σε εργοστάσια, στην διαχείριση αντικειμένων και προϊόντων σε μία γραμμή παραγωγής, στην πλοήγηση οχημάτων κ.α. Στις σύγχρονες βιομηχανικές διαδικασίες συναρμολόγησης και ελέγχου ποιότητας, υπάρχει μία μεγάλη ανάγκη για αναπτυγμένο έλεγχο αρπαγής αντικειμένων από ρομποτικό βραχίονα, καθοδηγούμενο από σύστημα εντοπισμού και αναγνώρισης αντικειμένων. Επίσης, είναι σημαντική η δυνατότητα να εκτελούνται εργασίες συναρμολόγησης σε μη-δομημένα περιβάλλοντα με τυχαία τοποθετημένα αντικείμενα. Οι παραδοσιακές εγκαταστάσεις ρομπότ στα βιομηχανικά περιβάλλοντα έχουν ρυθμιστεί να πιάνουν αντικείμενα από την ίδια ακριβώς θέση. Αν το αντικείμενο απέχει από αυτή τότε ο βραχίονας αποτυγχάνει στο σκοπό του. Σημαντικά πλεονεκτήματα εμφανίζονται όταν συνδυάζονται ρομπότ και υπολογιστική όραση. Σε αυτές τις συνδυασμένες εφαρμογές, το σύστημα αναγνώρισης μπορεί να καθοδηγεί τον βραχίονα από την θέση στην οποία ανέμενε το αντικείμενο, στην θέση που πραγματικά βρίσκεται. Αυτό επιτυγχάνεται χρησιμοποιώντας μόνο μία κάμερα, πολλαπλές κάμερες ή συνδυασμό αυτών με άλλους αισθητήρες (π.χ lasers). Οι κάμερες, ένα υπολογιστικό σύστημα και το λογισμικό συνεργάζονται για να προσαρμόσουν την θέση του βραχίονα, ώστε να εκτελεσθεί σωστά η εργασία. Αυτή η ευελιξία επέτρεψε την χρήση ρομπότ σε εφαρμογές, στις οποίες υπάρχει μικρή ακρίβεια για την θέση του αντικειμένου πάνω στην γραμμή μεταφοράς. Επιπλέον, τώρα οι βραχίονες επιτρέπουν την αρπαγή αντικειμένων ποικίλων σχημάτων. Τέλος, η έρευνα σε αυτόν τον τομέα έχει 23

24 αναπτυχθεί σε τέτοιο σημείο, που ένας βραχίονας πλέον είναι δυνατό να πιάνει συγκεκριμένα αντικείμενα από ένα περιορισμένο χώρο όπως ένα κουτί. [6] Στις εικόνες 1.7 και 1.8 φαίνονται δύο εφαρμογές της υπολογιστικής όρασης στη βιομηχανία. Εικόνα 1.7. Ρομποτικός βραχίονας FANUC καθοδηγούμενος από σύστημα καμερών. Εικόνα 1.8. Προσομοίωση εφαρμογής αναγνώρισης συνδυασμού καμερών με Laser. 24

25 2. Θεωρία Υπολογιστικής Όρασης Σε αυτό το κεφάλαιο θα παρουσιαστεί η θεωρία γύρω από τη ψηφιακή επεξεργασία εικόνας και τη στερεοσκοπική όραση. Το κεφάλαιο χωρίζεται σε δύο ενότητες στις οποίες θα αναλυθούν οι βασικές αρχές λειτουργίας της κάμερας καθώς και τα βασικά βήματα για τον υπολογισμό της θέσης ενός αντικειμένου στο χώρο Μετάβαση από τον 3D χώρο της σκηνής στον 2D χώρο της κάμερας. Κάθε μηχανισμός ψηφιακής καταγραφής εικόνας εκτελεί κάποιου είδους μετατροπή από τον πραγματικό 3D χώρο στον τοπικό 2D χώρο. Η εύρεση και η μελέτη των παραμέτρων της μετατροπής αυτής είναι θεμελιώδεις για την περιγραφή του συστήματος της κάμερας. Η τρέχουσα ενότητα αναφέρεται στην εσωτερική και γεωμετρική περιγραφή του μοντέλου της κάμερας Λήψη και αναπαράσταση εικόνας (image acquisition-representation) Στην υπολογιστική όραση χρησιμοποιούνται συνήθως 2 είδη ψηφιακών εικόνων[7]: Intensity image: εικόνα τύπου φωτογραφίας, η οποία μετρά το ποσό του προσπίπτοντος φωτός σε φωτοευαίσθητη συσκευή και λαμβάνεται από ψηφιακή κάμερα. Range image: εικόνα η οποία κωδικοποιεί σχήμα και απόσταση και λαμβάνεται από ειδικούς αισθητήρες όπως sonar ή laser scanners. Κάθε εικόνα ανεξάρτητα από τον τύπο της είναι μία δισδιάστατη μήτρα αριθμών. Ανάλογα με το είδος της εικόνας οι αριθμοί μπορεί να αντιπροσωπεύουν εντάσεις φωτεινότητας, αποστάσεις είτε άλλες φυσικές ποσότητες. Για τη λήψη ψηφιακής εικόνας χρησιμοποιούνται 3 στοιχεία hardware: μια κάμερα (συνήθως τύπου CCD 1* ή CMOS 2* ), ένας ψηφιοποιητής εικόνας (frame grabber στην περίπτωση του CCD) και έναν host υπολογιστή στον οποίο γίνεται η επεξεργασία. Η κάμερα δέχεται ως είσοδο το εισερχόμενο φως το οποίο διαπερνά το φακό της και προβάλλεται στο επίπεδό της, τον CCD αισθητήρα. CCD: Το CCD είναι ένα n x m φωτοευαίσθητο ορθογώνιο πλέγμα όπου κάθε στοιχείο του φορτίζεται ανάλογα με την ποσότητα φωτός που προσπίπτει πάνω του. Το φορτίο κάθε στοιχείου μεταφέρεται μέσω καταχωρητών σε ένα ενισχυτή που το μετατρέπει σε τάση, παράγοντας έτσι ένα αναλογικό μεταβαλλόμενο σήμα τάσης ανάλογο των μεταβολών των φορτίων. Το σήμα τάσης για να επεξεργαστεί ψηφιακά πρέπει να διακριτοποιηθεί και να ψηφιοποιηθεί. Στέλνεται στον frame grabber, που περιέχει έναν A/D μετατροπέα, ψηφιοποιείται σε έναν 2D ορθογώνιο n x m πίνακα με ακέραιες τιμές και αποθηκεύεται σε μια buffer μνήμη. 1* CCD: Charged Coupling Devices, 2* Complimentary Metal Oxide Semiconductor 25

26 Τα στοιχεία του πίνακα ονομάζονται εικονοστοιχεία (pixels/picture elements) και μεταφέρονται στον host υπολογιστή για περεταίρω επεξεργασία. Η παραπάνω διαδικασία εμφανίζεται στην εικόνα 2.1. [7] Εικόνα 2.1. Λήψη εικόνας από CCD κάμερα. Active pixel sensor (APS) Κάμερες: Ο APS αισθητήρας ή αλλιώς αισθητήρας ενεργού εικονοστοιχείου (εικόνα 2.2), αποτελείται από ένα ολοκληρωμένο κύκλωμα που περιέχει μία σειρά από αισθητήρες-εικονοστοιχεία. Κάθε ένα από αυτά περιέχει έναν φωτοανιχνευτή και έναν ενεργό ενισχυτή. Καθώς από το 2010 το ολοκληρωμένο κύκλωμα υλοποιείται κυρίως με χρήση CMOS τρανζίστορ, ο αισθητήρας αυτός έγινε ευρέως γνωστός ως CMOS sensor και επιλέγεται ως μία εναλλακτική επιλογή από τον CCD image sensor. Εικόνα 2.2. CMOS αισθητήρας. Ο APS προσφέρει μεγαλύτερες ταχύτητες από τον αισθητήρα παθητικού εικονοστοιχείου. Σε γενικές γραμμές καταναλώνει περισσότερη ισχύ από τον CCD αλλά έχει μικρότερη καθυστέρηση εικόνας και είναι εύκολα κατασκευάσιμος. Σε αντίθεση με τον CCD, υπάρχει η δυνατότητα της αναγνώρισης εικόνας και λειτουργιών επεξεργασίας της στο ίδιο κύκλωμα. Το μεγαλύτερο πλεονέκτημα του CMOS αισθητήρα είναι πως, γενικότερα, είναι πιο φθηνός από τον CCD. Ακόμα, μία κάμερα CMOS έχει ασθενέστερο blooming effect (εικόνα 2.3 δεξιά), δηλαδή στην περίπτωση υπερφόρτωσης ενός στοιχείου από μία πηγή φωτός, ο 26

27 αισθητήρας προκαλεί μικρότερη διαρροή της φωτεινής πηγής στα γειτονικά εικονοστοιχεία. Τέλος, το μεγαλύτερο μειονέκτημά του, οφείλεται στο γεγονός πως καθώς η λήψη γίνεται ανά σειρά και διαρκεί περίπου 1/50 sec, η εικόνα μπορεί να υποφέρει από rolling shutter effect (εικόνα 2.3 αριστερά). Εικόνα 2.3. Αριστερά-Rolling shutter effect, Δεξιά-Blooming effect. Η ψηφιακή εικόνα αναπαρίσταται μαθηματικά από μία μήτρα I με n γραμμές και m στήλες. Η μήτρα I(i, j) υποδηλώνει την τιμή φωτεινότητας της εικόνας στο εικονοστοιχείο (i, j). Κάθε pixel αποτελείται από b bits. Συνήθως, η εικόνα σε κλίμακα του γκρι (grayscale, εικόνα 2.4) περιέχει 8 bits και μπορεί να αναπαραστήσει 256 επίπεδα φωτεινότητας. Το εύρος, λοιπόν, των ακέραιων τιμών του πίνακα I είναι [0,255] (εικόνα 2.5). Το 0 αναπαριστά το μαύρο επίπεδο και το 255 το λευκό επίπεδο. [8] Εικόνα 2.4. Εικόνα σε κλίμακα του γκρι [7]. Εικόνα 2.5. Μαθηματική αναπαράσταση εικόνας σε κλίμακα του γκρι [7]. 27

28 Συστήματα συντεταγμένων Για να περιγραφούν οι μαθηματικές σχέσεις μεταξύ των σημείων στον 3D κόσμο και το 2D επίπεδο προβολής πρέπει αρχικά να ορίσουμε 4 συστήματα συντεταγμένων εικόνα (2.6). [9],[10]: 1) Σύστημα συντεταγμένων κόσμου [XW, YW, ZW] το οποίο είναι ανεξάρτητο από τη θέση και τις παραμέτρους της κάμερας. 2) Σύστημα συντεταγμένων της κάμερας [XC, YC, ZC]. 3) Σύστημα συντεταγμένων εικόνας [x, y], το οποίο αποτελεί την προοπτική προβολή των [XC, YC, ZC] στο επίπεδο απεικόνισης με σταθερό z = f (εστιακό μήκος). 4) Σύστημα συντεταγμένων εικόνας σε μονάδες pixel [u, v]. Εικόνα 2.6. Συστήματα αναφοράς [9]. Στην εικόνα 2.6 φαίνονται τα 4 συστήματα συντεταγμένων. Το [XW, YW, ZW] εμφανίζεται ως [U, V, W] και το [XC, YC, ZC] ως [X, Y, Z] [9]. Οι συντεταγμένες κάμερας έχουν επιλεγεί έτσι ώστε οι άξονες XC και YC να είναι παράλληλοι με τους άξονες x, y του συστήματος αναφοράς εικόνας. Ο ZC άξονας είναι το οπτικό κέντρο της κάμερας. Τα δύο πρώτα συστήματα αναφοράς σχετίζονται με μία μετατόπιση εκφρασμένη από τον πίνακα T και μια περιστροφή που εκφράζεται από τον πίνακα R, όπως φαίνεται στην εικόνα 2.7 [10]. 28

29 Εικόνα 2.7. Συστήματα αναφοράς [10] Απεικόνιση μέσω κάμερας λεπτού φακού Το οπτικό σύστημα της κάμερας είναι μια συλλογή φακών που χρησιμοποιούνται για να καθοδηγήσουν το φως στο επίπεδο προβολής. Οι φακοί ουσιαστικά χρησιμοποιούν τα φαινόμενα της περίθλασης, της διάθλασης και της ανάκλασης ώστε να αλλάξουν τη διεύθυνση διάδοσης του φωτός. Για λόγους απλότητας δε λαμβάνονται υπόψη τα φαινόμενα της περίθλασης και της ανάκλασης των φακών του οπτικού συστήματος, καταλήγοντας επομένως στο μοντέλο λεπτού φακού (thin lens). Το μαθηματικό μοντέλο του λεπτού φακού [10] αποτελείται από ένα 3D σημείο ΟC, που ονομάζεται κέντρο προβολής, το οποίο μαζί με τους άξονες XC, YC, ZC καθορίζει το σύστημα αναφοράς της κάμερας (εικόνα 2.7). Ένα σημαντικό μέρος του μοντέλου είναι το επίπεδο Π, που ονομάζεται επίπεδο προβολής. Ως κύριος άξονας (principal axis) ορίζεται η γραμμή που περνά από το κέντρο προβολής ΟC και είναι κάθετη στο επίπεδο της εικόνας Π ( στην εικόνα 2.7 η ευθεία OC-OC ). Επίσης, η τομή του κύριου άξονα με το επίπεδο Π στην διεύθυνση του ZC αναφέρεται ως κύριο σημείο εικόνας (principal point), ενώ η απόσταση μεταξύ του επιπέδου Π από το σημείο ΟC ονομάζεται εστιακό μήκος f (focal length). Η εστία F που βρίσκεται σε απόσταση f από το κέντρο προβολής και τέλος, οι τιμές sx (ή hx στην εικόνα 2.6), sy (ή hy στην εικόνα 2.7) είναι οι φυσικές διαστάσεις σε mm ενός εικονοστοιχείου στο επιπεδο Π. Η λειτουργία του φακού στηρίζεται σε δύο ιδιότητες. Η πρώτη είναι ότι όλες οι ακτίνες που εισέρχονται στο φακό και είναι παράλληλες με τον οπτικό άξονα, διαθλώνται έτσι ώστε να τέμνονται επί του οπτικού άξονα στο σημείο που βρίσκεται η εστία F (εικόνα 2.8). Η δεύτερη ιδιότητα είναι ότι κάθε ακτίνα που εισέρχεται στο οπτικό κέντρο του φακού δεν διαθλάται. [11] 29

30 Εικόνα 2.8. Τομή παράλληλων εισερχόμενων ακτίνων στην εστία F [12]. Έστω ότι ένα σημείο Τ ϵ Ε 3 βρίσκεται σε απόσταση P από το κέντρο του φακού O ως προς τον οπτικό άξονα (εικόνα 2.9). Από το σημείο T σχεδιάζονται δύο ακτίνες, μία παράλληλη στον οπτικό άξονα και μία η οποία διαπερνά το οπτικό κέντρο. Η πρώτη εισέρχεται κάθετα στο φακό, διαθλάται και διέρχεται από την εστία F, ενώ η δεύτερη εισέρχεται από το οπτικό κέντρο χωρίς να διαθλάται. Οι δύο ακτίνες τέμνονται στο σημείο T σε απόσταση q από το οπτικό κέντρο. Αναλύοντας κάθε άλλη ακτίνα από το σημείο T σε μια παράλληλη στον οπτικό άξονα συνιστώσα και μια συνιστώσα που διέρχεται από το οπτικό κέντρο, παρατηρείται πως όλες οι ακτίνες τέμνονται στο σημείο T. Ειδικότερα, μία ακτίνα από το T παράλληλη στον οπτικό άξονα πρέπει να περάσει από το T. Με τη χρήση όμοιων τριγώνων προκύπτει η θεμελιώδης εξίσωση λεπτού κυρτού φακού [11]: Εικόνα 2.9. Εισερχόμενες ακτίνες στο φακό από ένα σημείο στο χώρο [13]. Από την ομοιότητα των τριγώνων SOT και S OT Από την ομοιότητα των τριγώνων OPF και S T F h (2.1),(2.2) 1 h h p + 1 q = 1 f h = OS = q OS p = q = q f p f (2.1) (2.2) (2.3) Χρησιμοποιήθηκε η σύμβαση ότι το ύψος h είναι αρνητικό αν η εικόνα είναι ανεστραμμένη. Αν το σημείο τομής βρίσκεται πάνω στο επίπεδο προβολής τότε το είδωλο T του σημείου T είναι εστιασμένο. Σε άλλη περίπτωση το T προβάλλεται στο επίπεδο ως μία περιοχή σημείων (μη εστιασμένο είδωλο) [13] Απεικόνιση μέσω Pinhole κάμερας Μια κάμερα μπορεί να μοντελοποιηθεί με πολλούς τρόπους, ανάλογα με τον επιθυμητό βαθμό ακρίβειας και την εφαρμογή για την οποία προορίζεται η χρήση της. Το απλούστερο μοντέλο μιας πραγματικής κάμερας περιλαμβάνει μία οπή (pinhole) και μια οθόνη απεικόνισης (επίπεδο απεικόνισης). 30

31 Η κάμερα μικρής-οπής (pinhole) αποτελεί μια απλούστευση του μοντέλου κάμερας λεπτού φακού. Το άνοιγμα του λεπτού φακού θεωρείται ότι τείνει στο μηδέν, οπότε όλες οι ακτίνες εξαναγκάζονται να περνούν από το οπτικό κέντρο με αποτέλεσμα να μη διαθλώνται. Το διάφραγμα της κάμερας περιγράφεται ως μια οπή και δε χρησιμοποιούνται φακοί για να εστιάσουν το φως. Η pinhole κάμερα δεν περιλαμβάνει τα σφάλματα που προκαλούνται από τους φακούς όπως για παράδειγμα γεωμετρικές παραμορφώσεις ή θόλωση λόγω λανθασμένης εστίασης αντικειμένων. Τα προβλήματα που θα προκύψουν λόγω των εξιδανικεύσεων του μοντέλου μπορούν ωστόσο να παρακαμφθούν. Αυτό σημαίνει ότι μπορεί να χρησιμοποιηθεί για να περιγράψει με αρκετά καλή ακρίβεια τη λειτουργία της κάμερας στην υπολογιστική όραση. Το μαθηματικό μοντέλο της pinhole κάμερας ονομάζεται μοντέλο προοπτικής προβολής.[14] Επειδή η οπή βρίσκεται μεταξύ του 3D αντικειμένου και του επιπέδου απεικόνισης κάθε ακτίνα φωτός της σκηνής τη διαπερνά πριν φτάσει στο επίπεδο απεικόνισης στο οποίο δημιουργείται ένα ανεστραμμένο είδωλο του αντικειμένου.[10] Προοπτική προβολή (perspective transform) Οι συντεταγμένες κόσμου (X, Y, Z) ενός αντικειμένου μετατρέπονται σε συντεταγμένες εικόνας (x, y) με προοπτική προβολή. Πιο συγκεκριμένα, το σημείο Q (Χ, Υ, Ζ) στον τρισδιάστατο χώρο αντιστοιχίζεται στο 2D σημείο q (x, y, f) του επιπέδου απεικόνισης, το σημείο δηλαδή στο οποίο η ευθεία που ενώνει το Q με το κέντρο προβολής τέμνει το επίπεδο απεικόνισης (εικόνα 2.10) [20]. Υποθέτοντας πως το κέντρο του συστήματος συντεταγμένων βρίσκεται στην οπή και το f είναι το εστιακό βάθος τότε με ομοιότητες τριγώνων προκύπτει: x = f X Z (2.4) y = f Y Z (2.5) z = f (2.6) Εικόνα Προοπτική προβολή [15]. Ένα μαθηματικό μοντέλο της κάμερας-οπής απεικονίζεται στις εικόνες 2.10 και 2.11, όπου για λόγους απλότητας το επίπεδο προβολής έχει μεταφερθεί μπροστά από την οπή σε απόσταση ίση με το εστιακό βάθος, αναφέρεται ως εικονικό επίπεδο και η εικόνα δεν είναι πλέον ανεστραμμένη[10]. Αυτό το μοντέλο είναι αποδεκτό μαθηματικά, παρόλο που είναι αδύνατο να κατασκευαστεί μια κάμερα με το εικονικό επίπεδο απεικόνισης. Αγνοώντας την τρίτη συντεταγμένη που είναι σταθερή για όλα τα σημεία του εστιακού επιπέδου προκύπτουν οι μη γραμμικές σχέσεις [16]: 31

32 x = f X Z (2.7) y = f Y Z (2.8) z = f (2.9) οι οποίες περιγράφουν την προβολή ενός σημείου από τις 3 διαστάσεις στις συντεταγμένες πάνω στην εικόνα. Εικόνα Κάμερα οπής [17]. Σε ομογενείς συντεταγμένες ο μετασχηματισμός γράφεται [20]: Παράμετροι κάμερας X fx f YZ ( ) ( fy) = [ 0 1 Z 0 0 f X 0 YZ ] ( ) (2.10) 0 1 Οι εξισώσεις που περιεγράφηκαν στην ενότητα ισχύουν μόνο όταν όλες οι αποστάσεις μετρούνται στο σύστημα αναφοράς της κάμερας και οι συντεταγμένες της εικόνας έχουν την αρχή τους στο κύριο σημείο (principal point)[18]. Είναι απαραίτητη η εύρεση των εξισώσεων, οι οποίες περιέχουν τις παραμέτρους της κάμερας. Οι παράμετροι της κάμερας χωρίζονται σε 2 κατηγορίες, τις εξωγενείς παραμέτρους (extrinsic) και τις εγγενείς παραμέτρους (intrinsic). Οι εξωγενείς παράμετροι προσδιορίζουν τη θέση και τον προσανατολισμό του συστήματος αναφοράς της κάμερας σε σχέση με ένα γνωστό σύστημα αναφοράς κόσμου. Οι εγγενείς παράμετροι χρειάζονται για να συνδέσουν τις συντεταγμένες σε pixel ενός σημείου της εικόνας με τις αντίστοιχες συντεταγμένες στο σύστημα αναφοράς της κάμερας. Η διαδικασία υπολογισμού των παραμέτρων της κάμερας ονομάζεται βαθμονόμηση κάμερας (camera calibration). [7] Εξωγενείς παράμετροι Το πλαίσιο αναφοράς της κάμερας έχει εισαχθεί ώστε η θεμελιώδης εξίσωση της προοπτικής προβολής να περιγραφεί με απλή μορφή. Ωστόσο, το πλαίσιο είναι πολλές φορές άγνωστο οπότε πρέπει να καθοριστεί η θέση και ο προσανατολισμός του πλαισίου κάμερας σε σχέση με ένα γνωστό σύστημα αναφοράς χρησιμοποιώντας μόνο πληροφορίες από την εικόνα. Οι εξωγενείς παράμετροι ορίζονται ως ένα σύνολο γεωμετρικών παραμέτρων οι οποίες 32

33 προσδιορίζουν μοναδικά το μετασχηματισμό μεταξύ του πλαισίου αναφοράς κάμερας και του συστήματος αναφοράς κόσμου (εικόνες 2.7 και 2.12).[7] Ο μετασχηματισμός από τις συντεταγμένες κάμερας [XC, YC, ZC] στο σύστημα συντεταγμένων κόσμου [Xw, Yw, Zw] και αντίστροφα, μπορεί να προσδιοριστεί χρησιμοποιώντας ένα 3D διάνυσμα μετατόπισης T και έναν 3x3 πίνακα περιστροφής R. Το διάνυσμα Τ περιγράφει την αλλαγή θέσης των κέντρων OC και OW. Ο πίνακας περιστροφής R είναι ορθογώνιος και περιστρέφει τους αντίστοιχους άξονες των δύο πλαισίων αναφοράς ώστε να τους ταυτίσει μεταξύ τους. [10] Η ορθογωνιότητα του πίνακα R μειώνει σε 3 τους βαθμούς ελευθερίας του. Εικόνα Εξωγενείς παράμετροι [7]. Η σχέση που συνδέει τις συντεταγμένες ενός σημείου P στο χώρο ως προς τα συστήματα αναφοράς κόσμου Pw και κάμερας Pc είναι: P C = R(P W T) (2.11) Επομένως, οι εξωγενείς παράμετροι της κάμερας είναι το διάνυσμα μετατόπισης T και ο πίνακας περιστροφής R [10] : R 1 R=[ R 2 ]=[ R 3 R 11 R 21 R 31 R 12 R 22 R 32 R 13 R 23 R 33 ] (2.12) T 1 T = O W O C = [ T 2 ] (2.13) T Εγγενείς παράμετροι Οι εγγενείς παράμετροι προσδιορίζονται ως ένα σύνολο παραμέτρων το οποίο είναι απαραίτητο για να περιγράψει τα οπτικά, γεωμετρικά και ψηφιακά χαρακτηριστικά της κάμερας.[7] Πιο συγκεκριμένα οι εγγενείς παράμετροι της κάμερας μπορούν να συνοψιστούν ως εξής [10]: Η παράμετρος της προοπτικής προβολής. Για το μοντέλο της κάμερας οπής, αυτή δίνεται από το εστιακό μήκος (focal length) f. 33

34 Οι παράμετροι που μετασχηματίζουν το σύστημα συντεταγμένων της κάμερας [x, y] στο σύστημα συντεταγμένων της εικόνας σε μονάδες pixel [u, v]. Το κύριο σημείο (principal point) o = (ox,oy) θεωρείται το κέντρο της εικόνας και το φυσικό μέγεθος του εικονοστοιχείου (sx, sy) στους άξονες x, y είναι σταθερό. Αυτές οι παράμετροι χρησιμοποιούνται για να υπολογιστεί η σχέση που συνδέει τις συντεταγμένες [x, y] και [u, v] [10]: x = (u o x )s x (2.14) y = (v o y )s y (2.15) Συνήθως, οι συντεταγμένες u,v λαμβάνονται θετικές (εικόνα 2.6) και οι τιμές των sx=sy=1. Για παράδειγμα το σημείο [u, v]=[0, 0] στο σύστημα αναφοράς της εικόνας γίνεται [x, y]=[-ox,-oy] στο σύστημα αναφοράς της κάμερας. Επομένως, κάθε σημείο [u1, v1] στο επίπεδο απεικόνισης μετασχηματίζεται στο [u1,-ox, v1-oy] ως προς την κάμερα. Οι γεωμετρικές παραμορφώσεις που προκαλούνται από τους φακούς της κάμερας. Σε πολλές περιπτώσεις οι φακοί εισάγουν παραμορφώσεις στην εικόνα οι οποίες αλλοιώνουν κυρίως την περιφέρεια τους. Οι παραμορφώσεις αυτές στην πλειονότητά τους μπορούν να θεωρηθούν ως ακτινικές, όπου οι τιμές του αυξάνονται όσο απομακρύνονται τα σημεία από το κέντρο της εικόνας. Οι ακτινικές στρεβλώσεις μοντελοποιούνται χρησιμοποιώντας μια μη γραμμική διόρθωση στις πραγρατικές συντεταγμένες σύμφωνα με τη σχέση [10]: u = u d (1 + k 1 r 2 + k 2 r 4 ) (2.18) v = v d (1 + k 1 r 2 + k 2 r 4 ) (2.19) όπου οι [u, v] είναι ιδανικές χωρίς παραμορφώσεις συντεταγμένες, οι [ud, ud] είναι οι συντεταγμένες των παραμορφωμένων σημείων και ισχύει r 2 =ud 2 + ud 2. Συνήθως, η παραμόρφωση είναι πολύ μικρή επομένως αγνοείται σε εφαρμογές όπου δεν απαιτείται υψηλή ακρίβεια. Διαφορετικά επειδή κ2<<κ1, το κ2 θεωρείται 0 και το κ1 είναι η μόνη παράμετρος ακτινικής παραμόρφωσης που πρέπει να υπολογιστεί. [7] Πίνακας προβολής της pin-hole κάμερας Συνδυάζοντας της εξισώσεις (2.11), (2.14) και (2.15) των εξωγενών και εγγενών παραμέτρων με τις εξισώσεις (2.7), (2.8) και (2.9) προκύπτει η γραμμική εξίσωση της pin-hole κάμερας: p=mp (2.20) όπου p είναι η προβολή ενός σημείου P στο επίπεδο της εικόνας που συνδέονται με το μετασχηματισμό M της κάμερας. Η γραμμικότητα της εξίσωσης οφείλεται στον ομογενή μετασχηματισμό των συντεταγμένων. Ο πίνακας M καλείται πίνακας προβολής (projection matrix) και μπορεί να χωριστεί σε δύο επιμέρους πίνακες 34

35 M=MiMe f x s o x όπου, Mi = [ 0 f y o y ] (2.21) R 1 R 1 T Me = [ R 2 R 2 T] (2.22) R 3 T R 3 και οι πίνακες R, T δίνονται από τις παραπάνω εξισώσεις. Ο πίνακας Mi ορίζει τις εγγενείς παραμέτρους της κάμερας οπής όπως η απόσταση του επιπέδου εικόνας από το κέντρο της κάμερας (εστιακό μήκος), τη θέση του principal point ox και την παράμετρο παραμόρφωσης s των pixel της κάμερας (στις περισσότερες κάμερες τα pixel είναι ορθογώνια χωρίς παραμορφώσεις οπότε το s τείνει στο μηδέν). Ο πίνακας Me περιέχει τις εξωγενείς παραμέτρους που συνδέουν τις συντεταγμένες του πλαισίου αναφοράς κάμερας και κόσμου. Η εξίσωση p=mp ορίζει το μετασχηματισμό από τον προβολικό χώρο P 3 στο προβολικό επίπεδο P 2. Ωστόσο αυτός ο μετασχηματισμός αλλάζει κάθε σημείο μιας γραμμής σε ακριβώς ένα και το ίδιο σημείο της εικόνας στο επίπεδο απεικόνισης. Όλα τα σημεία της γραμμής που ορίζεται από το κέντρο OC και το σημείο στο χώρο προβάλλονται στο ίδιο σημείο στην εικόνα. [10] Βαθμονόμηση κάμερας Βαθμονόμηση της κάμερας είναι η διαδικασία που συνδέει, το θεωρητικό μοντέλο ανάλυσής της με την πραγματική συσκευή και υπολογίζει τη θέση και τον προσνατολισμό της σε σχέση με ένα συγκεκριμένο πλαίσιο αναφοράς. Επομένως, είναι η διαδικασία εύρεσης των εγγενών και εξωγενών παραμέτρων της κάμερας, καθώς και κάποιων παραμέτρων παραμορφώσεων. Είναι απαραίτητη η εύρεση των εξισώσεων προβολής που συνδέουν τις γνωστές συντεταγμένες ενός συνόλου 3D σημείων με τις προβολές τους και η επίλυσή τους ως προς τις παραμέτρους της κάμερας. Για να μπορέσουν να βρεθούν οι συντεταγμένες κάποιων 3D σημείων, οι μέθοδοι βαθμονόμησης βασίζονται σε μια ή περισσότερες εικόνες από ένα μοτίβο βαθμονόμησης, με γνωστή γεωμετρία (σκακιέρα) από το οποίο μπορούν να βρεθούν με ακρίβεια τα χαρακτηριστικά της εικόνας. Έχουν υλοποιηθεί αρκετοί αλγόριθμοι οι οποίοι επιλύονυν το πρόβλημα της βαθμονόμησης. Τα αποτελέσματα της βαθμονόμησης εξαρτώνται από την ακρίβεια στον υπολογισμό της θέσης των 3D και 2D σημείων αναφοράς. Επομένως, οι απαιτήσεις της εκάστοτε εφαρμογής θα πρέπει να κρίνουν την ακρίβεια της βαθμονόμησης. [7] 2.2. Μετάβαση από τον 2D χώρο της κάμερας στον 3D χώρο της σκηνής. 35

36 [9] Για την απόκτηση της 3D πληροφορίας μιας σκηνής ένα στερεοσκοπικό σύστημα χρησιμοποιεί διάφορες δισδιάστατες όψεις της και μετατρέπει τις 2D θέσεις των pixel σε 3D σημεία. Γενικά, το στερεοσκοπικό σύστημα καλείται να αντιμετωπίσει 2 βασικά προβλήματα, το πρόβλημα της αντιστοιχίας και το πρόβλημα της ανακατασκευής. Σε αυτή την ενότητα αναλύονται οι θεμελιώδεις αρχές της διοπτρικής στερεοσκοπικής όρασης. Η διοπτρική (binocular/two view) στερεοσκοπική όραση είναι μια από τις σημαντικότερες ενότητες της όρασης, με την οποία μπορεί κανείς να εξάγει πληροφορία για το βάθος και τον όγκο αντικειμένων. Δημιουργείται από ένα ζευγάρι από κάμερες όπου ένα συζυγές ζεύγος εικόνων περιέχει την πληροφορία βάθους Στερεοσκοπικό Σύστημα Για να ληφθεί η πληροφορία βάθους χρησιμοποιώντας τουλάχιστον δύο κάμερες, είναι αναγκαίο να είναι γνωστά κάποια δεδομένα για τη γεωμετρία των καμερών, η οποία αναφέρεται ως επιπολική γεωμετρία. Οι κάμερες ενός στερεοσκοπικού συστήματος μπορεί να είναι είτε παράλληλες (parallel cameras) είτε γενικότερα συγκλίνουσες (converging cameras), όπως φαίνεται στο δεξί και στο αριστερό μέρος της εικόνας 2.13 αντίστοιχα[19]. Εικόνα Αριστερά-συγκλίνουσες κάμερες, δεξιά-παράλληλες κάμερες [19] Επιπολική Γεωμετρία (Epipolar Geometry) 36

37 Εικόνα Επιπολική γεωμετρία. [10] Η επιπολική γεωμετρία είναι η εγγενής προβολική γεωμετρία μεταξύ δυο εικόνων μιας σκηνής. Είναι ανεξάρτητη από τη δομή της σκηνής και εξαρτάται μόνο από τις εσωτερικές παραμέτρους των καμερών και από τη σχετική τους θέση.[20] Βασίζεται σε δύο pinhole κάμερες κάθε μια από τις οποίες αποτελείται από το επίπεδο προβολής Πi (Πl για την αριστερή και Πr για τη δεξιά κάμερα) με κέντρα προβολής Οl και Οr και συστήματα συντεταγμένων [x l, y l, z l ] [x r, y r, z r ] αντίστοιχα. Η ευθεία που περνά από το σημείο Οi και είναι κάθετη στο επίπεδο Πi τέμνει το επίπεδο στο κύριο σημείο (principal point). Η απόσταση από αυτό το σημείο στο κέντρο Οi είναι το εστιακό μήκος (focal length). H ευθεία O l O r που ενώνει τα δύο κέντρα Οl και Οr καλείται βασική γραμμή (base line). Τα σημεία στα οποία η βασική γραμμή τέμνει το επίπεδο Πi ονομάζονται επιπολικά σημεία ei (el για την αριστερή και er για τη δεξιά). Στην ειδική περίπτωση όπου η γραμμή O l O r δεν τέμνει το επίπεδο Πi τα αντίστοιχα επιπολικά σημεία βρίσκονται στο άπειρο (εικόνα 2.14) [20], [10]. Τα σημεία p l [x l, y l, z l ], p r [x r, y r, z r ] είναι οι προβολές ενός γνωστού σημείου P του χώρου στα επίπεδα προβολής Πl και Πr. Το επίπεδο που καθορίζεται από το σημείο P και τα κέντρα προβολής Οl και Οr ονομάζεται επιπολικό επίπεδο Πe. Το επίπεδο Πe τέμνει τα επίπεδα Πl και Πr και δημιουργούνται οι επιπολικές γραμμές (οι ευθείες e l p l και e r p r ). Ο ρόλος και η σημασία των επιπολικών γραμμών μπορεί να διευκρινιστεί αν για παράδειγμα ληφθεί υπόψη μόνο η αριστερή κάμερα και αναλυθεί η προβολή pl του 3D σημείου P. Στην περίπτωση αυτή το κέντρο Οl και το σημείο pl ορίζουν την ημιευθεία O l p l. Το σημείο pl είναι προβολή τόσο του σημείου P όσο και όλων των άλλων 3D σημείων πάνω στην ημιευθεία O l p l. Επομένως, το P μπορεί να βρίσκεται οπουδήποτε στην ημιευθεία (εικόνα 2.15). Ως εκ τούτου, ο καθορισμός της ακριβούς θέσης του στο χώρο δεν είναι δυνατός με μια μόνο εικόνα. Για να υπολογιστεί η θέση του στο χώρο χρειάζεται ακόμα ένα δεύτερο σημείο προβολής της εικόνας από μια άλλη θέση. Αυτό είναι για παράδειγμα το σημείο pr στο επίπεδο Πr της δεξιάς κάμερας. Το σημείο pr και το κέντρο Οr ορίζουν μια δεύτερη ημιευθεία O r p r. Αυτή η ημιευθεία είναι σταθερή στο Οr και ταυτόχρονα τέμνει την ημιευθεία O l p l στο σημείο P. Επιπλέον, το σημείο τομής κάθε ημιευθείας O l p l ή O r p r με τα αντίστοιχα επίπεδα προβολής Πl, Πr βρίσκεται στις επιπολικές γραμμές. Ομοίως, οι προβολές των ευθειών στα αντίθετα επίπεδα προβολης αποτελούν επιπολικές γραμμές [10], [20], [21]. 37

38 Εικόνα Επιπολικές γραμμές. [15] Κάθε σημείο που παρατηρείται σε μια εικόνα, το ίδιο σημείο πρέπει να παρατηρηθεί στην άλλη εικόνα σε μια γνωστή επιπολική γραμμή. Όλα τα σημεία της ευθείας που σχηματίζει ένα 3D σημείο με το κέντρο προβολής του, προβάλλονται στο ίδιο σημείο στο επίπεδο απεικόνισης. Τα σημεία αυτά δημιουργούν μια επιπολική γραμμή στο επίπεδο προβολής της άλλης κάμερας από το σημείο προβολής μέχρι το επιπολικό σημείο. Το γεγονός αυτό είναι γνωστό ως επιπολικός περιορισμός [34]. Ο επιπολικός περιορισμός είναι χρήσιμος για τη λύση του προβλήματος αντιστοιχίας σημείων καθώς περιορίζει τη διαδικασία από ολόκληρο το επίπεδο Π (2D αναζήτηση) στην αναζήτηση τους κατά μήκος της επιπολικής γραμμής (1D αναζήτηση). Δηλαδή πιθανές αντιστοιχίσεις του σημείου x πρέπει να βρίσκονται στην επιπολική γραμμή l, ενώ αντίστοιχα πιθανές αντιστοιχίσεις του σημείου x θα αναζητηθούν στην επιπολική γραμμή l (εικόνα 2.15). Σε κάθε κάμερα ενός στερεοσκοπικού συστήματος θεωρείται ένα ξεχωριστό σύστημα συντεταγμένων με τα κέντρα τους να συμπίπτουν με τα κέντρα προβολής της κάμερας. Ο άξονας Z κάθε πλαισίου αναφοράς είναι συγγραμικός με τον οπτικό άξονα της κάθε κάμερας. Στα δύο συστήματα τα διανύσματα P l = [X l, Y l, Z l ] και P r = [X r, Y r, Z r ] αντιπροσωπεύουν το ίδιο 3D σημείο P. Από την άλλη πλευρά τα p l = [x l, y l, z l ] και p r = [x r, y r, z r ] καθορίζουν δύο διαφορετικές προβολές του σημείου P. Επιπλέον, παρατηρείται πως z l = f l και z r = f r όπου f l και f r είναι τα εστιακά μήκη της αριστερής και της δεξιάς κάμερας αντίστοιχα. [10] Στη γενική περίπτωση οι θέσεις των επιπολικών γραμμών δεν είναι γνωστές εκ των προτέρων και για να εξαχθούν πρέπει να γίνουν αρκετοί υπολογισμοί. Ωστόσο στο σύστημα λήψης κανονικού προσανατολισμού καμερών (παράλληλες κάμερες) οι επιπολικές γραμμές είναι γνωστές με αποτέλεσμα να ελαχιστοποιούνται οι πράξεις. Το γεγονός αυτό μπορεί να διευκολύνει σε μεγάλο βαθμό την αναζήτηση αντίστοιχων σημείων (correspodence).[7] Στο σύστημα παράλληλων καμερών χρησιμοποιούνται ίδιες κάμερες με γνωστές παραμέτρους (calibrated). Τα επίπεδα προβολής της αριστερής και της δεξιάς εικόνας είναι συνεπίπεδα, παράλληλα στη βασική γραμμή T και αναπαρίστανται από τα τμήματα ll και lr αντίστοιχα. Τα σημεία Ol και Or είναι τα κέντρα προβολής και βρίσκονται στο ίδιο ύψος. 38

39 Επίσης, τα εστιακά μήκη κύματος είναι ίδια για τις δύο κάμερες. Οι οπτικοί άξονες είναι παράλληλοι και οι οριζόντιοι άξονες των εικόνων ταυτίζονται. Για το λόγο αυτό το σημείο τομής των οπτικών αξόνων βρίσκεται στο άπειρο, ενώ τα σημεία προβολής pl, pr έχουν το ίδιο y. Με άλλα λόγια οι επιπολικές γραμμές e l p l και e r p r ταυτίζονται [7]. Η θέση ενός 3D σημείου P(X,Y,Z) στο χώρο βρίσκεται με τη τεχνικής της τριγωνοποίησης, δηλαδή με την τομή των ευθειών που ορίζονται από τα κέντρα προβολής και τα σημεία pl, pr (εικόνα 2.16). H τριγωνοποίηση λύνει το πρόβλημα της ανακατασκευής (θα αναλυθεί παρακάτω) και εξαρτάται άμεσα από τη λύση του προβλήματος της αντιστοιχίας. Εικόνα Σύστημα παράλληλων καμερών [7]. Έστω ότι το πρόβλημα της αντιστοιχίας έχει λυθεί, οπότε μπορεί να λυθεί η ανακατασκευή. Έστω ότι τα σημεία προβολής pl, pr έχουν συντεταγμένες (xl,yl,zl) και (xr,yr,zr) ως προς τα κέντρα προβολής αντίστοιχα, η συντεταγμένη Z είναι η απόσταση μεταξύ του σημείου P και της βασικής γραμμής T (συμβολίζεται και b). Τότε από το όμοια τρίγωνα (pl, P, pr) και (Ol, P, Or) στην εικόνα 2.16 προκύπτει ότι [7]: T+x l x r Z f = T Z (2.23) Λύνοντας ως προς Ζ: Z = f T d (2.24) όπου d=xl-xr καλείται στερεοσκοπική διαφορά (disparity) και αποτελεί το μέτρο της διαφοράς μεταξύ των αντίστοιχων σημείων στις δύο εικόνες Ανόρθωση εικόνας (image rectification) Η ανόρθωση εικόνας (image rectification) είναι μια διαδικασία μετασχηματισμού κάθε εικόνας έτσι ώστε τα ζευγάρια των επιπολικών γραμμών να γίνονται συνευθειακά και παράλληλα με τον οριζόντιο άξονά της. Δεν είναι απαραίτητη η γνώση της γεωμετρίας της σκηνής για την εφαρμογή της ανόρθωσης, καθώς μόνο το επίπεδο της εικόνας αλλάζει θέση, με περιστροφή των αρχικών καμερών γύρω από τους οπτικούς άξονές τους. Το κέντρο 39

40 προβολής και όλες οι ευθείες προβολής παραμένουν σταθερές. Μαθηματικά ένας τέτοιου είδους μετασχηματισμός σε ένα νέο επίπεδο μπορεί να περιγραφεί από ένα 3x3 πίνακα προβολής Η που ορίζεται μέχρι ένα βαθμωτό παράγοντα. Αυτός ο πίνακας συνιστά ένα μετασχηματισμό συντεταγμένων από την αρχική εικόνα στη μετασχηματισμένη: u u [ v ] = H [ v ] (2.25) w w Έτσι, η διόρθωση ενός στερεοσκοπικού ζεύγους μπορεί να επιτευχθεί με την εφαρμογή 2 κατάλληλων πινάκων HL,HR στις εικόνες. Σε μια βαθμονομημένη διάταξη οι HL, HR μπορούν να υπολογιστούν εύκολα από τη γνώση της θέσης και του προσανατολισμού των καμερών. Πρέπει να παρατηρηθεί πως η μόνη απαίτηση για το νέο επίπεδο εικόνας είναι ότι πρέπει να παραλληλιστεί με τη βασική γραμμή (baseline). Η γωνία περιστροφής επηρεάζει τη στρέβλωση των ανορθωμένων εικόνων. Στις στερεοσκοπικές εφαρμογές η παράμετρος αυτή επιλέγεται συχνά έτσι ώστε να ελαχιστοποιεί σε κάποιο ποσοστό τη στρέβλωση των εικόνων. Σε γενικές γραμμές, μία ανορθωμένη εικόνα δεν περιέχεται στην ίδια περιοχή του επιπέδου της εικόνας με την αρχική. Για να διατηρηθούν όλα τα σημεία εντός των εικόνων, ίδιου μεγέθους με τις αρχικές, απαιτείται η αναδειγματοληψία των εικόνων συνήθως χρησιμοποιώντας οπισθοδρομική χαρτογράφηση (backward mapping). Για κάθε εικονοστοιχείο (x,y ) στην διορθωμένη εικόνα, η αντίστοιχη θέση (x,y) της αρχικής εικόνας υπολογίζεται χρησιμοποιώντας τον πίνακα H -1. Ουσιαστικά με τη διαδικασία της ανόρθωσης εικόνων κάθε σύστημα σύστημα τυχαίου προσανατολισμού καμερών (π.χ συγκλίνουσες κάμερες) μετατρέπεται σε σύστημα λήψης κανονικού προσανατολισμού καμερών. Το πρόβλημα της στέρεο-αντιστοίχισης μπορεί να λυθεί πιο αποτελεσματικά αν οι εικόνες έχουν πρώτα διορθωθεί καθώς περιορίζει την αναζήτηση αντιστοιχιών σε 1D εξέταση των σημείων κατά μήκος των οριζόντιων επιπολικών γραμμών. Επομένως, για να αντιστοιχηθεί το σημείο (x1, y1) της αριστερής εικόνας στη δεξιά εικόνα αρκεί να εξεταστούν τα σημεία κατά μήκος της γραμμής y=y1 στη δεξιά εικόνα. [22], [7] Πρόβλημα αντιστοιχίας Ο υπολογισμός των αντιστοιχιών μεταξύ των pixels των δύο εικόνων είναι απαραίτητη προϋπόθεση για να αποκτηθούν πληροφορίες για το βάθος και αποτελεί το πρόβλημα της αντιστοιχίας (correspondence problem). Τα pixels που αντιπροσωπεύουν το ίδιο σημείο σε διαφορετικές εικόνες πρέπει να βρεθούν και στη συνέχεια να αναλυθούν γεωμετρικά [7]. Συνήθως, ο πίνακας στερεοσκοπικών διαφορών (disparity map) είναι ένας 2D πίνακας ο οποίος πρέπει να θεωρηθεί σε σχέση με μια συγκεκριμένη εικόνα αναφοράς (είτε η αριστερή εικόνα, είτε η δεξιά). Στην περίπτωση ενός ανορθωμένου στερεοσκοπικού ζεύγους ο χάρτης στερεοσκοπικών διαφορών περιέχει μόνο τις οριζόντιες μετατοπίσεις από την εικόνα αναφοράς [10]. Οι αλγόριθμοι επίλυσης της αντιστοιχίας πρέπει να λαμβάνουν υπόψη ότι ορισμένες περιοχές δεν είναι ορατές και από τις δύο κάμερες λόγω της γεωμετρίας της σκηνής και λόγω διαφορετικού οπτικού πεδίου. Στην εικόνα 2.17 φαίνεται η περίπτωση όπου το σημείο Μ του αντικειμένου Β1 εντοπίζεται από την αριστερή κάμερα αλλά δε μπορεί να εντοπιστεί από τη 40

41 δεξιά καθώς υπάρχει το αντικείμενο Β2 που φράσει το οπτικό πεδίο της. Τα κομμάτια των εικόνων που δε μπορούν να αντιστοιχιστούν ονομάζονται occlusions και οι αλγόριθμοι αντιστοίχισης πρέπει να τα λαμβάνουν υπόψη [10]. Εικόνα Τμήματα της εικόνας που δε μπορούν να αντιστοιχιθούν (occlusion) [10]. Κάποιες κοινές παραδοχές στις οποίες βασίζονται οι περισσότερες μέθοδοι για την εύρεση των αντιστοιχιών σε ζεύγη εικόνων είναι οι εξής: Τα περισσότερα σημεία είναι ορατά και από τις δύο οπτικές γωνίες. Οι περιοχές αντιστοιχίας των εικόνων είναι παρόμοιες. Αυτές οι υποθέσεις ισχύουν για στερεοσκοπικά συστήματα, στα οποία η απόσταση του 3D σημείου από τις κάμερες είναι πολύ μεγαλύτερη από τη βασική γραμμή. Σε γενικές γραμμές, ωστόσο, και οι δύο υποθέσεις μπορεί να είναι ψευδείς και έτσι το πρόβλημα αντιστοιχίας καθίσταται πολύ πιο δύσκολο. Στο πρόβλημα αντιστοιχίας δίνεται ένα στοιχείο στην αριστερή εικόνα και αναζητείται το αντίστοιχο στοιχείο στη δεξιά εικόνα. Αυτό περιλαμβάνει αποφάσεις: ποιο στοιχείο της εικόνας να ταιριάξει (να επιλεχτεί), και ποιο μέτρο ομοιότητας να υιοθετηθεί. Για λόγους ευκολίας οι αλγόριθμοι αντιστοίχισης ταξινομούνται σε δύο κατηγορίες, τους αλγόριθμους βασισμένους σε συσχέτιση (correlation based algorithms) και τους αλγορίθμους βασισμένους σε χαρακτηριστικά σημεία (feature based algorithms). Η πρώτη μέθοδος προσπαθεί να λύσει το πρόβλημα βρίσκοντας αντιστοιχίες στις εντάσεις φωτεινότητας για όλα τα σημεία των δύο εικόνων, ενώ η δεύτερη εντοπίζει αντιστοιχίες σε διάσπαρτα σύνολα σημείων χρησιμοποιώντας χαρακτηριστικά της εικόνας. [7] Μέθοδοι βασισμένες σε συσχέτιση: Στις μεθόδους βασισμένες σε συσχέτιση (correlation based methods) τα στοιχεία προς αντιστοίχιση είναι παράθυρα της εικόνας με σταθερό μέγεθος, ενώ το κριτήριο ομοιότητας είναι το μέτρο της συσχέτισης μεταξύ των παραθύρων αυτών. Το σημείο αντιστοίχισης δίνεται από το παράθυρο που μεγιστοποιεί το κριτήριο ομοιότητας εντός της περιοχής αναζήτησης [7]. Οι αλγόριθμοι υπολογισμού στερεοσκοπικών διαφορών χωρίζονται κυρίως σε τέσσερα μέρη [23]: 41

42 Υπολογισμός του κόστους Άθροισμα του κόστους Υπολογισμός στερεοσκοπικών διαφορών Βελτίωση στερεοσκοπικών διαφορών Αλγόριθμος Semi Global Block Matching Ο αλγόριθμος Semi Global Block Matching (SGBM) είναι αλγόριθμος βασισμένος σε συσχέτιση και αναπτύχθηκε από τον Hirschmuller [24]. Για τον αλγόριθμο SGBM τα βήματα χρησιμοποιούνται ως εξής: Υπολογισμός του κόστους αντιστοιχίας (Cost Computation) [24]: Αρχικά ορίζεται μια τιμή για μέγιστη στερεοσκοπική διαφορά dmax και δίνεται ένα ζεύγος ανορθωμένων εικόνων. Σε κάθε pixel (x, y) στην εικόνα βάσης IL (αριστερή εικόνα) το αντίστοιχο pixel στην εικόνα αντιστοίχισης IR (δεξιά εικόνα) είναι βέβαιο ότι θα κυμαίνεται μεταξύ των θέσεων (x, y) και (x-dmax, y). Οι επιλεγμένες τιμές disparity αξιολογούνται από μια συνάρτηση κόστους CBT(p,d). C BT (p, D p ) = I L (p) I R (p d) (2.26) Άθροισμα του κόστους (Cost Aggregation) [24]: Για να απαλειφθούν λανθασμένες στερεοσκοπικές διαφορές που προκύπτουν από τη συνάρτηση κόστους και να βρεθούν οι σωστές, η ενέργεια της εικόνας στερεοσκοπικών διαφορών υπολογίζεται από το σύνολο όλων των κοστών των pixel για το disparity d. Χρησιμοποιεί τα αρχικά κόστη CBT(p,d) και δύο παραμέτρους που εξαρτώνται από τη διαφορά των αποκλίσεων σε μια γειτονιά από pixels. Αν οι αποκλίσεις διαφέρουν κατά 1 pixel προστίθεται η παράμετρος P1 μαζί με τα κόστη CBT(p,d), ενώ για μεγαλύτερες διαφορές προστίθεται η παράμετρος P2. Η χρήση του P1 εξασφαλίζει την ομαλότητα των περιοχών. Ε(D) = P C BT (p, d P ) + q N p P 1 T[ D p D q = 1] + q N p P 2 T[ D p D q > 1] ) (2.27) όπου Νp η γειτονία του pixel p. O αλγόριθμος προσπαθεί να ελαχιστοποιήσει την παραπάνω συνάρτηση ενέργειας Ε(D) της εικόνας στερεοσκοπικών διαφορών D. Η ελαχιστοποίηση της E(D) κανονικά είναι ένα 2D πρόβλημα που είναι δύσκολο στην επίλυση του. Ο αλγόριθμος SGBM απλοποιεί τη βελτιστοποίηση διασχίζοντας 1D μονοπάτια Lr και χρησιμοποιώντας κάποιους περιορισμούς σε αυτά. Κατά μήκος κάθε διαδρομής Lr, το ελάχιστο κόστος για να φτάσει σε ένα pixel p υπολογίζεται σύμφωνα με την συνάρτηση E(D). Η συνάρτηση του Lr η οποία είναι αναδρομική καθορίζει ένα δεύτερο μέτρο κόστους για κάθε pixel σε μια συγκεκριμένη θέση (x, y) με τιμή στερεοσκοπικής διαφοράς d. Επομένως, το κόστος για ένα pixel απαιτεί όλες τις τιμές κόστους των προηγούμενων εικονοστοιχείων. Αυτό γίνεται διασχίζοντας μονοπάτι από τα αριστερά προς τα δεξιά. Αυτή η διάσχιση προσομοιώνει αποτελεσματικά τους περιορισμούς που θέτει η συνάρτηση ενέργειας E(D). Ωστόσο είναι δυνατό σε ένα pixel να τεθεί χαμηλότερη τιμή κόστους εάν προσαρμόζει την 42

43 τιμή στερεοσκοπικής διαφοράς σύμφωνα με τα γειτονικά του ακολουθώντας μόνο ένα μονοπάτι. Έτσι γίνεται αναγκαία η εκτέλεση της διαδικασίας για περισσότερα μονοπάτια με διαφορετικούς προσανατολισμούς. Ο αριθμός διαδρομών που εκτελείται πρέπει να είναι τουλάχιστον 8. L r (p, d) = C BT (p, D P ) + min(l r (p r, d), L r (p r, d 1) + P 1, L r (p r, d + 1) +P 1, min L r (p r, i) + P 2 ) min L r (p r, k) i k (2.28) Η πληροφορία από όλα τα μονοπάτια συγχωνεύεται για όλα τα εικονοστοιχεία και για όλες τις τιμές διαφορών στη σχέση S(p, D) = L r (p, d) r (2.29) Υπολογισμός στερεοσκοπικών αποκλίσεων (Disparity Computation) [24]: Η τιμή απόκλισης DL για κάθε pixel αντιστοιχεί στο ελάχιστο κόστος, δηλαδή: D L (p) = argmin d (S(p, d)) (2.30) Το τελευταίο βήμα υπολογίζει την στερεοσκοπική διαφορά που ελαχιστοποιεί το κόστος κάθε pixel δεδομένης της S. Ο χάρτης διαφορών DL της εικόνας αναφοράς υπολογίζεται επιλέγοντας το ελάχιστο κόστος διαδρομής για κάθε εικονοστοιχείο. Αυτό γίνεται με την ακρίβεια υποδιαίρεσης εικονοστοιχείου (subpixel accuracy) επιλέγοντας το ελάχιστο μιας τετραγωνικής καμπύλης μέσω του κόστους των γειτονικών pixel. Ο χάρτης διαφορών DR της εικόνας αντιστοίχισης IR υπολογίζεται διατρέχοντας την επιπολική γραμμή του q εικονοστοιχείου στην εικόνα αντιστοίχισης. Η απόκλιση είναι και πάλι η απόκλιση του χαμηλότερου κόστους διαδρομής. Για τη βελτίωση της ποιότητας του χάρτη απόκλισης, μπορεί να υπολογιστούν και πάλι οι αποκλίσεις, αλλά με την IR ως βασική εικόνα και IL ως εικόνα αντιστοίχισης[7]. Δυστυχώς, δεν υπάρχει καμία εύκολη μέθοδος αντιστοιχίας που να δίνει βέλτιστα αποτελέσματα υπό όλες τις πιθανές συνθήκες. Η επιλογή μιας μεθόδου εξαρτάται από παράγοντες όπως, η εφαρμογή, το διαθέσιμο υλικό, ή τις απαιτήσεις του λογισμικού. Οι μέθοδοι με βάση τη συσχέτιση είναι σίγουρα πιο εύκολες να εφαρμοστούν και παρέχουν πυκνό χάρτη αποκλίσεων (disparity) και μπορούν να χρησιμοποιηθούν μόνο σε στερεοσκοπικά συστήματα κανονικού προσανατολισμού. Χρειάζονται εικόνες με υφή για να λειτουργήσουν καλά. Ωστόσο, λόγω της αλλαγής στην κατεύθυνση φωτισμού, είναι ανεπαρκείς για ζεύγη εικόνων που λαμβάνονται από πολύ διαφορετικές οπτικές γωνίες. Επίσης, η παρεμβολή (interpolation) είναι απαραίτητη για να βελτιώσει τις αντιστοιχίες σε ακρίβεια υποδιαίρεσης εικονοστοιχείου και μπορεί να κάνει τη μέθοδο με βάση τη συσχέτιση αρκετά ακριβή[7]. Η απόδοση των οποιωνδήποτε μεθόδων αντιστοιχίας κινδυνεύει από occlusion (σημεία χωρίς αντίστοιχό τους στην άλλη εικόνα) και λανθασμένες αντιστοιχίες (ψευδή ζεύγη 43

44 αντιστοιχίας που δημιουργούνται από θόρυβο). Κατάλληλοι περιορισμοί μειώνουν τις συνέπειες των δύο φαινομένων [25] : Επιπολικός περιορισμός (epipolar constraint): Δεδομένου ενός σημείου xl στην αριστερή εικόνα, το 3D σημείο X του χώρου πρέπει να βρίσκεται στη συζυγή επιπολική γραμμή της δεξιάς εικόνας. Περιορισμός μοναδικότητας (uniqueness constraint): Κάθε χαρακτηριστικό σημείο ή εικονοστοιχείο της μίας εικόνας μπορεί να αντιστοιχηθεί μόνο με ένα χαρακτηριστικό σημείο ή εικονοστοιχείο στην άλλη εικόνα. Περιορισμός συνέχειας (continuity constraint): η στερεοσκοπική διαφορά των αντιστοιχιών πρέπει να διαφέρει ομαλά σχεδόν παντού πάνω στην εικόνα. Περιορισμός Ordering constraint: Έστω τα σημεία m m και n n αντίστοιχα σημεία στις δύο εικόνες. Αν το m βρίσκεται αριστερά του σημείου n στην εικόνα, τότε το m πρέπει, επίσης, να βρίσκεται αριστερά του n και αντίστροφα Πρόβλημα ανακατασκευής Μετά την αντιμετώπιση του προβλήματος της αντιστοιχίας είναι δυνατό να επιλυθεί το πρόβλημα της στερεοσκοπικής ανακατασκευής, το δεύτερο από τα δύο βασικά προβλήματα που καλείται να λύσει ένα στερεοσκοπικό σύστημα. Το πρόβλημα της ανακατασκευής μελετά τη γεωμετρία της ανάκτησης της 3D πληροφορίας από ένα 2D στερεοσκοπικό ζεύγος εικόνων. Βασική προϋπόθεση για τη λύση είναι ο υπολογισμός ενός πλήθους αντιστοιχιών μεταξύ των στοιχείων του στερεοσκοπικού ζεύγους. Το πρόβλημα απλοποιείται σε μεγάλο βαθμό αν είναι γνωστές οι εγγενείς και εξωγενείς παράμετροι των καμερών. Στη συγκεκριμένη παράγραφο θεωρούνται γνωστές αυτές οι παράμετροι, ανορθωμένες οι εικόνες και παρουσιάζεται η επίλυση μέσω τριγωνοποίησης. Στην εξίσωση 2.31 παρατίθενται οι τύποι των 3D συντεταγμένων ενός σημείου στο χώρο με βάση την τριγωνοποίηση. Στην περίπτωση που το κέντρο του συστήματος συντεταγμένων βρίσκεται στην αριστερή κάμερα τότε οι 3D συντεταγμένες του σημέιου που προκύπτουν από τις εξισώσεις 2.7, 2.8 και 2.24 είναι οι εξής [19]: b (X, Y, Z) = (x l, y b, b f )=( x b d d d r + b, y b, b f ) (2.31) d d d όπου d=xl-xr, b=βασική γραμμή και f=εστιακό μήκος. 44

45 3. Ο ρομποτικός βραχίονας Katana s400 6M90G O ρομποτικός βραχίονας Katana 400 6M90G αποτελεί δημιουργία της ελβετικής εταιρίας Neuronics AG. Απαρτίζεται από 6 DC κινητήρες οι οποίοι παρέχουν πέντε περιστροφικούς βαθμούς ελευθερίας και ως τελικό στοιχείο δράσης την αρπάγη, η οποία πραγματοποιεί κινήσεις ανοίγματος και κλεισίματος. Οι κινητήρες διαθέτουν ψηφιακούς κωδικοποιητές θέσης. Κάθε κινητήρας έχει την δυνατότητα να κινείται αυτόνομα σε σχέση με τους υπόλοιπους κάτι που επιτρέπει παράλληλες κινήσεις. Επιπλέον, ο βραχίονας Katana έχει μεγάλη ακρίβεια στις κινήσεις του, κάτι που επιτρέπει την αναπαραγωγή των κινήσεων του με σφάλμα ±0.1mm. Ο βραχίονας αυτός έχει βάρος περίπου 4 κιλά και μπορεί να χειριστεί φορτίο μέχρι τα 500gr. Για την αποφυγή βλαβών και συγκρούσεων ο ελεγκτής του είναι εξοπλισμένος με ανιχνευτή σύγκρουσης. Πρέπει να αναφερθεί πως ο Katana είναι υποεπενεργούμενος βραχίονας (underactuated robot) καθώς έχει πέντε βαθμούς ελευθερίας οι οποίοι είναι κατά ένας λιγότεροι από τις διαστάσεις του χώρου εργασίας. Ο τελευταίος έχει τρείς διαστάσεις για το Καρτεσιανό σύστημα και τρείς διαστάσεις για τον προσανατολισμό. Λείπει ένας βαθμός ελευθερίας από την αρπάγη καθώς γίνεται η κίνηση roll αλλά δεν μπορεί να πραγματοποιηθεί η κίνηση yaw (εικόνα 3.1). Οπότε θέτουμε περιορισμούς για το περιβάλλον εργασίας, δηλαδή τα αντικείμενα πρέπει να τοποθετούνται στα μέρη που είναι εφικτό να πιαστούν από τον ρομποτικό βραχίονα έχοντας τον συγκεκριμένο προσανατολισμό που επιθυμούμε. Στην εικόνα 3.2 εμφανίζονται τα μήκη και τα υπόλοιπα μεγέθη του ρομποτικού βραχίονα. Στον πίνακα 3.1 καταγράφονται κάποια από τα χαρακτηριστικά του όπως, οι προεπιλεγμένες γωνίες των κινητήρων, το περιστροφικό τους εύρος καθώς και τα μήκη κάθε link του βραχίονα. Εικόνα 3.1. Roll- Pitch-Yaw κινήσεις. Εικόνα 3.2. Μήκη των στοιχείων του Katana. 45

46 Πίνακας 3.1 Βαθμοί 5 Ελευθερίας Μέγιστο ύψος 687 Προεπιλεγμένες Μ1 0 θέσεις γωνιών Μ ( ) Μ Μ Περιστροφικό Εύρος γωνιών ( ) Μήκη των Links (mm) Μ5 8.5 Μ1 +/ Μ /-30 Μ3 +/ Μ4 +/-112 Μ5 +/-168 Μ6 140 (αρπάγη) UA 190 FA 139 WR GR 150.5(αρπάγη) 3.1. Σύνδεση του Katana με τον ηλεκτρονικό υπολογιστή Ο Βραχίονας Katana 400 μπορεί να συνδεθεί με τον ηλεκτρονικό υπολογιστή μέσω ενός καλωδίου USB ή Ethernet Σύνδεση μέσω καλωδίου USB Στην σύνδεσή του με τον ηλεκτρονικό υπολογιστή το Katana αναγνωρίζεται ως USB Ethernet Device. Σε περιβάλλον Windows στην πρώτη σύνδεση του ανοίγει ένα παράθυρο εγκατάστασης του νέου υλικού και επιλέγοντας την επιθυμητή θέση, γίνεται εγκατάσταση του driver του βραχίονα ως συσκευή Network. Στη συνέχεια πρέπει να προχωρήσουμε στις ιδιότητες της σύνδεσης αυτής ώστε να ρυθμίσουμε την IP διεύθυνση και την Μάσκα Δικτύου με τις ακόλουθες τιμές: Διεύθυνση IP: Subnet Mask: Για τον έλεγχο της σωστής επικοινωνίας με τον βραχίονα ανοίγουμε ένα Command Promt παράθυρο, και με την εντολή ping , επιβεβαιώνουμε την σύνδεση ή μη του Katana. Στην μεταφόρτωση ενός προγράμματος χρήσης του βραχίονα, χρησιμοποιείται όμως η IP: έναντι αυτής που τοποθετείται κατά την σύνδεση. [26] Σύνδεση μέσω καλωδίου Ethernet Ο ρομποτικός βραχίονας Katana έχει την δυνατότητα να συνδεθεί είτε μέσω ενός καλωδίου Ethernet, είτε μέσω ενός τοπικού δικτύου LAN. Μέσω του WebInterface του 46

47 βραχίονα μπορούν να ρυθμιστούν σε οποιεσδήποτε τιμές η IP και η μάσκα δικτύου του. Το Katana αποκτά την ακόλουθη στατική IP και μάσκα δικτύου: [26], [27] Διεύθυνση IP: Subnet Mask: Εικόνα 3.3. WebInterface του Katana Κινηματικές Εξισώσεις Στη συνέχεια θα αναλυθεί το θεωρητικό υπόβαθρο της κινηματικής του ρομποτικού βραχίονα. Για τον υπολογισμό των κινηματικών εξισώσεων αυτών χρησιμοποιήθηκε το Robotics Toolbox (έκδοση 9.9) του Peter Corke σε περιβάλλον Matlab R2011b Denavit Hartenberg Παράμετροι Για την εύρεση και την ανάλυση των κινηματικών εξισώσεων ενός ρομποτικού βραχίονα πρέπει πρώτα να ευρεθούν οι Denavit Hartenberg παράμετροι. Η μέθοδος αυτή αναπτύχθηκε καταρχήν για την περιγραφή της κινηματικής σύνθετων μηχανισμών από ένα ελάχιστο σύνολο παραμέτρων. Αργότερα, προσαρμόσθηκε για την περιγραφή της κινηματικής ρομποτικών μηχανισμών, με την χρήση των τεσσάρων μεταβλητών di, θi, ai και αi όπου i η εκάστοτε άρθρωση του ρομποτικού βραχίονα. Προκειμένου να εφαρμοστεί η μέθοδος αυτή πρέπει να εφαρμοστεί η ακόλουθη διαδικασία: 47

48 Αρχικά αναγνωρίζουμε τους άξονες των αρθρώσεων αν πρόκειται για πρισματικούς* 1 ή περιστροφικούς* 2, Βρίσκουμε τα μήκη των συνδέσμων (ai, link lengths), δηλαδή τα μήκη των κοινών καθέτων των αξόνων. Σύμφωνα με το σχήμα 3.4 είναι η απόσταση του σημείου τομής των αξόνων xi και zi-1 μέχρι το σημείο Oi. Βρίσκουμε τις στρέψεις των συνδέσμων (αi, link twists), δηλαδή τις γωνίες των αξόνων των αρθρώσεων. Άρα είναι η γωνία που σχηματίζουν οι άξονες zi-1 και zi. Στη συνέχεια βρίσκουμε τις μετατοπίσεις των συνδέσμων (di, link offsets). Σύμφωνα με το σχήμα 3.4 είναι η απόσταση κατά μήκος του άξονα zi-1 από το σημείο Oi-1 μέχρι το σημείο τομής των αξόνων xi και zi-1. Στην περίπτωση πρισματικής άρθρωσης το di είναι μεταβλητό. Τέλος, βρίσκουμε τις γωνίες των αρθρώσεων (θi, joint angles). Όπως φαίνεται στο σχήμα 3.4 είναι η γωνία μεταξύ των αξόνων xi-1 και xi γύρω από τον άξονα zi κατά την δεξιόστροφη φορά. Όταν έχουμε περιστροφική άρθρωση οι σταθερές παράμετροι είναι οι ai, αi, θi ενώ η μεταβλητή είναι η θi. Στην περίπτωση πρισματικών αρθρώσεων έχουμε τις ai, αi και θi σταθερές και την di ως μεταβλητή. Εικόνα 3.4. Denavit-Hartenberg παράμετροι. Σύμφωνα με την παραπάνω διαδικασία υπολογίσαμε τις DH παραμέτρους, για τον ρομποτικό βραχίονα Katana, που εμφανίζονται στον πίνακα 3.2. *1: Ο άξονας της άρθρωσης είναι η κατεύθυνση της ολίσθησης *2: Ο άξονας της άρθρωσης είναι ο άξονας περιστροφής 48

49 Πίνακας 3.2: DH παράμετροι Link di ai θi αi θ1 * θ2 * θ3 * θ4 * θ5 * Ορθή Κινηματική Με την χρήση των εξισώσεων ορθής κινηματικής επιθυμούμε να προσδιορίσουμε την θέση και τον προσανατολισμό του τελικού στοιχείου δράσης ενός ρομπότ, έχοντας ως δεδομένο τις μεταβλητές των αρθρώσεων. Λαμβάνοντας υπόψη τα χαρακτηριστικά των DH παραμέτρων, το μητρώο μετασχηματισμού των συντεταγμένων Οi-1 ως προς το σύστημα συντεταγμένων Oi, δίνεται με τους εξής μετασχηματισμούς: Περιστροφή γωνίας θi του βραχίονα i-1 γύρω από τον άξονα zi-1, έτσι ώστε ο άξονας xi-1 να είναι παράλληλος με τον άξονα xi. Μεταφορά απόστασης di του βραχίονα i-1 κατά μήκος του άξονα zi-1, για να συμπίπτουν οι άξονες xi-1 και xi. Μεταφορά απόστασης ai του βραχίονα i-1 κατά μήκος του άξονα xi, έτσι ώστε τα κέντρα των δύο συστημάτων να συμπίπτουν. Περιστροφή γωνίας αi του βραχίονα i-1 γύρω από τον άξονα xi έτσι ώστε τα δύο συστήματα συντεταγμένων να συμπίπτουν. Τα παραπάνω βήματα μπορούν να εκφραστούν με τα βασικά ομογενή μητρώα μετασχηματισμού περιστροφής και μεταφοράς. Έτσι, η ορθή κινηματική υπολογίζεται με ένα γινόμενο πινάκων της μορφής: i 1 it = R z (θ i )Q i (d i )D x (a i 1 )R x (α i 1 ) (3.1) Η εξίσωση 3.1 δίνει αποτέλεσμα τον εξής πίνακα i 1 it cosθ i cosα i sinθ i sinα i sinθ i a i cosθ i sinθ = [ i cosα i cosθ i sinα i cosθ i a i sinθ i ] (3.2) 0 sina i cosα i d i Η τελική μήτρα μετασχηματισμού (εξίσωση 3.2) προκύπτει από το γινόμενο των πινάκων αυτών για κάθε i, όπου i = 0,1,, n όπου n ο αριθμός των αρθρώσεων του βραχίονα: base end_effectort 0 = 1 T 1 n 1 2 T n T (3.3) Με την χρήση του Robotics Toolbox, υπολογίστηκε ο παραπάνω πίνακας για το ρομποτικό βραχίονα Katana. Ο κώδικας για τον υπολογισμό του παρουσιάζεται στο Παράρτημα Α. Ο πίνακας αυτός μετά από απλοποιήσεις είναι ο εξής: 49

50 0.1473cosθ 1 cos(θ sin (θ 2 + θ 3 + θ 4 )cosθ 2 + θ 3 + θ 4 ) cosθ 1 sinθ 5 cos (θ 2 + θ 3 + θ 4 )cosθ 1 cosθ sinθ 1 cosθ 2 1 +cosθ 5 sinθ 1 sinθ 1 sinθ sinθ 1 cos (θ 2 + θ 3 ) sinθ 1 sin (θ 2 + θ 3 + θ 4 ) 0 5 Τ = sinθ 1 cos (θ sin (θ 2 + θ 3 + θ 4 )sinθ 2 + θ 3 + θ 4 )sinθ 1 sinθ 5 cos (θ 2 + θ 3 + θ 4 )sinθ 1 cosθ cosθ 1 cosθ 2 1 cosθ 1 cosθ 5 +cosθ 1 sinθ cosθ 1 cos(θ 2 + θ 3 ) cosθ 1 sin (θ 2 + θ 3 + θ 4 ) cos (θ 2 + θ 3 + θ 4 ) sin(θ 2 + θ 3 + θ 4 )sinθ 5 sin (θ 2 + θ 3 + θ 4 )cosθ sin (θ 2 + θ 3 ) +0.19sin (θ 2 ) cos (θ 2 + θ 3 + θ 4 ) [ ] Οι πρώτες τρείς στήλες του πίνακα αυτού περιέχουν τα συνημίτονα κατεύθυνσης των αξόνων του πλαισίου i, ενώ η τέταρτη στήλη περιλαμβάνει τη θέση της αρχής Oi. Δηλαδή είναι μορφής: r 11 r 12 r 13 p x base end_effectort r = [ 21 r 31 r 22 r 32 r 23 r 33 p y ] p z (3.4) Χώρος Εργασίας Ως χώρος εργασίας (workspace) ενός ρομποτικού βραχίονα ορίζεται η περιοχή που σχηματίζεται από το κέντρο του τελικού στοιχείου δράσης, όταν οι αρθρώσεις του μπορούν να εκτελέσουν όλες τις επιτρεπτές κινήσεις. Το σχήμα του χώρου εργασίας εξαρτάται από τα συστήματα συντεταγμένων των αξόνων του ρομπότ, ενώ το μέγεθός του από τις διαστάσεις των links του βραχίονα. Οι συνθήκες που πρέπει να τηρούνται για τον χώρο εργασίας του βραχίονα δίνονται από τα εύρη των γωνιών των κινητήρων: [28] < θ 1 < < θ 2 < < θ 3 < < θ 4 < < θ 5 < 168 Για την εύρεση του χρησιμοποιήθηκαν οι εξισώσεις της ορθής κινηματικής που παρουσιαστήκαν στο κεφάλαιο Το σχηματικό διάγραμμα παρατίθεται στην εικόνα 3.5 [27]. Ο χώρος εργασίας όπως σχεδιάστηκε σε περιβάλλον Matlab εμφανίζεται στην εικόνα

51 Εικόνα 3.5. Σχηματικό διάγραμμα περιβάλλοντος εργασίας Katana. Εικόνα 3.6. Τομή περιβάλλονοντος εργασίας που σχεδιάστηκε σε Matlab. 51

52 3.4. Συστήματα συντεταγμένων Στο κεφάλαιο αυτό αναλύονται τα διαφορετικά συστήματα συντεταγμένων του ρομπότ, καθώς και οι γωνίες, οι οποίες είναι απαραίτητες για τον προσανατολισμό του εργαλείου Σύστημα συντεταγμένων του KATANA Η θέση του εργαλείου, για παράδειγμα η αρπάγη, η οποία είναι συνδεδεμένη στην άκρη του βραχίονα, περιγράφεται από το TCP του (κεντρικό σημείο εργαλείου- Tool Center Point). Αυτό είναι ένα φανταστικό σημείο αναφοράς, το οποίο βρίσκεται στο κέντρο του εργαλείου. Για να περιγραφεί η στάση του εργαλείου του ρομπότ, απαιτούνται οι συντεταγμένες του TCP του και ο προσανατολισμός του. Στον ρομποτικό βραχίονα Katana χρησιμοποιούνται τρία διαφορετικά συστήματα συντεταγμένων: Kw: Παγκόσμιο σύστημα συντεταγμένων (world coordinates) ΚB: Σύστημα συντεταγμένων της βάσης (base coordinates) Κtool: Σύστημα συντεταγμένων του εργαλείου (tool coordinates) Εικόνα 3.7. Συστήματα Συντεταγμένων. [29] Παγκόσμιο σύστημα συντεταγμένων Το παγκόσμιο σύστημα συντεταγμένων είναι ένα σταθερό σύστημα. Το κέντρο και ο προσανατολισμός του μπορεί να επιλεχθεί από τον χρήστη ανάλογα με την εφαρμογή (π.χ. κέντρο κάμερας στερεοσκοπικού συστήματος). Στην γενική περίπτωση ο άξονας +zw είναι συγγραμικός ως προς τη βαρύτητα, αλλά ο προσανατολισμός του προς την αντίθετη κατεύθυνση Σύστημα συντεταγμένων βάσης Το σύστημα συντεταγμένων της βάσης εξαρτάται από το ρομπότ. Ο κατασκευαστής του βραχίονα ορίζει το κέντρο του συστήματος. Στο Katana, το κέντρο OΒ βρίσκεται στη διασταύρωση των περιστροφικών αξόνων των κινητήρων 1 και 2 (εικόνα 3.8). Ο άξονας zb 52

53 αντιστοιχεί στον περιστροφικό άξονα του κινητήρα 1 και δείχνει από τη βάση προς το ρομπότ. Οι άξονες xb και yb είναι προσανατολισμένοι όπως στην εικόνα 3.8. Εικόνα 3.8. Σύστημα συντεταγμένων βάσης.[27] Σύστημα συντεταγμένων εργαλείου Το εργαλείο του ρομποτικού βραχίονα Katana είναι η αρπάγη. Το κέντρο του συστήματος συντεταγμένων της (εικόνα 3.9) είναι ορισμένο από το κεντρικό σημείο της. Η θέση και ο προσανατολισμός του συστήματος αυτού ορίζεται από τους περιστροφικούς και ομογενείς μετασχηματισμούς του συστήματος συντεταγμένων της βάσης. Για τον προσανατολισμό χρησιμοποιούνται οι γωνίες Euler, οι οποίες θα αναλυθούν στην επόμενη ενότητα Γωνίες Euler Εικόνα 3.9. Σύστημα συντεταγμένων εργαλείου. [27] Οι γωνίες Euler αποτελούνται από τρεις γωνίες που χρησιμοποιούνται για την περιγραφή του προσανατολισμού ενός άκαμπτου σώματος. Ακόμα, χρησιμοποιούνται για την περιγραφή του προσανατολισμού ενός συστήματος συντεταγμένων ως προς ένα άλλο. Συνήθως συμβολίζονται ως φ, θ, ψ (phi, theta, psi). Ο προσανατολισμός της αρπάγης του Katana περιγράφεται από τις γωνίες Euler Ζ-Χ-Ζ. Αυτές αποτελούνται από τρείς περιστροφές. 53

54 Περιστροφή του συστήματος συντεταγμένων της βάσης Kb γύρω από το άξονα Ζ-axis υπό γωνία φ. Δημιουργείται έτσι ένα νέο σύστημα συντεταγμένων, το (Χ, Y, Z ). Περιστροφή του νέου συστήματος συντεταγμένων γύρω από τον άξονα Χ -axis υπό γωνία θ. Δημιουργείται πάλι ένα νέο σύστημα συντεταγμένων, το (Χ, Y, Z ). Τέλος γίνεται περιστροφή του συστήματος (Χ, Y, Z ) γύρω από τον άξονα Z -axis κατά γωνία ψ. Το νέο σύστημα που δημιουργείται, (Χ, Y, Z ), αντιστοιχεί στο σύστημα συντεταγμένων του εργαλείου. Εικόνα Στροφή συστήματος με ZXZ γωνίες Euler. [30] 3.5. Μετασχηματισμοί συστημάτων συντεταγμένων [31] Οι συντεταγμένες ενός σημείου σε δύο συστήματα συντεταγμένων συνδέονται μεταξύ τους με σχέσεις που καλούνται μετασχηματισμοί. Έτσι, ανάμεσα σε δύο συστήματα μπορεί να οριστεί η μεταφορά, η στροφή ή και τα δύο για να ταυτιστεί ένα σύστημα με ένα άλλο. Μεταφορά x = x + x 0 { y = y + y 0 } ή αλλιώς z = z + z 0 x = x x 0 { y = y y 0 } (3.5) z = z z 0 Όπου (x 0, y 0 ) είναι οι συντεταγμένες του O ως προς το σύστημα xoy. Για την περιστροφή των σημείων, ενός συστήματος σε ένα άλλο, στον τρισδιάστατο χώρο πρέπει να εισάγουμε την έννοια των συνημιτόνων κατεύθυνσης: Έστω ότι έχουμε δύο σημεία P1(x1,y1,z1) και P(x2,y2,z2) όπως εμφανίζονται στην εικόνα 54

55 Ορίζουμε d την απόσταση των δύο σημείων: d = (x2 x1) 2 + (y2 y1) 2 + (z2 z1) 2 Τα συνημίτονα κατεύθυνσης από το σημείο P1 στο P2 θα είναι: l = cosa = x2 x1 (3.6) d m = cosb = y2 y1 (3.7) d n = cosc = z2 z1 (3.8) d Έτσι με την χρήση των παραπάνω συνημιτόνων κατεύθυνσης μπορούμε να βρούμε τον μετασχηματισμό για την στροφή και την μεταφορά-στροφή των σημείων ενός τρισδιάστατου συστήματος σε ένα άλλο. Στροφή x = l 1 x + l 2 y + l 3 z { y = m 1 x + m 2 y + m 3 z } ή αλλιώς z = n 1 x + n 2 y + n 3 z x = l 1 x + m 1 y + n 1 z { y = l 2 x + m 2 y + n 2 z} (3.9) z = l 3 x + m 3 y + n 3 z Όπου (l 1, m 1, n 1 ), (l 2, m 2, n 2 ), (l 3, m 3, n 3 ) είναι τα συνημίτονα κατεύθυνσης των αξόνων O x, O y, O z ως προς το σύστημα xoy Μεταφορά και στροφή x = l 1 x + l 2 y + l 3 z + x 0 { y = m 1 x + m 2 y + m 3 z + y 0 } ή αλλιώς z = n 1 x + n 2 y + n 3 z + z 0 x = l 1 (x x 0 ) + m 1 (y y 0 ) + n 1 (z z 0 ) { y = l 2 (x x 0 ) + m 2 (y y 0 ) + n 2 (z z 0 )} (3.10) z = l 3 (x x 0 ) + m 3 (y y 0 ) + n 3 (z z 0 ) 55

56 56

57 4. Υπολογιστική Όραση με χρήση της βιβλιοθήκης OpenCV Στο κεφάλαιο αυτό θα αναλυθεί βήμα προς βήμα η εφαρμογή της υπολογιστικής όρασης σε μια διάταξη παράλληλων καμερών με χρήση της βιβλιοθήκης OpenCV Περιβάλλον OpenCV Η OpenCV (Open Source Computer Vision Library) είναι μια ανοιχτού κώδικα βιβλιοθήκη για υπολογιστική όραση και μηχανική μάθηση. Δημιουργήθηκε για να παρέχει μια κοινή υποδομή για εφαρμογές υπολογιστικής όρασης και για να επιταχύνει τη χρήση της μηχανικής αντίληψης στα εμπορικά προϊόντα. Έχει BSD (Berkeley Software Distribution) άδεια καθιστώντας εύκολο για τις επιχειρήσεις να χρησιμοποιούν και να τροποποιούν τον κώδικα. [32] Η OpenCV έχει ενσωματωμένους στις βιβλιοθήκες της περισσότερους από 2500 βελτιστοποιημένους αλγορίθμους. Περιλαμβάνει, δηλαδή, ένα ολοκληρωμένο σύνολο κλασσικών αλλά και state-of-the art αλγορίθμων υπολογιστικής όρασης. Αναφορικά κάποιοι από τους αλγορίθμους αυτούς χρησιμοποιούνται σε εφαρμογές που αφορούν [32]: την ανίχνευση και την αναγνώριση προσώπων, τον εντοπισμό στάσιμων και κινούμενων αντικειμένων, την εξαγωγή 3D μοντέλων των αντικειμένων, την παραγωγή 3D point clouds από στερεοσκοπικά ζεύγη καμερών, την εύρεση παρόμοιων εικόνων από μια βάση δεδομένων με εικόνες, τον εντοπισμό της κίνησης των ματιών, την αναγνώριση χειρονομιών, τη διεπαφή χρήστη υπολογιστή Η βιβλιοθήκη χρησιμοποιείται ευρέως από εταιρίες, ερευνητικές ομάδες και κυβερνητικούς φορείς. Κάποιες μεγάλες εταιρείες που τη χρησιμοποιούν είναι η Google, η Yahoo, η Microsoft, η Intel, η IBM, η Sony, η Honda και η Toyota. Τέλος, η OpenCV είναι γραμμένη στη C++. Έχουν αναπτυχθεί επίσης, πλήρης διεπαφές σε Python, Java, MATLAB. Ακόμα, υποστηρίζει τα λειτουργικά συστήματα Windows, Linux, Android, και Mac OS. Εξειδικεύεται περισσότερο σε εφαρμογές όρασης πραγματικού χρόνου. [32] 57

58 Εγκατάσταση της OpenCV Το επίσημο site της OpenCV (http://opencv.org/) δίνει την πρόσβαση στον οποιονδήποτε να κατεβάσει το αρχείο εγκατάστασης ώστε να την εγκαταστήσει στο υπολογιστικό του σύστημα. Στο site υπάρχουν όλες οι εκδόσεις της OpenCV, η πιο πρόσφατη έκδοση καθώς και παλαιότερες εκδόσεις, για τα διάφορα λειτουργικά συστήματα Εγκατάσταση στο λειτουργικό σύστημα Windows Σε αυτή τη παράγραφο θα παρουσιαστεί η εγκατάσταση της OpenCV χρησιμοποιώντας Pre-Built Libraries. Τα βήματα εγκατάστασης είναι τα ακόλουθα: Βήμα 1 ο : Επιλογή του επιθυμητού αρχείου εγκατάστασης από τη σελίδα: Βήμα 2 ο : Αποσυμπίεση του αρχείου σε ένα επιλεγμένο μονοπάτι (path). Βήμα 3 ο : Για να ολοκληρωθεί η εγκατάσταση πρέπει να ρυθμιστεί το OpenCV ως μεταβλητή περιβάλλοντος και να προστεθεί στο μονοπάτι του συστήματος. Πηγαίνουμε στο "Control Panel" "System" "Advanced System Settings", πατάμε το "Environment Variables" στην καρτέλα "Advanced". Στο κουτί "System Variables" πατάμε "New...". Στο νέο παράθυρο που εμφανίζεται, δημιουργούμε ένα νέο variable "OPENCV_BUILD" στο οποίο θέτουμε στο "Variable Value" τη διεύθυνση που είναι εγκατεστημένη η OpenCV. Τέλος μαρκάρουμε το variable "Path" και πατάμε "Edit...". Στο παράθυρο που εμφανίζεται, προσθέτουμε στο τέλος του κειμένου του "Variable Value" το "OPENCV_BUILD%\x86\vc9\bin;". Το βήμα 3 παρουσιάζεται στα σχήματα 4.1 και 4.2. Εικόνα 4.1. Προσθήκη της OpenCV στο μονοπάτι του συστήματος (1). 58

59 Εικόνα 4.2. Προσθήκη της OpenCV στο μονοπάτι του συστήματος (2) Χρήση OpenCV με το Microsoft Visual Studio 2008 To Microsoft Visual Studio είναι ένα ολοκληρωμένο περιβάλλον ανάπτυξης (IDE) που βοηθάει στην ανάπτυξη προγραμμάτων υπολογιστή. Για να τρέξουμε ένα πρόγραμμα στο Visual Studio ακολουθούμε την εξής διαδικασία: 1. Αρχικά, ανοίγουμε το MS Visual Studio 2008 και δημιουργούμε ένα νέο project: File New Project, επιλέγουμε τύπο project "Other Languages" "Visual C++ "Win32" και "Win32 Console Application" για template. Δίνουμε κάποιο όνομα στο project και ορίζουμε τη θέση που θα δημιουργηθεί. Αυτή η διαδικασία φαίνεται στην εικόνα 4.3. Εικόνα 4.3. Δημιουργία καινούριου Project στο Visual Studio

60 2. Στη συνέχεια, πατάμε "next" στο παράθυρο που εμφανίζεται, επιλέγουμε "Console Application", "Empty Project" και μετά πατάμε "Finish" (εικόνα 4.4). Εικόνα 4.4. Ολοκλήρωση δημιουργίας νέου Project. Στην περίπτωση που έχουμε ήδη δημιουργήσει κάποιο property sheet από προηγούμενο project παραλείπουμε τα βήματα 3, 4, 5, 6 και πηγαίνουμε απευθείας στο βήμα Έπειτα, πηγαίνουμε στο: View Property Manager, κάνουμε δεξί κλικ στο Debug Win32 και επιλέγουμε "Add New Project Property Sheet ". Στο παράθυρο που εμφανίζεται βάζουμε στο όνομα το OpenCV_Debug και το αποθηκεύουμε σε μία γενική διεύθυνση (path) γιατί θα χρησιμοποιηθεί και από άλλα project. 4. Στη συνέχεια, κάνουμε δεξί κλικ στο property sheet που δημιουργήσαμε ( OpenCV_Debug ) και επιλέγουμε το "Properties". Στο μενού "Common Properties" "C/C++" "General" στην επιλογή Additional Include Directories προσθέτουμε: $(OPENCV_DIR)\include $(OPENCV_DIR)\include\opencv $(OPENCV_DIR)\include\opencv2 60

61 Εικόνα 4.5. C/C++ "General" Additional Include Directories. 5. Ακόμα, στο μενού "Common Properties" "C/C++" "Linker" "General", στην επιλογή "Additional Library Directories" προσθέτουμε "$(OPENCV_DIR)\x86\vc09\lib". Εικόνα 4.6. "C/C++" "Linker" "General "Additional Library Directories". 61

62 6. Επιπλέον, στο μενού "Common Properties" "C/C++" "Linker" "Input", στην επιλογή "Additional Dependencies" γράφουμε τα ονόματα των.lib αρχείων της τρέχουσας έκδοσης OpenCV. Τα ονόματα αυτά μπορούν να βρεθούν στη διεύθυνση "$(OPENCV_DIR)\x86\vc09\lib" : opencv_calib3d245d.lib opencv_contrib245d.lib opencv_core245d.lib opencv_features2d245d.lib opencv_flann245d.lib opencv_gpu245d.lib opencv_haartraining_engined.lib opencv_highgui245d.lib opencv_imgproc245d.lib opencv_legacy245d.lib opencv_ml245d.lib opencv_nonfree245d.lib opencv_objdetect245d.lib opencv_photo245d.lib opencv_stitching245d.lib opencv_superres245d.lib opencv_ts245d.lib opencv_video245d.lib opencv_videostab245d.lib Εικόνα 4.7. Additional dependencies. 7. Αυτό το βήμα το ακολουθούμε αν έχουμε παραλείψει τα βήματα 3, 4, 5, 6. Πηγαίνουμε στο: View Property Manager, κάνουμε δεξί κλικ στο Debug Win32 και επιλέγουμε "Add Existing Project Property Sheet ". Στο παράθυρο που εμφανίζεται ψάχνουμε το επιθυμητό property sheet (π.χ OpenCV_Debug ) και το ανοίγουμε. 8. Τέλος, δεξί κλικ στο "Source Files" "Add" "New Item" και δημιουργούμε το cpp αρχείο που θα γραφεί ο κώδικας. Με την παραπάνω διαδικασία δημιουργούμε ένα γενικό property sheet στο Visual Studio στο οποίο έχει συμπεριληφθεί η OpenCV με όλες τις βιβλιοθήκες της. Τα βήματα 3, 4, 5, 6 τα πραγματοποιούμε μόνο μια φορά για να δημιουργηθεί το property sheet. Τα υπόλοιπα τα επαναλαμβάνουμε σε κάθε νέο project που δημιουργούμε. 62

63 Εγκατάσταση στο λειτουργικό σύστημα Linux Σε αυτό το κεφάλαιο παρατίθεται ένας εύκολος οδηγός εγκατάστασης της OpenCV σε Linux. Βήμα 1 ο : Κατεβάζουμε το αρχείο opencv.sh με την επιθυμητή έκδοση της OpenCV από το https://github.com/jayrambhia/install-opencv/blob/master/ubuntu/ ή δημιουργούμε το δικό μας script αρχείο opencv.sh όπως παρουσιάζεται στον παρακάτω πίνακα. Πίνακας 4.1. Script αρχείο για εγκατάσταση της OpenCV σε Linux. version="$(wget -q -O - egrep -m1 -o '\"[0-9](\.[0-9])+' cut -c2-)" echo "Installing OpenCV" $version mkdir OpenCV cd OpenCV echo "Removing any pre-installed ffmpeg and x264" sudo apt-get -qq remove ffmpeg x264 libx264-dev echo "Installing Dependenices" sudo apt-get -qq install libopencv-dev build-essential checkinstall cmake pkg-config yasm libjpeg-dev libjasper-dev libavcodec-dev libavformat-dev libswscale-dev libdc dev libxine-dev libgstreamer0.10-dev libgstreamer-plugins-base0.10-dev libv4l-dev python-dev python-numpy libtbb-dev libqt4-dev libgtk2.0-dev libfaac-dev libmp3lame-dev libopencore-amrnb-dev libopencore-amrwb-dev libtheora-dev libvorbis-dev libxvidcore-dev x264 v4l-utils ffmpeg echo "Downloading OpenCV" $version wget -O OpenCV-$version.zip "$version".zip/download echo "Installing OpenCV" $version unzip OpenCV-$version.zip cd opencv-$version mkdir build cd build cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local -D WITH_TBB=ON -D BUILD_NEW_PYTHON_SUPPORT=ON -D WITH_V4L=ON -D INSTALL_C_EXAMPLES=ON -D INSTALL_PYTHON_EXAMPLES=ON -D BUILD_EXAMPLES=ON -D WITH_QT=ON -D WITH_OPENGL=ON.. make -j2 sudo checkinstall sudo sh -c 'echo "/usr/local/lib" > /etc/ld.so.conf.d/opencv.conf' sudo ldconfig echo "OpenCV" $version "ready to be used" 63

64 Βήμα 2 ο : Ανοίγουμε τον terminal και εκτελούμε τις παρακάτω εντολές για να τρέξουμε το script αρχείο. $ chmod +x opencv.sh $./opencv.sh Σε αυτό το βήμα ολοκληρώνεται η εγκατάσταση της OpenCV. Το script αρχείο περιλαμβάνει όλες τις απαραίτητες εντολές που πρέπει να εκτελεστούν για την εγκατάσταση. Επομένως, τρέχοντας το.sh αρχείο, εκτελούνται ακολουθιακά οι εντολές που περιέχει. Βήμα 3 ο : Εκτέλεση του προγράμματος opencvtest.cpp σε γλώσσα C++ χρησιμοποιώντας τον μεταγλωττιστή (compiler) g++. $ g++ -ggdb `pkg-config --cflags opencv` -o `basename opencvtest.cpp.cpp` opencvtest.cpp `pkg-config --libs opencv` $./opencvtest Ο παραπάνω οδηγός εγκατάστασης μπορεί να βρεθεί στο : https://help.ubuntu.com/community/opencv Βασικές εντολές/ δομή OpenCV Η Opencv έχει μια αρθρωτή δομή πράγμα που σημαίνει ότι το πακέτο περιλαμβάνει αρκετές κοινές και στατικές βιβλιοθήκες. Διαθέτει τις παρακάτω ενότητες [33]: core: μια ενότητα που καθορίζει τις βασικές δομές δεδομένων, όπως ο πολυδιάστατος πίνακας Mat και τις βασικές συναρτήσεις που χρησιμοποιούνται από όλες τις άλλες ενότητες. imgproc: μια ενότητα ψηφιακής επεξεργασίας εικόνας που περιλαμβάνει γραμμικό και μη γραμμικό φιλτράρισμα εικόνας, γεωμετρικούς μετασχηματισμούς της εικόνας (π.χ αλλαγή μεγέθους, προοπτική προβολή), αλλαγή χρωματικού χώρου, ιστογράμματα. video: μια ενότητα ανάλυσης βίντεο που περιλαμβάνει εκτίμηση κίνησης, αφαίρεση φόντου (background subtraction), και αλγορίθμους εντοπισμού αντικειμένων. calib3d: βασική ενότητα με αλγόριθμους multi-view γεωμετρίας, βαθμονόμησης κάμερας, stereo correspondence και 3D ανακατασκευής. features2d: περιλαμβάνει αλγορίθμους εξαγωγής χαρακτηριστικών. objdetect: έχει αλγορίθμους αναγνώρισης αντικειμένων. Υπάρχουν υλοποιημένες περιπτώσεις από κάποιες προκαθορισμένες κατηγορίες όπως πρόσωπα, μάτια, αυτοκίνητα. Highgui: παρέχει ένα εύκολο στη χρήση περιβάλλον εργασίας (interface) για τη λήψη βίντεο και εικόνας. 64

65 Όλες οι κλάσεις και οι συναρτήσεις της OpenCV τοποθετούνται στο χώρο cv namespace. Για να μπορέσουν επομένως να χρησιμοποιηθούν θα πρέπει είτε να καλούνται με τον cv:: προσδιοριστή είτε στην περιοχή που καλούνται να υπάρχει η οδηγία using namespace cv;. Στην περίπτωση που μια συνάρτηση της OpenCV έχει το ίδιο όνομα με μια συνάρτηση κάποιας άλλης βιβλιοθήκης όπως με τη STL (standard template library) τότε πρέπει να χρησιμοποιηθεί αποκλειστικά ο cv:: προσδιοριστής [33]. Η πρωταρχική δομή δεδομένων της OpenCV είναι το αντικείμενο Mat το οποίο αποθηκεύει τις εικόνες και τις συνιστώσες τους. Υπάρχει ένα περιορισμένο σύνολο πρωταρχικών τύπων δεδομένων με τα οποία μπορεί να λειτουργήσει η βιβλιοθήκη. Τα στοιχεία πινάκων μπορούν να είναι [33]: o 8-bit unsigned/signed integer o 16-bit unsigned/signed integer o 32-bit signed integer/floating point Στη συνέχεια αναφέρεται ένα παράδειγμα για ταυτόχρονη λήψη βίντεο από δύο κάμερες. Στο πρόγραμμα αναγνώρισης, με βάση αυτό το παράδειγμα του πίνακα 4.2, προστίθενται συγκεκριμένες συναρτήσεις που θα αναφερθούν στα επόμενα κεφάλαια. Πίνακας 4.2. Πρόγραμμα λήψης βίντεο από δύο κάμερες. char key1; int main(int, char**) { VideoCapture cap1(0); // open camera no.1 VideoCapture cap2(1); // open camera no.2 for(;;) { Mat frame1; Mat frame2; cap1 >> frame1; // get a new frame from 1st camera imshow("video1",frame1); cap2 >> frame2; // get a new frame from 2nd camera imshow("video2",frame2); key1=waitkey(10); if(key1 == 'q') break; } return 0; } Η συνάρτηση waitkey() δίνει εντολή στο πρόγραμμα να σταματήσει να τρέχει και να περιμένει για το πάτημα ενός πλήκτρου. Αν μια θετική παράμετρος δοθεί στην waitkey() (π.χ. waitkey(10)) τότε το πρόγραμμα θα περιμένει σε milliseconds όσο ορίζει η παράμετρος και μετά θα συνεχίσει ακόμα και χωρίς να πατηθεί κανένα πλήκτρο. Αν η παράμετρος είναι μηδέν ή αρνητικός αριθμός τότε θα περιμένει μέχρι να πατηθεί πλήκτρο και μετά θα συνεχίσει. Το πλήκτρο που θα πατηθεί για όσο περιμένει το πρόγραμμα μπορεί να αποθηκευτεί σε μια μεταβλητή. Η συνάρτηση imshow() εμφανίζει μια είκονα (καρέ) σε συγκεκριμένο παράθυρο. Το όνομα του παραθύρου είναι το πρώτο όρισμα της imshow() ενώ το δεύτερο είναι η εικόνα. Για 65

66 τη λήψη βίντεο πρέπει να δημιουργηθεί ένα αντικείμενο της κλάσης VideoCapture() το οποίο δέχεται ως όρισμα ένα δείκτη για το ποια κάμερα λειτουργεί. Σε μια ατέρμονη for επανάληψη οι κάμερες διαβάζουν τα καρέ, τα οποία αποθηκεύονται στις μεταβλητές Mat frame1, frame2. Το μέγεθος των καρέ μπορεί να οριστεί ανάλογα με τις απαιτήσεις του προβλήματος χρησημοποιόντας την κατάλληλη παράμετρο στα αντικείμενα cap1, cap2 της VideoCapture(). Στη συγκεκριμένη εφαρμογή το μέγεθος των εικόνων είναι 640x480 pixels. Αυτά σε κάθε επανάληψη εμφανίζονται σε παράθυρο με τη χρήση της imshow() δημιουργώντας μια συνεχή ροή βίντεο. Στην εικόνα 4.8 φαίνεται το αποτέλεσμα του προγράμματος. Εικόνα 4.8. Καρέ αριστερής και δεξιάς κάμερας Υλοποίηση αλγορίθμου στερεοσκοπικής όρασης για τον υπολογισμό των συντεταγμένων ενός σημείου στο χώρο Στην πειραματική διάταξη ως στερεοσκοπικό σύστημα χρησιμοποιήθηκαν 2 web κάμερες Logitech C270 διατεταγμένες παράλληλα (εικόνα 4.9). Για να μπορέσει το σύστημα καμερών να υπολογίσει τη θέση ενός 3D σημείου θα πρέπει να εκτελεστούν διαδοχικά κάποια βήματα: Λήψη ζεύγους εικόνων του μοτίβου βαθμονόμησης Στέρεο-Βαθμονόμηση καμερών (stereo calibration) Διόρθωση εικόνας (image rectification & undistortion) Ανίχνευση αντικειμένου (object recognition) Υπολογισμός χάρτη στερεοσκοπικών διαφορών και 3D συντεταγμένων Εικόνα 4.9. Κάμερες Logitech C

67 Λήψη ζεύγους εικόνων του μοτίβου βαθμονόμησης Το πρώτο βήμα αφορά στην ταυτόχρονη λήψη ζευγών εικόνων από τις δύο κάμερες, στις οποίες εμφανίζεται το μοτίβο βαθμονόμησης σε πολλαπλές θέσεις και προσανατολισμούς. Στη συνέχεια χρησιμοποιούνται αυτά τα ζεύγη για τη στερεο-βαθμονόμηση (stereo calibration). Πρέπει επομένως, να εξασφαλιστεί ότι αυτές οι εικόνες θα λαμβάνονται την ίδια χρονική στιγμή για πιο ακριβή αποτελέσματα στη βαθμονόμηση. Στο πρόγραμμα το video που λαμβάνεται από τις κάμερες αποτελείται από διαδοχικά καρέ (frames). Η OpenCV δίνει τη δυνατότητα για την επεξεργασία και την αποθήκευση αυτών των καρέ. Επίσης, ο χρήστης μπορεί να αποθηκεύει σε ξεχωριστούς φακέλους τις εικόνες του μοτίβου της αριστερής και της δεξιάς κάμερας. Πιο συγκεκριμένα σε κάθε επανάληψη της for καλείται η συνάρτηση waitkey(). Το πλήκτρο που θα πατηθεί αποθηκεύεται στη char μεταβλητή key1. Στη συνέχεια γίνεται έλεγχος της μεταβλητής key1 με το πλήκτρο s ώστε να αποθηκευτούν τα τρέχοντα καρέ κατά αύξουσα σειρά στους αντίστοιχους φακέλους. Η αποθήκευση των εικόνων γίνεται με τη συνάρτηση imwrite(). Η συνάρτηση αυτή δέχεται ως πρώτο όρισμα την πλήρη διεύθυνση που θα αποθηκευτεί η εικόνα, σε μορφή σταθερού string και δεύτερο όρισμα το καρέ που διάβασε η κάμερα στην επανάληψη που πατήθηκε το πλήκτρο s. Τέλος, με χρήση της κλάσης ostringstream δημιουργείται μια ροή τύπου string (stringstream), που περιέχει την θέση αποθήκευσης, το όνομα καθώς και τον τύπο (.jpg) της εικόνας. Η εξαγωγή των χαρακτήρων της τρέχουσας ροής string γίνεται με την συνάρτηση std::ostringstream::str(), η οποία τους αντιγράφει σε μια string μεταβλητή. Τέλος, αυτή εισάγεται στην imwrite(). Η διαδικασία γίνεται για κάθε κάμερα ξεχωριστά. Στον πίνακα 4.3 παρατίθεται το κύριο κομμάτι κώδικα του προγράμματος αυτού. Πίνακας 4.3. Πρόγραμμα αποθήκευσης στερεοσκοπικών εικόνων. VideoCapture cap1(0); // open camera no.1 VideoCapture cap2(1); // open camera no.2 cap1 >> frame1; // get a new frame from 1st camera cap2 >> frame2; // get a new frame from 2nd camera ostringstream stringstream1; ostringstream stringstream2; key1=waitkey(10); if(key1=='s'){ i++; stringstream1 << "C:/Users/home/Desktop/takephotos/takephotos/stereophotos/leftcam/imageleft"<<i<<". jpg"; stringstream2 << "C:/Users/home/Desktop/takephotos/takephotos/stereophotos/rightcam/imageleft"<<i<< ".jpg"; string left_image_store_path = stringstream1.str(); string right_image_store_path = stringstream2.str(); imwrite(left_image_store_path,frame1); imwrite(right_image_store_path,frame2); } 67

68 Το αποτέλεσμα του προγράμματος: Εικόνα Στερεοσκοπικό ζεύγος μοτίβου βαθμονόμησης Στέρεο-Βαθμονόμηση καμερών (stereo calibration) Μια από τις βασικότερες διαδικασίες της υπολογιστικής όρασης είναι η βαθμονόμηση της στερεοσκοπικής διάταξης ώστε να έχουμε υψηλή ακρίβεια στην αναπαράσταση του πραγματικού κόσμου. Σκοπός της είναι ο υπολογισμός των εγγενών και των εξωγενών παραμέτρων των καμερών οι οποίες τις περισσότερες φορές είναι άγνωστες. Για την οπτική παραμόρφωση η OpenCV λαμβάνει υπόψη τους ακτινικούς και εφαπτομενικούς συντελεστές. Η ακτινική παραμόρφωση διορθώνεται ως εξής [34]: x corrected = x(1 + k 1 r 2 + k 2 r 4 + k 3 r 6 ) (4.1) y corrected = y(1 + k 1 r 2 + k 2 r 4 + k 3 r 6 ) (4.2) Η ακτινική παραμόρφωση εκδηλώνεται κυρίως με το barrel ή fish-eye φαινόμενο. Η εφαπτομενική παραμόρφωση παρουσιάζεται επειδή οι φακοί της κάμερας δεν είναι τέλεια παραλληλισμένοι με το επίπεδο απεικόνισης. Μπορεί να διορθωθεί ως εξής [34]: x corrected = x + (2p 1 xy + p 2 (r 2 + 2x 2 )) (4.3) y corrected = x + (p 1 (r 2 + 2y 2 ) + 2p 2 xy) (4.4) Επομένως, ένα εικονοστοιχείο της αρχικής εικόνας στο (x,y) θα αλλάξει συντεταγμένες στη διορθωμένη εικόνα και θα βρίσκεται στο (xcorrected, ycorrected). Από την παραπάνω ανάλυση προκύπτει πως οι παραμορφώσεις εισάγουν 5 παραμέτρους τις οποίες η OpenCV υπολογίζει σε ένα πίνακα Distortioncoefficients = (k1 k2 p1 p2 k3). [15],[34] Η μετατροπή των συντεταγμένων του επιπέδου προβολής σε συντεταγμένες κάμερας είδαμε στο κεφάλαιο 2 πως γίνεται με τον πίνακα Mi. fx s ox Mi = [ 0 fy oy]

69 Αυτός είναι ο δεύτερος πίνακας εγγενών παραμέτρων που υπολογίζει η OpenCV. Οι εξωγενείς παράμετροι που υπολογίζονται είναι οι πίνακες R, T που δηλώνουν τη σχετική θέση της μίας κάμερας από την άλλη. R: πίνακας περιστροφής μεταξύ των πλαισίων αναφοράς της πρώτης και της δεύτερης κάμερας T: πίνακας μετατόπισης μεταξύ των πλαισίων αναφοράς της πρώτης και της δεύτερης κάμερας Όπως αναφέραμε στην προηγούμενη παράγραφο αυτό που χρειαζόμαστε για να κάνουμε το stereo calibration είναι ένα μοτίβο βαθμονόμησης. Για τη συγκεκριμένη διάταξη χρησιμοποιήθηκε το μοτίβο μιας σκακιέρας (εικόνα 4.11). Ωστόσο θα μπορούσε να επιλεχθεί οποιοδήποτε αντικείμενο με γνωστή γεωμετρία αλλά προτιμάται η σκακιέρα για λόγους απλότητας. Οι αλγόριθμοι υπολογιστικής όρασης μπορούν εύκολα να εντοπίσουν τις γωνίες της. Για να μπορέσουν να ανιχνευθούν οι θέσεις των γωνιών πρέπει να είναι γνωστός ο αριθμός των εσωτερικών οριζόντιων και κάθετων τετραγώνων καθώς και το μέγεθος κάθε τετραγώνου. Η σκακιέρα στην παρακάτω εικόνα αποτελείται από 9x6 εσωτερικά τετράγωνα και όταν εκτυπώθηκε σε φύλλο A4 το μέγεθός τους μετρήθηκε στα 2.5 cm. Οι εικόνες με το μοτίβο που αποθηκεύτηκαν χρησιμοποιώντας τον κώδικα της παραγράφου πρέπει να είναι περισσότερες από 10 για το βέλτιστο αποτελέσματα στη βαθμονόμηση. Εικόνα Σκακιέρα-Μοτίβο βαθμονόμησης. Η OpenCV διαθέτει τη συνάρτηση calibratecamera() για βαθμονόμηση κάθε κάμερας ξεχωριστά και εύρεση των εγγενών παραμέτρων. Στα πειράματα χρησιμοποιήθηκε ωστόσο η δεύτερη συνάρτηση βαθμονόμησης stereocalibrate() η οποία υπολογίζει ολοκληρωμένες τις εγγενείς παραμέτρους κάθε κάμερας (όπως η calibratecamera) αλλά και τις εξωγενείς παραμέτρους του στερεοσκοπικού συστήματος, δηλαδή τους πίνακες R, T [15]. Το πρόγραμμα stereo calibration βασίζεται κυρίως σε 3 συναρτήσεις που παρέχονται από τη βιβλιοθήκη τη findchessboardcorners(), τη cornersubpix() και τη stereocalibrate(). Η findchessboardcorners() καλείται για να υπολογιστούν οι θέσεις των εσωτερικών γωνιών της σκακιέρας σε κάθε εικόνα. Δέχεται ως είσοδο την εικόνα σε 8-bit grayscale ή έγχρωμη μορφή και τον αριθμό των εσωτερικών γωνιών ανά γραμμή και ανά στήλη. Το αποτέλεσμα που δίνει είναι ένας πίνακας με τις 2D συντεταγμένες των γωνιών που εντόπισε. 69

70 Στη συνέχεια καλείται η cornersubpix() η οποία βελτιώνει τις θέσεις των εντοπισμένων γωνιών. Δέχεται ως είσοδο την εικόνα, τον πίνακα με τις γωνίες που υπολόγισε η findchessboardcorners, το μέγεθος παραθύρου αναζήτησης και κάποια κριτήρια για τον τερματισμό της αναζήτησης. Η συνάρτηση επαναλαμβάνεται για να βρεθεί με ακρίβεια υποδιαίρεσης εικονοστοιχείου η τοποθεσία των γωνιών. Τέλος η stereocalibrate() είναι η κύρια συνάρτηση που υπολογίζει τις παραμέτρους της κάμερας. Έχοντας τις διάφορες κοινές όψεις του μοτίβου από τις 2 κάμερες η stereocalibrate() χρησιμοποιεί τη calibratecamera() για να υπολογίσει τις παραμέτρους περιστροφής και μετατόπισης της απεικόνισης της σκακιέρας ως προς κάθε κάμερα ξεχωριστά. Στη συνέχεια υπολογίζει για κάθε ζεύγος τα Rl, Rr, Tl, Tr και τις εισάγει στις σχέσεις R=Rr(Rl) T και T=Tr-RTl. Επειδή υπάρχει θόρυβος και σφάλματα στρογγυλοποίησης κάθε ζεύγος του μοτίβου σκακίερας δίνει ελαφρώς διαφορετικά αποτελέσματα για τα R, T. Έπειτα η stereocalibrate() παίρνει τις μέσες τιμές των R, T ως την αρχική προσέγγιση της πραγματικής λύσης και εφαρμόζει τον επαναληπτικό αλγόριθμο των Levenberg Marquardt [35],[36] για να βρει τις τιμές των R, T με το ελάχιστο σφάλμα (reprojection error).[15], [34] Οι εικόνες του μοτίβου έχουν ληφθεί με στατικές τις κάμερες, ενώ η σκακιέρα βρίσκεται σε διαφορετικές θέσεις και προσανατολισμούς. Πρέπει να υπολογιστούν οι τιμές των συντεταγμένων (X, Y, Z ) των σημείων στη σκακιέρα. Για να βρεθούν οι 3D συντεταγμένες των σημείων τις οποίες παίρνει ως είσοδο η stereocalibrate() γίνεται μια θεώρηση. Για λόγους απλότητας η σκακιέρα λαμβάνεται στατική στο επίπεδο XY, (δηλαδή πάντα Z=0) και οι κάμερες κινούνται αναλόγως. Αυτή η θεώρηση γίνεται ώστε να πρέπει να υπολογιστούν μόνο οι X, Y τιμές. Η πάνω αριστερή γωνία της λαμβάνεται ως το κέντρο των αξόνων και επομένως, οι συντεταγμένες γίνονται (0,0), (1,0), (2,0), και δείχνουν τις θέσεις των σημείων στο χώρο. Το αποτέλεσμα αυτό δίνεται στην κλίμακα του μεγέθους των τετραγώνων. Γνωρίζοντας, δηλαδή, το πραγματικό μέγεθος (π.χ 25 cm) των τετραγώνων οι τιμές των συντεταγμένων γίνονται (0,0), (25,0), (50,0), στο χώρο (κάθε γωνία στο χώρο απέχει 25cm από τη γειτονική της) [34]. Η πρώτη παράμετρος που δέχεται ως είσοδο η stereocalibrate() είναι ένας Nx3 πίνακας που περιέχει τις 3D συντεταγμένες κάθε ενός από τα Κ σημεία κάθε μιας από τις Μ εικόνες του μοτίβου οπότε προκύπτει Ν=ΚxΜ. Οι επόμενες δύο παράμετροι είναι οι 2D συντεταγμένες των γωνιών, σε pixel, που φαίνονται στα ζεύγη εικόνων. Η συνάρτηση δίνει ως έξοδο τον πίνακα camera matrix και distcoeffs για κάθε εικόνα καθώς και τους πίνακες R,T, E, F όπου ο Ε καλείται essential matrix και ο F fundamental matrix. Η stereocalibrate επιστρέφει μία τιμή που είναι το σφάλμα επαναπροβολής (re-projection error) σε rms μορφή, μια ποσότητα που δείχνει το σφάλμα της βαθμονόμησης. Επειδή έχει rms τιμή, ο κώδικας υπολογίζει το μέσο σφάλμα επαναπροβολής χρησιμοποιώντας τον επιπολικό περιορισμό. Στη βαθμονόμηση προσπαθούμε να μειώσουμε στο μηδέν το σφάλμα. Ο αλγόριθμος που χρησιμοποιείται για τον υπολογισμό της βαθμονόμησης βασίζεται στον αλγόριθμο των Zhang και Bouguet. [37], [38] Μόλις ολοκληρωθεί το πρόγραμμα δημιουργούνται 2 yml αρχεία το intrinsics.yml και το extrinsics.yml τα οποία περιέχουν την πληροφορία για τις εγγενείς και τις εξωγενείς παραμέτρους των καμερών σε μορφή πινάκων M1,M2,D1,D2,R,T. M1, M2: Mi πίνακας για αριστερή και δεξιά κάμερα αντίστοιχα. D1, D2: Distortioncoefficients πίνακας για την αριστερή και δεξιά κάμερα αντίστοιχα. Όπως αναφέρθηκε παραπάνω οι εγγενείς και οι εξωγενείς παράμετροι των καμερών αποθηκεύονται σε αρχεία τύπου yml. Στην OpenCV υπάρχει η δομή δεδομένων FileStorage η οποία χειρίζεται (read/write) αυτά τα αρχεία. Για την αποθήκευση ενός πίνακα 70

71 Mat σε μορφή yml ή τη μεταφόρτωση του στον κώδικα θα πρέπει να δημιουργηθεί ένα αντικείμενο (storage) της FileStorage στο οποίο θα δηλωθεί το όνομα του αρχείου (test.yml) και η παράμετρος αποθήκευσης (FileStorage::WRITE, FileStorage::READ). Πίνακας 4.4. Αριστερά εγγραφή σε yml, δεξιά ανάγνωση από yml. //Writing to file FileStorage storage( test.yml, FileStorage::WRITE); Storage<< img << img; Storage.release(); //Reading from file FileStorage storage( test.yml, FileStorage::READ); Storage[ img ] >> img; Storage.release(); Αυτά τα αρχεία μπορούν στη συνέχεια να φορτωθούν στα επόμενα προγράμματα για να γίνει ανόρθωση της εικόνας, με τη διαδικασία ανάγνωσης, και να βρεθεί ο χάρτης στεροσκοπικών διαφορών. Με το συγκεκριμένο πρόγραμμα stereo βαθμονόμησης λαμβάνεται η αριστερή κάμερα ως κέντρο συντεταγμένων του στερεοσκοπικού συστήματος και επομένως η θέση του αντικειμένου θα υπολογίζεται με αναφορά την αριστερή κάμερα. Από τα παραπάνω παρατηρούμε πως σε κάθε σταθερό στερεοσκοπικό σύστημα καλούμαστε να υπολογίσουμε τις εγγενείς και εξωγενείς παραμέτρους μόνο μια φορά όταν οι κάμερες παραμένουν στις θέσεις τους. Σε περίπτωση αλλαγής θέσης των καμερών είναι απαραίτητος ο επαναπροσδιορισμός των εξωγενών παραμέτρων ενώ οι εγγενείς δε χρειάζεται να υπολογιστούν ξανά. Στην εικόνα 4.12 εμφανίζεται το σφάλμα βαθμονόμησης. Η διαδικασία που περιγράφεται στις παραγράφους και γίνεται σε μη πραγματικό χρόνο και αποτελεί την προετοιμασία του στερεοσκοπικού συστήματος. Εικόνα Σφάλμα (reprojection error) από stereo βαθμονόμηση Διόρθωση εικόνας (image rectification & undistortion) Οι κάμερες έχουν τοποθετηθεί στη διάταξη ώστε να είναι παράλληλες για να προσεγγιστεί το στερεοσκοπικό σύστημα ως κανονικού προσανατολισμού με 71

72 ευθυγραμμισμένα επίπεδα απεικόνισης. Ωστόσο, είναι αδύνατο να ευθυγραμμιστούν απολύτως τα δύο επίπεδα απεικόνισης καθώς υπάρχουν σφάλματα τόσο στην τοποθέτηση των καμερών όσο και στα χαρακτηριστικά μεταξύ ίδιων καμερών που αλλοιώνουν τον παραλληλισμό τους. Για να διορθωθούν αυτά τα σφάλματα θα γίνει ανόρθωση των εικόνων. Επαναπροβάλλονται τα δύο επίπεδα απεικόνισης έτσι ώστε να βρίσκονται στο ίδιο ακριβώς επίπεδο και οι οριζόντιες γραμμές των δύο εικόνων είναι απόλυτα ευθυγραμμισμένες όπως στο canonical σύστημα. Για την ανόρθωση χρησιμοποιείται ο αλγόριθμος του Bouguet ο οποίος αξιοποιεί τους πίνακες περιστροφής και μετατόπισης από βαθμονομημένες κάμερες. Ο αλγόριθμος αποτελείται από 3 βήματα [15]: Περιστροφή της αριστερής κάμερας έτσι ώστε οι επιπολικές γραμμές να γίνουν παράλληλες με τον οριζόντιο άξονα, δηλαδή το επιπολικό σημείο να πηγαίνει στο άπειρο. Εφαρμογή της ίδιας περιστροφής στην δεξιά κάμερα για να ανακτήσει την αρχική γεωμετρία. Περιστροφή της δεξιάς κάμερας με χρήση του πίνακα R. Με δεδομένους τους πίνακες R, T μεταξύ των δύο καμερών ο αλγόριθμος προσπαθεί να περιορίσει την ποσότητα αλλαγής που προκαλεί κάθε νέα προβολή για κάθε μια από τις κάμερες με σκοπό να μειωθεί η προκύπτουσα παραμόρφωση, μεγιστοποιώντας παράλληλα την κοινή περιοχή θέασης. Ο αλγόριθμος απαιτεί τον υπολογισμό των παρακάτω πινάκων περιστροφής: R l = R RECT r l (4.5) R r = R RECT r r (4.6) όπου ο Rl είναι ο πίνακας περιστροφής που εφαρμόζεται στην αριστερή εικόνα για να γίνει η ανόρθωσή της και αντίστοιχα ο Rr ανορθώνει την δεξιά εικόνα. Ο RRECT ευθυγραμμίζει τις εικόνες στον άξονα x. Τέλος ο rl χρησιμοποιείται για να κάνει την αριστερή εικόνα συνεπίπεδη με τη δεξιά η οποία έχει ήδη περιστραφεί σύμφωνα με τον πίνακα rr και αντίστοιχα ο rr φέρνει τη δεξιά εικόνα στο ίδιο επίπεδο με την αριστερή που έχει περιστραφεί κατά rl. Για τους πίνακες rl και rr ισχύει η σχέση: Ο πίνακας RRECT δίνεται από τη σχέση: R = r 1 T r r (4.7) R RECT = (e 1, e 2, e 3 ) T (4.8) όπου e 1 = T T, e 2 = [ T yt x ] T x 2 +T y 2, e 3 = e 1 e 2 (4.9) Επίσης υπολογίζονται οι rectified camera matrices των δύο καμερών MRECTl MRECTr συνδυασμένοι με τους πίνακες προβολής Pl, Pr. Καθώς και ο πίνακας επαναπροβολής Q που θα χρησιμοποιηθεί στην 3D ανακατασκευή [15]. 72

73 1 0 Q = [ /T x o x o y f (o x o x )/T x ] (4.10) Πίνακας 4.5: Κώδικας για ανόρθωση εικόνας (1) stereorectify(m1, D1, M2, D2, imagesize, R, T, R1, R2, P1, P2, Q, CV_CALIB_ZERO_DISPARITY, -1, imagesize, &roi1, &roi2); initundistortrectifymap(m1, D1, R1, P1, imagesize, CV_16SC2, rmap[0][0], rmap[1][0]); initundistortrectifymap(m2, D2, R2, P2, imagesize, CV_16SC2, rmap[0][1], rmap[1][1]); Για να γίνει ανόρθωση εικόνων στην OpenCV αρχικά χρησιμοποιείται η συνάρτηση stereorectify(). Δέχεται ως είσοδο τους πίνακες M1, M2, D1, D2, R, T που επιστρέφονται από τη συνάρτηση stereocalibrate(), καθώς και το μέγεθος των εικόνων μοτίβου που χρησιμοποιήθηκαν για τη βαθμονόμηση. Επιστρέφει στην έξοδο της, τους πίνακες Rl, Rr, Pl, Pr, Q. Ακόμα, η συνάρτηση initundistortrectifymap() καλείται για κάθε κάμερα ξεχωριστά. Η συνάρτηση αυτή δεν διορθώνει άμεσα τις εικόνες, αλλά υπολογίζει το γεωμετρικό μετασχηματισμό για την παραμόρφωση (ακτινική, εφαπτoμενική) και την ανόρθωση των εικόνων. Δέχεται ως είσοδο τους πίνακες Mi, MRECTi, RRECTi και Di που δίνουν η stereorectify() και η stereocalibrate(). Ως RRECTi εισάγεται ο Ri, ενώ ως MRECTi (είναι οι τρεις πρώτες στήλες του πίνακα Pi) εισάγεται ολόκληρος ο πίνακας Pi και στη συνέχεια εσωτερικά η συνάρτηση επιλέγει τις τρεις πρώτες στήλες του. Η initundistortrectifymap() επιστρέφει χάρτες αναζήτησης rmap[i][j] όπου i=j=[0,1]. Ο δείκτης i χρησιμοποιείται για τα x,y ενώ ο j=0 αναφέρεται στην αριστερή κάμερα και j=1 στη δεξιά. Πίνακας 4.6: Κώδικας για ανόρθωση εικόνας (2) remap(framel, framel_rect, rmap[0][0], rmap[1][0], INTER_LINEAR); remap(framer, framer_rect, rmap[0][1], rmap[1][1], INTER_LINEAR); Τέλος, οι χάρτες αναζήτησης εισάγονται στη συνάρτηση remap() μαζί με το ανεπεξέργαστο καρέ που διαβάζει η κάμερα και επιστρέφεται η ανορθωμένη εικόνα. Οι χάρτες αυτοί είναι ουσιαστικά πίνακες που καθορίζουν σε ποιο στοιχείο της αρχικής εικόνας ανήκουν τα pixel της ανορθωμένης. Η remap() καλείται για κάθε κάμερα ξεχωριστά. 73

74 Εικόνα Σειρά εκτέλεσης βημάτων ανόρθωσης εικόνας. Τα βήματα της ανόρθωσης παρουσιάζονται στην εικόνα Ωστόσο η διαδικασία που ακολουθείται στην πραγματικότητα γίνεται ανάποδα, δηλαδή από το (c) (b) (a) που είναι γνωστή ως αντίστροφη χαρτογράφηση. Για κάθε εικονοστοιχείο με ακέραιες συντεταγμένες στην ανορθωμένη εικόνα βρίσκονται οι συντεταγμένες του στη διορθωμένη από παραμόρφωση εικόνα και από αυτές αναζητούνται οι συντεταγμένες κινητής υποδιαστολής στην αρχική εικόνα. Μόλις βρεθούν γίνεται παρεμβολή με τις γειτονικές ακέραιες θέσεις pixel και η τιμή που υπολογίζεται τοποθετείται στη διορθωμένη εικόνα [15], [34]. Το αποτέλεσμα της ανόρθωσης παρουσιάζεται στην εικόνα Εικόνα Ανόρθωση εικόνων και αφαίρεση παραμόρφωσης (un-distortion) Ανίχνευση αντικειμένου (object recognition) Η αναγνώριση και κατάτμηση ενός αντικειμένου είναι μια σημαντική και θεμελιώδης διαδικασία στην υπολογιστική όραση και παίζει σημαντικό ρόλο σε πολλές εφαρμογές. Η επιλογή της μεθόδου αναγνώρισης στην εκάστοτε εφαρμογή εξαρτάται από την ποικιλία και την πολυπλοκότητα των αντικειμένων καθώς και από το φόντο (background) της σκηνής. Μια απλή και γρήγορη μέθοδος αναγνώρισης και κατάτμησης ενός αντικειμένου από την εικόνα είναι με βάση το χρώμα. Το αντικείμενο πρέπει να έχει μια σημαντική χρωματική διαφορά με το φόντο της σκηνής έτσι ώστε να γίνει επιτυχώς η ανίχνευσή του. Ο σκοπός χρήσης χρωματικών μοντέλων είναι να διευκολύνεται ο ορισμός των χρωμάτων στα πλαίσια της τυποποίησης. Στην ουσία, ένα χρωματικό μοντέλο είναι ένας τρισδιάστατος συνήθως χώρος όπου κάθε χρώμα αναπαρίσταται από ένα σημείο. Για το λόγο 74

75 αυτό τα χρωματικά μοντέλα χαρακτηρίζονται και ως χρωματικοί χώροι. Σήμερα, τα περισσότερα μοντέλα είναι προσαρμοσμένα στα φυσικά εξαρτήματα των υπολογιστικών μονάδων (hardware-οθόνη/εκτυπωτής) ή σε εφαρμογές διαχείρισης χρωμάτων. Στην πρώτη κατηγορία, για παράδειγμα, ανήκει το μοντέλο RGB, ενώ στη δεύτερη το HSV. [40] Συνήθως, η OpenCV αποθηκεύει τις εικόνες και τα βίντεο σε 8-bit unsigned ακέραιο BGR τύπο. Με άλλα λόγια, οι εικόνες μπορούν να θεωρηθούν ως τρεις πίνακες BLUE, GREEN και RED (BGR) με τιμές μεταξύ Οι συνιστώσες R, G, B του χρώματος ενός αντικειμένου σε μια ψηφιακή εικόνα είναι όλες συσχετισμένες με την ποσότητα φωτός που το χτυπά, με αποτέλεσμα να συσχετίζονται μεταξύ τους. Επομένως, η ανάλυση της εικόνας με τη χρήση αυτών των συνιστωσών καθιστά δύσκολη τη διάκριση ενός αντικειμένου που περιέχεται σε αυτήν. O HSV χρωματικός χώρος περιγράφει το χρώμα διαχωρίζοντας το από την χρωματική καθαρότητα και την φωτεινότητα. Αυτή η ιδιότητά του τον καθιστά ένα πρακτικό μετασχηματισμό για εφαρμογές σε πραγματικό χρόνο. Η περιγραφή ενός χρώματος με βάση hsv είναι συνήθως πιο εύχρηστη. Χρωματικό μοντέλο HSV [39], [40]: Το χρωματικό μοντέλο HSV επινοήθηκε το 1978 από τον A. R. Smith. Το σύστημα συντεταγμένων είναι κυκλικό και τα χρώματα βρίσκονται μέσα σε ένα εξάγωνο κώνο. Οι κύριες παράμετροι που χρησιμοποιεί : Η απόχρωση (Hue) αντιπροσωπεύει τον τύπο του καθαρού χρώματος. Για παράδειγμα όλες οι αποχρώσεις και οι τόνοι του κόκκινου χρώματος έχουν την ίδια τιμή Hue. Οι αποχρώσεις περιγράφονται από ένα αριθμό που προσδιορίζει τη θέση του αντίστοιχου καθαρού χρώματος στον χρωματικό τροχό ως ένα κλάσμα μεταξύ μηδέν και ένα. Η τιμή Hue μηδέν αναφέρεται στο κόκκινο, η τιμή Hue 1/6 αναφέρεται στο κίτρινο, η τιμή Hue 1/3 στο πράσινο κ.ο.κ. Η χρωματική καθαρότητα (Saturation) είναι ο βαθμός μείξης ενός καθαρού χρώματος με το άσπρο. Το καθαρό κόκκινο είναι πλήρως καθαρό με Saturation 1, οι αποχρώσεις του έχουν Saturation μικρότερο από 1 και το άσπρο έχει Saturation 0. Η τιμή (Value) αναφέρεται στο βαθμό μείξης ενός καθαρού χρώματος με το μαύρο, είναι δηλαδή παράμετρος φωτεινότητας. Το μαύρο έχει Value 0 και η φωτεινότητα των χρωμάτων αυξάνεται καθώς απομακρύνονται από το μαύρο. 75

76 Εικόνα Χρωματικός χώρος HSV. Το εξωτερικό άκρο της κορυφής του κώνου είναι ο τροχός χρώματος με όλα τα καθαρά χρώματα. Η παράμετρος της απόχρωσης περιγράφει τη γωνία γύρω από τον τροχό. Ακόμα, η παράμετρος της χρωματικής καθαρότητας είναι μηδέν για κάθε χρώμα επί του άξονα του κώνου και το κέντρο του κύκλου στην κορυφή είναι άσπρο. Μια αύξηση στην τιμή της αντιστοιχεί σε μια κίνηση μακριά από τον άξονα. Τέλος, η τιμή (Value) είναι μηδέν για το μαύρο. Μια αύξηση στην τιμή της αντιστοιχεί σε μια κίνηση μακριά από το μαύρο προς την κορυφή του κώνου[39], [40]. Οι κάμερες του στερεοσκοπικού συστήματος χρησιμοποιούν το RGB μοντέλο, το οποίο στην OpenCV αναφέρεται ως BGR. Μόλις η αριστερή κάμερα διαβάσει αυτές τις τιμές, τις μετατρέπει σε HSV τιμές. Στη συνέχεια χρησιμοποιούνται στον κώδικα για να καθορίσουν την θέση του συγκεκριμένου αντικειμένου το οποίο πρέπει να αναγνωρίσει ο ρομποτικός βραχίονας. Τα εικονοστοιχεία ελέγχονται έτσι ώστε να αποφασιστεί αν ταιριάζουν με ένα προκαθορισμένο χρωματικό κατώφλι. Η παραπάνω διαδικασία φαίνεται στους πίνακες 4.7, 4.8 και 4.9 που υπάρχουν σε αυτή την ενότητα. Στην OpenCV ο χρωματικός χώρος HSV αποτελείται επίσης από τρεις πίνακες. Οι πίνακες H, S, V παίρνουν τιμές 0 179, 0 255, αντίστοιχα. 76

77 Πίνακας 4.7. Μετατροπή από BGR σε HSV. //convert frame from BGR to HSV colorspace cvtcolor(temp,hsv,color_bgr2hsv); //filter HSV image between values and store filtered image to threshold matrix if(red==1){ inrange(hsv,scalar(150,0.51*255,0.51*255),scalar(179,255,255),threshold); } if(blue==1){ inrange(hsv,scalar(92,0.780*255,0.82*255),scalar(150,255,255),threshold); } if(green==1){ inrange(hsv,scalar(60,0.457*255,0.567*255),scalar(90,255,255),threshold); } if(yellow==1){ inrange(hsv,scalar(20,0.448*255,0.573*255),scalar(55,255,255),threshold); } if(orange==1){ inrange(hsv,scalar(2,0.488*255,0.706*255),scalar(10,255,255),threshold); } Η OpenCV έχει ενσωματωμένη την εντολή cvtcolor() η οποία δέχεται ως είσοδο την αρχική εικόνα (source image) σε BGR και δίνει στην έξοδο την εικόνα (destination image) μετασχηματισμένη σε άλλο χρωματικό χώρο. Επίσης, ορίζεται μια παράμετρος που δείχνει ποιος χρωματικός μετασχηματισμός θα γίνει. Στη συγκεκριμένη περίπτωση χρησιμοποιείται η παράμετρος COLOR_BGR2HSV για μετατροπή στον HSV χώρο. Στη συνέχεια καλείται η συνάρτηση inrange(), που δέχεται την HSV εικόνα που έδωσε η cvtcolor() και δίνει στην έξοδο την εικόνα κατώφλι σε δυαδική μορφή (binary), δηλαδή θα περιέχει μόνο άσπρα και μαύρα στοιχεία. Το μέγεθος της κατωφλίωσης ορίζεται από το κάτω και πάνω όριο (low boundary, upper boundary αντίστοιχα), τα οποία είναι τύπου Scalar(x,y,z). Πιο συγκεκριμένα, στην περίπτωση όπου οι τιμές H, S, V των εικονοστοιχείων της εικόνας εισόδου είναι χαμηλότερες από τα x,y,z του κάτω ορίου τίθενται 0 (μαύρα) στην εικόνα κατωφλίου. Αντίστοιχα, αν οι τιμές H, S, V των εικονοστοιχείων είναι μεγαλύτερες ή ίσες από τα x,y,z του πάνω ορίου τίθενται 0 (μαύρα) στην εικόνα κατωφλίου. Επομένως, τα εικονοστοιχεία με τιμές μεταξύ των ορίων παίρνουν τιμή 255 (άσπρα) και ουσιαστικά αποτελούν το αντικείμενο που πρέπει να αναγνωριστεί. Τα αντικείμενα που χρησιμοποιήθηκαν για αναγνώριση ήταν τουβλάκια σε 5 διαφορετικά χρώματα κόκκινο, μπλε, πράσινο, κίτρινο και πορτοκαλί. Για να βρεθούν αυτές οι τιμές χρησιμοποιήθηκε το πρόγραμμα της ενότητας 4.2 το οποίο αποθήκευσε τις φωτογραφίες των αντικειμένων από τις κάμερες της διάταξης. Στη συνέχεια, με χρήση του προγράμματος paint των Windows, με την επιλογή color picker βρέθηκαν οι RGB τιμές των αντικειμένων όπως τα βλέπουν οι κάμερες. Αυτό που παρατηρήθηκε ήταν πως οι κάμερες έβλεπαν τα αντικείμενα με ελαφρώς διαφορετικό χρώμα από το πραγματικό τους λόγω διαφόρων παραμέτρων (π.χ. φωτισμός, ανάλυση εικόνας κ.α.). Επομένως, το επόμενο βήμα 77

78 ήταν ο υπολογισμός των σωστών H, S, V τιμών. Επειδή, στην OpenCV το Η ϵ [0,179], S ϵ [0,255], V ϵ [0,255] η τιμή του H διαιρέθηκε με το 2 για να βρεθεί εντός ορίων, ενώ οι τιμές των S, V παρέμειναν ίδιες. Τέλος για να αναγνωρισθεί πλήρως το αντικείμενο το κάτω όριο διευρύνθηκε ώστε να περιλαμβάνει μια οικογένεια του αντίστοιχου χρώματος. Πίνακας 4.8. Δημιουργία δομικών στοιχείων για μορφολογικό μετασχηματισμό εικόνας. // Create a structuring element Mat erodeelement = getstructuringelement( MORPH_RECT,Size(3,3)); Mat dilateelement = getstructuringelement( MORPH_RECT,Size(8,8)); Mat erodeelement1 = getstructuringelement( MORPH_RECT,Size(8,8)); Mat dilateelement1 = getstructuringelement( MORPH_RECT,Size(3,3)); erode(threshold,threshold,erodeelement); dilate(threshold,threshold,dilateelement1); dilate(threshold,threshold,dilateelement1); erode(threshold,threshold,erodeelement); Μετά την κατωφλίωση των εικόνων λόγω θορύβου είναι πιθανό να εμφανίζονται σε διάσπαρτα σημεία της εικόνας εικονοστοιχεία με τιμή 255 ενώ κανονικά θα έπρεπε να έχουν απορριφθεί. Αυτή η ποσότητα θορύβου μπορεί να εξαλειφθεί εφαρμόζοντας ένα συνδυασμό κάποιων μορφολογικών μετασχηματισμών όπως τη μορφολογική συστολή (erosion) και τη μορφολογική διαστολή (dilation). [34] Η συστολή ορίζεται ως: erode (x, y) = min src(x + (x,y ):element(x, y ) 0 x, y + y ) (4.11) To δομικό στοιχείο (element) μπορεί να είναι ένας οποιοσδήποτε πίνακας (διαστάσεων μικρότερων από την αρχική εικόνα) ο οποίος περιλαμβάνει για στοιχεία του μηδέν και μονάδες με τρόπο τέτοιο ώστε να σχηματίζουν ένα γεωμετρικό σχήμα. Για παράδειγμα το πιο διαδεδομένο δομικό στοιχείο είναι : Με βάση το δομικό στοιχείο κατά τη δυαδική συστολή, υπολογίζεται μια νέα τιμή σε κάθε θέση της αρχικής εικόνας. Η νέα τιμή είναι η ελάχιστη τιμή όλων των εικονοστοιχείων στη γειτονιά του αρχικού εικονοστοιχείου. Επομένως, αν έστω ένα από τα γειτονικά εικονοστοιχεία έχει τιμή 0, η νέα τιμή του κεντρικού εικονοστοιχείου θα είναι 0. Η επίδραση αυτού του τελεστή είναι να διαβρώνει τα σύνορα της περιοχής των λευκών pixel, έτσι ώστε να μικραίνει τα αντικείμενα αφαιρώντας εικονοστοιχεία από τα σύνορα τους. Η διαστολή ορίζεται ως [34]: 78

79 dilate(x, y) = max src(x + (x,y ):element(x, y ) 0 x, y + y ) (4.12) Με βάση το δομικό στοιχείο κατά τη δυαδική διαστολή, υπολογίζεται μια νέα τιμή σε κάθε θέση της αρχικής εικόνας. Η νέα τιμή είναι η μέγιστη τιμή όλων των εικονοστοιχείων στη γειτονιά του αρχικού εικονοστοιχείου. Επομένως, αν έστω ένα από τα γειτονικά εικονοστοιχεία έχει τιμή 1, η νέα τιμή του κεντρικού εικονοστοιχείου θα είναι 1. Η επίδραση πάνω στην εικόνα είναι η διαστολή των συνόρων των περιοχών με λευκά pixel, έτσι ώστε να μεγαλώνει τα αντικείμενα προσθέτοντας εικονοστοιχεία στα σύνορα των αντικειμένων. Στην OpenCV μπορούμε να δημιουργήσουμε τα δομικά στοιχεία με την εντολή getstructuringelement(). Το γεωμετρικό σχήμα των στοιχείων επιλέχθηκε να είναι τετράγωνο με χρήση της παραμέτρου MORPH_RECT. Στο συγκεκριμένο αλγόριθμο δημιουργούνται δύο δομικά στοιχεία, το ένα έχει μέγεθος 3x3 και το άλλο 8x8. Επίσης, έχουν υλοποιηθεί οι μορφολογικοί μετασχηματισμοί στην OpenCV και για να εφαρμοστούν καλούνται οι συναρτήσεις erode(), dilate(). Δέχονται ως είσοδο μια εικόνα και δίνουν στην έξοδο την μορφολογικά επεξεργασμένη εικόνα. Στη διαδικασία που έχει περιγραφεί μέχρι τώρα θα πρέπει να τονιστεί πως η τελική κατωφλιωμένη εικόνα έχει το ίδιο μέγεθος με την αρχική κατωφλιωμένη εικόνα. Έχοντας φτάσει στο σημείο με τους παραπάνω μετασχηματισμούς να απομονώσουμε το αντικείμενο στην εικόνα κατωφλίου από θόρυβο, το τελευταίο βήμα που απομένει για την αναγνώρισή του είναι ο υπολογισμός ενός 2D σημείου την οθόνη σε συντεταγμένες εικονοστοιχείου που να δείχνει το κέντρο του. Στην εφαρμογή αυτή θα χρησιμοποιηθεί η μέθοδος των γεωμετρικών ροπών για τον υπολογισμό του κέντρου βάρους της προβολής του αντικειμένου. Οι γεωμετρικές ροπές μπορούν να θεωρηθούν ως ένα χρήσιμο σύνολο στατιστικών χωρικών χαρακτηριστικών των αντικειμένων. Η χρησιμότητα τους έχει επιβεβαιωθεί σε πολλές εφαρμογές ανάλυσης εικόνας [40]. Στην περίπτωση των διακριτών εικόνων, η σχέση των γεωμετρικών ροπών έχει τη μορφή: m pq = x y x p y q f(x, y) (4.13) όπου τα p, q παίρνουν μη αρνητικές ακέραιες τιμές. Το κέντρο βάρους ενός αντικειμένου μπορεί να προσδιοριστεί από τις σχέσεις: x = m 10 m 00, y = m 01 m 00 (4.14) Στο πρόγραμμα χρησιμοποιείται η δυαδική εικόνα κατωφλίου (binary thresholded image) για τον υπολογισμό των ροπών. Σε αυτή την περίπτωση είναι φανερό ότι οι σχέσεις των ροπών γίνονται [40]: m pq = x y x p y q (4.15) Προφανώς, η μηδενικής τάξης ροπή m00 ενός αντικειμένου σε μια δυαδική εικόνα ισούται με την επιφάνεια (area) του αντικειμένου. Χ συντεταγμένη της θέσης του κέντρου του αντικειμένου = 1 ης τάξης ροπή γύρω από τον x-άξονα / μηδενικής τάξης ροπή 79

80 Y συντεταγμένη της θέσης του κέντρου του αντικειμένου = 1 ης τάξης ροπή γύρω από τον y-άξονα / μηδενικής τάξης ροπή Οι δύο αυτές συντεταγμένες x, y του κέντρου του αντικειμένου αποθηκεύονται στις μεταβλητές posx1, posy1. Στην OpenCV με χρήση της μεθόδου moments είναι δυνατό να υπολογιστούν οι ροπές μέχρι τρίτης τάξης ενός αντικειμένου. Μόλις κληθεί η συνάρτηση αυτή όλες οι ροπές αποθηκεύονται στο διάνυσμα mu. Για να βρεθεί το κέντρο βάρους εξάγονται οι ροπές μηδενικής (mu.m00) και πρώτης (mu.m01 και mu.m10) τάξης από το διάνυσμα mu και με βάση τις σχέσεις 4.14 αποθηκεύεται στο διάνυσμα mc τύπου Point2f(x,y). Στην περίπτωση που υπάρχουν περισσότερα από ένα αντικείμενα στην οθόνη η παραπάνω διαδικασία δε βγάζει σωστό αποτέλεσμα γιατί παρόλο που μπορεί η εικόνα κατωφλίου να έχει διαχωρίσει τα διάφορα αντικείμενα, ο αλγόριθμος των moments αντιλαμβάνεται τις αναγνωρισμένες περιοχές ως ενιαίο κομμάτι. Για να προσπεραστεί αυτό το πρόβλημα ώστε να μπορεί ο αλγόριθμος να αναγνωρίζει ταυτόχρονα περισσότερα από ένα αντικείμενα θα χρησιμοποιηθεί η συνάρτηση findcontours() σε συνδυασμό με τα moments. Η findcontours() βρίσκει το περίγραμμα κάθε ενεργής περιοχής της binary εικόνας, την κατηγοριοποιεί και αποθηκεύει για κάθε μια περιοχή ένα διάνυσμα δείκτη (index) που αναφέρεται σε αυτή. Με αυτό τον τρόπο κάθε αντικείμενο μπορεί να διαχωριστεί και να αναλυθεί ανεξάρτητα από τα υπόλοιπα, με βάση το περίγραμμα της ενεργής του περιοχής. Είτε λόγω μεταβολών στο φωτισμό είτε λόγω κάποιων άλλων παραγόντων η ποιότητα της εικόνας κατωφλίωσης μεταβάλλεται κατά κάποιο μικρό ποσοστό με αποτέλεσμα να αναγνωριστούν λανθασμένα κάποιες περιοχές ως αντικείμενα. Αυτό το πρόβλημα μπορεί να ξεπεραστεί ελέγχοντας το εμβαδό των αναγνωρισμένων αντικειμένων στην οθόνη (pixel x pixel) και να απορρίπτονται οι περιοχές με εμβαδόν μικρότερο από κάποια τιμή που ορίστηκε πειραματικά (ανάλογα με τα αντικείμενα). Σε κάθε επανάληψη του αλγορίθμου οι δείκτες που αποθηκεύονται σε διάνυσμα για κάθε αντικείμενο ανανεώνονται και από αυτούς τελικά επιλέγεται μόνο ένας με τυχαίο τρόπο (χρήση της rand) που θεωρείται το αναγνωρισμένο αντικείμενο. Τέλος, για την ολοκλήρωση της αναγνώρισης χρησιμοποιούνται οι συναρτήσεις boundingrect() και rectangle(). Η πρώτη δέχεται ως είσοδο το περίγραμμα κάθε αντικειμένου και δίνει ως αποτέλεσμα το κουτί (bounding box) που το περικλείει. Η rectangle() σχηματίζει το περιβάλλον κουτί σε κάθε καρέ και για όσο χρόνο αναγνωρίζεται το αντικείμενο. 80

81 Πίνακας 4.9. Κώδικας υπολογισμού κέντρου βάρους αντικειμένου. // Find contours findcontours(threshold, contours, hierarchy, CV_RETR_CCOMP, CV_CHAIN_APPROX_SIMPLE); /// Get the moments if(contours.size()!=0){ for (size_t i = 0; i< contours.size(); i++){ double area = contourarea(contours[i], false); // Find the area of contour if (area>500){ darea=area; mu[i] = moments(contours[i], false); mc[i] = Point2f(mu[i].m10 / mu[i].m00, mu[i].m01 / mu[i].m00); if ( mc[i].x<370){ indexs.at(counter1)=i; counter1++; boundingrect=boundingrect(contours[i]); } } } // Calculate object position in screen (Xpixel,Ypixel) posx1=mc[indexs.at(v1)].x; posy1=mc[indexs.at(v1)].y; boundingrect=boundingrect(contours[indexs.at(v1)]); rectangle(temp, boundingrect, Scalar(255,0,255),1, 8,0); Το αποτέλεσμα του προγράμματος αναγνώρισης εμφανίζεται στην εικόνα Εικόνα Αναγνώριση αντικειμένου Υπολογισμός χάρτη στερεοσκοπικών διαφορών και 3D συντεταγμένων Το μεγάλο πρόβλημα της 3D ανακατασκευής έχει να κάνει με τον υπολογισμό των αντιστοιχιών. Στην OpenCV υπάρχουν κάποιες μέθοδοι υπολογισμού του πίνακα 81

82 στερεοσκοπικών διαφορών (disparity map). Αυτός ο πίνακας αποτελεί μια grayscale εικόνα όπου τα στοιχεία της είναι οι διαφορές των τιμών των αντίστοιχων εικονοστοιχείων στον x- άξονα για ανορθωμένες εικόνες. Ο αλγόριθμος αντιστοίχισης Semi-Global-Block-Matching (SGBM) θα χρησιμοποιηθεί για τον υπολογισμό του πίνακα στερεοσκοπικών διαφορών. Η κλάση SGBM της OpenCV υλοποιεί τον τροποποιημένο αλγόριθμο [41] που αναφέρθηκε στο 2ο κεφάλαιο. Πρώτον, ο αλγόριθμος χρησιμοποιεί μόνο 5 μονοπάτια αντί για 8 ή 16 για να μειώσει την πολυπλοκότητα. Επίσης, αντιστοιχεί μπλοκ από pixel (παράμετρος SADWindowSize) και τέλος χρησιμοποιεί ως συνάρτηση κόστους αντιστοίχισης τον αλγόριθμο ακρίβειας υποδιαίρεσης εικονοστοιχείου που προτάθηκε από τους Birchfeld και Tomasi. [42] Πρώτον, πρέπει να γίνει η αρχικοποίηση της μεθόδου δηλαδή να οριστούν τα μεγέθη των διάφορων παραμέτρων που δέχεται [34]: MinDisparity: ελάχιστη δυνατή τιμή στερεοσκοπικών διαφορών. NumDisparities: η μέγιστη τιμή στερεοσκοπικών διαφορών μείον την ελάχιστη τιμη τους. Η τιμή αυτή είναι πάντα μεγαλύτερη από το μηδέν. Στη συγκεκριμένη υλοποίηση πρέπει να διαιρείται με το 16. SADWindowSize: μέγεθος μπλοκ αντιστοίχισης. Πρέπει να είναι περιττός αριθμός. P1: η πρώτη παράμετρος που ελέγχει την ομαλότητα των στερεοσκοπικών διαφορών. (8*number_of_image_channels*SADWindowSize*SADWindowSize) P2: η δεύτερη παράμετρος που ελέγχει την ομαλότητα των στερεοσκοπικών διαφορών. Όσο μεγαλύτερη τιμή έχουν τόσο πιο ομαλές είναι. (32*number_of_image_channels*SADWindowSize*SADWindowSize) disp12maxdiff: έλεγχος μέγιστης επιτρεπτής διαφοράς (σε μονάδες pixel) στις τιμές μεταξύ αριστερής και δεξιάς εικόνας. prefiltercap: τιμή αποκοπής για τα εικονοστοιχεία της εικόνας πριν την επεξεργασία uniquenessratio: περιθώριο σε ποσοστό specklewindowsize: μέγιστο μέγεθος των ομαλών περιοχών στερεοσκοπικών διαφορών των οποίων τα στίγματα θορύβου ακυρώνονται. specklerange: μέγιστη διακύμανση στην τιμή στερεοσκοπικών διαφορών μεταξύ κάθε συνδεδεμένης συνιστώσας. fulldp: αν τεθεί true τότε χρησιμοποιείται σε πλήρη κλίμακα ο αλγόριθμος two-pass δυναμικού προγραμματισμού. Καταναλώνει O(W*H*numDisparities) bytes. Οι παράμετροι της SGBM κλάσης επιλέχθηκαν μετά από αρκετές δοκιμές και συνδυασμούς μέχρι να δώσουν το καλύτερο αποτέλεσμα και φαίνονται στον πίνακα

83 Πίνακας Παράμετροι SGBM κλάσης. // SGBM Initialization // StereoSGBM sgbm; float min_disp = 30, num_disp = ((imagesize.width / 8) + 15) & -16; int cn = frame1.channels(); sgbm.sadwindowsize = 5; sgbm.numberofdisparities = 192; sgbm.prefiltercap = 4; sgbm.mindisparity = -64; sgbm.uniquenessratio = 1; sgbm.specklewindowsize = 150; sgbm.specklerange = 2; sgbm.disp12maxdiff = 10; sgbm.fulldp = false; sgbm.p1 = 600; sgbm.p2 = 2400; Η sgbm δέχεται ως είσοδο δύο ανορθωμένες και σε κλίμακα του γκρι είκονες (αριστερή και δεξιά κάμερα) και δίνει ως αποτέλεσμα μια εικόνα disp σε μορφή CV_16S (16-bit signed ενός καναλιού εικόνα), η οποία περιέχει τις τιμές στερεοσκοπικών διαφορών σε κλίμακα του 16. Για να εξαχθεί και να εμφανιστεί ο πραγματικός χάρτης, πρέπει η disp να μετατραπεί σε CV_8UC1 (8-bit signed ενός καναλιού εικόνα) και κάθε στοιχείο της να διαιρεθεί με το 16 (πίνακας disp8). Αυτή η μετατροπή γίνεται με την ενοτλή disp.convertto(disp8, CV_8UC1, 1.f / 16.f) [34]. Η ποιότητά του εξαρτάται από τα μεγέθη των παραμέτρων που ορίστηκαν παραπάνω. Στις περιοχές που δεν βλέπουν ταυτόχρονα και οι δύο κάμερες ο χάρτης συμπληρώνεται με μαύρα pixel ώστε να έχει το ίδιο μέγεθος με τις εικόνες εισόδου. Όσο πιο κοντά είναι ένα αντικείμενο στο στερεοσκοπικό σύστημα τόσο πιο άσπρο θα εμφανίζεται σε αυτόν. Αντίστοιχα, τα σημεία που βρίσκονται μακριά από τις κάμερες ή έχει υπολογιστεί λάθος τιμή διαφορών για αυτά, προσεγγίζουν το μαύρο.στον πίνακα 4.11 εμφανίζεται ο κώδικας υπολογισμού του πίνακα στερεοσκοπικών διαφορών. Πίνακας Κώδικας υπολογισμού πίνακα στερεοσκοπικών διαφορών. //Calculate disparity matrix & image cvtcolor(framel_rect, img1, CV_BGR2GRAY); cvtcolor(framer_rect, img2, CV_BGR2GRAY); sgbm(img1, img2, disp); disp.convertto(disp8, CV_8UC1, 1.f / 16.f); Έπειτα, το στοιχείο του πίνακα στερεοσκοπικών διαφορών στη θέση (posx1, posy1) αποθηκεύεται στη μεταβλητή disp_val1. Αυτό το στοιχείο όπως έχει αναφερθεί αποτελεί το κέντρο βάρους του αντικειμένου. Επομένως, με τη χρήση της disp_val1 είναι δυνατό να βρεθεί το αντίστοιχο σημείο στη δεξιά εικόνα. 83

84 Τέλος, για τον υπολογισμό της θέσης του αντικειμένου στο χώρο (πίνακας 4.12) ως προς την αριστερή κάμερα σύμφωνα με τη θεωρία της τριγωνοποίησης (ενότητα 2.16) και τις εξισώσεις 2.31, 2.37, 2.39 θα χρησιμοποιηθούν, ο πίνακας του disparity, ο πίνακας Q (εξίσωση 4.10) και οι θέσεις του κέντρου του αντικειμένου στην οθόνη posx1, posy1. Αρχικά, γίνεται ο πολλαπλασιασμός πινάκων όπως φαίνεται στην εξίσωση 4.16 [15], [34]. posx1 X posy1 YZ Q [ ] = [ ] (4.16) d(posx1, posy1) 1 W Άρα από τον πολλαπλασιασμό πινάκων της εξίσωσης 4.16 προκύπτει: X = posx1 Q(1,1) + Q(1,4) (4.17) Y = posy1 Q(2,2) + Q(2,4) (4.18) Z = Q(3,4) (4.19) W = d(posx1, posy1) Q(4,3) + Q(4,4) (4.20) Σε ανορθωμένες εικόνες η τιμή του Q(4,4)=0. Από την εξίσωση 4.16 προκύπτουν οι συντεταγμένες του σημείου στον χώρο προβολικό χώρο. Επομένως, πρέπει οι συντεταγμένες του κέντρου του αντικειμένου να μετατραπούν από τον προβολικ χώρο στον ευκλείδιο σύμφωνα με την εξίσωση 4.21: ( X W, Y W, Z W ) (4.21) Συνδυάζοντας τις εξισώσεις υπολογίζεται το κέντρο του αντικειμένου στο χώρο. Πρέπει να αναφερθεί πως οι εξισώσεις 4.22, 4.23, 4.24 είναι ίδιες με τις 2.31, 2.37, X W = X W Y W = Y W Z W = Z W Πίνακας Υπολογισμός X, Y,Z συντεταγμένων. //Calculate 3D co-ordinates from disparity matrix disp_val1 = disp8.at<uchar>(point(posx1, posy1)); X1 = posx1 * Q.at<double>(0, 0) + Q.at<double>(0, 3); Y1 = posy1 * Q.at<double>(1, 1) + Q.at<double>(1, 3); Z1 = Q.at<double>(2, 3); W1 = disp_val1 * Q.at<double>(3, 2) + Q.at<double>(3, 3); X1 = X1 / W1; Y1 = Y1 / W1; Z1 = Z1 / W1; (4.22) (4.23) (4.24) Σε κάθε επανάληψη εκτέλεσης του προγράμματος υπολογίζονται οι 3D συντεταγμένες του αντικειμένου ως προς την αριστερή κάμερα σε εκατοστά (cm) και εμφανίζονται τα 84

85 αποτελέσματα όπως φαίνεται στην εικόνα 4.17 (δεξιά). Ο χάρτης στερεοσκοπικών διαφορών φαίνεται στην εικόνα 4.17 (αριστερά). Εικόνα Αριστερά-Χάρτης στερεοσκοπικών διαφορών, Δεξιά-3D συντεταγμένες. Θα πρέπει να τονιστεί πως η βαθμονόμηση παίζει καθοριστικό ρόλο στην ακρίβεια και επομένως στην επιτυχία του πειράματος. Όσο μικρότερο σφάλμα δίνει, τόσο καλύτερα αποτελέσματα στις 3D συντεταγμένες θα προκύπτουν. Για παράδειγμα στις εικόνες 4.18 και 4.19 εμφανίζονται 2 χάρτες στερεοσκοπικών διαφορών από τις ίδιες κάμερες μετά από διαφορετικές βαθμονομήσεις. Εικόνα Μέτριος χάρτης στερεοσκοπικών διαφορών. Εικόνα Ικανοποιητικός χάρτης στερεοσκοπικών διαφορών. 85

86 Η OpenCV μπορεί να εξασφαλίσει όσο το δυνατό την ταυτόχρονη λήψη καρέ από τις δύο κάμερες με τη χρήση των εντολών grab() και retrieve(). Αρχικά, καλείται η grab() ώστε να αποθηκευτεί η εικόνα χωρίς να γίνει επεξεργασία της, ενώ η retrieve() κάνει την επεξεργασία και συμπίεση της. Στο συγκεκριμένο πείραμα δεν χρησιμοποιήθηκαν οι δύο εντολές (οι οποίες χρειάζονται κυρίως στο calibration) και παρατηρήθηκε πως δεν επηρρεάστηκαν τα αποτελέσματα που έδινε αφού, το σφάλμα που προέκυπτε ήταν εντός επιτρεπτών ορίων Η εργαλειοθήκη GTKMM (GNU Image Manipulation Program Toolkit) Στην περίπτωση που είναι επιθυμητό από τον χρήστη να γίνει αναγνώριση αντικειμένων με διαφορετικά χρώματα, πρέπει να δημιουργηθεί ένα περιβάλλον επιλογής του χρώματος προς αναγνώριση. Για τον προγραμματισμό του περιβάλλοντος αυτού έγινε χρήση της εργαλείοθήκης GTKMM (GTK minus minus). Η τελευταία είναι η επίσημη διεπαφή της γλώσσας C++ για την δημιουργία και τον χειρισμό βιβλιοθηκών GUI (Graphical User Interface-Γραφική Διεπαφή Χρήστη). H GTKMM παρέχει την δυνατότητα δημιουργίας GUI είτε με προγραμματιστική προσέγγιση είτε με την χρήση του σχεδιαστή Glade (εικόνα 4.20) της κλάσης Builder class. Εικόνα Σχεδιαστής Glade. Τα βασικά χαρακτηριστικά της βιβλιοθήκης αυτής είναι: Χρήση κληρονομικότητας για παραγωγή προσαρμοσμένων γραφικών συστατικών. Χειριστές σήματος ασφαλούς σήματος σε τυπική C++ Πολυμορφισμός Πλήρης διεθνοποίηση με χρήση UTF-8 Χρήση των βασικών βιβλιοθηκών της C++ (containers, iterators, strings) 86

87 Προσαρμόσιμη σε πολλά λειτουργικά περιβάλλοντα και μεταφραστές (Linux-gcc, Win32-fcc/MSVC++/.Net 2008) Ελεύθερο λογισμικό με ανοιχτό κώδικα. Για την δημιουργία του γραφικού περιβάλλοντος στην παρούσα εφαρμογή έγινε χρήση της κλάσης ButtonBox. Η τελευταία επιτρέπει την εύκολη δημιουργία ενός «κουτιού» με κάθετα ή παράλληλα κουμπιά. Στη συνέχεια τα κουμπιά αυτά μπορούν να συνδεθούν με τις αντίστοιχες τους συναρτήσεις ώστε κατά το πάτημα τους να επιλέγεται το επιθυμητό χρώμα προς αναγνώριση. Το περιβάλλον που δημιουργήθηκε με την χρήση αυτής της βιβλιοθήκης παρατίθεται στην εικόνα Εικόνα GUI επιλογής χρώματος αντικειμένων. Ο κώδικας που δημιουργήθηκε για την υλοποίηση του εμφανίζεται στον πίνακα. Εδώ αξίζει να σημειώσουμε πως για την υλοποίηση του ButtonBox έπρεπε να ορισθεί κάθε κουμπί του ξεχωριστά και να συνδεθεί με την κατάλληλη συνάρτηση επίσης ξεχωριστά. Η διαδικασία αυτή επαναλαμβάνεται τόσες φορές όσα είναι τα κουμπιά που υλοποιούμε. Η σύνδεση (link) αυτή γίνεται με την χρήση της συνάρτησης: g_signal_connect(g_object(button), "clicked",g_callback(function), NULL) 87

88 Η τελευταία ανιχνεύει το πάτημα του κουμπιού και όχι το Click and Hold του. Στην θέση function ορίζεται η συνάρτηση που θέλουμε να καλείται με το πάτημα αυτό. Πίνακας Υλοποίηση κλάσης ButtonBox. GtkWidget *create_bbox( gint horizontal,char *title,gint spacing,gint child_w,gint child_h,gtkbuttonboxstyle layout ){ GtkWidget *frame; GtkWidget *bbox; GtkWidget *button; frame = gtk_frame_new (title); bbox = gtk_vbutton_box_new (); gtk_container_add (GTK_CONTAINER (frame), bbox); /* Set the appearance of the Button Box */ gtk_button_box_set_layout (GTK_BUTTON_BOX (bbox), layout); gtk_button_box_set_spacing (GTK_BUTTON_BOX (bbox), spacing); gtk_button_box_set_child_size (GTK_BUTTON_BOX (bbox), child_w, child_h); button = gtk_button_new_with_label ("RED OBJECTS"); g_signal_connect(g_object(button), "clicked",g_callback(button_clicked_red), NULL); gtk_container_add (GTK_CONTAINER (bbox), button); button = gtk_button_new_with_label ("BLUE OBJECTS"); g_signal_connect(g_object(button), "clicked",g_callback(button_clicked_blue), NULL); gtk_container_add (GTK_CONTAINER (bbox), button); button = gtk_button_new_with_label ("GREEN OBJECTS"); g_signal_connect(g_object(button), "clicked",g_callback(button_clicked_green), NULL); gtk_container_add (GTK_CONTAINER (bbox), button); button = gtk_button_new_with_label ("ORANGE OBJECTS"); g_signal_connect(g_object(button), "clicked",g_callback(button_clicked_orange), NULL); gtk_container_add (GTK_CONTAINER (bbox), button); button = gtk_button_new_with_label ("YELLOW OBJECTS"); g_signal_connect(g_object(button), "clicked",g_callback(button_clicked_yellow),null); gtk_container_add (GTK_CONTAINER (bbox), button); return(frame); } 88

89 5. Περιβάλλον προγραμματισμού και προσανατολισμός αρπάγης του Katana Ο αλγόριθμος στερεοσκοπικής αναγνώρισης, που αναλύθηκε στο κεφάλαιο 4, παρέχει μόνο τις (x, y, z) συντεταγμένες του αντικειμένου. Ο ρομποτικός βραχίονας Katana, χρειάζεται 6 συντεταγμένες για την οδήγηση του, οι οποίες αποτελούνται από τις (x, y, z) συντεταγμένες που επιθυμούμε να πάει η άκρη της αρπάγης και οι γωνίες Euler (φ, θ, ψ) που θα καθορίσουν τον προσανατολισμό της στο σημείο που θα πάει. Στο κεφάλαιο αυτό θα αναλυθεί ο τρόπος με τον οποίο γίνεται ο υπολογισμός των γωνιών αυτών, με χρήση του πίνακα της ορθής κινηματικής του βραχίονα και των συντεταγμένων του αντικειμένου. Για να αναλυθεί όμως η διαδικασία αυτή πρέπει πρώτα να γίνει κατανοητό ο τρόπος με τον οποίο υλοποιείται η αντίστροφη κινηματική μέσα στις βιβλιοθήκες προγραμματισμού του βραχίονα Katana Native Interface (ΚΝΙ) Ο ρομποτικός βραχίονας Katana μπορεί να προγραμματιστεί και να ελεγχθεί μέσω του KNI. Το KNI είναι βιβλιοθήκη που έχει γραφτεί σε γλώσσα C++ και προσφέρεται για ανάπτυξη εφαρμογών ελέγχου και προγραμματισμού στο χαμηλότερο επίπεδο διασύνδεσης. Το Katana απαιτεί για τον προγραμματισμό σε λειτουργικό περιβάλλον Windows ένα μεταγλωττιστή MS Visual C++ και σε περιβάλλον Linux ένα μεταγλωττιστή GNU C++. Για την πειραματική διεργασία σε Windows χρησιμοποιήθηκε το περιβάλλον προγραμματισμού MS Visual Studio C Express Edition. Η έκδοση του KNI που χρησιμοποιήθηκε είναι η Μετά την εκτέλεση του αρχείου εγκατάστασής του δημιουργείται ένας φάκελος με την ονομασία KatanaNativeInterface στον οποίο περιέχονται ήδη μεταγλωττισμένες (precompiled) βιβλιοθήκες καθώς και demo εφαρμογές. Για την εκτέλεση ενός demo προγράμματος (π.χ. control.exe) ανοίγουμε από μενού έναρξης το παράθυρο γραμμής εντολών του MS-DOS (cmd). Στο παράθυρο αυτό εκτελούμε την εντολή: [26] cd C:/Program Files\Neuronics AG\KatanaNativeInterface\demo\control, ώστε να αλλάξει τη θέση που «αντιλαμβάνεται» το DOS με σκοπό να κληθεί το εκτελέσιμο αρχείο control.exe με την χρήση της εντολής: control.exe..\..\configfiles400\katana6m90g.cfg , για σύνδεση με USB. Έτσι, ξεκινάει το demo πρόγραμμα το οποίο μπορούμε να χρησιμοποιήσουμε για τον έλεγχο του ρομπότ, ακολουθώντας τις οδηγίες που εμφανίζονται στο cmd (εικόνα 5.1) 89

90 Εικόνα 5.1. Demo πρόγραμμα για έλεγχο Katana Οι βασικές βιβλιοθήκες του KNI Η βιβλιοθήκη KNI προσφέρει στον χρήστη ένα σύνολο επιμέρους βιβλιοθηκών, οι οποίες υλοποιούν τις βασικές λειτουργίες του ρομποτικού βραχίονα. Λειτουργίες όπως, ο έλεγχος των κινητήρων, έλεγχος συγκρούσεων, αντίστροφη και ορθή κινηματική υλοποιούνται από ήδη μεταγλωττισμένες βιβλιοθήκες. Έτσι, ένας μη πεπειραμένος χρήστης έχει την δυνατότητα να προγραμματίσει τον βραχίονα, για μία απλή λειτουργία, χωρίς να προχωρήσει στον «χαμηλού» επιπέδου προγραμματισμό του. Από το σύνολο των βιβλιοθηκών αυτών είναι σημαντικό να σημειώσουμε τις βιβλιοθήκες, οι οποίες υλοποιούν την αντίστροφη κινηματική, καθώς αυτές χρησιμοποιήθηκαν για την εύρεση των γωνιών Euler της αρπάγης. Οι βιβλιοθήκες αυτές περιέχονται στον υποφάκελο KNI_InvKin. Καθώς το μοντέλο του βραχίονα μας είναι το Katana 6M90G, αυτές που είναι απαραίτητες είναι οι: 90

91 ikbase.h, η οποία περιλαμβάνει τις βασικές συναρτήσεις που σχετίζονται με την αντίστροφη κινηματική αλυσίδα του ρομπότ. KatanaKinematics.h, η οποία περιέχει τις κλάσεις για την επίτευξη βασικών κινηματικών υλοποιήσεων. KatanaKinematics6M90G.h, οποία περιλαμβάνει την κινηματική υλοποίηση του Katana τύπου 6M90G. Τέλος, πρέπει να αναφερθεί πως ο αλγόριθμος ο οποίος περιλαμβάνει την αντίστροφη κινηματική που υλοποιείται για την καθοδήγηση του βραχίονα περιέχεται στο αρχείο KatanaKinematics6M90G.cpp το οποίο χρησιμοποιεί την ομώνυμη βιβλιοθήκη Οι βασικές συναρτήσεις του ΚΝΙ Οι βιβλιοθήκες που περιλαμβάνονται στο KatanaNativeInterface, προσφέρουν στον χρήστη ένα σύνολο συναρτήσεων για την υλοποίηση βασικών κινήσεων, με μεγάλη ευκολία στον χειρισμό τους. Έτσι, ο προγραμματισμός μιας απλής κίνησης (π.χ. για την κύρια βαθμονόμηση-main calibration) μπορεί να υλοποιηθεί με την κλήση μιας απλής συνάρτησης. Οι πιο χρήσιμες από αυτές, για την καθοδήγηση του βραχίονα, είναι οι εξής: void calibrate(), η οποία πραγματοποιεί την κύρια βαθμονόμηση του Katana. void moverobotto(double x, double y, double z, double phi, double theta, double psi, bool waituntilreached=true, int waittimeout=tm_endless), η οποία στέλνει τον βραχίονα στην θέση, η οποία περιγράφεται από τις τιμές των (x, y, z). O προσανατολισμός της αρπάγης θα καθοριστεί από τις γωνίες Euler (phi, theta, psi). void opengripper (bool waituntilreached=false, int waittimeout=100), η οποία πραγματοποιεί το άνοιγμα της αρπάγης. void closegripper (bool waituntilreached=false, int waittimeout=100), η οποία πραγματοποιεί το κλείσιμο της αρπάγης του βραχίονα. void movdegrees (double tar, bool wait=false, int tolerance=100, long timeout=tm_endless), η οποία τοποθετεί έναν κινητήρα σε συγκεκριμένο αριθμό μοιρών. void getcoordinates (double &x, double &y, double &z, double &phi, double &theta, double &psi, bool refreshencoders=true), η οποία μας δίνει την τρέχουσα θέση της αρπάγης του βραχίονα. void switchroboton(), η οποία κλειδώνει τους κινητήρες. void switchrobotoff(), η οποία ανοίγει τους κινητήρες. Να σημειωθεί πως αυτές οι εντολές πραγματοποιούνται με σειρά, δηλαδή για να πραγματοποιηθεί η επόμενη πρέπει πρώτα να ολοκληρωθεί η προηγούμενη. Το τελευταίο, όμως, μπορεί να τροποποιηθεί για τις εντολές opengripper και closegripper με την αλλαγή της εισόδου waituntilreached από true σε false. Αυτό δίνει την δυνατότητα στον βραχίονα να μην περιμένει την αρπάγη να κλείσει ή να ανοίξει πλήρως, για να προχωρήσει στην επόμενη εντολή. 91

92 5.2. Προσανατολισμός της αρπάγης Για την επίλυση της αντίστροφης κινηματικής του Katana απαιτούνται κατά ελάχιστο τα x, y, z, φ (phi), θ (theta). Για την σωστή καθοδήγηση του βραχίονα χρειάζονται εκτός από τις συντεταγμένες x, y, z και οι γωνίες Euler Z-X-Z. Άρα πραγματοποιούνται τα παρακάτω βήματα για τον υπολογισμό των τελευταιών και τη σωστή επίλυση της αντίστροφης κινηματικής. Στην συνέχεια οι γωνίες Euler θα αναφέρονται ως phi, theta, psi για αποφυγή σύγχυσης με τις γωνίες των κινητήρων του βραχίονα θ1, θ2, θ3, θ4, θ5. Για την καλύτερη κατανόηση της στροφής του συστήματος συντεταγμένων της βάσης του βραχίονα, με σκόπο να προκύψει το σύστημα συντεταγμένων της αρπάγης, παρατίθονται σχηματικά τα δύο συστήματα στην εικόνα 5.2. Εικόνα 5.2. Συστήματα συντεταγμένων βάσης και αρπάγης. Οι γωνίες Euler τύπου Z-X-Z παρουσιάζονται στις εικόνες 5.3 και 5.4. Αρχικά, πραγματοποείται στροφή γύρω από τον άξονα Z της βάσης κατά γωνία phi (εικόνα 5.3 δεξιά). Στη συνέχεια, στρέφεται το νέο σύστημα αξόνων που δημιουργείται στην αρπάγη γύρω από τον άξονα X, κατά γωνία theta (εικόνα 5.4 αριστερά). Τέλος, πραγματοποείται στροφή γύρω από τον νέο άξονα Z της αρπάγης, κατά γωνία psi (εικόνα 5.4 δεξιά). Η τελευταία στροφή δεν επηρεάζει τη σωστή επίλυση της αντίστροφης κινηματικής, καθώς ο βραχίονα Katana 6Μ90G δεν μπορεί να στρέψει την αρπάγη γύρω από τον ευατό της. Το παραπάνω αιτιολογεί και το γεγονός ότι η τιμή της γωνίας Euler psi δεν επηρεάζει την καθοδήγηση του βραχίονα. 92

93 Εικόνα 5.3. Αριστερά-αρχική μορφή συστήματος συντεταγμένων. Δεξία-στροφή γύρω από τον άξονα Z της βάσης κατά γωνία phi. Εικόνα 5.4. Αριστερά-στροφή γύρω από τον νέο άξονα X της αρπάγης κατά γωνία theta. Δεξιά-στροφή γύρω από τον νέο άξονα Ζ κατά γωνία psi Επίλυση γενικού προσανατολισμού Για την επίλυση του γενικού προσανατολισμού της αρπάγης εφαρμόζονται τα εξής βήματα: Βήμα 1 ο : Υπολογίζεται η γωνία θ5. Βήμα 2 ο : Υπολογίζεται η γωνία θ1. Βήμα 3 ο : Υπολογίζεται η γωνία theta. Βήμα 4 ο : Υπολογίζεται το άθροισμα των γωνιών θ2+θ3+θ4 Βήμα 5 ο : Υπολογίζονται οι γωνίες phi, psi. Βήμα 1 ο Η γωνία θ5 τοποθετείται πάντα ίση με 180 ο, ώστε η αρπάγη να έχει πάντα φορά με την κορυφή να βρίσκεται κάτω. Αυτό πραγματοποιείται ώστε να αποφευχθεί η κατασκευαστική 93

94 απόκλιση από τις 0 ο που έχει η αρπάγη. Αυτή η μηχανική αστοχία είναι που καθόρισε τον χώρο εργασίας των πειραμάτων. Βήμα 2 ο Η γωνία θ1 επηρεάζει μόνο τα στοιχεία x, y όπως φαίνεται και από την εικόνα 5.5. Εδώ όμως χρειάζεται η δεύτερη λύση της αντίστροφης εφαπτομένης εξαιτίας του χώρου εργασίας της διάταξης, στον οποίο η θ1 κυμαίνεται στο τρίτο και τέταρτο τεταρτημόριο. Έτσι, η εξίσωση η οποία θα δώσει την τιμή της θ1 είναι η: θ 1 = pi + arctan ( p y p x ) (5.1) όπου py, px οι συντεταγμένες x, y της άκρης του εργαλείου. Βήμα 3 ο Εικόνα 5.5. Γωνίες θ1-θ5 των Links του βραχίονα. Έπειτα, είναι φανερό πως οι γωνίες θ2, θ3, θ4, θ5 θα επηρεάζουν την τιμής της συντεταγμένης z. Με σταθερή την γωνία θ5, τελικά υπάρχει εξάρτηση για το z μόνο από τις γωνίες θ2, θ3, θ4. Όπως εμφανίζεται στη συνέχεια, από τον πίνακα 5 0 T, στο 3x3 μέρος του που σχετίζεται με τον προσανατολισμό του ρομποτικού βραχίονα, οι γωνίες αυτές δεν εμφανίζονται μεμονωμένα αλλά μόνο σε άθροισμα. Έτσι, δεν είναι απαραίτητο να υπολογιστεί η κάθε μία ξεχωριστά παρά μόνο το άθροισμα τους. Για τον υπολογισμό του αθροίσματος αυτού χρειάζονται το 3x3 μέρος του πίνακα 5 0 T, ο 3x3 πίνακας της μαθηματικής αναπαράστασης των γωνιών Euler τύπου Z-X-Z καθώς και η 5 γωνία theta. Ο πίνακας 0 T που παρουσιάστηκε σε προηγούμενο κεφάλαιο χρειάζεται κάποιες μετατροπές ώστε να γίνει χρήσιμος στην επίλυση του υπόλοιπου μέρους της αντίστροφης κινηματικής. Από το αρχείο KatanaKinematics6M90G.cpp παρατηρήθηκε πως οι γωνίες θ2, θ3, θ4, θ5 τροποποιούνται στην κινηματική ανάλυση. Οι τροποποιήσεις είναι οι εξής: 94

95 θ 2 = θ 2 pi 2 θ 3 = θ 3 pi θ 4 = pi θ 4 θ 5 = θ 5 Οι μετατροπές αυτές σχετίζονται με την φορά περιστροφής των γωνιών θ2, θ3, θ4 και θ5 καθώς και με τις αρχικές θέσεις των συνδέσμων που αυτές οδηγούν (σημεία μηδενισμού των θi). Η τελευταία μετατροπή είναι απαραίτητη να πραγματοποιηθεί πριν τον υπολογισμό των Euler γωνιών, ενώ οι πρώτες τρεις πραγματοποιούνται αυτόματα από τον αρχείο KatanaKinematics6M90G.cpp και δεν χρειάζεται να λυφθούν υπόψη στην ανάλυση αυτή. Έτσι, ο πίνακας T 0 5, μετά τον μετασχηματισμό της θ5 είναι ο εξής: 0 5 Τ = sin (θ 2 + θ 3 + θ 4 )cosθ 1 cos(θ 2 + θ 3 + θ 4 ) cosθ 1 sinθ 5 +cosθ 5 sinθ 1 cos (θ 2 + θ 3 + θ 4 )cosθ 1 cosθ 5 +sinθ 1 sinθ 5 sin (θ 2 + θ 3 + θ 4 )sinθ 1 cos (θ 2 + θ 3 + θ 4 )sinθ 1 sinθ 5 cosθ 1 cosθ 5 cos (θ 2 + θ 3 + θ 4 )sinθ 1 cosθ 5 cosθ 1 sinθ sinθ cosθ 1 cosθ cosθ 1 cos(θ 2 + θ 3 ) cosθ 1 sin (θ 2 + θ 3 + θ 4 ) cosθ sinθ 1 cosθ sinθ 1 cos (θ 2 + θ 3 ) sinθ 1 sin (θ 2 + θ 3 + θ 4 ) cos (θ 2 + θ 3 + θ 4 ) sin(θ 2 + θ 3 + θ 4 )sinθ 5 sin (θ 2 + θ 3 + θ 4 )cosθ sin (θ 2 + θ 3 ) +0.19sin (θ 2 ) cos (θ 2 + θ 3 + θ 4 ) [ ] Με χρήση του παραπάνω πίνακα στροφής που περιλαμβάνεται στον πίνακα T 0 5 και με μία γεωμετρική προσέγγιση για τον υπολογισμό της γωνίας Euler theta, είναι εφικτό να υπολογιστούν οι phi και psi. Στη συνέχεια γίνεται η αντιστοίχιση του πίνακα αυτού με τον αντίστοιχο πίνακα περιστροφής των γωνιών Euler τύπου Z-X-Z. Ο πίνακας περιστροφής που έχει ως μεταβλητές τις γωνίες Euler είναι ο εξής: cos (phi) cos (psi) cos (theta) sin (phi) sin (psi) cos (theta) cos (psi) sin (phi) cos (phi) sin (psi) sin (phi) sin (theta) E ZXZ = cos (theta) cos (psi) sin (phi) cos (phi) sin (psi) cos (phi) cos (theta) cos (psi) sin (phi) sin (psi) cos (phi) sin (theta) [ sin (theta) sin (psi) cos (psi) sin (theta) cos (theta) ] Με αντιστοίχιση των στοιχείων i33 των δύο αυτών πινάκων παίρνουμε την σχέση: cos (theta) = sin(θ 2 + θ 3 + θ 4 ) cosθ 5 (5.2) 95

96 Οι άγνωστοι σε αυτήν την σχέση είναι η theta και το άθροισμα (θ2 + θ3 + θ4). Η γωνία Euler theta στην περίπτωση του Katana εμφανίζεται στην εικόνα 5.6. Ο υπολογισμός της γίνεται γεωμετρικά στη συνέχεια. Εικόνα 5.6. Αριστερά-τρίγωνο προσέγγισης για theta=180 o, Δεξιά-τρίγωνο προσέγγισης υπολογισμού γωνίας δ και γωνίας ω. Στην εικόνα 5.6 στα αριστερά, η αρπάγη βρίσκεται σε κατακόρυφη στάση στην οποία: theta=180 ο. Κατά την στροφή της αρπάγης σε μορφή της δεξιάς εικόνας της 5.6 η γωνία theta αυξάνεται κατά ω ο. Για να υπολογιστεί η γωνία αυτή, υπολογίζουμε αρχικά την γωνία δ, δηλαδή την παραπληρωματική της γωνίας προσέγγισης. Η τελευταία μπορεί να βρεθεί από την εξίσωση: cosδ = y 2 y 1 (5.3) όπου y2 και y1 είναι οι συντεταγμένες των σημείων Β που εμφανίζονται στην εικόνα 5.3, ενώ m είναι η υποτείνουσα, δηλαδή το μήκος της αρπάγης. Άρα η γωνία ω είναι: ω = 90 ο δ (5.4) Στη συνέχεια, γνωρίζοντας την ω υπολογίζουμε την theta: theta = 180 o + ω ή (5.5) theta = 180 o ω (5.6) ανάλογα αν η στροφή γίνεται προς την εσωτερική ή εξωτερική πλευρά της αρπάγης αντίστοιχα. Βήμα 4 ο Υπολογίζεται το άθροισμα (θ2 + θ3 + θ4): (θ2 + θ3 + θ4) = arcsin ( cos (theta) cosθ 5 ) (5.7) 96

97 Βήμα 5 ο Από το αρχείο KatanaKinematics6M90G.cpp βρέθηκε πως για τον υπολογισμό της phi ισχύει ο τύπος: phi = arctan ( T 13 T 23 ) (5.8) όπου τα στοιχεία Τ13 και Τ23 είναι πλέον γνωστά αφού έχουν υπολογιστεί οι γωνίες και τα θροίσματα που απαιτούνταν. Τα στοιχεία αυτά είναι: Τ 13 = cosθ 1 cos(θ 2 + θ 3 + θ 4 ) cosθ 5 + sinθ 1 sinθ 5 (5.9) Τ 23 = sinθ 1 cos(θ 2 + θ 3 + θ 4 ) cosθ 5 cosθ 1 sinθ 5 (5.10) Τέλος, έμεινε ο υπολογισμός της γωνίας Euler psi. Με αντιστοίχιση πάλι των δύο πινάκων βρίσκουμε πως: Έτσι, επιλύοντας ως προς psi προκύπτει η σχέση: sin(psi) sin (theta) = cos (θ 2 + θ 3 + θ 4 ) (5.11) psi = arcsin( cos (θ 2+θ 3 +θ 4 ) ) (5.12) sin (theta) Επίλυση κάθετου προσανατολισμού Για να τοποθετείται η αρπάγη μόνο σε κατακόρυφο προσανατολισμό, η διαδικασία που ακολουθείται για τον υπολογισμό των phi, theta, psi είναι αρκετά απλούστερη. Αυτό οφείλεται στο γεγονός πως, στην περίπτωση αυτή η γωνία theta θα παραμένει πάντα ίση με 180 o. Στην περίσταση αυτή έχουμε ιδιάζουσα περίπτωση (singularity) και παρατηρήθηκε με την χρήση του αρχείου KatanaKinematics6M90G.cpp ότι οι γωνίες phi και psi θα δίνονται από τις ακόλουθες εξισώσεις: phi = arctan ( p y ) + pi p x 2 psi = pi 2 Εικόνα 5.7. Κάθετος Προσανατολισμός αρπάγης. 97

98 Επίλυση οριζόντιου προσανατολισμού Στον οριζόντιο προσανατολισμό της αρπάγης (εικόνα 5.8) οι γωνίες Euler διατηρούνται σταθερές. Για την εύρεση των τιμών των γωνιών Euler ακολουθήθηκε μία διαφορετική προσέγγιση σε σχέση με την 1 η περίπτωση. Στην εικόνα 5.8 (δεξιά), εμφανίζεται το διάνυσμα p που περιγράφει την θέση της άκρης της αρπάγης σε σχέση με το κέντρο της (TCP). Το διάνυσμα αυτό μεταφέρει τις συντεταγμένες από την άκρη της αρπάγης στο TCP της. Όταν έχουμε οριζόντιο προσανατολισμό το p.z της αρπάγης θα είναι μηδέν καθώς δεν υπάρχει αλλαγή στον άξονα z από την κορυφή του εργαλείου μέχρι το κέντρο του. Στην γενική περίπτωση το διάνυσμα αρπάγης δίνεται από τις παρακάτω εξισώσεις: p. x = l sin(theta) sin(phi) (5.13) p. y = l sin(theta) cos(phi) (5.14) p. z = l cos(theta) (5.15) όπου l είναι το μήκος της αρπάγης και είναι: l = mm Η γωνία theta θα είναι ίση με pi/2, όπως είναι εύκολα κατανοητό από την εικόνα 5.8 (αριστερά). Άρα προκύπτει p.z = 0, όπως προαναφέρθηκε. Στη συνέχεια, από το επίπεδο της εικόνας 5.8 (δεξιά) προκύπτει πως: p. x = l (5.16) p. y = 0 (5.17) Από τις εξισώσεις 5.13, 5.14, 5.16 και 5.17, επιλύοντας ως προς phi συνεπάγονται οι εξισώσεις 5.18 και 5.19 l sin(phi) = l => sin(phi) = 1 => phi = pi (5.18) l cos(phi) = 0 => phi = pi pi ή phi = (5.19) 2 2 Από αυτές βρίσκεται η επιθυμητή τιμή phi ίση με: phi= pi/2 Τέλος, για τον υπολογισμό της γωνίας psi θα χρησιμοποιηθεί, όπως και στην ενότητα 5.2.1, η σχέση 5.12: psi = arcsin( cos (θ 2 + θ 3 + θ 4 ) ) sin (theta) όπου για το cos(θ2 + θ3 + θ4), βρέθηκε από το αρχείο KatanaKinematics6M90G.cpp πως στην περίπτωση που το p.z θα είναι: θ 2 + θ 3 + θ 4 = 0 2 Άρα η psi θα είναι: psi = arcsin(1) = pi 2 98

99 Εικόνα 5.8. Αριστερά-οριζόντιος προσανατολισμός αρπάγης. Δεξιά-διάνυσμα p της αρπάγης Επίλυση διαγώνιου προσανατολισμού Στον διαγώνιο προσανατολισμό η αρπάγη έχει την μορφή της εικόνας 5.9. Σε αυτήν την περίπτωση η γωνία θ1 αλλά και η θ5 μεταβάλλονται, κατά την καθοδήγηση του βραχίονα. Εικόνα 5.9. Διαγώνιος προσανατολισμός αρπάγης. Στην θέση αυτή η τιμή της γωνίας Euler theta θα είναι όπως και στην προηγούμενη ενότητα η: theta = pi 2 Σε αυτόν τον προσανατολισμό ισχύει πάλι πως p.z=0. Από το αρχείο KatanaKinematics6M90G.cpp βρέθηκε πως θα ισχύει τότε η σχέση: θ 5 = θ 1 arctan ( p y p x ) (5.20) 99

100 Όπως και πριν, το άθροισμα (θ2 + θ3 + θ4) θα είναι ίσο με μηδέν. Έτσι, με 5 αντικατάσταση της τιμής αυτής στον πίνακα 0 Τ της ενότητας προκύπτει ο εξής πίνακας: 0 cosθ 1 sinθ 5 + cosθ 5 sinθ 1 cosθ 1 cosθ 5 + sinθ 1 sinθ cosθ 1 cosθ sinθ cosθ 1 cos(θ 2 + θ 3 ) 5 0 Τ = 0 sinθ 1 sinθ 5 cosθ 1 cosθ 5 sinθ 1 cosθ 5 cosθ 1 sinθ sinθ 1 cosθ cosθ sinθ 1 cos (θ 2 + θ 3 ) sin (θ 2 ) sin (θ 2 + θ 3 ) [ ] ο οποίος μετά από μετατροπές γίνεται ως εξής: sinθ 1 0 sin (θ 1 θ 5 ) cos(θ 1 θ 5 ) +0.19cosθ 1 cosθ cosθ 1 cos(θ 2 + θ 3 ) 5 0 Τ = 0 cos(θ 1 θ 5 ) sin(θ 1 θ 5 ) cosθ sinθ 1 cosθ sinθ 1 cos (θ 2 + θ 3 ) +0.19sin (θ 2 ) sin (θ 2 + θ 3 ) [ ] Από τον παραπάνω πίνακα είναι αδύνατο να υπολογιστούν ξεχωριστά οι γωνίες θ1 και θ5, άρα θα χρησιμοποιηθεί η διαφορά τους από την σχέση Με αντιστοίχηση του στοιχείου Τ13 με το αντίστοιχο στοιχείο του πίνακα περιστροφής των γωνιών Euler, προκύπτει η εξής σχέση για την γωνία phi: cos(θ 1 θ 5 ) = sin (phi) (5.21) Άρα προκύπτει πως η γωνία Euler phi θα δίνεται από την παρακάτω εξίσωση: 100

101 phi = arcsin(cos (θ 1 θ 5 )) Έπειτα, με αντιστοίχηση των στοιχείων Τ31 και Τ32 με τα αντίστοιχα στοιχεία του πίνακα περιστροφής των γωνιών Euler, προκύπτουν οι εξής σχέσεις για τη γωνία psi: cos(psi) = 0 => psi = pi pi ή psi = (5.22) 2 2 sin(psi) = 1 => psi = pi (5.23) Άρα επιλέγεται: psi = pi 2 Τέλος, πρέπει να τονιστεί πως στην περίπτωση αυτή παρατηρήθηκε μία απρόβλεπτη συμπεριφορά στην κίνηση του βραχίονα. Αυτό μπορεί να οφείλεται στο γεγονός ότι δεν έχουν υπολογιστεί ξεχωριστά οι γωνίες θ1 και θ5 και αφήνονται στον εσωτερικό αλγόριθμο αντίστροφης κινηματικής του Katana

102 102

103 6. Προετοιμασία Πειράματος Στο κεφάλαιο αυτό περιγράφονται τα στοιχεία από τα οποία αποτελείται η πειραματική μας διάταξη, καθώς και η διαδικασία που ακολουθήθηκε για την προετοιμασία της εκτέλεσης των πειραμάτων. Τα στοιχεία αυτά είναι: Κάμερες Logitech C270 Μεταφορική Misumi Ρομποτικός βραχίονας KATANA Ηλεκτρονικό υπολογιστή με λειτουργικό Windows 7 ( Intel Core i7: 3.07Ghz) Μικροεπεξεργαστής ODROID-U3 Προσθετικά αρπάγης Εικόνα 6.1. Πειραματική διάταξη από περιβάλλον Solidworks Στερεοσκοπικό σύστημα δύο καμερών Οι κάμερες που χρησιμοποιήθηκαν για τη δημιουργία της στερεοσκοπικής διάταξης είναι οι Logitech C270 (τύπου webcam) τοποθετημένες παράλληλα. Τα χαρακτηριστικά της κάμερας παρατίθενται στον πίνακα

104 Πίνακας 6.1. Χαρακτηριστικά των καμερών. Κάμερα Logitech C270 Τύπος σύνδεσης USB 2.0 USB VID_PID VID_046D&PID_081A Τύπος φακού Πλαστικός Τύπος αισθητήρα CMOS Εστίαση Σταθερή Πεδίο όρασης 60 ο Εστιακό μήκος 4.0mm Μέγιστη ανάλυση 1280x960 Λήψη εικόνας (4:3 SD) 320x240, 640x480 Λήψη εικόνας (16:9 360p, 480p, 720p W) Λήψη βίντεο (4:3 SD) 320x240, 640x480, 800x600 Λήψη βίντεο (16:9 W) 360p, 480p, 720p, Καρέ ανά 640x480 δευτερόλεπτο Κουμπιά Όχι Ενδεικτικές Λυχνίες Λειτουργίας/Έναρξης Μήκος καλωδίου 1.5 m Υποστήριξη μη Ναι συμπιεσμένης λήψης Υποστήριξη Ναι περιβάλλοντος LINUX Το παραπάνω μοντέλο κάμερας επιλέχθηκε επειδή προσφέρει σταθερή εστίαση, το οποίο είναι απαραίτητο για την πειραματική διαδικασία. Ακόμα, παρέχει καλή ανάλυση, ικανοποιητικό αριθμό καρέ ανά δευτερόλεπτο και μεγάλο πεδίο όρασης. Προκειμένου να πετύχουμε την βέλτιστη παράλληλη τοποθέτηση για το σύστημα μας, αφαιρέθηκε το πλαστικό κάλυμμα των καμερών, ώστε να μείνει μόνο η πλακέτα με τον CMOS αισθητήρα και το φακό, όπως φαίνεται στην εικόνα 6.2. Εικόνα 6.2. Αποσυναρμολόγηση των καμερών. 104

105 Στη συνέχεια σχεδιάστηκε η βάση στήριξης των δύο καμερών, με την οποία παρέχεται η δυνατότητα μεταβλητού ύψους και βασικής γραμμής (baseline). Η τοποθέτηση της βάσης αυτής γίνεται σε σταθερό σημείο απέναντι από τον ρομποτικό βραχίονα και την γραμμή μεταφοράς Μεταφορική ταινία Εικόνα 6.3. Διάταξη τοποθέτησης των καμερών Χαρακτηριστικά της μεταφορικής ταινίας Η μεταφορική ταινία (σχήμα 6.4) που χρησιμοποιήθηκε για την πειραματική διαδικασία είναι τύπου SVKB από την εταιρία MISUMI. Τα χαρακτηριστικά της εμφανίζονται στον πίνακα 6.2, ενώ η κάτοψη και η πρόσοψη της παρατίθενται στο σχήμα 6.5. Εικόνα 6.4. Μεταφορική ταινία Misumi. 105

106 Πίνακας 6.2. Χαρακτηριστικά της μεταφορικής ταινίας. Μοντέλο Πλάτος ιμάντα (Β) Απόσταση μεταξύ τροχαλιών (L) Τύπος Κινητήρα SVKB 150 mm 800 mm Έξοδος(W) 25 Τάση(V) TA230(μονοφασική) Προδιαγραφές Gearhead Reduction Ratio Χρώμα Ιμάντα Κατασκευαστής κινητήρα SCM(Variable Speed Motor) 15 Άσπρος Panasonic Εικόνα 6.5. Κάτοψη και πρόσοψη της μεταφορικής ταινίας. 106

107 Το μοντέλο της μεταφορικής ταινίας που χρησιμοποιήθηκε έχει gearhead reduction ration 15. Όπως βλέπουμε από τον πίνακα 6.3 συμπεραίνουμε πως η μέγιστη ταχύτητα του ιμάντα είναι 16.3 m/min. Αυτή η ταχύτητα ελέγχεται με τη χρήση του ελεγκτή ο οποίος θα αναλυθεί στην επόμενη παράγραφο. Πίνακας 6.3: πίνακας ταχύτητας ιμάντα- Gear head ratio Εικόνα 6.6. Διάγραμμα ταχύτητας ιμάντα-μάζας αντικειμένου. Gearhead Reduction Ratio Ταχύτητα ιμάντα (m/min) 12, Η μεταφορική ταινία δεν περιλάμβανε βάση στήριξης. Για αυτό τον λόγο κατασκευάστηκαν μεταλλικά στηρίγματα τα οποία διαθέτουν και θέση στήριξης για τον ελεγκτή. Στο σχήμα 6.7 εμφανίζονται τα στηρίγματα αυτά. Εικόνα 6.7. Βάσεις στήριξης της μεταφορικής ταινίας. 107

108 Έλεγχος ταχύτητας κινητήρα Για τον έλεγχο ταχύτητας της μεταφορικής ταινίας συνδέθηκε ο ελεγκτής της Panasonic MGSDB2 με τον κινητήρα της. Ο ελεγκτής αυτός προσφέρει την κλιμακωτή αλλαγή της ταχύτητας του κινητήρα της μεταφορικής ταινίας. Οι δυνατές ταχύτητες είναι από 1.065cm/sec μέχρι cm/sec. Οι διαστάσεις του ελεγκτή εμφανίζονται στην εικόνα 6.8 και το κυκλωματικό διάγραμμα της σύνδεσής του με τον κινητήρα παρατίθεται στην εικόνα 6.9. Στην εφαρμογή αυτή χρησιμοποιήθηκε η δεύτερη θέση του ελεγκτή η οποία δίνει στον ιμάντα ταχύτητα ίση με 2.13 cm/sec. Εικόνα 6.8. Πρόσοψη και πλάγια όψη του ελεγκτή. Εικόνα 6.9. Κυκλωματικό διάγραμμα σύνδεσης του ελεγκτή. 108

109 6.3. Μετατροπή του συστήματος συντεταγμένων Για την μεταφορά των συντεταγμένων στον τρισδιάστατο χώρο από το σύστημα δύο καμερών σε αυτό που αναγνωρίζει ο ρομποτικός βραχίονας, έπρεπε να υπολογιστούν οι συντεταγμένες του κέντρου του συστήματος του ρομπότ ως προς αυτό των καμερών. Για την διευκόλυνση της μεταφοράς οι κάμερες τοποθετήθηκαν ώστε να είναι ευθυγραμμισμένοι οι άξονες Z και Υ των καμερών και του βραχίονα αντίστοιχα και οι υπόλοιποι άξονες να βρίσκονται σε παραλληλία. Έτσι, σύμφωνα με τις εξισώσεις 3.10 έγινε πειραματικός υπολογισμός των τιμών των παραμέτρων x0, y0, z0. Πιο συγκεκριμένα βρέθηκαν οι εξής τιμές: X 0 = 15 cm Y 0 = 3 cm Z 0 = cm Λόγω σφάλματος στην ακρίβεια των παραπάνω μετρήσεων, ακολουθήθηκε μία διαδικασία με σκοπό την μείωση του. Αρχικά, εισήχθηκε η μετατροπή του συστήματος συντεταγμένων στον αλγόριθμο αναγνώρισης αντικειμένου, ώστε να λαμβάνουμε την θέση του με αναφορά τον βραχίονα. Έπειτα, τοποθετήθηκε ένα αντικείμενο μέσα στο περιβάλλον εργασίας του βραχίονα ώστε να αναγνωριστεί η θέση του από τις κάμερες. Στη συνέχεια, με την χρήση του demo προγράμματος control.exe, που αναλύθηκε στην παράγραφο 5.3, διαβάζουμε την τρέχουσα θέση της αρπάγης του βραχίονα, η οποία έχει ρυθμιστεί χειροκίνητα να ταυτίζεται με την θέση του αντικειμένου. Αποτέλεσμα αυτής της διαδικασίας είναι η λήψη της ίδιας θέσης στον χώρο, από τον αλγόριθμο αναγνώρισης και τον βραχίονα. Η διαφορά των τιμών αυτών για την ίδια θέση αποτελεί το σφάλμα μέτρησης των παραμέτρων x0, y0, z0. Επαναλαμβάνοντας την παραπάνω διαδικασία για αρκετές διαφορετικές θέσεις και παίρνοντας τον μέσο όρο των σφαλμάτων που προκύπτουν, βελτιώνουμε την ακρίβεια μετατροπής συντεταγμένων. Στην εικόνα 6.10 εμφανίζονται τα δύο συστήματα συντεταγμένων. Εικόνα Αλλαγή συστημάτων συντεταγμένων. Στη συνέχεια με την χρήση συνημίτονων κατεύθυνσης (κεφάλαιο 3.5) μπορούμε να μεταφέρουμε τις συντεταγμένες από το σύστημα του ρομποτικού βραχίονα ως εξής: x = l1x + l2y + l3z + x0 { y = m1x + m2y + m3z + y0 z = n1x + n2y + n3z + z0 109

110 Επιλύοντας ως προς x, y, z παίρνουμε: x = l1(x x 0 ) + m1(y y 0 ) + n1(z z 0 ) { y = l2(x x 0 ) + m2(y y 0 ) + n2(z z 0 ) z = l3(x x 0 ) + m3(y y 0 ) + n3(z z 0 ) Για τα li, mi, ni ισχύουν τα: l1 = cosa1, m1 = cosb1, n1 = cosc1 l2 = cosa2, m2 = cosb2, n2 = cosc2 l3 = cosa3, m3 = cosb3, n3 = cosc3 Όπου τα ai, bi, ci είναι οι γωνίες που σχηματίζει καθένας από τους OX, OY, OZ με τους OX, OY, OZ. Έτσι, με αντικατάσταση των γωνιών παίρνουμε: l1 = cos0 = 1, m1 = cos90 = 0, n1 = cos90 = 0 l2 = cos ( 90) = 0, m2 = cos90 = 0, n2 = cos0 = 1 l3 = cos90 = 0, m3 = cos180 = 1, n3 = cos90 = 0 Άρα η μετατροπή του συστήματος συντεταγμένων δίνεται από τις εξισώσεις: x = (x x 0 ) { y = (z z 0 ) z = (y y 0 ) 6.4. Μικροεπεξεργαστής ODROID-U3 Ο μικροεπεξεργαστής ODROID-U3 (εικόνα 6.11) είναι κατασκευασμένος από την εταιρία Hardkernel. Το λογισμικό του είναι βασισμένο στο λειτουργικό περιβάλλον Linux. Βασικό του χαρακτηριστικό είναι πως περιλαμβάνει έναν αρκετά δυνατό τύπου ARM επεξεργαστή, τον Exynos4412 Prime Cortex-A9 με τέσσερις πυρήνες. Τα βασικά χαρακτηριστικά του εμφανίζονται στον πίνακα 6.4. Εικόνα Ο μικροεπεξεργαστής ODROID-U3. 110

111 Πίνακας 6.4: Χαρακτηριστικά μικροεπεξεργαστή ODROID-U3 Κεντρική μονάδα προγραμματισμού (CPU) 1.7GHz Exynos4412 Prime Cortex-A9 Quad-core processor HDMI connector Standard Micro-HDMI, supports up to 1920 x 1080 resolution Συνδεσιμότητα USB Host x 3, 10/100Mbps Ethernet RJ- 45, Headphone Jack Θύρες αποθήκευσης Micro-SD, θύρα σύνδεσης emmc *1 Είσοδος DC Μνήμη RAM 5V / 2A 2GByte Εγκατάσταση λειτουργικού Linux σε κάρτα SD Ο μικροεπεξεργαστής ODROID χρησιμοποιεί μία κάρτα SD ή emmc για την τοποθέτηση του λειτουργικού του συστήματος. Το τελευταίο μπορεί να είναι μία έκδοση XUbuntu 13.10, LUbuntu ή Android 4.x. Για την συγκεκριμένη πειραματική διεργασία χρησιμοποιήθηκε μία απλοποιημένη έκδοση LUbuntu με προεγκατεστημένη την OpenCV. Για την εγκατάσταση του συστήματος απαιτείται αρχικά να έχουμε το επιθυμητό αρχείο (image) και έναν ηλεκτρονικό υπολογιστή με λειτουργικό Linux ή Windows. Στην περίπτωση που έχουμε λειτουργικό σύστημα Linux το αρχείο αυτό είναι συμπιεσμένο σε μορφή image.img.xz. Με την εντολή xz -d image.img.xz γίνεται αποσυμπίεση στο αρχείο αυτό και στην συνέχεια με την εντολή sudo dd if=image.img of=/dev/sdx bs=4m πραγματοποιείται εγγραφή του λειτουργικού στην κάρτα SD. Τέλος με την εντολή sync ολοκληρώνεται η διαδικασία. Έπειτα, στην περίπτωση που ο ηλεκτρονικός υπολογιστής έχει περιβάλλον Windows, υπάρχει το πρόγραμμα Win32 Disk Imager for ODROID (εικόνα 6.12) το οποίο υλοποιεί την παραπάνω διαδικασία. Εικόνα Win32 Disk Imager for ODROID. *1: emmc: multimedia card (κάρτα πολυμέσων) 111

112 Το περιβάλλον εργασίας του μικροεπεξεργαστή με την απλοποιημένη έκδοση LUbuntu παρατίθεται στην εικόνα Εικόνα Περιβάλλον εργασίας του ODROID-U3 με λογισμικό LUbuntu. Τέλος, τοποθετούμε τις βιβλιοθήκες του KNI στον μικροεπεξεργαστή. Αυτές όμως απαιτούν μεταγλώττιση από την αρχή καθώς τώρα λειτουργούν σε επεξεργαστή τύπου ARM. Τα πειράματα που παρουσιάζονται στην πορεία μπορούν να πραγματοποιηθούν και στον μικροεπεξεργαστή αυτόν. Στην εικόνα 6.14 εμφανίζεται η διάταξη, με συνδεδεμένο το ODROID-U3 με τις κάμερες και το Katana. Εικόνα Διάταξη με χρήση ODROID-U3. 112

113 6.5. Προσθετικά αρπάγης Katana Στην αρπάγη του ρομποτικού βραχίονα Katana τοποθετήθηκαν στην κορυφή του, δύο ειδών προσθετικά εξαρτήματα, για την διευκόλυνση στο πιάσιμο των αντικειμένων. Το πρώτο ζευγάρι αυτών των προσθετικών (εικόνα 6.15 αριστερά) χρησιμοποιήθηκε στο πείραμα 8.2 με τον κάθετο προσανατολισμό της αρπάγης, ενώ το άλλο ζευγάρι στα πειράματα 7.2, 8.1 και 8.3, με τους υπόλοιπους προσανατολισμούς του βραχίονα. Εικόνα Προσθετικά αρπάγης Katana. 113

114 114

115 7. Πειράματα με την μεταφορική ταινία στάσιμη Στο κεφάλαιο αυτό περιγράφεται ο τρόπος δημιουργίας προγραμμάτων σε γλώσσα C++ με σκοπό τον προγραμματισμό του ρομποτικού βραχίονα Katana, με στόχο την χρήση του για τον χειρισμό στάσιμων αντικειμένων, εντοπισμένων από στερεοσκοπικό σύστημα (Κεφάλαιο 4). Επίσης, παρουσιάζονται τα προγράμματα, τα οποία δημιουργήθηκαν και οι εντολές για την υλοποίηση τους. Πριν όμως πραγματοποιηθεί η ανάλυση των πειραμάτων πρέπει να τονισθεί πως αυτά διεξάχθηκαν με κάποιες συγκεκριμένες προδιαγραφές. Σε κάθε πείραμα ορίζονται κάποια όρια τιμών x, y, z μέσα στα οποία μπορεί να λειτουργήσει επιτυχώς ο ρομποτικός βραχίονας. Τέλος, στο πείραμα 7.1 η μεταφορική ταινία τοποθετήθηκε σε απόσταση 20cm από το κέντρο της βάσης του βραχίονα, ενώ στο πείραμα 7.2 σε απόσταση 12.5cm. Αυτό εξυπηρετεί τις διαφορετικές προσεγγίσεις προσανατολισμού του εργαλείου που υλοποιούνται Αντικείμενα εν στάσει με τυχαίο προσανατολισμό αρπάγης Katana Η εφαρμογή αυτή προσομοιώνει μία βιομηχανική διάταξη, στην οποία η μεταφορική ταινία βρίσκεται εν κινήσει. Με την χρήση στερεοσκοπικού συστήματος, όταν εντοπίζονται αντικείμενα στέλνεται ένα κατάλληλο σήμα το οποίο σταματά τον κινητήρα της μεταφορικής. Στη συνέχεια, η θέση στον τρισδιάστατο χώρο, που έχει αναγνωριστεί από τις κάμερες, εισάγεται στον αλγόριθμο ελέγχου του βραχίονα. Τέλος, ο βραχίονας προσεγγίζει τα αντικείμενα με οποιοδήποτε προσανατολισμό αρπάγης. Τα αντικείμενα που χρησιμοποιήθηκαν για την πειραματική διαδικασία εμφανίζονται στην εικόνα 7.1. Όπως αναφέρθηκε στο κεφάλαιο 4, δίνεται η δυνατότητα στον χρήση για αναγνώριση αντικειμένων με διαφορετικά χρώματα. Εικόνα 7.1. Αντικείμενα πειράματος. Τα όρια των συντεταγμένων x, y, z στο πείραμα αυτό, ορίστηκαν σύμφωνα με τον ακόλουθο πίνακα. Ελάχιστο (mm) Μέγιστο (mm) x y z Πέρα από αυτά τα όρια τα αντικείμενα που αναγνωρίζονται βρίσκονται εκτός χώρου εργασίας. 115

116 Εικόνα 7.2. Αριστερά-η αρχική θέση του βραχίονα, δεξιά-η τελική θέση του βραχίονα. Με την έναρξη του προγράμματος, ο βραχίονας αρχικοποιείται σε ένα συγκεκριμένο σημείο (starting point), που έχει προεπιλεγεί από τον χρήστη (εικόνα 7.2 αριστερά). Μετά την αρπαγή του αντικειμένου ο βραχίονας το αφήνει σε ένα προκαθορισμένο τελικό σημείο (ending point, εικόνα 7.2 δεξιά). Για τον ορισμό του αρχικού και τελικού σημείου του βραχίονα, δημιουργήθηκαν δύο δομές (structs) σε C++, οι οποίες αποτελούνται από 6 στοιχεία, τα x, y, z καθώς και τις γωνιές Euler, φ, θ, ψ (phi,theta,psi), της αρπάγης. Οι δομές αυτές είναι η Ipoint (Initial point) και η Epoint (Ending point) για το αρχικό και τελικό σημείο αντίστοιχα. Με την χρήση της συνάρτησης: katana->moverobotto(x. Y, Z, phi, theta, psi), στέλνεται ο βραχίονας στο σημείο που ορίζουν οι δομές. Τέλος με την συνάρτηση: void movdegrees (double tar, bool wait=false, int tolerance=100, long timeout=tm_endless) κλείνει ή ανοίγει η αρπάγη του βραχίονα, για να πιάσει ή να αφήσει το αντικείμενο, δίνοντας την κατάλληλη τιμή στις μοίρες (degrees). Το τμήμα του προγράμματος που οδηγεί τον βραχίονα στο αρχικό σημείο παρατίθεται στον πίνακα 7.1. Πίνακας 7.1 //Move to starting point cout << "\n\n moving KATANA to starting point \n"; Ipoint spoint; spoint.x = ; spoint.y = ; spoint.z = ; spoint.phi = /RadToDeg; spoint.theta =3.13/RadToDeg; spoint.psi = /RadToDeg; katana->moverobotto(spoint.x, spoint.y, spoint.z, spoint.phi, spoint.theta, spoint.psi); katana->movdegrees(motor,-80,true,20,-1); 116

117 Το αντίστοιχο τμήμα του κώδικα που στέλνει τον βραχίονα στο τελικό σημείο δίνεται στον πίνακα 7.2. Πίνακας 7.2 //Move to ending point cout << "\n\n moving KATANA to ENDING point \n"; EPoint epoint; epoint.x = ; epoint.y = ; epoint.z = 92.03; epoint.phi = 1.93/RadToDeg; epoint.theta =3.09/RadToDeg; epoint.psi = -1.26/RadToDeg; katana->moverobotto(point.x, point.y, point.z+50, point.phi, point.theta, point.psi); katana->moverobotto(epoint.x, epoint.y, epoint.z, epoint.phi, epoint.theta, epoint.psi); katana->movdegrees(motor,-80,true,20,-1); Στο πείραμα αυτό χρησιμοποιήθηκε η περίπτωση γενικού προσανατολισμού της αρπάγης, η οποία αναλύθηκε στο κεφάλαιο 5. Για την εφαρμογή του τελευταίου, έχει μετρηθεί πειραματικά η ακτίνα του κύκλου (Rc), πάνω στην μεταφορική ταινία, στην οποία η αρπάγη δαιτηρεί κάθετο προσανατολισμό. Στη συνέχεια, υπολογίζεται η απόσταση (Rdyn) της θέσης του τρέχοντος αντικειμένου από το κέντρο του συστήματος συντεταγμένων του βραχίονα. Με την χρήση της σχέσης 5.3, εισάγουμε τις τιμές των Rdyn, Rc στα y2, y1 αντίστοιχα και προκύπτει η εξίσωση: cosδ = Rdyn Rc, όπου Rc = mm Στη συνέχεια, σύμφωνα με την διαδικασία που επεξηγήθηκε στην ενότητα 5.2., υπολογίζονται οι τιμές των phi, theta, psi γωνιών Euler. Στις εικόνες 7.3 εμφανίζονται κάποιες από τις διαφορετικές προσεγγίσεις προσανατολισμού που μπορεί να πάρει ο βραχίονας. Στις εικόνες 7.4, 7.5 και 7.6 εμφανίζονται τα αποτελέσματα του κώδικα αναγνώρισης αντικειμένου, για τις δύο προσεγγίσεις. Εικόνα 7.3. Διαφορετικοί τρόποι προσσέγγισης ενός αντικειμένου. 117

118 Εικόνα 7.4. Πίνακας στερεοσκοπικών διαφορών. Εικόνα 7.5. Κέντρο βάρους αντικειμένου και περιγεγραμμένο κουτί. Εικόνα 7.6. Δυαδικές εικόνες κατωφλίου. 118

119 Στον πίνακα 7.3. παρατίθεται ο κώδικας που υλοποιεί τον τυχαίο προσανατολισμό. Πίνακας 7.3 // Gripper-orientation // th5 = M_PI; th1 = th5 + atan2(-yarm,-xarm); Rdyn = sqrt(pow(xarm,2)+pow(yarm,2)); DR = Rdyn-Rc; DR = abs(dr); delta = acos(dr/150.5); omega = (M_PI/2) - delta; if (Rdyn > Rc){ point.theta=m_pi-omega; th234=asin(-cos(point.theta)); R13=-cos(th1)*cos(th234)*cos(th5) - sin(th1)*sin(th5); R23=-sin(th1)*cos(th234)*cos(th5) +cos(th1)*sin(th5); R33=sin(th234)*cos(th5); R31=cos(th234); R32=-sin(th234)*sin(th5); c1 = cos(th234); s1 = sin(point.theta); s2 = c1/s1; point.psi = acos(s2); point.phi=atan2(r13,-r23); } if (Rdyn <= Rc){ point.theta=m_pi+omega; th234=asin(-cos(point.theta)); R13=-cos(th1)*cos(th234)*cos(th5) - sin(th1)*sin(th5); R23=-sin(th1)*cos(th234)*cos(th5) +cos(th1)*sin(th5); R33=sin(th234)*cos(th5); R31=cos(th234); R32=-sin(th234)*sin(th5); c1 = cos(th234); s1 = sin(point.theta); s2 = c1/s1; point.psi = acos(s2); point.phi=atan2(r13,-r23); } Τέλος, μετά από τον υπολογισμό των 6 εισόδων της εντολής katana->moverobotto (), με την κλήση της καθοδηγείται το Katana στην θέση του αντικειμένου και προχωράει στην αρπαγή του. Αξίζει να σημειωθεί πως με αυτόματη ρύθμιση της παραμέτρου waituntilreached στην τιμή false, ο βραχίονας προχωράει στην τελική θέση χωρίς να περιμένει το κλείσιμο της αρπάγης. Για τον λόγο αυτό, καλείται η συνάρτηση Sleep (msec) των Windows που δίνει την απαραίτητη καθυστέρηση για την αρπαγή του αντικειμένου, πριν 119

120 μετακινηθεί ο βραχίονας στην τελική θέση. Αποτέλεσμα αυτού ήταν να αυξηθεί η ταχύτητα υλοποίησης όλης της διαδικασίας. Ο αντίστοιχος κώδικας εμφανίζεται στον Πίνακα 7.4. Πίνακας 7.4 katana->moverobotto(point.x, point.y, point.z, point.phi, point.theta, point.psi); katana->closegripper(); Sleep(1000); Το παραπάνω πείραμα έχει το μεγαλύτερο δυνατό εύρος εργασίας πάνω στην μεταφορική ταινία, χάρις στην ελευθερία που προσφέρει ο προσανατολισμός του εργαλείου. Η ακρίβεια με την οποία προσεγγίζει το αντικείμενο ο βραχίονας, είναι η βέλτιστη δυνατή, κάτι το οποίο φαίνεται από την απουσία των βοηθητικών προσθετικών στοιχείων στην άκρη της αρπάγης. Τέλος, να αναφερθεί πως η λειτουργία αυτή μπορεί να πραγματοποιηθεί για αντικείμενα ανεξαρτήτως ύψους Αντικείμενα εν στάσει με διαγώνιο προσανατολισμό αρπάγης Katana Η εφαρμογή αυτή προσομοιώνει την ίδια διαδικασία με αυτήν που παρουσιάζεται στην ενότητα 7.1. Η διαφορά εμφανίζεται στον προσανατολισμό της αρπάγης. Όπως διακρίνεται από τις εικόνες 7.2. η αρπάγη διατηρεί ένα παράλληλο, με την μεταφορική ταινία, προσανατολισμό, ενώ κατά την αρπαγή των αντικειμένων στρέφεται διαγώνια. Το πείραμα αυτό εξυπηρετεί κυρίως υψηλά αντικείμενα. Εικόνα 7.7.Αριστερά-αρχικό σημείο, δεξιά-τελικό σημείο. Στον πίνακα που ακολουθεί δίνονται οι τιμές των ορίων x, y, z για το πείραμα αυτό. Ελάχιστο (mm) Μέγιστο (mm) x y z

121 Στην εικόνα 7.8 φαίνεται χαρακτηριστικά η διαγώνια κλίση της αρπάγης του Katana. Στους πίνακες 7.5 και 7.6, παρατίθεται ο κώδικας υλοποίησης της μετακίνησης του βραχίονα σε αρχικό και τελικό σημείο αντίστοιχα. Η διαδικασία αυτή είναι παρόμοια με του πειράματος της ενότητας 7.1 με την μοναδική διαφορά πως, οι τιμές που δόθηκαν στην συνάρτηση katana->moverobotto() είναι άλλες, ώστε να καθοδηγηθεί σε διαφορετική αρχική και τελική θέση ο βραχίονας. Στην εικόνα 7.9 εμφανίζεται ο πίνακας στερεοσκοπικών διαφορών. Εικόνα 7.8. Αριστερά-αρπαγή αντικειμένου, δεξιά-εντοπισμός κέντρου αντικειμένου. Εικόνα 7.9. Αριστερά-χάρτης στερεοσκοπικών διαφορών, δεξιά-εικόνα κατωφλίου. 121

122 Πίνακας 7.5. Κώδικας για μεταφορά στο αρχικό σημείο. //Move to starting point cout << "\n\n moving KATANA to starting point \n"; spoint.x = ; spoint.y = ; spoint.z = ; spoint.phi = /RadToDeg; spoint.theta = /RadToDeg; spoint.psi = /RadToDeg; katana->moverobotto(spoint.x, spoint.y, spoint.z, spoint.phi, spoint.theta, spoint.psi); katana->movdegrees(motor,-80,true,20,-1); Πίνακας 7.6. Κώδικας για μεταφορά στο τελικό σημείο. //Move to ending point cout << "\n\n moving KATANA to ENDING point \n"; epoint.x = ; epoint.y = ; epoint.z = ; epoint.phi = /RadToDeg; epoint.theta = /RadToDeg; epoint.psi = /RadToDeg; if (Rdyn>= (Rc-225) && Rdyn<Rc+55){ katana->moverobotto(point.x, point.y, point.z+18, point.phi, point.theta, point.psi); katana->moverobotto(epoint.x, epoint.y, epoint.z, epoint.phi, epoint.theta, epoint.psi); katana->movdegrees(motor,-80,true,100,-1); } Στον πίνακα 7.7, εμφανίζεται ο κώδικας που πραγματοποιεί την διαγώνια στροφή του εργαλείου του βραχίονα. Η ανάλυση της διαδικασίας που ακολουθήθηκε γίνεται στην ενότητα Πίνακας 7.7. Κώδικας για τον διαγώνιο προσανατολισμό της αρπάγης. // Gripper-orientation // th15 = -atan2(-yarm,-xarm); point.phi = asin(cos(th15)); point.theta=m_pi/2; point.psi=-m_pi/2; Ο βραχίονας οδηγείται αρχικά σε μία θέση πάνω από το αντικείμενο (περίπου 7 cm) και στη συνέχεια κατεβαίνει κατά τον άξονα z, ώστε να προχωρήσει στην αρπαγή του αντικειμένου. Η διαδικασία αυτή πραγματοποιείται ώστε να μην συγκρουστεί το Katana με το αναγνωρισμένο αντικείμενο. Ο κώδικας που υλοποιεί το παραπάνω εμφανίζεται στον πίνακα

123 Πίνακας 7.8. Κώδικας για την αρπαγή του αντικειμένου. katana->moverobotto(point.x, point.y, point.z+80, point.phi, point.theta, point.psi); katana->moverobotto(point.x, point.y, point.z+10, point.phi, point.theta, point.psi); katana->closegripper(false,40); Ακόμα, θα πρέπει να αναφερθεί πως δεν προτείνεται η εφαρμογή του πειράματος αυτού σε χαμηλά αντικείμενα εξαιτίας του σχήματος του εργαλείου, το οποίο μπορεί να συγκρουστεί με την μεταφορική ταινία. Τέλος, το περιβάλλον εργασίας της διεργασίας αυτής είναι εξαιρετικά περιορισμένο σε σχέση με αυτού της ενότητας 7.1, κάτι το οποίο είναι εμφανές από τους αντίστοιχους πίνακες των ορίων των x, y, z. Αυτό οφείλεται στην μικρή ευελιξία του τρόπου προσέγγισης των αντικειμένων που υλοποιείται. 123

124 124

125 8. Πειράματα με αντικείμενα εν κινήσει Στο κεφάλαιο αυτό περιγράφεται ο τρόπος δημιουργίας προγραμμάτων σε γλώσσα C++ με σκοπό τον προγραμματισμό του ρομποτικού βραχίονα Katana, με σκοπό την χρήση του για τον χειρισμό κινούμενων αντικειμένων, εντοπισμένων από στερεοσκοπικό σύστημα (Κεφάλαιο 4). Επίσης, παρουσιάζονται τα προγράμματα, τα οποία δημιουργήθηκαν και οι εντολές για την υλοποίηση τους. Σε κάθε πείραμα ομοίως με το Κεφάλαιο 7 ορίζονται κάποια όρια τιμών x, y, z (παράθυρο τιμών) μέσα στα οποία μπορεί να λειτουργήσει επιτυχώς ο ρομποτικός βραχίονας. Τέλος, στα πειράματα 8.1 και 8.2 η μεταφορική ταινία τοποθετήθηκε σε απόσταση 20cm από το κέντρο της βάσης του βραχίονα, ενώ στο πείραμα 8.3 σε απόσταση 12.5cm Αντικείμενα εν κινήσει με τυχαίο προσανατολισμό αρπάγης Η εφαρμογή αυτή προσομοιώνει μία βιομηχανική διάταξη, στην οποία η μεταφορική ταινία βρίσκεται εν κινήσει. Η θέση στον τρισδιάστατο χώρο, που αναγνωρίζουν οι κάμερες, εισάγεται στον αλγόριθμο ελέγχου του βραχίονα. Στη συνέχεια, διατηρώντας σταθερή την ταχύτητα της μεταφορικής ταινίας, πραγματοποιείται μία πρόβλεψη της θέσης των αντικειμένων. Στην εφαρμογή αυτή, ο βραχίονας προσεγγίζει τα αντικείμενα με οποιοδήποτε προσανατολισμό αρπάγης. Το πεδίο εργασίας καθορίζεται από τις τιμές του παρακάτω πίνακα: Ελάχιστο (mm) Μέγιστο (mm) x y z Η μεταφορική ταινία τοποθετήθηκε παράλληλα με τον άξονα x, του συστήματος συντεταγμένων του Katana. Αποτέλεσμα αυτού είναι να υπάρχει διαφοροποίηση στις τιμές μόνο της x συντεταγμένης του αντικειμένου. Οι συντεταγμένες y, z παραμένουν αμετάβλητες κατά την κίνηση του αντικειμένου. Τα πειράματα διεξάχθηκαν στην δεύτερη βαθμίδα του ελεγκτή ταχύτητας της μεταφορικής ταινίας. Καθώς στο κεφάλαιο 6 αναφέρθηκε πως η μέγιστη ταχύτητα της είναι 16 m/min, δουλεύοντας στην δεύτερη κλίμακα (από τις 25) του ελεγκτή, η ταχύτητα υπολογίστηκε ως εξής: u = = mm/sec (8.1) Η παράμετρος του χρόνου στην εξίσωση της κίνησης, αποτελείται από τον χρόνο εκτέλεσης του προγράμματος και τον χρόνο που χρειάζεται ο βραχίονας να πάει στην επιθυμητή θέση. Για να υπολογιστεί ο χρόνος εκτέλεσης του προγράμματος χρησιμοποιήθηκε η συνάρτηση int64 t = gettickcount() και η gettickfrequency() των windows. Η πρώτη επιστρέφει έναν αριθμό παλμών Tick και η δεύτερη την συχνότητα τους ανάλογα με την επεξεργαστική ισχύ του συστήματος. Έτσι, υπολογίστηκε ο χρόνος που χρειάζεται ο αλγόριθμος αναγνώρισης για να εντοπίσει τις 3D συντεταγμένες του αντικειμένου. Η κίνηση του βραχίονα μοιράζεται σε δύο μέρη. Αυτό συμβαίνει ώστε ο βραχίονας να προσεγγίζει από ψηλά το επιθυμητό αντικείμενο και να μην συγκρουστεί με τα υπόλοιπα. Στο πρώτο μέρος καθοδηγείται σε ένα ενδιάμεσο σημείο πάνω από το αντικείμενο, και κλείνει κατά μια γωνία 125

126 35 ο την αρπάγη του. Στο δεύτερο μέρος προχωράει στην αρπαγή του αντικειμένου στο επιθυμητό σημείο. Στη συνέχεια καθώς δεν είναι δυνατόν να υπολογιστεί ο χρόνος κίνησης του βραχίονα, από το αρχικό σημείο στο ενδιάμεσο, εκτιμήθηκε πειραματικά ίσος με 2.6 δευτερόλεπτα. Ωστόσο ο χρόνος αυτός δεν περιλάμβανε το κλείσιμο της αρπάγης. Οπότε τοποθετήθηκε η τιμή των 4.3 δευτερόλεπτων στην εξίσωση κίνησης. Ο κώδικας υλοποίησης της παραπάνω διαδικασίας εμφανίζεται στον πίνακα 8.1. Πίνακας 8.1 Xarm = Xarm *(t/getTickFrequency())+ 4.3*21.3; Ο βραχίονας Katana στέλνεται, ομοίως με την ενότητα 7.1, σε ένα αρχικό σημείο πριν την αναγνώριση και σε ένα τελικό μετά την αρπαγή του αντικειμένου. Αυτά τα σημεία εμφανίζονται στην εικόνα 8.1. Συγκρίνοντας τις εικόνες 7.1 (αριστερά) και 8.1 (αριστερά) παρατηρείται πως ο βραχίονας στην δεύτερη περίπτωση, στέλνεται σε χαμηλότερο αρχικό σημείο. Αυτό πραγματοποιείται για να βελτιωθεί η ταχύτητα εκτέλεσης της όλης διαδικασίας, καθώς κινείται η μεταφορική ταινία. Εικόνα 8.1. Αριστερά αρχικό σημείο βραχίονα, δεξιά τελικό σημείο βραχίονα. Ο κώδικας που καθοδηγεί τον βραχίονα στις θέσεις της εικόνας 8.1, παρατίθεται στους πίνακες 8.2 και 8.3. Η υλοποίηση του είναι όμοια με αυτήν που εξηγήθηκε στο κεφάλαιο 7.1. Πίνακας 8.2 //Move to starting point cout << "\n\n moving KATANA to starting point \n"; spoint.x = ; spoint.y = ; spoint.z = ; spoint.phi = /RadToDeg; spoint.theta = /RadToDeg; spoint.psi = /RadToDeg; katana->moverobotto(spoint.x, spoint.y, spoint.z, spoint.phi, spoint.theta, spoint.psi); katana->movdegrees(motor,-100,true,20,-1); 126

127 Πίνακας 8.3 //Move to ending point epoint.x = ; epoint.y = ; epoint.z = 92.03; epoint.phi = 1.93/RadToDeg; epoint.theta =3.09/RadToDeg; epoint.psi = -1.26/RadToDeg; if (Rtemp>= (Rc-90) && Rtemp<Rc+80){ cout << "\n\n moving KATANA to ENDING point \n"; katana->moverobotto(point.x, point.y, point.z+80, point.phi, point.theta, point.psi); katana->moverobotto(epoint.x, epoint.y, epoint.z, epoint.phi, epoint.theta, epoint.psi); katana->movdegrees(motor,-80,true,20,-1); Εξαιτίας του σφάλματος των πειραματικών μετρήσεων του χρόνου, πρέπει η θέση του ενδιάμεσου σημείου να επιδιορθωθεί κατά μία τιμή (54mm) στον άξονα x. Επιπρόσθετα με τον περιορισμό εργασίας που έχει τεθεί από το παράθυρο τιμών, προστίθεται ακόμα ένα κριτήριο σύγκρισης της απόστασης (Rtemp), του τρέχοντος αντικειμένου από την βάση του Katana, με την ακτίνα Rc. Αυτός ο έλεγχος πραγματοποιείται για την καθοδήγηση προς το ενδιάμεσο και τελικό σημείο. Καθώς το αντικείμενο κινείται στον x άξονα, οι προβλεπόμενες τιμές του x μπορεί να στείλουν τον βραχίονα επιτυχώς στο ενδιάμεσο σημείο. Παρόλα αυτά, από αυτό το σημείο μέχρι και το σημείο αρπαγής του αντικειμένου, το τελευταίο μπορεί να έχει βρεθεί εκτός ορίων λειτουργίας του βραχίονα. Ο επιπλέον περιορισμός αυτός ήταν απαραίτητος καθώς, στην περίπτωση που το Katana καθοδηγείται σε σημείο που δεν μπορεί να φτάσει, το πρόγραμμα θα τερματίσει και θα χρειαστεί επανεκκίνηση του. Ο τελευταίος έλεγχος εφαρμόζεται με την χρήση της συνθήκης if (πίνακας 8.3) με όρια [Rc-90, Rc+80]. Κατά την μετακίνηση του Katana από την αρχική θέση στην ενδιάμεση, του ορίζουμε μόνο τις τιμές x, y του αντικειμένου και κρατάμε ίδιο τον προσανατολισμό καθώς και την συντεταγμένη z που είχε στην αρχική θέση (πίνακας 8.4). Στον πίνακα αυτόν, υπάρχει ο κώδικας που πραγματοποιεί την μεταφορά στο ενδιάμεσο σημείο. Επιπλέον, πρέπει να τονισθεί πως ο προσανατολισμός της αρπάγης του βραχίονα, στο πείραμα αυτό είναι ίδιος με αυτόν της ενότητας 7.1. Πίνακας 8.4 //ENDIAMESO SHMEIO // Xarm = Xarm+54; point.x=xarm; if (Rtemp>= (Rc-90) && Rtemp<Rc+80){ katana->moverobotto(point.x, point.y, spoint.z, spoint.phi, spoint.theta, spoint.psi); katana->movdegrees(motor,-65,true,50,-1); } 127

128 Εικόνα 8.2. Ενδιάμεσο σημείο κίνησης Katana. Ο χρόνος ο οποίος χρειάζεται για να μετακινηθεί ο βραχίονας από το ενδιάμεσο σημείο (εικόνα 8.2) στο αντικείμενο, δεν είναι δυνατόν να υπολογιστεί, εξαιτίας της αυθαίρετης θέσης των αντικειμένων. Έτσι, υπολογίζουμε πειραματικά τον χρόνο αυτό (1,25 sec) και αφού τον πολλαπλασιάσουμε με την ταχύτητα της μεταφορικής ταινίας, τον εισάγουμε στην συντεταγμένη x (Xarm). Ακολουθεί ο κώδικας υλοποίησης της οδήγησης στο αντικείμενο. Είναι απαραίτητο να σχολιασθεί πως για τα πολύ απομακρυσμένα αντικείμενα γίνεται μία διόρθωση της τιμής του x άξονα. Αυτό πραγματοποιείται για την καλύτερη αρπαγή των αντικειμένων. Πίνακας 8.5 //Dynamic point Xarm = Xarm+1.25*21.7; Zarm = Zarm+5; point.x=xarm; point.z=zarm; if(yarm>-310){ Xarm=Xarm-25; point.x=xarm; } if (Rtemp>= (Rc-90) && Rtemp<Rc+80){ katana->moverobotto(point.x, point.y, point.z, point.phi, point.theta, point.psi); katana->closegripper(); Sleep(1000); } Στις εικόνες 8.3 (δεξιά) και 8.4 παρουσιάζονται τα αποτελέσματα της αναγνώρισης από το στερεοσκοπικό σύστημα. 128

129 Εικόνα 8.3. Αριστερά-αρπαγή αντικειμένου, δεξιά-εντοπισμός κέντρου αντικειμένου. Εικόνα 8.4. Αριστερά-χάρτης στερεοσκοπικών διαφορών, δεξιά-εικόνα κατωφλίου. Τέλος, το πείραμα αυτό προσφέρει όλα τα πλεονεκτήματα που αναφέρθηκαν στην ενότητα 7.1 και επιπρόσθετα την διαχείριση αντικειμένων πάνω στην κινούμενη μεταφορική ταινία. Ο χώρος εργασίας του βραχίονα είναι μικρότερος σε σχέση με την υλοποίηση του γενικού προσανατολισμού για στάσιμα αντικείμενα, αλλά παραμένει αρκετά ευρύς Αντικείμενα εν κινήσει με κάθετο προσανατολισμό αρπάγης Το πείραμα στην ενότητα αυτή, ακολουθεί την ίδια διαδικασία εκτέλεσης με αυτό του υποκεφαλαίου 8.1, με μοναδική διαφορά ότι τα αντικείμενα προσεγγίζονται με κάθετη αρπάγη. Ο προσανατολισμός αυτός αναλύθηκε στην παράγραφο Αξίζει να σημειωθεί πως εδώ ο χρόνος απόκρισης του βραχίονα είναι μικρότερος, καθώς και η κίνηση είναι απλούστερη. Ο χρόνος αυτός μετρήθηκε πειραματικά και βρέθηκε περίπου 3.5 δευτερόλεπτα. Xarm = Xarm *(t/getTickFrequency())+ 3.5*21.7; 129

130 Εικόνα 8.5. Αριστερά-αρχική θέση, δεξιά-τελική θέση. Στις εικόνες 8.5 αριστερά και 8.5 δεξιά εμφανίζονται οι αρχικές και τελικές θέσεις του Katana και στους πίνακες 8.6 και 8.7, παρατίθενται αντίστοιχα τα μέρη του κώδικα υλοποίησης. Πίνακας 8.7 //Move to starting point cout << "\n\n moving KATANA to starting point \n"; spoint.x = ; spoint.y = ; spoint.z = ; spoint.phi = /RadToDeg; spoint.theta = /RadToDeg; spoint.psi = /RadToDeg; katana->moverobotto(spoint.x, spoint.y, spoint.z, spoint.phi, spoint.theta, spoint.psi); katana->movdegrees(motor,-80,true,20,-1); Πίνακας 8.6 //Move to ending point cout << "\n\n moving KATANA to ENDING point \n"; epoint.x = ; epoint.y = ; epoint.z = 92.03; epoint.phi = 1.93/RadToDeg; epoint.theta =3.09/RadToDeg; epoint.psi = -1.26/RadToDeg; if (Rtemp>= (Rc-55) && Rtemp<Rc+55){ katana->moverobotto(point.x, point.y, point.z + 100, point.phi, point.theta, point.psi); katana->moverobotto(epoint.x, epoint.y, epoint.z, epoint.phi, epoint.theta, epoint.psi); katana->movdegrees(motor,-70,true,20,-1); 130

131 Ο κώδικας που υλοποιεί τον προσανατολισμό της αρπάγης, σύμφωνα με την παράγραφο εμφανίζεται στον πίνακα 8.8. Πίνακας 8.8 //Orientation point.x = Xarm; point.y = Yarm; point.z = Zarm; point.phi=(atan2(point.y,point.x))*pi/180+(pi/2); point.theta=pi; point.psi=pi/2; Το παράθυρο στο πείραμα αυτό καθορίζεται από τις εξής τιμές: Ελάχιστο (mm) Μέγιστο (mm) x y z Όπως είναι εμφανές οι τιμές αυτές το περιορίζουν αρκετά σε σχέση με το αντίστοιχο πείραμα γενικού προσανατολισμού εργαλείου. Επιπλέον, ελαττώνεται περισσότερο εξαιτίας του επιπρόσθετου ελέγχου της Rtemp, η οποία κυμαίνεται από [Rc-55, Rc+55]. Στη συνέχεια, ο βραχίονας καθοδηγείται στην ενδιάμεση θέση (εικόνα 8.6) με χρήση του κώδικα του πίνακα 8.9. Η θέση αυτή μεταβάλλεται κατά μία ποσότητα 27mm για την βελτίωση του σφάλματος πρόβλεψης θέσης. Η ποσότητα αυτή υπολογίστηκε πειραματικά. Πίνακας 8.9 //Move to middle point // Xarm = Xarm+27; point.x=xarm; Rtemp= sqrt(pow(xarm,2)+pow(yarm,2)); if (Rtemp>= (Rc-55) && Rtemp<Rc+55){ katana->moverobotto(point.x, point.y, spoint.z, spoint.phi, spoint.theta, spoint.psi); katana->movdegrees(motor,-70,true,50,-1); } 131

132 Εικόνα 8.6. Ενδιάμεσο σημείο. Με την ίδια διαδικασία με τα προηγούμενα πειράματα, ο βραχίονας μετά το ενδιάμεσο σημείο μεταφέρεται στο σημείο αρπάγματος του αντικειμένου. Η κίνηση αυτή γίνεται με την χρήση του κώδικα του πίνακα Ο χρόνος που χρειάζεται για να μεταφερθεί το Katana στο αντικείμενο από το ενδιάμεσο σημείο υπολογίστηκε πειραματικά ίσος με 1.4 δευτερόλεπτα. Στις εικόνες 8.7 (δεξιά) και 8.8 παρουσιάζονται τα αποτελέσματα της αναγνώρισης από το στερεοσκοπικό σύστημα. Εικόνα 8.7. Αριστερά-αρπαγή αντικειμένου, δεξιά-εντοπισμός κέντρου εικόνας. 132

133 Εικόνα 8.8. Αριστερά-χάρτης στερεοσκοπικών διαφορών, δεξιά-εικόνα κατωφλίου. //Dynamic point Πίνακας 8.10 Xarm = Xarm+1.4*21.7; point.x=xarm; Rtemp= sqrt(pow(xarm,2)+pow(yarm,2)); if (Rtemp>= (Rc-55) && Rtemp<Rc+55){ katana->moverobotto(point.x, point.y, point.z, point.phi, point.theta, point.psi); katana->closegripper(false,0); Sleep(1000); } 8.3. Αντικείμενα εν κινήσει με οριζόντιο προσανατολισμό αρπάγης Η εφαρμογή αυτή προσομοιώνει μία βιομηχανική διάταξη, στην οποία η μεταφορική ταινία βρίσκεται εν κινήσει. Η θέση στον τρισδιάστατο χώρο, που αναγνωρίζουν οι κάμερες, εισάγεται στον αλγόριθμο ελέγχου του βραχίονα. Στη συνέχεια, διατηρώντας σταθερή την ταχύτητα της μεταφορικής ταινίας, πραγματοποιείται μία πρόβλεψη της θέσης των αντικειμένων. Στην εφαρμογή αυτή, ο βραχίονας προσεγγίζει τα αντικείμενα με οριζόντιο προσανατολισμό αρπάγης. Το πεδίο εργασίας καθορίζεται από τις τιμές του παρακάτω πίνακα: Ελάχιστο (mm) Μέγιστο (mm) x y z Σε αυτό το πείραμα δεν ήταν απαραίτητη η χρήση ενδιάμεσου σημείου. Αυτό οφείλεται στο γεγονός πως η αρπάγη κινείται παράλληλα με την μεταφορική και κατεβαίνει απευθείας στο σημείο πιασίματος του αντικειμένου. Αυτή η υλοποίηση είναι πιο γρήγορη από τις προηγούμενες αλλά με πολύ μικρότερη ευελιξία. Έτσι, ο χρόνος οδήγησης του βραχίονα (2.6 sec), που τοποθετείται στην εξίσωση κίνησης του αντικειμένου είναι μικρότερος από τις περιπτώσεις γενικού και κάθετου προσανατολισμού. 133

134 Ο βραχίονας στέλνεται σε διαφορετικό αρχικό σημείο όπως φαίνεται στην εικόνα 8.9 Αυτό γίνεται για βέλτιστη προσαρμογή της αρχικής θέσης με τον προσανατολισμό πιασίματος των αντικειμένων. Ο αλγόριθμος που υλοποιεί την θέση αυτή παρατίθεται στον πίνακα 8.12 και ακολουθεί την ίδια λογική με προηγούμενα πειράματα. Πίνακας 8.11 Xarm = Xarm *(t/getTickFrequency())+ 2.6*21.7; Εικόνα 8.9. Αρχικό σημείο. //Move to starting point cout << "\n\n moving KATANA to starting point \n"; spoint.x = ; spoint.y = ; spoint.z = ; spoint.phi = /RadToDeg; spoint.theta = /RadToDeg; spoint.psi = /RadToDeg; katana->moverobotto(spoint.x, spoint.y, spoint.z, spoint.phi, spoint.theta, spoint.psi); katana->movdegrees(motor,-80,true,20,-1); Μετά από την αρχικοποίηση του βραχίονα ακολουθεί η αναγνώριση του αντικειμένου από το στερεοσκοπικό σύστημα καμερών. Με συνδύασμό των συντεταγμένων x, y, z και του προσανατολισμού που υλοποιείται στον πίνακα 8.13 οδηγούμε τον βραχίονα στην θέση πιασίματος του αντικειμένου. Ο προσανατολισμός αυτός βασίζεται στο υποκεφάλαιο Για την σωστή εκτέλεση του πειράματος, η μεταφορική ταινία χωρίστηκε σε τρείς περιοχές με βάση την συντεταγμένη y. Αυτές είναι οι εξής: y [ 204, 230] y [ , 254] y [ 254, 295] Πίνακας

135 Σε κάθε μία από αυτές τις περιοχές, δίνονται διαφορετικές τιμές για την επιδιόρθωση του σφάλματος θέσης του αντικειμένου (if συνθήκες στον πίνακα 8.13), καθως υπάρχει μία μικρή διαφόρα ανάμεσα στον χρόνο κίνησης του βραχίονα, προς αρπαγή του αντικειμένου, σε αυτές. //Orientation point.x = Xarm; point.y = Yarm; point.z = Zarm; point.phi = /RadToDeg; point.theta = /RadToDeg; point.psi = /RadToDeg; if(yarm>=-230){ Xarm=Xarm+40; point.x=xarm;} if(yarm<= && Yarm>-254){ Xarm=Xarm+32; point.x=xarm;} if(yarm<=-254){ Xarm=Xarm+30; point.x=xarm;} Πίνακας 8.13 Στον πίνακα 8.14 εμφανίζονται οι εντολές που καθοδηγούν τον βραχίονα στο επιθυμητό σημείο (εικόνα 8.10) και κλείνει η αρπάγη. Στις εικόνες 8.10 (δεξιά) και 8.11 παρουσιάζονται τα αποτελέσματα της αναγνώρισης από το στερεοσκοπικό σύστημα. Εικόνα Αριστερά-αρπαγή αντικειμένου, δεξιά-εντοπισμός κέντρου αντικειμένου. Πίνακας katana->moverobotto(point.x, point.y, point.z+10, point.phi, point.theta, point.psi); katana->closegripper(false,40); 135

136 Εικόνα Αριστερά χάρτης στερεοσκοπικών διαφορών, δεξιά εικόνα κατωφλίου. Η διαφορά κατά την μετακίνηση στο τελικό σημείο, από τα προηγούμενα πειράματα, εμφανίζεται στο γεγονός πως κατά την πορεία του σε αυτό ανασηκώνει το αντικείμενο κατά 18 mm ως προς τον άξονα z, ώστε να μην συρθεί πάνω στον ιμάντα της μεταφορικής ταινίας. Πίνακας 8.15 //Move to ending point cout << "\n\n moving KATANA to ENDING point \n"; epoint.x = ; epoint.y = ; epoint.z = ; epoint.phi = /RadToDeg; epoint.theta = /RadToDeg; epoint.psi = /RadToDeg; katana->moverobotto(point.x, point.y, point.z+18, point.phi, point.theta, point.psi); katana->moverobotto(epoint.x, epoint.y, epoint.z, epoint.phi, epoint.theta, epoint.psi); katana->movdegrees(motor,-80,true,100,-1); Εικόνα Τελικό σημείο. 136

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

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

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

ΕΦΑΡΜΟΓΕΣ ΦΩΤΟΓΡΑΜΜΕΤΡΙΑΣ. Βασίλης Γιαννακόπουλος, Δρ. Δασολόγος

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

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

Συστήματα συντεταγμένων

Συστήματα συντεταγμένων Κεφάλαιο. Για να δημιουργήσουμε τρισδιάστατα αντικείμενα, που μπορούν να παρασταθούν στην οθόνη του υπολογιστή ως ένα σύνολο από γραμμές, επίπεδες πολυγωνικές επιφάνειες ή ακόμη και από ένα συνδυασμό από

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

Στόχος της εργασίας και ιδιαιτερότητες του προβλήματος

Στόχος της εργασίας και ιδιαιτερότητες του προβλήματος ΑΝΑΠΤΥΞΗ ΟΠΤΙΚΟΥ ΣΥΣΤΗΜΑΤΟΣ ΠΡΟΣΑΡΜΟΣΤΙΚΟΥ ΕΛΕΓΧΟΥ ΚΑΤΕΡΓΑΣΙΑΣ ΥΛΙΚΩΝ Κουλουμέντας Παναγιώτης Σχολή Ηλεκτρονικών Μηχανικών και Μηχανικών Υπολογιστών Χανιά,Νοέμβριος 2014 Επιτροπή: Ζερβάκης Μιχάλης (επιβλέπων)

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

Εικόνα. Τεχνολογία Πολυμέσων και Πολυμεσικές Επικοινωνίες 05-1

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

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

Κεφάλαιο 7. Τρισδιάστατα Μοντέλα

Κεφάλαιο 7. Τρισδιάστατα Μοντέλα Κεφάλαιο 7. 7.1 ομές εδομένων για Γραφικά Υπολογιστών. Οι δομές δεδομένων αποτελούν αντικείμενο της επιστήμης υπολογιστών. Κατά συνέπεια πρέπει να γνωρίζουμε πώς οργανώνονται τα γεωμετρικά δεδομένα, προκειμένου

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

ΣΤΕΡΕΟΣΚΟΠΙΚΕΣ ΕΙΚΟΝΕΣ

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

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

Στα 1849 ο Sir David Brewster περιγράφει τη μακροσκοπική μηχανή λήψης και παράγονται οι πρώτες στερεοσκοπικές φωτογραφίες (εικ. 5,6).

Στα 1849 ο Sir David Brewster περιγράφει τη μακροσκοπική μηχανή λήψης και παράγονται οι πρώτες στερεοσκοπικές φωτογραφίες (εικ. 5,6). ΣΤΕΡΕΟΣΚΟΠΙΑ Η στερεοσκοπία είναι μια τεχνική που δημιουργεί την ψευδαίσθηση του βάθους σε μια εικόνα. Στηρίζεται στο ότι η τρισδιάστατη φυσική όραση πραγματοποιείται διότι κάθε μάτι βλέπει το ίδιο αντικείμενο

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

Εισαγωγή Στοιχεία Θεωρίας

Εισαγωγή Στοιχεία Θεωρίας Εισαγωγή Σκοπός της άσκησης αυτής είναι η εισαγωγή στην τεχνογνωσία των οπτικών ινών και η μελέτη τους κατά τη διάδοση μιας δέσμης laser. Συγκεκριμένα μελετάται η εξασθένιση που υφίσταται το σήμα στην

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

ΕΡΓΑΣΤΗΡΙΟ ΤΕΧΝΟΛΟΓΙΑΣ ΟΠΤΙΚΩΝ ΟΡΓΑΝΩΝ

ΕΡΓΑΣΤΗΡΙΟ ΤΕΧΝΟΛΟΓΙΑΣ ΟΠΤΙΚΩΝ ΟΡΓΑΝΩΝ ΕΡΓΑΣΤΗΡΙΟ ΤΕΧΝΟΛΟΓΙΑΣ ΟΠΤΙΚΩΝ ΟΡΓΑΝΩΝ Άσκηση 4. Διαφράγματα. Θεωρία Στο σχεδιασμό οπτικών οργάνων πρέπει να λάβει κανείς υπόψη και άλλες παραμέτρους πέρα από το πού και πώς σχηματίζεται το είδωλο ενός

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

Γραφικά & Οπτικοποίηση. Κεφάλαιο 1. Εισαγωγή. Γραφικά & Οπτικοπίηση: Αρχές & Αλγόριθμοι Κεφάλαιο 1

Γραφικά & Οπτικοποίηση. Κεφάλαιο 1. Εισαγωγή. Γραφικά & Οπτικοπίηση: Αρχές & Αλγόριθμοι Κεφάλαιο 1 Γραφικά & Οπτικοποίηση Κεφάλαιο 1 Εισαγωγή Ιστορικά Ιστορική ανασκόπηση : 2 Ιστορικά (2) Ρυθμοί ανάπτυξης CPU και GPU 3 Εφαρμογές Ειδικά εφέ για ταινίες & διαφημίσεις Επιστημονική εξερεύνηση μέσω οπτικοποίησης

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

Απορρόφηση φωτός: Προσδιορισμός του συντελεστή απορρόφησης διαφανών υλικών

Απορρόφηση φωτός: Προσδιορισμός του συντελεστή απορρόφησης διαφανών υλικών O11 Απορρόφηση φωτός: Προσδιορισμός του συντελεστή απορρόφησης διαφανών υλικών 1. Σκοπός Η εργαστηριακή αυτή άσκηση αποσκοπεί α) στη μελέτη του φαινομένου της εξασθένησης φωτός καθώς διέρχεται μέσα από

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

Α.Τ.Ε.Ι. Ηρακλείου Ψηφιακή Επεξεργασία Εικόνας ιδάσκων: Βασίλειος Γαργανουράκης. Ανθρώπινη Όραση - Χρωµατικά Μοντέλα

Α.Τ.Ε.Ι. Ηρακλείου Ψηφιακή Επεξεργασία Εικόνας ιδάσκων: Βασίλειος Γαργανουράκης. Ανθρώπινη Όραση - Χρωµατικά Μοντέλα Ανθρώπινη Όραση - Χρωµατικά Μοντέλα 1 Τι απαιτείται για την όραση Φωτισµός: κάποια πηγή φωτός Αντικείµενα: που θα ανακλούν (ή διαθλούν) το φως Μάτι: σύλληψη του φωτός σαν εικόνα Τρόποι µετάδοσης φωτός

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

Εισαγωγή στην επιστήμη των υπολογιστών

Εισαγωγή στην επιστήμη των υπολογιστών Εισαγωγή στην επιστήμη των υπολογιστών Υπολογιστές και Δεδομένα Κεφάλαιο 3ο Αναπαράσταση Αριθμών www.di.uoa.gr/~organosi 1 Δεκαδικό και Δυαδικό Δεκαδικό σύστημα 2 3 Δεκαδικό και Δυαδικό Δυαδικό Σύστημα

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

ΕΣΔ 200: ΔΗΜΙΟΥΡΓΙΑ ΠΕΡΙΕΧΟΜΕΝΟΥ ΙΙ. Ακαδημαϊκό Έτος 2011 2012, Χειμερινό Εξάμηνο Διδάσκων Καθ.: Νίκος Τσαπατσούλης

ΕΣΔ 200: ΔΗΜΙΟΥΡΓΙΑ ΠΕΡΙΕΧΟΜΕΝΟΥ ΙΙ. Ακαδημαϊκό Έτος 2011 2012, Χειμερινό Εξάμηνο Διδάσκων Καθ.: Νίκος Τσαπατσούλης ΤΕΧΝΟΛΟΓΙΚΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ, ΤΜΗΜΑ ΕΠΙΚΟΙΝΩΝΙΑΣ & ΣΠΟΥΔΩΝ ΔΙΑΔΙΚΤΥΟΥ ΕΣΔ 200: ΔΗΜΙΟΥΡΓΙΑ ΠΕΡΙΕΧΟΜΕΝΟΥ ΙΙ Ακαδημαϊκό Έτος 2011 2012, Χειμερινό Εξάμηνο Διδάσκων Καθ.: Νίκος Τσαπατσούλης ΕΡΩΤΗΣΕΙΣ ΕΠΑΝΑΛΗΨΗΣ

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

Στο προοπτικό ανάγλυφο για τη ευθεία του ορίζοντα χρησιμοποιούμε ένα δεύτερο κατακόρυφο επίπεδο Π 1

Στο προοπτικό ανάγλυφο για τη ευθεία του ορίζοντα χρησιμοποιούμε ένα δεύτερο κατακόρυφο επίπεδο Π 1 ΠΡΟΟΠΤΙΚΟ ΑΝΑΓΛΥΦΟ Το προοπτικό ανάγλυφο, όπως το επίπεδο προοπτικό, η στερεοσκοπική εικόνα κ.λπ. είναι τρόποι παρουσίασης και απεικόνισης των αρχιτεκτονικών συνθέσεων. Το προοπτικό ανάγλυφο είναι ένα

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

Διάθλαση φωτός και ολική ανάκλαση: Εύρεση του δείκτη διάθλασης και της γωνίας ολικής ανάκλασης

Διάθλαση φωτός και ολική ανάκλαση: Εύρεση του δείκτη διάθλασης και της γωνίας ολικής ανάκλασης 3 Διάθλαση φωτός και ολική ανάκλαση: Εύρεση του δείκτη διάθλασης και της γωνίας ολικής ανάκλασης Μέθοδος Σε σώμα διαφανές ημικυλινδρικού σχήματος είναι εύκολο να επιβεβαιωθεί ο νόμος του Sell και να εφαρμοστεί

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

ΦΩΤΟΓΡΑΦΙΑ ΘΕΜΑ: Επεξεργασία φωτογραφίας Αρχές λειτουργίας φωτογραφικών μηχανών

ΦΩΤΟΓΡΑΦΙΑ ΘΕΜΑ: Επεξεργασία φωτογραφίας Αρχές λειτουργίας φωτογραφικών μηχανών ΦΩΤΟΓΡΑΦΙΑ ΘΕΜΑ: Επεξεργασία φωτογραφίας Αρχές λειτουργίας φωτογραφικών μηχανών 1ο ΓΕΛ ΕΛΕΥΘΕΡΙΟΥ-ΚΟΡΔΕΛΙΟΥ ΤΜΗΜΑ: PR-4 ΜΑΘΗΤΕΣ: ΣΟΦΙΑΝΙΔΗΣ ΓΕΩΡΓΙΟΣ ΤΣΑΟΥΣΙΔΗΣ ΤΙΜΟΛΕΩΝ ΤΖΑΦΕΡΗΣ ΓΕΩΡΓΙΟΣ ΤΣΟΜΠΑΝΗ ΘΩΜΑΗ

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

Η Γεωμετρία της Αντιστροφής Η βασική θεωρία. Αντιστροφή

Η Γεωμετρία της Αντιστροφής Η βασική θεωρία. Αντιστροφή Αντιστροφή Υποθέτουμε ότι υπάρχει ένας κανόνας ο οποίος επιτρέπει την μετάβαση από ένα σχήμα σε ένα άλλο, με τέτοιο τρόπο ώστε το δεύτερο σχήμα να είναι τελείως ορισμένο όταν το πρώτο είναι δοσμένο και

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

Μετάδοση Πολυμεσικών Υπηρεσιών Ψηφιακή Τηλεόραση

Μετάδοση Πολυμεσικών Υπηρεσιών Ψηφιακή Τηλεόραση Χειμερινό Εξάμηνο 2013-2014 Μετάδοση Πολυμεσικών Υπηρεσιών Ψηφιακή Τηλεόραση 5 η Παρουσίαση : Ψηφιακή Επεξεργασία Εικόνας Διδάσκων: Γιάννης Ντόκας Σύνθεση Χρωμάτων Αφαιρετική Παραγωγή Χρώματος Χρωματικά

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

Εκτίμηση της κίνησης μιας κάμερας χειρός από την προσληφθείσα ακολουθία εικόνων

Εκτίμηση της κίνησης μιας κάμερας χειρός από την προσληφθείσα ακολουθία εικόνων ΑΡΙΣΤΟΤΕΛΕΙΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΟΝΙΚΗΣ ΠΟΛΥΤΕΧΝΙΚΗ ΣΧΟΛΗ ΤΜΗΜΑ ΗΛΕΚΤΡΟΛΟΓΩΝ ΜΗΧΑΝΙΚΩΝ & ΜΗΧΑΝΙΚΩΝ ΥΠΟΛΟΓΙΣΤΩΝ ΟΝΟΜΑ: ΖΗΣΗΣ ΠΕΤΡΟΥ Α.Ε.Μ.: 4829 ΔΙΠΛΩΜΑΤΙΚΗ ΕΡΓΑΣΙΑ ΘΕΜΑ: Εκτίμηση της κίνησης μιας κάμερας

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

ΕΡΓΑΣΤΗΡΙΟ ΕΦΑΡΜΟΣΜΕΝΗΣ ΟΠΤΙΚΗΣ

ΕΡΓΑΣΤΗΡΙΟ ΕΦΑΡΜΟΣΜΕΝΗΣ ΟΠΤΙΚΗΣ ΕΡΑΣΤΗΡΙ ΕΦΑΡΜΣΜΕΝΗΣ ΠΤΙΚΗΣ Άσκηση 1: Λεπτοί φακοί Εξεταζόμενες γνώσεις. Εξίσωση κατασκευαστών των φακών. Συστήματα φακών. Διαγράμματα κύριων ακτινών. Είδωλα και μεγέθυνση σε λεπτούς φακούς. Α. Λεπτοί

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

ΕΝ ΕΙΚΤΙΚΑ ΠΑΡΑ ΕΙΓΜΑΤΑ ΚΡΙΤΗΡΙΩΝ ΑΞΙΟΛΟΓΗΣΗΣ. Κεφάλαιο 17

ΕΝ ΕΙΚΤΙΚΑ ΠΑΡΑ ΕΙΓΜΑΤΑ ΚΡΙΤΗΡΙΩΝ ΑΞΙΟΛΟΓΗΣΗΣ. Κεφάλαιο 17 ΕΝ ΕΙΚΤΙΚΑ ΠΑΡΑ ΕΙΓΜΑΤΑ ΚΡΙΤΗΡΙΩΝ ΑΞΙΟΛΟΓΗΣΗΣ 1 ο Παράδειγµα (διάρκεια: 15 λεπτά) Κεφάλαιο 17 Α. ΣΤΟΙΧΕΙΑ ΤΟΥ ΜΑΘΗΤΗ ΟΝΟΜΑΤΕΠΩΝΥΜΟ ΜΑΘΗΤΗ:... ΤΑΞΗ:... ΤΜΗΜΑ:... ΕΞΕΤΑΖΟΜΕΝΟ ΜΑΘΗΜΑ:... ΗΜΕΡΟΜΗΝΙΑ:... Β.

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

ΠΕΙΡΑΜΑΤΙΚΗ ΔΙΑΔΙΚΑΣΙΑ

ΠΕΙΡΑΜΑΤΙΚΗ ΔΙΑΔΙΚΑΣΙΑ Εισαγωγή Σκοπός της εργαστηριακής άσκησης είναι η μελέτη του ηλεκτροοπτικού φαινομένου (φαινόμενο Pockels) σε θερμοκρασία περιβάλλοντος για κρύσταλλο KDP και ο προσδιορισμός της τάσης V λ/4. Στοιχεία Θεωρίας

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

ΑΞΟΝΟΜΕΤΡΙΑ. Εισαγωγή

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

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

Μέτρηση Γωνίας Brewster Νόμοι του Fresnel

Μέτρηση Γωνίας Brewster Νόμοι του Fresnel Μέτρηση Γωνίας Bewse Νόμοι του Fesnel [] ΕΙΣΑΓΩΓΗ Στο πείραμα, δέσμη φωτός από διοδικό lase ανακλάται στην επίπεδη επιφάνεια ενός ακρυλικού ημι-κυκλικού φακού, πολώνεται γραμμικά και ανιχνεύεται από ένα

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

Γραφικά με Η/Υ / Εισαγωγή

Γραφικά με Η/Υ / Εισαγωγή Γραφικά με Η/Υ Εισαγωγή Πληροφορίες μαθήματος (1/4) Υπεύθυνος μαθήματος: Μανιτσάρης Αθανάσιος, Καθηγητής ιδάσκοντες: Μανιτσάρης Αθανάσιος: email: manits@uom.gr Μαυρίδης Ιωάννης: email: mavridis@uom.gr

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

Σύμφωνα με το Ινστιτούτο Ρομποτικής της Αμερικής

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

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

Επεξεργασία Χαρτογραφικής Εικόνας

Επεξεργασία Χαρτογραφικής Εικόνας Επεξεργασία Χαρτογραφικής Εικόνας ιδάσκων: Αναγνωστόπουλος Χρήστος Βασικά στοιχεία εικονοστοιχείου (pixel) Φυσική λειτουργία όρασης Χηµική και ψηφιακή σύλληψη (Κλασσικές και ψηφιακές φωτογραφικές µηχανές)

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

Υπολογισμός της εστιακής απόστασης f λεπτού συμμετρικού συγκλίνοντος φακού απο τη γραμμική μεγέθυνση Μ

Υπολογισμός της εστιακής απόστασης f λεπτού συμμετρικού συγκλίνοντος φακού απο τη γραμμική μεγέθυνση Μ ΟΜΑΔΑ ΟΝΟΜΑΤΕΠΩΝΥΜΑ ΜΑΘΗΤΩΝ 1)... 2)... 3)... ΗΜΕΡΟΜΗΝΙΑ : Υπολογισμός της εστιακής απόστασης f λεπτού συμμετρικού συγκλίνοντος φακού απο τη γραμμική μεγέθυνση Μ Με το πείραµα αυτό θα προσδιορίσουµε: Σκοπός

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

Α.2 Μαθησιακά Αποτελέσματα Έχοντας ολοκληρώσει επιτυχώς το μάθημα οι εκπαιδευόμενοι θα είναι σε θέση να:

Α.2 Μαθησιακά Αποτελέσματα Έχοντας ολοκληρώσει επιτυχώς το μάθημα οι εκπαιδευόμενοι θα είναι σε θέση να: ΒΑΣΙΚΕΣ ΠΛΗΡΟΦΟΡΙΕΣ Τίτλος Μαθήματος Μεθοδολογίες και Συστήματα Βιομηχανικής Αυτοματοποίησης Κωδικός Μαθήματος Μ3 Θεωρία / Εργαστήριο Θεωρία + Εργαστήριο Πιστωτικές μονάδες 4 Ώρες Διδασκαλίας 2Θ+1Ε Τρόπος/Μέθοδοι

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

Εικόνες και γραφικά. Τεχνολογία Πολυµέσων 05-1

Εικόνες και γραφικά. Τεχνολογία Πολυµέσων 05-1 Εικόνες και γραφικά Περιγραφή στατικών εικόνων Αναπαράσταση γραφικών Υλικό γραφικών Dithering και anti-aliasing Σύνθεση εικόνας Ανάλυση εικόνας Μετάδοση εικόνας Τεχνολογία Πολυµέσων 05-1 Περιγραφή στατικών

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

Κεφάλαιο 1 Εισαγωγή.

Κεφάλαιο 1 Εισαγωγή. Κεφάλαιο 1 Εισαγωγή Αντικείμενο της εργασίας είναι η σχεδίαση και κατασκευή του ηλεκτρονικού τμήματος της διάταξης μέτρησης των θερμοκρασιών σε διάφορα σημεία ενός κινητήρα Ο στόχος είναι η ανάκτηση του

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

Ε.Α.Υ. Υπολογιστική Όραση. Κατάτμηση Εικόνας

Ε.Α.Υ. Υπολογιστική Όραση. Κατάτμηση Εικόνας Ε.Α.Υ. Υπολογιστική Όραση Κατάτμηση Εικόνας Γεώργιος Παπαϊωάννου 2015 ΚΑΤΩΦΛΙΩΣΗ Κατωφλίωση - Γενικά Είναι η πιο απλή μέθοδος segmentation εικόνας Χωρίζουμε την εικόνα σε 2 (binary) ή περισσότερες στάθμες

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

Φυσική των οφθαλμών και της όρασης. Κική Θεοδώρου

Φυσική των οφθαλμών και της όρασης. Κική Θεοδώρου Φυσική των οφθαλμών και της όρασης Κική Θεοδώρου Περιεχόμενα Στοιχεία Γεωμετρικής Οπτικής Ανατομία του Οφθαλμού Αμφιβληστροειδής Ο ανιχνευτής φωτός του οφθαλμού Το κατώφλι της όρασης Φαινόμενα περίθλασης

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

Φύση του φωτός. Θεωρούμε ότι το φως έχει διττή φύση: διαταραχή που διαδίδεται στο χώρο. μήκος κύματος φωτός. συχνότητα φωτός

Φύση του φωτός. Θεωρούμε ότι το φως έχει διττή φύση: διαταραχή που διαδίδεται στο χώρο. μήκος κύματος φωτός. συχνότητα φωτός Γεωμετρική Οπτική Φύση του φωτός Θεωρούμε ότι το φως έχει διττή φύση: ΚΥΜΑΤΙΚΗ Βασική ιδέα Το φως είναι μια Η/Μ διαταραχή που διαδίδεται στο χώρο Βασική Εξίσωση Φαινόμενα που εξηγεί καλύτερα (κύμα) μήκος

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

Τεχνικές Μείωσης Διαστάσεων. Ειδικά θέματα ψηφιακής επεξεργασίας σήματος και εικόνας Σ. Φωτόπουλος- Α. Μακεδόνας

Τεχνικές Μείωσης Διαστάσεων. Ειδικά θέματα ψηφιακής επεξεργασίας σήματος και εικόνας Σ. Φωτόπουλος- Α. Μακεδόνας Τεχνικές Μείωσης Διαστάσεων Ειδικά θέματα ψηφιακής επεξεργασίας σήματος και εικόνας Σ. Φωτόπουλος- Α. Μακεδόνας 1 Εισαγωγή Το μεγαλύτερο μέρος των δεδομένων που καλούμαστε να επεξεργαστούμε είναι πολυδιάστατα.

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

1.1. ΓΕΙΝΙΚΑ ΟΡΙΣΜΟΙ Με ποιο τρόπο μπορούμε να σχεδιάσουμε έναν τρισδιάστατο χώρο ή αντικείμενο, πάνω σ ένα χαρτί δύο διαστάσεων?

1.1. ΓΕΙΝΙΚΑ ΟΡΙΣΜΟΙ Με ποιο τρόπο μπορούμε να σχεδιάσουμε έναν τρισδιάστατο χώρο ή αντικείμενο, πάνω σ ένα χαρτί δύο διαστάσεων? ΣΧΕΔΙΑΣΤΙΚΗ ΜΕΘΟΔΟΛΟΓΙΑ - Εξεταστέα ύλη Β εξαμήνου 2011 1.1. ΓΕΙΝΙΚΑ ΟΡΙΣΜΟΙ Με ποιο τρόπο μπορούμε να σχεδιάσουμε έναν τρισδιάστατο χώρο ή αντικείμενο, πάνω σ ένα χαρτί δύο διαστάσεων? Τρεις μέθοδοι προβολών

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

Εισαγωγή στην Ρομποτική

Εισαγωγή στην Ρομποτική Τμήμα Μηχανολογίας Τ.Ε.Ι. Κρήτης Εισαγωγή στην Ρομποτική 1 Γενική περιγραφή ρομποτικού βραχίονα σύνδεσμοι αρθρώσεις αρπάγη Περιστροφική Πρισματική Βάση ρομποτικού βραχίονα 3 Βασικές ρομποτικές αρθρώσεις

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

Μια «ανώδυνη» εισαγωγή στο μάθημα (και στο MATLAB )

Μια «ανώδυνη» εισαγωγή στο μάθημα (και στο MATLAB ) Μια «ανώδυνη» εισαγωγή στο μάθημα (και στο MATLAB ) Μια πρώτη ιδέα για το μάθημα χωρίς καθόλου εξισώσεις!!! Περίγραμμα του μαθήματος χωρίς καθόλου εξισώσεις!!! Παραδείγματα από πραγματικές εφαρμογές ==

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

ΤΟΠΟΓΡΑΦΙΚΑ ΔΙΚΤΥΑ ΚΑΙ ΥΠΟΛΟΓΙΣΜΟΙ ΟΙ ΜΕΤΡΗΣΕΙΣ ΤΩΝ ΑΠΟΣΤΑΣΕΩΝ - ΠΡΟΕΠΕΞΕΡΓΑΣΙΑ

ΤΟΠΟΓΡΑΦΙΚΑ ΔΙΚΤΥΑ ΚΑΙ ΥΠΟΛΟΓΙΣΜΟΙ ΟΙ ΜΕΤΡΗΣΕΙΣ ΤΩΝ ΑΠΟΣΤΑΣΕΩΝ - ΠΡΟΕΠΕΞΕΡΓΑΣΙΑ ΤΟΠΟΓΡΑΦΙΚΑ ΔΙΚΤΥΑ ΚΑΙ ΥΠΟΛΟΓΙΣΜΟΙ ΟΙ ΜΕΤΡΗΣΕΙΣ ΤΩΝ ΑΠΟΣΤΑΣΕΩΝ - ΠΡΟΕΠΕΞΕΡΓΑΣΙΑ Βασίλης Δ. Ανδριτσάνος Δρ. Αγρονόμος - Τοπογράφος Μηχανικός ΑΠΘ Επίκουρος Καθηγητής ΤΕΙ Αθήνας 3ο εξάμηνο http://eclass.teiath.gr

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

ΤΕΛΙΚΕΣ ΔΙΠΛΩΜΑΤΙΚΕΣ ΕΡΓΑΣΙΕΣ (6 Μονάδες ECTS)- Ακαδημαϊκό Έτος 2013 2014

ΤΕΛΙΚΕΣ ΔΙΠΛΩΜΑΤΙΚΕΣ ΕΡΓΑΣΙΕΣ (6 Μονάδες ECTS)- Ακαδημαϊκό Έτος 2013 2014 ΤΕΧΝΟΛΟΓΙΚΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ Τμήμα Ηλεκτρολόγων Μηχανικών, Μηχανικών Η/Υ και Πληροφορικής ΤΕΛΙΚΕΣ ΔΙΠΛΩΜΑΤΙΚΕΣ ΕΡΓΑΣΙΕΣ (6 Μονάδες ECTS)- Ακαδημαϊκό Έτος 2013 2014 1. Ερευνητική Περιοχή: Επεξεργασία

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

7.1 ΜΕΤΡΗΣΗ ΤΗΣ ΕΣΤΙΑΚΗΣ ΑΠΟΣΤΑΣΗΣ ΦΑΚΩΝ

7.1 ΜΕΤΡΗΣΗ ΤΗΣ ΕΣΤΙΑΚΗΣ ΑΠΟΣΤΑΣΗΣ ΦΑΚΩΝ 7.1 ΑΣΚΗΣΗ 7 ΜΕΤΡΗΣΗ ΤΗΣ ΕΣΤΙΑΚΗΣ ΑΠΟΣΤΑΣΗΣ ΦΑΚΩΝ ΘΕΩΡΙΑ Όταν φωτεινή παράλληλη δέσμη διαδιδόμενη από οπτικό μέσο α με δείκτη διάθλασης n 1 προσπίπτει σε άλλο οπτικό μέσο β με δείκτη διάθλασης n 2 και

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

ΠΟΛΥΤΕΧΝΙΚΗ ΣΧΟΛΗ ΠΑΝΕΠΙΣΤΗΜΙΟΥ ΠΑΤΡΩΝ ΤΜΗΜΑ ΜΗΧΑΝΟΛΟΓΩΝ ΚΑΙ ΑΕΡΟΝΑΥΠΗΓΩΝ ΜΗΧΑΝΙΚΩΝ ΕΡΓΑΣΤΗΡΙΟ ΜΗΧΑΝΙΚΗΣ ΤΩΝ ΡΕΥΣΤΩΝ ΚΑΙ ΕΦΑΡΜΟΓΩΝ ΑΥΤΗΣ

ΠΟΛΥΤΕΧΝΙΚΗ ΣΧΟΛΗ ΠΑΝΕΠΙΣΤΗΜΙΟΥ ΠΑΤΡΩΝ ΤΜΗΜΑ ΜΗΧΑΝΟΛΟΓΩΝ ΚΑΙ ΑΕΡΟΝΑΥΠΗΓΩΝ ΜΗΧΑΝΙΚΩΝ ΕΡΓΑΣΤΗΡΙΟ ΜΗΧΑΝΙΚΗΣ ΤΩΝ ΡΕΥΣΤΩΝ ΚΑΙ ΕΦΑΡΜΟΓΩΝ ΑΥΤΗΣ ΠΟΛΥΤΕΧΝΙΚΗ ΣΧΟΛΗ ΠΑΝΕΠΙΣΤΗΜΙΟΥ ΠΑΤΡΩΝ ΤΜΗΜΑ ΜΗΧΑΝΟΛΟΓΩΝ ΚΑΙ ΑΕΡΟΝΑΥΠΗΓΩΝ ΜΗΧΑΝΙΚΩΝ ΕΡΓΑΣΤΗΡΙΟ ΜΗΧΑΝΙΚΗΣ ΤΩΝ ΡΕΥΣΤΩΝ ΚΑΙ ΕΦΑΡΜΟΓΩΝ ΑΥΤΗΣ Διευθυντής: Διονύσιος-Ελευθ. Π. Μάργαρης, Αναπλ. Καθηγητής ΕΡΓΑΣΤΗΡΙΑΚΗ

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

ΘΕΜΑ : ΠΡΟΟΠΤΙΚΟ ΣΧΕΔΙΟ ΜΕ 2 Σ.Φ ΙΣΟΜΕΤΡΙΚΗ ΠΡΟΒΟΛΗ. ΔΙΑΡΚΕΙΑ: 1 περιόδους. 28/9/2008 12:48 Όνομα: Λεκάκης Κωνσταντίνος καθ.

ΘΕΜΑ : ΠΡΟΟΠΤΙΚΟ ΣΧΕΔΙΟ ΜΕ 2 Σ.Φ ΙΣΟΜΕΤΡΙΚΗ ΠΡΟΒΟΛΗ. ΔΙΑΡΚΕΙΑ: 1 περιόδους. 28/9/2008 12:48 Όνομα: Λεκάκης Κωνσταντίνος καθ. ΘΕΜΑ : ΠΡΟΟΠΤΙΚΟ ΣΧΕΔΙΟ ΜΕ 2 Σ.Φ ΙΣΟΜΕΤΡΙΚΗ ΠΡΟΒΟΛΗ ΔΙΑΡΚΕΙΑ: 1 περιόδους 28/9/2008 12:48 καθ. Τεχνολογίας 28/9/2008 12:57 Προοπτικό σχέδιο με 2 Σημεία Φυγής Σημείο φυγής 1 Σημείο φυγής 2 Γωνία κτιρίου

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

Ο15. Κοίλα κάτοπτρα. 2. Θεωρία. 2.1 Γεωμετρική Οπτική

Ο15. Κοίλα κάτοπτρα. 2. Θεωρία. 2.1 Γεωμετρική Οπτική Ο15 Κοίλα κάτοπτρα 1. Σκοπός Σκοπός της άσκησης είναι η εύρεση της εστιακής απόστασης κοίλου κατόπτρου σχετικά μεγάλου ανοίγματος και την μέτρηση του σφάλματος της σφαιρικής εκτροπής... Θεωρία.1 Γεωμετρική

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

ΘΕΩΡΗΤΙΚΗ ΑΣΚΗΣΗ Γραφικές παραστάσεις, κλίση καµπύλης Μέθοδος των ελαχίστων τετραγώνων

ΘΕΩΡΗΤΙΚΗ ΑΣΚΗΣΗ Γραφικές παραστάσεις, κλίση καµπύλης Μέθοδος των ελαχίστων τετραγώνων ΘΕ ΘΕΩΡΗΤΙΚΗ ΑΣΚΗΣΗ Γραφικές παραστάσεις, κλίση καµπύλης Μέθοδος των ελαχίστων τετραγώνων 1. Σκοπός Πρόκειται για θεωρητική άσκηση που σκοπό έχει την περιληπτική αναφορά σε θεµατολογίες που αφορούν την

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

Επεξεργασία Χαρτογραφικής Εικόνας

Επεξεργασία Χαρτογραφικής Εικόνας Επεξεργασία Χαρτογραφικής Εικόνας Διδάσκων: Αναγνωστόπουλος Χρήστος Κώδικες μετρήσεων αντικειμένων σε εικόνα Χρωματικά μοντέλα: Munsell, HSB/HSV, CIE-LAB Κώδικες μετρήσεων αντικειμένων σε εικόνες Η βασική

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

ΕΡΓΑΣΤΗΡΙΟ ΔΥΝΑΜΙΚΗΣ ΜΗΧΑΝΩΝ

ΕΡΓΑΣΤΗΡΙΟ ΔΥΝΑΜΙΚΗΣ ΜΗΧΑΝΩΝ ΕΡΓΑΣΤΗΡΙΟ ΔΥΝΑΜΙΚΗΣ ΜΗΧΑΝΩΝ Εργαστηριακή Άσκηση 2 ΦΥΓΟΚΕΝΤΡΟΣ ΔΥΝΑΜΗ Ονοματεπώνυμο: Παριανού Θεοδώρα Όνομα Πατρός: Απόστολος Αριθμός μητρώου: 1000107 Ημερομηνία Διεξαγωγής: 05/12/11 Ημερομηνία Παράδοσης:

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

Οπτική αντίληψη. Μετά?..

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

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

ΠΟΥ ΔΙΑΔΙΔΕΤΑΙ ΤΟ ΦΩΣ

ΠΟΥ ΔΙΑΔΙΔΕΤΑΙ ΤΟ ΦΩΣ 1 ΦΩΣ Στο μικρόκοσμο θεωρούμε ότι το φως έχει δυο μορφές. Άλλοτε το αντιμετωπίζουμε με τη μορφή σωματιδίων που ονομάζουμε φωτόνια. Τα φωτόνια δεν έχουν μάζα αλλά μόνον ενέργεια. Άλλοτε πάλι αντιμετωπίζουμε

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

ΤΟΠΟΓΡΑΦΙΚΑ ΔΙΚΤΥΑ ΚΑΙ ΥΠΟΛΟΓΙΣΜΟΙ ΑΝΑΣΚΟΠΗΣΗ ΘΕΩΡΙΑΣ ΣΥΝΟΡΘΩΣΕΩΝ

ΤΟΠΟΓΡΑΦΙΚΑ ΔΙΚΤΥΑ ΚΑΙ ΥΠΟΛΟΓΙΣΜΟΙ ΑΝΑΣΚΟΠΗΣΗ ΘΕΩΡΙΑΣ ΣΥΝΟΡΘΩΣΕΩΝ ΤΟΠΟΓΡΑΦΙΚΑ ΔΙΚΤΥΑ ΚΑΙ ΥΠΟΛΟΓΙΣΜΟΙ ΑΝΑΣΚΟΠΗΣΗ ΘΕΩΡΙΑΣ ΣΥΝΟΡΘΩΣΕΩΝ Βασίλης Δ. Ανδριτσάνος Δρ. Αγρονόμος - Τοπογράφος Μηχανικός ΑΠΘ Επίκουρος Καθηγητής ΤΕΙ Αθήνας 3ο εξάμηνο http://eclass.teiath.gr Παρουσιάσεις,

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

Περιεχόμενα. Τοπογραφικό... 9 Σκάλα... 33 Φωτορεαλισμός... 57 Αντικείμενα... 91 Ανοίγματα... 95 Γραμμές... 99 Επεξεργασία... 103 Περιβάλλον...

Περιεχόμενα. Τοπογραφικό... 9 Σκάλα... 33 Φωτορεαλισμός... 57 Αντικείμενα... 91 Ανοίγματα... 95 Γραμμές... 99 Επεξεργασία... 103 Περιβάλλον... Περιεχόμενα Τοπογραφικό... 9 Σκάλα... 33 Φωτορεαλισμός... 57 Αντικείμενα... 91 Ανοίγματα... 95 Γραμμές... 99 Επεξεργασία... 103 Περιβάλλον... 111 Πρόλογος Στο κείμενο αυτό παρουσιάζονται οι νέες δυνατότητες

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

Ανάκλαση Είδωλα σε κοίλα και κυρτά σφαιρικά κάτοπτρα. Αντώνης Πουλιάσης Φυσικός M.Sc. 12 ο ΓΥΜΝΑΣΙΟ ΠΕΡΙΣΤΕΡΙΟΥ

Ανάκλαση Είδωλα σε κοίλα και κυρτά σφαιρικά κάτοπτρα. Αντώνης Πουλιάσης Φυσικός M.Sc. 12 ο ΓΥΜΝΑΣΙΟ ΠΕΡΙΣΤΕΡΙΟΥ Ανάκλαση Είδωλα σε κοίλα και κυρτά σφαιρικά κάτοπτρα Αντώνης Πουλιάσης Φυσικός M.Sc. 12 ο ΓΥΜΝΑΣΙΟ ΠΕΡΙΣΤΕΡΙΟΥ Πουλιάσης Αντώνης Φυσικός M.Sc. 2 Ανάκλαση Είδωλα σε κοίλα και κυρτά σφαιρικά κάτοπτρα Γεωμετρική

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

Κατάτµηση Εικόνων: Ανίχνευση Ακµών και Κατάτµηση µε Κατωφλίωση

Κατάτµηση Εικόνων: Ανίχνευση Ακµών και Κατάτµηση µε Κατωφλίωση ΤΨΣ 50 Ψηφιακή Επεξεργασία Εικόνας Κατάτµηση Εικόνων: Ανίχνευση Ακµών και Κατάτµηση µε Κατωφλίωση Τµήµα ιδακτικής της Τεχνολογίας και Ψηφιακών Συστηµάτων Πανεπιστήµιο Πειραιώς Περιεχόµενα Βιβλιογραφία

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

Μέτρηση της επιτάχυνσης της βαρύτητας με τη βοήθεια του απλού εκκρεμούς.

Μέτρηση της επιτάχυνσης της βαρύτητας με τη βοήθεια του απλού εκκρεμούς. Μ2 Μέτρηση της επιτάχυνσης της βαρύτητας με τη βοήθεια του απλού εκκρεμούς. 1 Σκοπός Η εργαστηριακή αυτή άσκηση αποσκοπεί στη μέτρηση της επιτάχυνσης της βαρύτητας σε ένα τόπο. Αυτή η μέτρηση επιτυγχάνεται

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

Επίλυση Προβλημάτων με Χρωματισμό. Αλέξανδρος Γ. Συγκελάκης asygelakis@gmail.com

Επίλυση Προβλημάτων με Χρωματισμό. Αλέξανδρος Γ. Συγκελάκης asygelakis@gmail.com Επίλυση Προβλημάτων με Χρωματισμό Αλέξανδρος Γ. Συγκελάκης asygelakis@gmail.com 1 Η αφορμή συγγραφής της εργασίας Το παρακάτω πρόβλημα που τέθηκε στο Μεταπτυχιακό μάθημα «Θεωρία Αριθμών» το ακαδημαϊκό

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

Εισαγωγή στα συστήματα σχεδιομελέτης και παραγωγής με χρήση υπολογιστή - Computer aided design and manufacture (cad/cam)

Εισαγωγή στα συστήματα σχεδιομελέτης και παραγωγής με χρήση υπολογιστή - Computer aided design and manufacture (cad/cam) 1 ΚΕΦΑΛΑΙΟ Εισαγωγή στα συστήματα σχεδιομελέτης και παραγωγής με χρήση υπολογιστή - Computer aided design and manufacture (cad/cam) Περιεχόμενα κεφαλαίου 1.4 Εξέλιξη συστημάτων Cad σελ. 20 1.1 Ορισμός

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

Γραφικά Υπολογιστών: Θέαση στις 3D

Γραφικά Υπολογιστών: Θέαση στις 3D 1 ΤΕΙ Θεσσαλονίκης Τμήμα Πληροφορικής Γραφικά Υπολογιστών: Θέαση στις 3D Πασχάλης Ράπτης http://aetos.it.teithe.gr/~praptis praptis@it.teithe.gr 2 Περιεχόμενα Σήμερα θα δούμε τα παρακάτω θέματα: Μετασχηματισμοί

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

Πεδίο, ονομάζεται μια περιοχή του χώρου, όπου σε κάθε σημείο της ένα ορισμένο φυσικό μέγεθος

Πεδίο, ονομάζεται μια περιοχή του χώρου, όπου σε κάθε σημείο της ένα ορισμένο φυσικό μέγεθος ΗΛΕΚΤΡΙΚΟ ΠΕΔΙΟ Πεδίο, ονομάζεται μια περιοχή του χώρου, όπου σε κάθε σημείο της ένα ορισμένο φυσικό μέγεθος παίρνει καθορισμένη τιμή. Ηλεκτρικό πεδίο Ηλεκτρικό πεδίο ονομάζεται ο χώρος, που σε κάθε σημείο

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

Γ ΛΥΚΕΙΟΥ ΦΥΣΙΚΗ ΘΕΤΙΚΗΣ & ΤΕΧΝΟΛΟΓΙΚΗΣ ΚΑΤΕΥΘΥΝΣΗΣ

Γ ΛΥΚΕΙΟΥ ΦΥΣΙΚΗ ΘΕΤΙΚΗΣ & ΤΕΧΝΟΛΟΓΙΚΗΣ ΚΑΤΕΥΘΥΝΣΗΣ ε π α ν α λ η π τ ι κ ά θ έ µ α τ α 0 0 5 Γ ΛΥΚΕΙΟΥ ΦΥΣΙΚΗ ΘΕΤΙΚΗΣ & ΤΕΧΝΟΛΟΓΙΚΗΣ ΚΑΤΕΥΘΥΝΣΗΣ 1 ΘΕΜΑ 1 o Για τις ερωτήσεις 1 4, να γράψετε στο τετράδιο σας τον αριθµό της ερώτησης και δίπλα το γράµµα που

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

ΟΔΗΓΙΕΣ ΧΡΗΣΗΣ ΠΡΟΓΡΑΜΜΑΤΟΣ Dcad 1.0

ΟΔΗΓΙΕΣ ΧΡΗΣΗΣ ΠΡΟΓΡΑΜΜΑΤΟΣ Dcad 1.0 ΟΔΗΓΙΕΣ ΧΡΗΣΗΣ ΠΡΟΓΡΑΜΜΑΤΟΣ Dcad 1.0 20130510 ΠΕΡΙΕΧΟΜΕΝΑ 1. Εγκατάσταση προγράμματος DCAD 2 2. Ενεργοποίηση Registration 2 3. DCAD 3 3.1 Εισαγωγή σημείων 3 3.2 Εξαγωγή σημείων 5 3.3 Στοιχεία ιδιοκτησίας

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

, και. είναι σταθερές (χρονικά αμετάβλητες), προκύπτει το χρονικά αμετάβλητο φίλτρο Kalman (Time Invariant Kalman Filter):

, και. είναι σταθερές (χρονικά αμετάβλητες), προκύπτει το χρονικά αμετάβλητο φίλτρο Kalman (Time Invariant Kalman Filter): 1 ΧΡΟΝΙΚΑ ΑΜΕΤΑΒΛΗΤΟ ΦΙΛΤΡΟ KALMAN Για το χρονικά αμετάβλητο μοντέλο, όπου οι μήτρες F( k 1, k) F, H( k 1) H, Q( k) Q και R( k 1) R είναι σταθερές (χρονικά αμετάβλητες), προκύπτει το χρονικά αμετάβλητο

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

Γεωμετρική Οπτική ΚΕΦΑΛΑΙΟ 34

Γεωμετρική Οπτική ΚΕΦΑΛΑΙΟ 34 Γεωμετρική Οπτική ΚΕΦΑΛΑΙΟ 34 Γεωμετρική Οπτική Γνωρίζουμε τα βασικά Δηλαδή, πως το φως διαδίδεται και αλληλεπιδρά με σώματα διαστάσεων πολύ μεγαλύτερων από το μήκος κύματος. Ανάκλαση: Προσπίπτουσα ακτίνα

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

ΓΕΩΜΕΤΡΙΚΗ ΟΠΤΙΚΗ. Ανάκλαση. Κάτοπτρα. Διάθλαση. Ολική ανάκλαση. Φαινόμενη ανύψωση αντικειμένου. Μετατόπιση ακτίνας. Πρίσματα

ΓΕΩΜΕΤΡΙΚΗ ΟΠΤΙΚΗ. Ανάκλαση. Κάτοπτρα. Διάθλαση. Ολική ανάκλαση. Φαινόμενη ανύψωση αντικειμένου. Μετατόπιση ακτίνας. Πρίσματα ΓΕΩΜΕΤΡΙΚΗ ΟΠΤΙΚΗ Ανάκλαση Κάτοπτρα Διάθλαση Ολική ανάκλαση Φαινόμενη ανύψωση αντικειμένου Μετατόπιση ακτίνας Πρίσματα ΓΕΩΜΕΤΡΙΚΗ ΟΠΤΙΚΗ - Ανάκλαση Επιστροφή σε «γεωμετρική οπτική» Ανάκλαση φωτός ονομάζεται

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

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

ΛΟΓΙΣΜΙΚΟ ΜΕΛΕΤΩΝ ΗΛΕΚΤΡΙΚΩΝ ΕΓΚΑΤΑΣΤΑΣΕΩΝ ΚΑΙ ΥΠΟΣΤΑΘΜΩΝ ΜΕΣΗΣ ΤΑΣΗΣ ΛΟΓΙΣΜΙΚΟ ΜΕΛΕΤΩΝ ΗΛΕΚΤΡΙΚΩΝ ΕΓΚΑΤΑΣΤΑΣΕΩΝ ΚΑΙ ΥΠΟΣΤΑΘΜΩΝ ΜΕΣΗΣ ΤΑΣΗΣ Βασίλης Τσέτογλου, Ηλεκτρολόγος Μηχ/κός ΑΠΘ (Φρυγίας 30 Καβάλα, τηλ. 2510-241735, e-mail:vatset@panafonet.gr) ΠΕΡΙΛΗΨΗ Η συνεχής και

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

Μοντέλο φωτισμού Phong

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

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

Το Φως Είναι Εγκάρσιο Κύμα!

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

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

DIP_06 Συμπίεση εικόνας - JPEG. ΤΕΙ Κρήτης

DIP_06 Συμπίεση εικόνας - JPEG. ΤΕΙ Κρήτης DIP_06 Συμπίεση εικόνας - JPEG ΤΕΙ Κρήτης Συμπίεση εικόνας Το μέγεθος μιας εικόνας είναι πολύ μεγάλο π.χ. Εικόνα μεγέθους Α4 δημιουργημένη από ένα σαρωτή με 300 pixels ανά ίντσα και με χρήση του RGB μοντέλου

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

ΣΧΕ ΙΑΣΜΟΣ ΚΟΠΤΙΚΩΝ ΕΡΓΑΛΕΙΩΝ ΜΕΤΑΒΛΗΤΗΣ ΓΕΩΜΕΤΡΙΑΣ

ΣΧΕ ΙΑΣΜΟΣ ΚΟΠΤΙΚΩΝ ΕΡΓΑΛΕΙΩΝ ΜΕΤΑΒΛΗΤΗΣ ΓΕΩΜΕΤΡΙΑΣ ΣΧΕ ΙΑΣΜΟΣ ΚΟΠΤΙΚΩΝ ΕΡΓΑΛΕΙΩΝ ΜΕΤΑΒΛΗΤΗΣ ΓΕΩΜΕΤΡΙΑΣ Σκοπός Εργασίας Σκοπός της παρούσας εργασίας είναι η μελέτη της εξέλιξης της έρευνας πάνω στη λείανση μέχρι σήμερα, προτείνοντας λύσεις για χρήση μοναδικού

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

ΣΧΕΔΙΑΣΗ ΚΑΙ ΚΑΤΑΣΚΕΥΗ ΗΛΕΚΤΡΟΝΙΚΩΝ ΚΥΚΛΩΜΑΤΩΝ. Δρ. Δ. Λαμπάκης (1 η σειρά διαφανειών)

ΣΧΕΔΙΑΣΗ ΚΑΙ ΚΑΤΑΣΚΕΥΗ ΗΛΕΚΤΡΟΝΙΚΩΝ ΚΥΚΛΩΜΑΤΩΝ. Δρ. Δ. Λαμπάκης (1 η σειρά διαφανειών) ΣΧΕΔΙΑΣΗ ΚΑΙ ΚΑΤΑΣΚΕΥΗ ΗΛΕΚΤΡΟΝΙΚΩΝ ΚΥΚΛΩΜΑΤΩΝ Δρ. Δ. Λαμπάκης (1 η σειρά διαφανειών) Τα ηλεκτρονικά κυκλώματα, ιδιαίτερα τα ψηφιακά χρησιμοποιούνται για την υλοποίηση λογικών συναρτήσεων και την αποθήκευση

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

Χαρακτηριστι σ κ τι ά κ αι Π λεονεκτήµατα το υ A r A c r hica C D A 1 5 Ε πλ π ουτισ τι µ σ ένες Α ρ Α χιτεκτονικές Μ ο Μ ρφές

Χαρακτηριστι σ κ τι ά κ αι Π λεονεκτήµατα το υ A r A c r hica C D A 1 5 Ε πλ π ουτισ τι µ σ ένες Α ρ Α χιτεκτονικές Μ ο Μ ρφές και του ArchiCAD 15 Εµπλουτισµένες Αρχιτεκτονικές Μορφές Πολυεδρική Στέγη Οι σύνθετες στέγες µοντελοποιούνται πλέον ως µονά στοιχεία και η επεξεργασία τους γίνεται µε τη µέγιστη ευελιξία. Οι διάφορες έδρες

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

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

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

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

5. Συμμετρία, Πολικότητα και Οπτική Ενεργότητα των μορίων

5. Συμμετρία, Πολικότητα και Οπτική Ενεργότητα των μορίων 5. Συμμετρία, Πολικότητα και Οπτική Ενεργότητα των μορίων ιδακτικοί στόχοι Μετά την ολοκλήρωση της μελέτης του κεφαλαίου αυτού θα μπορείτε να... o προβλέπετε με βάση τη συμμετρία αν ένα μόριο έχει μόνιμη

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

Γενικά Στοιχεία Ηλεκτρονικού Υπολογιστή

Γενικά Στοιχεία Ηλεκτρονικού Υπολογιστή Γενικά Στοιχεία Ηλεκτρονικού Υπολογιστή 1. Ηλεκτρονικός Υπολογιστής Ο Ηλεκτρονικός Υπολογιστής είναι μια συσκευή, μεγάλη ή μικρή, που επεξεργάζεται δεδομένα και εκτελεί την εργασία του σύμφωνα με τα παρακάτω

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

ΗΥ-121: Ηλεκτρονικά Κυκλώματα Γιώργος Δημητρακόπουλος. Βασικές Αρχές Ηλεκτρικών Κυκλωμάτων

ΗΥ-121: Ηλεκτρονικά Κυκλώματα Γιώργος Δημητρακόπουλος. Βασικές Αρχές Ηλεκτρικών Κυκλωμάτων Πανεπιστήμιο Κρήτης Τμήμα Επιστήμης Υπολογιστών ΗΥ-121: Ηλεκτρονικά Κυκλώματα Γιώργος Δημητρακόπουλος Άνοιξη 2008 Βασικές Αρχές Ηλεκτρικών Κυκλωμάτων Ηλεκτρικό ρεύμα Το ρεύμα είναι αποτέλεσμα της κίνησης

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

εν υπάρχει συµφωνία ως προς τον ορισµό. 1949 Μηχανή Αριθµητικού Ελέγχου (MIT Servo Lab) Βραχίονες για χειρισµό πυρηνικού υλικού (Master Slave, 1948)

εν υπάρχει συµφωνία ως προς τον ορισµό. 1949 Μηχανή Αριθµητικού Ελέγχου (MIT Servo Lab) Βραχίονες για χειρισµό πυρηνικού υλικού (Master Slave, 1948) Κεφάλαιο 1 Εισαγωγή 1-1 Τι είναι Ροµπότ; εν υπάρχει συµφωνία ως προς τον ορισµό. Σύµφωνα µε το Αµερικανικό Ινστιτούτο Ροµποτικής (Rbt Institute f America, RIA) είναι ένας επαναπρογραµµατιζόµενος βραχίονας

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

9. Τοπογραφική σχεδίαση

9. Τοπογραφική σχεδίαση 9. Τοπογραφική σχεδίαση 9.1 Εισαγωγή Το κεφάλαιο αυτό εξετάζει τις παραμέτρους, μεθόδους και τεχνικές της τοπογραφικής σχεδίασης. Η προσέγγιση του κεφαλαίου γίνεται τόσο για την περίπτωση της συμβατικής

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

ΟΜΑΔΑ Ε ΓΕΩΡΓΙΟΥ ΦΩΤΕΙΝΗ ΗΛΙΟΥΔΗ ΑΦΡΟΔΙΤΗ ΜΕΤΑΛΛΙΔΟΥ ΧΡΥΣΗ ΝΙΖΑΜΗΣ ΑΛΕΞΑΝΔΡΟΣ ΤΖΗΚΑΛΑΓΙΑΣ ΑΝΔΡΕΑΣ ΤΡΙΓΚΑΣ ΑΓΓΕΛΟΣ

ΟΜΑΔΑ Ε ΓΕΩΡΓΙΟΥ ΦΩΤΕΙΝΗ ΗΛΙΟΥΔΗ ΑΦΡΟΔΙΤΗ ΜΕΤΑΛΛΙΔΟΥ ΧΡΥΣΗ ΝΙΖΑΜΗΣ ΑΛΕΞΑΝΔΡΟΣ ΤΖΗΚΑΛΑΓΙΑΣ ΑΝΔΡΕΑΣ ΤΡΙΓΚΑΣ ΑΓΓΕΛΟΣ ΟΜΑΔΑ Ε ΓΕΩΡΓΙΟΥ ΦΩΤΕΙΝΗ ΗΛΙΟΥΔΗ ΑΦΡΟΔΙΤΗ ΜΕΤΑΛΛΙΔΟΥ ΧΡΥΣΗ ΝΙΖΑΜΗΣ ΑΛΕΞΑΝΔΡΟΣ ΤΖΗΚΑΛΑΓΙΑΣ ΑΝΔΡΕΑΣ ΤΡΙΓΚΑΣ ΑΓΓΕΛΟΣ Η ΔΙΔΑΣΚΑΛΙΑ ΤΟΥ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ ΣΤΟ ΛΥΚΕΙΟ Εισαγωγή Η μεγάλη ανάπτυξη και ο ρόλος που

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

6 Εισαγωγή στα Συστήματα Ηλεκτρικής Ενέργειας

6 Εισαγωγή στα Συστήματα Ηλεκτρικής Ενέργειας Πρόλογος Σ το βιβλίο αυτό περιλαμβάνεται η ύλη του μαθήματος «Εισαγωγή στα Συστήματα Ηλεκτρικής Ενέργειας» που διδάσκεται στους φοιτητές του Γ έτους σπουδών του Τμήματος Ηλεκτρολόγων Μηχανικών και Τεχνολογίας

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

Συνήθεις διαφορικές εξισώσεις προβλήματα οριακών τιμών

Συνήθεις διαφορικές εξισώσεις προβλήματα οριακών τιμών Συνήθεις διαφορικές εξισώσεις προβλήματα οριακών τιμών Οι παρούσες σημειώσεις αποτελούν βοήθημα στο μάθημα Αριθμητικές Μέθοδοι του 5 ου εξαμήνου του ΤΜΜ ημήτρης Βαλουγεώργης Καθηγητής Εργαστήριο Φυσικών

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

Η ΑΝΑΓΚΗ ΓΙΑ ΠΟΣΟΤΙΚΟΠΟΙΗΣΗ ΣΤΗΝ ΕΝΟΡΓΑΝΗ ΑΝΑΛΥΣΗ

Η ΑΝΑΓΚΗ ΓΙΑ ΠΟΣΟΤΙΚΟΠΟΙΗΣΗ ΣΤΗΝ ΕΝΟΡΓΑΝΗ ΑΝΑΛΥΣΗ Η ΑΝΑΓΚΗ ΓΙΑ ΠΟΣΟΤΙΚΟΠΟΙΗΣΗ ΣΤΗΝ ΕΝΟΡΓ