Στρατηγικές Ελέγχου του Ρομποτικού Χεριού BarrettHand - PDF\nΣτρατηγικές Ελέγχου του Ρομποτικού Χεριού BarrettHand\nDownload "Στρατηγικές Ελέγχου του Ρομποτικού Χεριού BarrettHand"\n1 Α Π Θ Π Σ Τ Η Μ Μ Υ Δ Ε Στρατηγικές Ελέγχου του Ρομποτικού Χεριού BarrettHand Εκπόνηση Ια σων Σ Επιβλ. Καθηγήτρια Ζωη Δ Θεσσαλονι κη Μα ρτιος 2015\n3 Στη μνήμη του πατέρα μου, Χρήστου, που δεν του δόθηκε η ευκαιρία να δει την ολοκλήρωση των σπουδών μου\n5 Ευχαριστίες Ολοκληρω νοντας την παρου σα Διπλωματικη Εργασι α, θα η θελα πρωτι στως τα ευχαριστη σω τη Καθηγη τρια κα. Ζωη Δουλγε ρη που μου ε δωσε την ευκαιρι α να ασχοληθω με το αντικει μενο της Ρομποτικη ς σε πρακτικο επι πεδο, παρε χοντα ς τον ρομποτικο εξοπλισμο, τις συμβουλε ς και τη καθοδη γηση, ω στε να καταπιαστω με πρακτικα προβλη - ματα του πραγματικου κο σμου σε αυτο το τομε α. Ακο μα, θα η θελα να την ευχαριστη σω για το χρο νο που επε νδυσε στις συζη τησεις που ει χαμε, οι οποι ες με βοη θησαν να διευρυ νω τους ορι ζοντε ς μου και πε ρα απο το καθαρα επιστημονικο κομμα τι του χω ρου. Επι σης, θα η θελα να ευχαριστη σω τον Υποψη φιο Διδα κτορα του Τμη ματος Δημη - τρη Παπαγεωργι ου, για την συνεργασι α και τον χρο νο που αφιε ρωσε βοηθω ντας στην διεκπεραι ωση της εργασι ας αυτη ς. Ακο μα, θα η θελα να ευχαριστη σω την οικογε νεια μου, διο τι χωρι ς την ψυχολογικη και οικονομικη της στη ριξη δεν θα ει χα καταφε ρει να ολοκληρω σω τις σπουδε ς μου. Τε λος, θα η θελα να ευχαριστη σω τη Ζωη για ο λη τη βοη θεια ιδιαι τερα κατα την βιντεοσκο πηση των πειραμα των. Ια σονας Σαραντο πουλος Θεσσαλονίκη, Μάρτιος 2015\n7 Περίληψη Η παρου σα διπλωματικη εργασι α στοχευ ει στη μελε τη του ρομποτικου χεριου BarrettHand BH8-282 και στην ανα πτυξη αποτελεσματικω ν μεθο δων για τον ε λεγχο του. Το BarrettHand αποτελει ε να παρα δειγμα ρομπο τ που ε χει σχεδιαστει για βιομηχανικου ς σκοπου ς, ενω στον παρο ν γι νεται μια προσπα θεια ανθρωπομορφικου ελε γχου του. Τε λος, το αποτε λεσμα της εργασι ας αυτη ς ει ναι η επιτυχη ς ενσωμα τωση του χεριου με τον ρομποτικο βραχι ονα KUKA LWR4+ με σω του λογισμικου ROS. Ο επιτυχη ς ε λεγχος του ρομπο τ περιλαμβα νει τα εξη ς στα δια: κατανο ηση της αρχιτεκτονικη ς του χεριου, κατανο ηση των μεθο δων επικοινωνι ας του με ε ναν ηλεκτρονικο υπολογιστη (βλ. δι αυλο CAN), ανα πτυξη κατα λληλου λογισμικου διεπαφη ς ανθρωπου - υπολογιστη και ρομπο τ, ανα πτυξη μεθο δων ελε γχου για δια φορα περιβα λλοντα και τε λος ενσωμα τωση του χεριου σε ε να ολοκληρωμε νο ρομποτικο συ στημα (βλ. KUKA LWR4+). Τε λος, σαν επιπλε ον βη μα γι νεται μια μελε τη για προχωρημε νες μεθο δους επικοινωνι ας που θα επιτρε πουν τον ε λεγχο πραγματικου χρο νου, με σω ενο ς λειτουργικου συστη ματος πραγματικου χρο νου.\n9 Abstract This diploma thesis studies the robotic hand BarrettHand BH8-282 and develops effective methods for its control. BarrettHand is a typical industrial robot, but during this project a different approach is being attempted by using it in anthromorphic applications. The result of this work is the successful integration of BarrettHand with the robotic arm KUKA LWR4+ within the framework of ROS. The design of effective control strategies includes the following steps: profound comprehension of the robot s architecture, comprehension of the communication protocol in use (see CAN bus), development of the appropriate software that implements the interface between the human user and the robot, development of control methods for different scenarios and integration of BarrettHand with a larger robotic system. Furthermore, the feasibility of real time control of the hand is being tested by using it under a real time OS, the Xenomai framework.\n11 Περιεχόμενα 1 Εισαγωγή 1 2 Η τεχνολογία CAN Βασικε ς Έννοιες Επικοινωνι ας Δεδομε νων Το Μοντε λο αναφορα ς OSI Τρο ποι οργα νωσης της επικοινωνι ας Έλεγχος Προ σβασης στο Με σο μετα δοσης (MAC) Το Φυσικο Επι πεδο του CAN Το υποεπι πεδο: Physical Signaling Το υποεπι πεδο: Physical Medium Attachment Το υποεπι πεδο: Medium Dependent Interface Το Επι πεδο Ζευ ξης Δεδομε νων του CAN H μορφη του πλαισι ου CAN Διευθε τηση Διαυ λου Μηχανισμοι εντοπισμου και διαχει ρισης σφαλμα των To ρομποτικό χέρι BarrettHand Περιγραφη TorqueSwitch Αισθητη ρας ροπη ς στην α ρθρωση Λειτουργι α των αρθρω σεων Κινηματικο Μοντε λο Ευθει α κινηματικη ανα λυση Αντι στροφη κινηματικη ανα λυση\n12 3.3 Το πρωτο κολλο επικοινωνι ας Το μη νυμα CAN στο BarrettHand Hardware και Software BAD και έλεγχος του BarrettHand μέσω ROS To λογισμικο BAD Peak Linux Driver PCAN-Basic API Υλοποι ηση του διαυ λου CAN Πρωτο κολλο BarrettHand Higher Level BAD functions Εφαρμογε ς και πειρα ματα Χρο νοι απο κρισης BAD και ROS Το περιβα λλον του ROS H χρη ση της actionlib με το BAD Συμπεράσματα - Μελλοντική Εργασία 83 Παράρτημα Ι: Έλεγχος Πραγματικού Χρόνου 85 Λειτουργικο συ στημα πραγματικου χρο νου To περιβα λλον Xenomai H διεπαφη SocketCAN Εφαρμογη στον ε λεγχο του BarrettHand Οδηγι ες εγκατα στασης του Xenomai Παράρτημα II: Εγκατάσταση του BAD 95 Κατάλογος σχημάτων 98 Βιβλιογραφία 101\n13 1 Εισαγωγή Τα ρομποτικα συστη ματα ε χουν απασχολη σει ιστορικα πολλε ς κοινωνικε ς ομα δες: η επιστομονικη κοινο τητα, πολλοι συγγραφει ς επιστημονικη ς φαντασι ας, επιχειρηματι ες στο χω ρο της βιομηχανι ας, κυβερνη σεις για εφαρμογε ς στρατιωτικη ς φυ σεως, αποτελου ν μερικα παραδει γματα. Αναμφι βολα, αποτελου ν μι α τεχνολογι α που αλλα ζει ραγδαι α την συ γχρονη ανθρω πινη κοινω νια, αλλα και μια πολυσυζητημε νη τεχνολογι α και πεδι ο πολλω ν αντιπαραθε σεων. Μη πως αυτη η τεχνολογι α δεν θα πρε πει να χρησιμοποιει ται σαν με σο α σκησης εξωτερικη ς πολιτικη ς και πολε μων; Μη πως η ευρει α χρη ση των ρομπο τ στην αυτοματοποι ηση της βιομηχανι ας αυξα νει την ανεργι α; Θα ει ναι ασφαλε ς ε να ρομπο τ σπιτιου για μι α οικογε νεια; Επιπλε ον, συζη τηση υπα ρχει και στο κομμα τι της τεχνητη ς νοημοσυ νης που θα εξοπλι ζει τα ρομπο τ του με λλοντος, ο που δια φορες χω ρες, ο πως η Νο τια Κορε α, ε χουν ξεκινη σει συζητη σεις στα κοινοβου λια τους, σχετικα με την μελλοντικη θε ση των ρομπο τ στην κοινωνι α. Θα ε χουν δικαι ωμα ψη φου τα ρομπο τ; Ποιος θα θεωρει ται υπευ θυνος αν διαπρα ξουν κα ποιου ει δους ζημι α σε ε ναν α νθρωπο, σε μι α περιουσι α, η ακο μα αν διαπρα ξουν ε να ε γκλημα; Όλα αυτα φαντα ζουν σενα ρια επιστημονικη ς φαντασι ας, καθω ς η ρομποτικη τεχνολογι α βρι σκεται σε εμβρυακο στα διο ακο μα και τα πλε ον αξιο πιστα ρομπο τ βρι σκονται με σα σε εργοστα σια, σε ε να στατικο και προκαθορισμε νο περιβα λλον. Παρο λα αυτα η τεχνολογι α, προχωρω ντας με εκθετικου ς ρυθμου ς, δει χνει ο τι ο λα τα παραπα νω θα μας απασχολη σουν στο συ ντομο με λλον, ι σως νωρι τερα απο ο,τι πιστευ ουμε.\n14 2 Κεφάλαιο 1. Εισαγωγή Ένας απο τους κυριο τερους στο χους την συ γχρονης ρομποτικη ς επιστη μης ει ναι η ανα πτυξη ασφαλω ν και αξιο πιστων συστημα των τα οποι α μπορου ν να δουλε ψουν σε συνεργασι α με τους ανθρω πους σε οποιοδη ποτε περιβα λλον, ει τε σε ε να επαγγελματικο, ει τε σε ε να νοικοκυριο. Ένα τε τοιο ρομπο τ θα πρε πει να ει ναι ασφαλε ς, αλλα ταυτο χρονα και αποδοτικο σε ε να α γνωστο και δυναμικο περιβα λλον που ε χουν δημιουργη σει οι α νθρωποι για τους ανθρω πους, κα τι τελει ως αντι θετο απο τα βιομηχανικα ρομπο τ σε μι α αυτοκινητoβιομηχανι α. Η απο δοση σε ε να ανθρω πινο περιβα λλον πρου ποθε τει την ανθρωπομορφικη σχεδι αση του ρομπο τ, ω στε να ει ναι ικανο να χρησιμοποιη σει εργαλει α φτιαγμε να για ανθρω πους, να οδηγη σει οχη ματα, να λαμβα νει και να κατανοει οπτικα και ακουστικα ση ματα απο ανθρω πους κ.α. Στο τομε α της ρομποτικη ς, πολυ σημαντικο ρο λο παι ζει η τεχνολογι α λογισμικου (software engineering). Η αι σθηση ερεθισμα των, ο αυτο ματος ε λεγχος για την επι τευξη ενο ς σκοπου, η λη ψη αποφα σεων και η νοημοσυ νη ει ναι ιδιο τητες του ανθρω που που μπορου ν τεχνητα να μεταφερθου ν σε ε να μηχατρονικο συ στημα με σω αλγορι θμων που εφαρμο ζουν αρχε ς απο ε να μεγα λο ευ ρος επιστημω ν, απο τη στατιστικη με χρι την θεωρι α ελε γχου. Ουσιαστικα, το λογισμικο ει ναι το με σο που ενσωματω νει νοημοσυ νη σε ε να μηχανικο συ στημα και οδηγει αισθητη ρια και ενεργοποιητε ς (κινητη ρες και μικροελεγκτε ς). Γενικα το λογισμικο ρομποτικη ς θα πρε πει να ει ναι συ γχρονο, κατανεμημε νο, ενσωματωμε νο και πραγματικου χρο νου. Επι σης, ο σχεδιασμο ς του λογισμικου θα πρε πει να ει ναι τε τοιος ω στε ο κω δικας να ει ναι ευ κολα συντηρη σιμος, επαναχρησιμοποιη σιμος και επεκτα σιμος. Έτσι, λοιπο ν, ε νας απο τους στο χους της παρου σας διπλωματικη ς ει ναι η χρη ση ενο ς βιομηχανικου ρομποτικου χεριου, του BarrettHand ΒΗ8-282 (βλ. Σχη μα 1.1) σαν ε να ανθρωπομορφικο ρομπο τ σε συνεργασι α με το ρομποτικο βραχι ονα KUKA LWR4+. Για την επι τευξη αυτου του σκοπου κρι νεται απαραι τητη η σχεδι αση κατα λληλου λογισμικου για την χρη ση του BarrettHand κα τω απο λειτουργικο Linux και μετ ε πειτα η χρη ση του σε συνεργασι α με το ROS. Η ορθη ανα πτυξη του λογισμικου προαπαιτει την γνω ση λειτουργι ας του ρομπο τ απο το χαμηλο επι πεδο με χρι το υψηλο, καθω ς αυτο θα ει ναι το λογισμικο που θα υλοποιει την διεπαφη μεταξυ των επιπε δων. Το BAD (BarrettHand AUTh Driver), το λογισμικο που αναπτυ χθηκε στα πλαι σια της παρου σας διπλωματικη ς, ει ναι ανοικτου κω δικα εφαρμογη γραμμε νη σε C++ και υλοποιει την επικοινωνι α\n15 3 μεταξυ εντολω ν υψηλου επιπε δου (ο πως η εντολη α νοιξε το δα κτυλο 1 ) με τους μικροελεγκτε ς που ελε γχουν τους κινητη ρες του robot σε επι πεδο bit. Έτσι, λοιπο ν, η δια ρθρωση της παρου σας εργασι ας ε χει ως εξη ς: Στο Κεφάλαιο 2 γι νεται μι α συνοπτικη περιγραφη της τεχνολογι ας διαυ λου CAN που χρησιμοποιει το BarrettHand για την επικοινωνι α με ε ναν ηλεκτρονικο υπολογιστη. Γι νεται αναφορα στις βασικε ς αρχε ς του διαυ λου CAN, τι μορφη ε χει ε να πλαι σιο CAN και στο πω ς κωδικοποιει ται η πληροφορι α συ μφωνα με τα διεθνη προ τυπα για το CAN. Στο Κεφάλαιο 3 γι νεται η περιγραφη του ρομποτικου χεριου BarrettHand. Αναφε ρονται οι βασικοι τρο ποι λειτουργι ας του χεριου, το κινηματικο μοντε λο του χεριου καθω ς και το τροποποιημε νο προ τυπο CAN που χρησιμοποιει το BarrettHand σε σχε ση με ο,τι περιγρα φηκε στο Κεφα λαιο 2. Θα πρε πει να τονιστει ο τι το Κεφα λαιο 3 ει ναι ιδιαι τερα σημαντικο καθω ς πολλε ς απο τις πληροφορι ες αυτε ς δεν υπα ρχουν καταγεγραμμε νες και αποτελου ν προι ο ν πειραματισμου και εμπειρι ας κατα τη χρη ση του χεριου. Στο Κεφάλαιο 4 περιγρα φεται o driver BAD που αναπτυ χθηκε. Περιγρα φεται η λογικη με την οποι α υλοποιει τον δι αυλο CAN και το τρο πο που ενσωματω νει βασικε ς λειτουργι ες του BarrettHand καθω ς επι σης παρουσια ζονται ο λα τα παραδει γματα χρη σης του BAD που αναπτυ χθηκαν μαζι με τους αλγορι θμους, διαγρα μματα και φωτογραφι ες απο τα πειρα ματα. Τε λος, παρουσια ζεται ο τρο πος ενσωμα τωσης του BarrettHand στο ROS. Το Κεφάλαιο 5 συνοψι ζει τα συμπε ρασματα του παρο ντος και αναφε ρει τις δυνατο τητες επε κτασης της παρου σας δουλεια ς. Στο Παράρτημα Ι γι νεται συνοπτικη περιγραφη του συστη ματος πραγματικου χρο - νου Xenomai και των δυνατοτη των που αυτο προσφε ρει για την επικοινωνι α με το BarrettHand. Επι σης, παρατι θονται οδηγι ες εγκα τασταση ς του, καθω ς αποτελει πολλε ς φορε ς επι πονη διαδικασι α. Στο Παράρτημα ΙΙ υπα ρχουν τεχνικε ς πληροφορι ες σχετικα με την εγκατα σταση του BAD σε ε ναν ηλεκτρονικο υπολογιστη.\n16 4 Κεφάλαιο 1. Εισαγωγή Σχη μα 1.1: To ρομποτικο χε ρι BarrettHand\n17 2 Η τεχνολογία CAN H τεχνολογία CAN (Controller-Area-Network protocol), αποτελει εδω και χρο νια ε να de-facto προ τυπο υλοποι ησης συστημα των επικοινωνι ας στην αυτοκινητοβιομηχανι α, το σο στην Ευρω πη, ο σο και σε παγκο σμια κλι μακα. Ουσιαστικα, αποτελει μι α τεχνολογι α διαυ λου η οποι α συντελει την επικοινωνι α των δια φορων υποσυστημα των ενο ς οχη ματος, ο πως κυκλω ματα οδη γησης των υαλοκαθαριστη ρων, το συ στημα αντιμπλοκαρι σματος των τροχω ν (ABS), την ηλεκτρονικη ανα φλεξη κ.α. Έτσι, η επικοινωνι α μικροελεγκτω ν, ενεργοποιητω ν και αισθητη ρων για τον αυτο ματο ε λεγχο των παραπα νω υποσυστημα των μπορει να πραγματοποιηθει με σω ενο ς διαύλου CAN (CAN Bus). Το χαμηλο κο στος υλοποι ησης (πολυ λι γα καλω δια), η αξιοπιστι α κα τω απο συνθη κες υψηλου ηλεκτρομαγνητικου θορυ βου, καθω ς και η επικοινωνι α πραγματικου χρο νου η ταν τα κυ ρια χαρακτηριστικα του δι αυλου CAN, τα οποι α ε δωσαν στη συγκεκριμε νη τεχνολογι α το σο μεγα λο μερι διο της αγορα ς. Τα τελευται α χρο νια το CAN ε χει αρχι σει να βρι σκει εφαρμογε ς πε ρα απο την αυτοκινητοβιομηχανι α. Βιομηχανι ες ο που αποζητου ν αυτοματοποι ηση της παραγωγη ς (production automation) αντικαθιστου ν τους υπα ρχοντες διαύλους πεδίου ( ield buses) με διαυ λους CAN. Επι σης, στο χω ρο των ενσωματωμε νων συστημα των (embedded systems) υιοθετει ται το πρωτο κολλο, σε εφαρμογε ς ο που χρεια ζεται η συ νδεση αισθητη - ρων, ενεργοποιητω ν, μονα δες ελε γχου και παρακολου θησης εντο ς του μηχανη ματος. Τε τοιες εφαρμογε ς ει ναι ρομποτικα συστη ματα, μηχανε ς εκτυ πωσης, ιατρικο ς εξοπλι-\n18 6 Κεφάλαιο 2. Η τεχνολογία CAN σμο ς κ.α. Τε λος, ο τομε ας της αυτοματοποι ησης κτιρι ων (building automation) ε χει ανα - γκη απο ε ναν οικονομικο τρο πο επικοινωνι ας των μονα δων ελε γχου HVAC 1 καθω ς και των συστημα των ασφα λειας και παρακολου θησης του κτιρι ου, ανα γκη η οποι α φαι νεται να ικανοποιει ται απο το πρωτο κολλο CAN. To CAN υλοποιει το δι κτυο και τους κανο νες επικοινωνι ας μεταξυ των κο μβων του δικτυ ου με σω μιας τοπολογι α διαυ λου (γραμμικη τοπολογι α). Ένας κο μβος του δικτυ ου αποτελει ται απο το ελεγχο μενο συ στημα, κυκλω ματα ελε γχου και μικροελεγκτε ς, ενεργοποιητε ς, αισθητη ρια καθω ς και επιπλε ον hardware που ε χει σχεδιαστει για την ε νταξη του κο μβου στο δι κτυο (π.χ. ε να chip CAN receiver). Ο αριθμο ς των κο μβων δεν περιορι ζεται απο το πρωτο κολλο, αλλα εξαρτα ται απο τις δυνατο τητες των chip που χρησιμοποιου νται. Η ταχυ τητα της επικοινωνι ας περιορι ζεται απο το πρωτοκο λλο σε 1 MBit/s, ενω εξαρτα ται και απο την ε κταση του δικτυ ου, καθω ς η παραπα νω με γιστη ταχυ τητα μπορει να επιτευχθει σε δι κτυα με χρι 40m. Σε ε να ο χημα το δι κτυο ει ναι περι που σε αυτο το με γεθος, ενω σε α λλες εφαρμογε ς, ο πως ε να εργοστα σιο μπορει το δι κτυο να ει ναι 1 χιλιο μετρο, ο που το ευ ρος ζω νης θα πε σει σε 80 KBit/s. Το παρο ν κεφα λαιο αναφε ρεται συνοπτικα στο πρωτο κολλο και το πως δομει ται στοιχειωδω ς ε να δι κτυο διαυ λου CAN. 2.1 Βασικές Έννοιες Επικοινωνίας Δεδομένων Στη παρου σα ενο τητα θα παρουσιαστου ν συνοπτικα οι βασικε ς αρχε ς των τηλεπικοινωνιακω ν συστημα των καθω ς και οι δια φοροι τρο ποι υλοποι ησης τους, ω στε ο αναγνω στης να συλλα βει μια γενικη εικο να για την επικοινωνι α δεδομε νων (data communication). Επιπροσθε τως, θα αναφερθει και το ποια απο αυτα τα χαρακτηριστικα χρησιμοποιει, ειδικο τερα, το CAN Το Μοντέλο αναφοράς OSI Ση μερα, στην επικοινωνι α δεδομε νων ως γενικη περιγραφη ενο ς τηλεπικοινωνιακου συστη ματος χρησιμοποιει ται το Μοντέλο OSI 2. To μοντε λο παρουσια ζει το συ - στημα χωρισμε νο σε 7 ιεραρχικα επι πεδα ο που κα θε επι πεδο χρησιμοποιει την πληροφορι α του αμε σως απο κα τω του, ενω προσφε ρει πληροφορι α στο αμε σως απο πα νω 1 Heating, Ventilation and Air-Conditioning: θε ρμανση, εξαερισμο ς, κλιματισμο ς. 2 Open Systems Interconnection model - μοντε λο αναφορα ς Ανοικτη ς Διασυ νδεσης Συστημα των.\n19 2.1. Βασικές Έννοιες Επικοινωνίας Δεδομένων 7 επι πεδο, χωρι ς να επικοινωνει με τα υπο λοιπα. Βε βαια, το μοντε λο αυτο ει ναι μι α αφαιρετικη περιγραφη και δεν υλοποιου νται ο λα τα επι πεδα σε κα θε συ στημα. Στο Σχη μα 2.1 φαι νεται η δομη του μοντε λου, ενω με σκου ρη μπλε σκι αση φαι νονται τα δυ ο επι πεδα που χρησιμοποιει το πρωτο κολλο CAN (Physical και Data Link layer) και με πρα σινη σκι αση (Application layer) φαι νεται το επιπλε ον επι πεδο που υλοποιου ν α λλα υψηλου επιπε δου πρωτο κολλα βασισμε να στο CAN, ο πως το CANopen, DeviceNet κ.α. Τα ενδια - μεσα επι πεδα δεν υλοποιου νται. 7. Application/Εφαρμογω ν 6. Presentation/Παρουσι ασης 5. Session/Συνο δου 4. Transport/Μεταφορα ς 3. Network/Δικτυ ου 2. Data Link/Ζευ ξης Δεδομε νων 1. Physical/Φυσικο Σχη μα 2.1: Τα επι πεδα του μοντε λου OSI To Φυσικό επίπεδο. Καθορι ζει την φυσικη συ νδεση μεταξυ δυ ο κο μβων. Συγκεκριμε να, στο επι πεδο περιλαμβα νονται ο καθορισμο ς των ηλεκτρικω ν χαρακτηριστικω ν της επικοινωνι ας (τα σεις που παριστα νουν το λογικο 0 και 1, το με σο μετα δοσης, το ει δος τοπολογι ας, η κωδικοποι ηση των bits κ.α.) καθω ς και των μηχανολογικω ν παραμε τρων της συ ζευξης (τυ ποι καλωδι ων, τυ ποι βυσμα των και pins). To επίπεδο Σύνδεσης Μετάδοσης Δεδομένων ή Ζεύξης Δεδομένων. Καθορι ζει την ορθη μεταφορα των δεδομε νων μεταξυ των κο μβων. Κυ ρια δουλεια του ει ναι να χωρι σει τη πληροφορι α σε μηνύματα - πλαίσια (data frames) και να περιγρα - ψει τους μηχανισμου ς εντοπισμου σφαλμα των [1, σελ. 65]. Έτσι, τα κατεστραμμε να πλαι σια απορρι πτονται απο τον παραλη πτη και επαναποστε λλονται απο τον αποστολε α. Ο δευ τερος στο χος του ει ναι ο ε λεγχος της προ σβασης στο με σο μετα δοσης 3, δη- 3 Στη διεθνη βιβλιογραφι α αναφε ρεται ως Medium Access Control (MAC).\n20 8 Κεφάλαιο 2. Η τεχνολογία CAN λαδη επιλυ ει καταστα σεις ανταγωνισμου των κο μβων για το ποιος ε χει προτεραιο τητα να καταλα βει το δι αυλο μι α δεδομε νη στιγμη. Το επίπεδο Εφαρμογών. Αποτελει το υψηλο επι πεδο που χρησιμοποιου ν οι εφαρμογε ς χρη στη (ο ε ξω κο σμος, δηλαδη ) ω στε να επικοινωνη σουν με το δι κτυο. Κα ποιες τυπικε ς εφαρμογε ς του επιπε δου ει ναι η αναγνω ριση συσκευω ν εφαρμογη ς, ο καθορισμο ς της διαθεσιμο τητας των πο ρων η ο συγχρονισμο ς της επικοινωνι ας (βλ. CANopen) Τρόποι οργάνωσης της επικοινωνίας Ένα δι πολο στην επικοινωνι α δεδομε νων αποτελει ται απο το μοντέλο Client-Server (πελα τη-διακομιστη ) και το μοντέλο Producer-Consumer (παραγωγου -καταναλωτη ). Το μοντέλο Client-Server. Ορι ζει μι α με θοδο επικοινωνι ας, κατα την οποι α ε νας πελα της πραγματοποιει μι α αι τηση για μια συγκεκριμε νη υπηρεσι α που παρε χει ο διακομιστη ς (service-request). Ο πελα της και ο διακομιστη ς αποτελου ν κο μβους του δικτυ ου (η ακο μα και επι πεδα του μοντε λου OSI), ενω η υπηρεσι α μπορει να ει ναι η αποστολη κα ποιων δεδομε νων η ακο μα και η προ σβαση σε πο ρους του δικτυ ου. Αφου πραγματοποιηθει η αι τηση απο τον πελα τη, το τηλεπικοινωνιακο συ στημα ει ναι υπευ θυνο για τη μεταφορα της στον διακομιστη, ο οποι ος με τη σειρα του θα απαντη σει κατα λ- ληλα στην αι τηση. Σε αυτο το μοντε λο η σχε ση της επικοινωνι ας είναι πάντα έναςπρος-ένα, ακο μη και εα ν υπα ρχουν περισσο τεροι απο ε νας πελα τες. Το μοντέλο Producer-Consumer. Σε αυτο το μοντε λο, η αποστολη δεδομε νων απο ε ναν κο μβο παραγωγο, γι νεται χωρι ς προηγου μενη αι τηση απο κα ποιον α λλο κο μβο, ενω η αποστολη αυτη ε χει τη μορφη πολλαπλής μετάδοσης (multicast - broadcast), τουτε στιν ε χει πολλου ς παραλη πτες - καταναλωτε ς. Το αν ε νας καταναλωτη ς θα προχωρη - σει στην επεξεργασι α των δεδομε νων που βλε πει στο δι κτυο, η θα τα αγνοη σει εμπι πτει στη δικη του κρι ση, ενω ο παραγωγο ς δεν γνωρι ζει ποιοι ει ναι οι καταναλωτε ς. Αυτο το μοντε λο περιγρα φει μι α σχε ση ένας-προς-πολλούς. Η μετα δοση των μηνυμα των σε ε να δι κτυο CAN ακολουθει το μοντε λο Producer- Consumer. Παρο λα αυτα, αξι ζει να σημειωθει ο τι πρωτο κολλα υψηλο τερου επιπε δου\n21 2.1. Βασικές Έννοιες Επικοινωνίας Δεδομένων 9 (CANopen, DeviceNet, CAL) υποστηρι ζουν και το μοντε λο Client-Server. Μι α δευ τερη ταξινο μηση των πρωτοκο λλων επικοινωνι ας ει ναι μεταξυ αυτω ν που βασι ζονται στην διευθυνσιοδο τηση των κο μβων (node-oriented protocols) και αυτω ν που βασι ζονται σε αναγνω ριση των μηνυμα των (message-oriented protocols), με σω αναγνωριστικω ν μηνυ ματος (message identi ier). Πρωτόκολλα Node-Oriented. Με αυτο ν το τυ πο πρωτοκο λλου, τα μηνυ ματα που εναλλα σσονται με σα στο δι κτυο περιε χουν τον παραλη πτη και καμια φορα τον αποστολε α. Έτσι, δεσμευ ονται διευθυ νσεις για κα θε κο μβο, καθω ς και για ομα δες κο μβων σε περι πτωση μετα δοσης broadcast. Πρωτόκολλα Message-Oriented. Εδω η επικοινωνι α βασι ζεται στο αναγνωριστικό κάθε μηνύματος (message identi ier) που ει ναι μοναδικο. Έτσι, δεν ορι ζεται με σα στο μη νυμα ο στο χος και ει ναι απο φαση των υπολοι πων κο μβων εα ν θα αποδεκτου ν το μη νυμα η ο χι. Το πρωτο κολλο CAN ακολουθει αυτη ν την τεχνικη Έλεγχος Πρόσβασης στο Μέσο μετάδοσης (MAC) Ο MAC χρησιμοποιει ται για να αποφασι ζεται κα θε χρονικη στιγμη το ποιος θα ε χει προ σβαση στο δι αυλο (με σο μετα δοσης). Έτσι, μπορου ν να διευθετηθου ν καταστα σεις ανταγωνισμου ο που δυ ο οι περισσο τεροι κο μβοι επιχειρου ν να μεταδω σουν στον δι αυλο ταυτο χρονα. Υπα ρχουν δια φορες με θοδοι γι αυτο το σκοπο και η επιλογη της μεθο δου θα κρι νει τις επιδο σεις του δικτυ ου σε επι πεδο καθυστερη σεων και real-time συμπεριφορα ς. Οι με θοδοι που χρησιμοποιου νται για τον ε λεγχο της προ σβασης στο με σο μετα δοσης μπορου ν να ταξινομηθου ν ο πως φαι νεται στο Σχη μα 2.2. Με την ντετερμινιστική προ σβαση στον δι αυλο, προαποφασι ζεται η προτεραιο τητα, οπο τε και κα θε χρονικη στιγμη θα μεταδι δει ε νας κο μβος. Έτσι, με αυτο το τρο πο δεν υπα ρχουν συγκρου σεις (collisions). Οι ντετερμινιστικε ς με θοδοι χωρι ζονται σε αυτε ς που χρησιμοποιου ν κεντρικό και αποκεντρωμένο μοντε λο ελε γχου. Κεντρικά ελεγχο μενη προ σβαση σημαι νει ο τι υπα ρχει μι α κεντρικη οντο τητα (ε νας κο μβος), η οποι α καθορι ζει ποιος ε χει προτεραιο τητα. Ένα παρα δειγμα ει ναι η\n22 10 Κεφάλαιο 2. Η τεχνολογία CAN Με θοδοι MAC Αποκεντρωμε νος ε λεγχος Χωρι ς συγκρου σεις Κεντρικα ελεγχο μενα Ντετερμινιστικε ς Στοχαστικε ς Με συγκρου σεις Σχη μα 2.2: Ταξινο μηση των μεθο δων MAC αρχη Master-Slave, ο που υπα ρχει ε νας κεντρικο ς κο μβος (Master) που ρωτα ει με μια συγκεκριμε νη σειρα (polling) ο λους τους υπο λοιπους κο μβους (Slaves) εα ν θε λουν να μεταδω σουν. Παρατηρει ται ο τι δεν υπα ρχουν συγκρου σεις, καθω ς ε νας κο μβος μεταδι δει μο νο αν το ζητη σει ο Master και η προ σβαση ει ναι ντετερμινιστικη καθω ς γνωρι ζουμε πο τε ο Master ρωτα ει. Το αρνητικο ει ναι ο τι το δι κτυο δεν μπορει να λειτουργη σει σε περι πτωση βλα βης του κεντρικου κο μβου. Αποκεντρωμένα ελεγχο μενη προ σβαση σημαι νει ο τι η προτεραιο τητα καθορι ζεται υ στερα απο συμφωνι α μεταξυ των κο μβων. Ένα παρα δειγμα ει ναι το πέρασμα σκυτάλης (token passing), ο που το δικαι ωμα προ σβασης μεταφε ρεται απο κο μβο σε κο μβο με μορφη μηνυ ματος (token). Όσο ε νας κο μβος ε χει τη σκυτα λη μπορει να μεταδω σει στον δι αυλο. Τη δευ τερη κατηγορι α μεθο δων αποτελου ν οι στοχαστικές με θοδοι. Η προ σβαση στο δι αυλο γι νεται τυχαι α και ο χι με βα ση κα ποιο προ γραμμα και κα θε κο μβος μπορει να μεταδω σει εφο σον ο δι αυλος δεν απασχολει ται (idle). Αυτο ε χει σαν αποτε λεσμα να ε χουν προ σβαση πολλοι κο μβοι ταυτο χρονα, ε τσι προε κυψε η ονομασι α Carrier- Sense Multiple Access (CSMA). Υπα ρχουν στοχαστικές μέθοδοι με συγκρούσεις, οι οποι ες μπορου ν να εντοπιστου ν (CSMA/CD - Collision Detection) και στοχαστικές μέθοδοι χωρίς συγκρούσεις CSMA/CΑ - Collision Avoidance.\n23 2.2. Το Φυσικό Επίπεδο του CAN 11 Με την CSMA/CD ο ταν επιχειρη σουν δυ ο κο μβοι να εκπε μψουν ταυτο χρονα, το τε τουλα χιστον ε νας απο αυτου ς θα εντοπι σει την συ γκρουση. Όταν γι νει αυτο, οι δυ ο κο μβοι παραιτου νται, περιμε νουν ε να (τυχαι ο) χρονικο δια στημα και επιχειρου ν ξανα να καταλα βουν το δι αυλο, ω στε να ξαναστει λουν το μη νυμα που δεν μπο ρεσαν πριν. Ένα δημοφιλε ς πρωτο κολλο που ακολουθει αυτη ν την αρχη ει ναι το πρωτο κολλο Ethernet. Με την CSMA/CA ε χουμε αποφυγη των συγκρου σεων καθω ς οι κο μβοι εντοπι ζουν την συ γκρουση πριν την μετα δοση του πραγματικου μηνυ ματος κατα τη δια ρκεια μι ας φα σης διευθέτησης (arbitration). Κατα τη διαδικασι α της διευθε τησης αποφασι ζεται ποιος απο τους δυ ο κο μβους θα συνεχι σει να εκπε μπει, συ μ- φωνα με κα ποιους κανο νες προτεραιο τητας μηνυ ματος (πχ prioritized IDs). Αυτη τη με θοδο ακολουθει και το πρωτο κολλο CAN. 2.2 Το Φυσικό Επίπεδο του CAN Όπως ειπω θηκε και προηγουμε νως το φυσικο επι πεδο ενο ς συστη ματος επικοινωνι ας αφορα τα φυσικα χαρακτηριστικα (ηλεκτρολογικα, μηχανολογικα ) της επικοινωνι ας μεταξυ των κο μβων του δικτυ ου. Αυτο σημαι νει ο τι απαιτει ται η προτυποποι ηση των χαρακτηριστικω ν και των απαιτη σεων που θα πρε πει να καλυ πτει ε να δι κτυο διαυ - λου CAN. Έτσι, θα πρε πει, για παρα δειγμα, να ορι ζεται ποια τα ση καθορι ζει το υπολειπόμενο bit (recessive bit) και ποιο το επικρατές (dominant). Ως επικρατη κατα σταση θεωρου με την λογικη ψηφιακη κατα σταση η οποι α υπερισχυ ει σε ε να λογικο κυ κλωμα ε ναντι της υπολειπο μενης, κατα τη δια ρκεια ενο ς ανταγωνισμου για τη προ σβαση στο δι αυλο. Ο δι αυλος θα πρε πει να βρι σκεται σε υπολειπο μενη κατα σταση (δηλαδη στην αντι στοιχη προκαθορισμε νη τα ση) ο ταν δεν μεταδι δει δεδομε να. Εα ν ε να κο μβος εγγρα ψει στον δι αυλο ε να επικρατε ς bit, το τε και η κατα σταση του δια υλου θα αλλα ξει σε επικρατη. Tα προ τυπα του CAN καθορι ζουν ως επικρατη κατα σταση το λογικο 0, και ως υπολειπο μενη το λογικο 1. Το φυσικο επι πεδο του CAN μπορει να διαιρεθει σε τρι α υποεπι πεδα, που διε πουν κα θε συ στημα επικοινωνι ας: το επι πεδο PMS (Physical Signaling), το επι πεδο PMA (Physical Medium Attachment) και το επι πεδο MDI (Medium Dependent Interface). Το επι πεδο PMS υλοποιει τα τσιπ ελε γχου που χρησιμοποιου νται (CAN controller chips),\n24 12 Κεφάλαιο 2. Η τεχνολογία CAN το PMA περιγρα φει τα χαρακτηριστικα των δεκτω ν (transceivers) και του διαυ λου, ενω το MDI καθορι ζει τα χαρακτηριστικα των καλωδι ων και των βυσμα των που χρησιμοποιου νται Το υποεπίπεδο: Physical Signaling To PMS ε χει τρεις στο χους: να περιγρα ψει την κωδικοποι ηση και την αποκωδικοποι ηση των bit (bit encoding/decoding), να περιγρα ψει τους τρο πους χρονισμου των bits (bit timing) και τε λος να καθορι σει τις μεθο δους συγχρονισμου των κο μβων κατα την επικοινωνι α. Οι απαιτη σεις που θε τει το PMS θα πρε πει να καλυφθου ν κατα τον σχεδιασμο και την κατασκευη του αντι στοιχου hardware Κωδικοποίηση των bit Για την κωδικοποι ηση των bit, το πρωτο κολλο CAN χρησιμοποιει την με θοδο Non- Return to zero (NRZ). Σε αυτη τη με θοδο το επι πεδο του ση ματος παραμε νει σταθερο για τον χρο νο που διαρκει η μετα δοση του bit. Δηλαδη, σε κα θε χρονικη στιγμη κατα τη δια ρκεια της μετα δοσης, ο δι αυλος θα βρι σκεται ει τε σε επικρατη τα ση, ει τε σε υπολειπο μενη. Για να γι νει πιο κατανοητο αυτο, στο Σχη μα 2.3 φαι νεται η διαφορα στη μετα δοση μεταξυ της μεθο δου NRZ και μι ας α λλης μεθο δου, της Manchester. Στην τελευται α, η μετα δοση ενο ς bit καθορι ζεται απο την υ παρξη πτω σης η αυ ξησης του παλμου (falling/rising edge) και το οποι ο οδηγει σε μεγαλυ τερη συχνο τητα λειτουργι ας. Ένα χαρακτηριστικο του ΝΡΖ ει ναι ο τι το ση μα δεν παρουσια ζει αιχμε ς, οι οποι ες πολλε ς φορε ς ει ναι χρη σιμες για τον επανασυγχρονισμο της επικοινωνι ας ο ταν γι νεται μετα δοση πολλω ν συνεχο μενων bit της ι διας πολικο τητας. Έτσι, χρησιμοποιου νται τεχνικε ς αντιμετω πισης αυτου του προβλη ματος (bit-stuf ing). Για να υπα ρξει εγγυημε να συγχρονισμε νη επικοινωνι α μεταξυ των κο μβων, δεν επιτρε πεται η μετα δοση πα νω απο 5 συνεχο μενων bit ι διας πολικο τητας, οπο τε και εισε ρχεται ε να συμπληρωματικο bit στην ακολουθι α ο ταν ανιχνευτου ν πα νω απο 5 συνεχο μενα. Προφανε ς ει ναι ο τι ο παραλη πτης του μηνυ ματος θα πρε πει να αποκωδικοποι ησει το ση μα και να αγνοη σει τα επιπλε ον bit ελε γχου.\n25 2.2. Το Φυσικό Επίπεδο του CAN 13 Σχη μα 2.3: H με θοδος NRZ σε σχε ση με τη με θοδο Manchester Χρονισμός των bit Κα θε κο μβος του δικτυ ου CAN ε χει κα ποιον ταλαντωτη για το καθορισμο του χρονισμου της επικοινωνι ας. Οι ταλαντωτε ς αυτοι δεν ει ναι πα ντα σταθεροι για δια φορους λο γους (αυξομειω σεις θερμοκρασι ας, τα σης κοκ), ε τσι οι κο μβοι μπορου ν να διορθω νουν αυτη ν την ε λλειψη συγχρονισμου με δια φορες τεχνικε ς. To CAN χρησιμοποιει συ γχρονη μετα δοση για τη μετα δοση ενο ς bit, που βελτιω νει τις επιδο σεις στην επικοινωνι α, αλλα και κα τι που πρου ποθε τει κα ποια ανεπτυγμε νη με θοδο συγχρονισμου. Ένα bit στο CAN καθορι ζεται απο 4 χρονικα τμη μα που δεν επικαλυ πτουν το ε να το α λλο, ο πως φαι νεται στο Σχη μα 2.4. Κα θε τμη μα κατασκευα ζεται απο ε να ακε ραιο πολλαπλα σιο του Χρόνου Κβάντισης (Time Quantum - TQ) που χρησιμοποιει ται στην κα θε περι πτωση. Ο χρο νος κβα ντισης αποτελει το μικρο τερο δυνατο χρονικο δια στημα που μπορει να αντιληφθει ε να κο μβος CAN. Δηλαδη, κα θε τμη μα αποτελει ται απο ε ναν αριθμο TQ. To με γεθο ς του παρα γεται απο προγραμματισμε νο hardware, συ μφωνα με τον ταλαντωτη που ε χει ο κα θε κο μβος. Το προ τυπο καθορι ζει ε να ελα χιστο των 8 TQ/bit και ε να με γιστο των 25 TQ/bit. O χρο νος του bit επιλε γεται με βα ση τον τρο πο που ε χει προγραμματιστει ο CAN controller να ρυθμι ζει τη δια ρκεια ενο ς TQ και τον αριθμο των TQ ανα bit. Έτσι, η περι οδος ενο ς bit στο CAN χωρι ζεται στα εξη ς τμη ματα: Synchronization Segment (SYNC_SEG): αποτελει ται απο 1 TQ και χρησμοποιει ται για τον συγχρονισμο των κο μβων. Propagation Segment (PROP_SEG): μπορει να προγραμματιστει σε δια ρκεια απο\n26 14 Κεφάλαιο 2. Η τεχνολογία CAN 1 ε ως 8 TQ, και χρησιμοποιει ται για την απο σβεση καθυστερη σεων του ση ματος με σα στο δι κτυο (καλω δια, κυκλω ματα). Phase Buffer Segment 1 (PHASE_SEG1): μπορει να προγραμματιστει σε δια ρ- κεια σε 1 ε ως 8 TQ, και χρησιμοποιει ται για την απο σβεση σφαλμα των φα σης (edge phase errors) και μπορει να αυξηθει σε δια ρκεια κατα τον επανασυγχρονισμο. Phase Buffer Segment 2 (PHASE_SEG2): αποτελει το με γιστο του PHASE_SEG1 και μπορει να μειωθει σε δια ρκεια κατα τον συγχρονισμο. To σημείο δειγματοληψίας (sample point) περιλαμβα νεται κα που ανα μεσα στο PHASE_SEG1 και PHASE_SEG2 και μπορει να προγραμματιστει καταλλη λως για να βελτιστοποιηθει ο χρονισμο ς των bit. Θα πρε πει να ληφθου ν υπο ψιν οι καθυστερη σεις δια δοσης του ση ματος στο δι κτυο (ο ταν εκμπε μπει ο ε νας κο μβος δεν λαμβα νει ταυτο χρονα ο α λλος), καθυστερη σεις οι οποι ες συμβαι νουν στον δι αυλο και στα ηλεκτρονικα κυκλω ματα των ελεγκτω ν. Το συ νολο των καθυστερη σεων αυτω ν δεν θα πρε πει να ει ναι μεγαλυ τερο απο το τμη μα PROP_SEG ενο ς bit. Σε γενικε ς γραμμε ς αυτε ς οι καθυστερη σεις περιλαμβα νουν το εξη ς α θροισμα: καθυστερη σεις του ελεγκτη CAN (50ns με 60ns), καθυστερη σεις του πομποδε κτη (transciever) (120ns με 250ns) και στο καλω διο του διαυ λου (περι που 5ns/m). Σχη μα 2.4: To bit στο φυσικο επι πεδο του CAN\n27 2.2. Το Φυσικό Επίπεδο του CAN Συγχρονισμός Υπα ρχουν δυ ο ει δη συγχρονισμου : Ισχυρός συγχρονισμός (hard sychronization): ο οποι ος επανεκκινει τη μετα - δοση του bit μετα το τε λος του SYNC_SEG. Αυτο σημαι νει ο τι η αιχμη του ση ματος που θα προκαλε σει την επανεκκι νηση θα συμβει με σα στο SYNC_SEG. Επανασυγχρονισμός (soft re-synchronization): κατα τη φα ση αυτη αυξομειω - νεται ο χρο νος δια ρκειας του bit ω στε το σημει ο δειγματοληψι ας να επαναπροσδιοριστει ανα λογα με την αιχμη συγχρονισμου. Ο συγχρονισμο ς της επικοινωνι ας μεταξυ των κο μβων ει ναι χρη σιμος, επειδη ο πως θα εξηγηθει και παρακα τω, κατα τη δια ρκεια της διευθε τησης σχετικα με το ποιος θα καταλα βει το δι αυλο, κα θε κο μβος που εκπε μπει πρε πει ταυτο χρονα να διαβα ζει στο δι αυλο την πληροφορι α που εκπε μπουν οι υπο λοιποι δι αυλοι. Κατα τον επανασυγχρονισμο αναμε νεται η αιχμη του ση ματος κατα τη δια ρκεια του SYNC_SEG. Σε περι πτωση που ο κο μβος που μεταδι δει καθυστερει στην μετα δοση, η αιχμη εντοπι ζεται στο PROP_SEG, και ο παραλη πτης αυξα νει τη δια ρκεια του PHASE_SEG1 στη με γιστη δια ρκεια που ε χει προγραμματιστει. Στη περι πτωση, που ο αποστολε ας μεταδι δει ταχυ τερα το τε η αιχμη εντοπι ζεται στο PHASE_SEG2 και ο παραλη πτης μειω νει τη δια ρκεια του PHASE_SEG Το υποεπίπεδο: Physical Medium Attachment Υπα ρχουν δια φορα βιομηχανικα standards τα οποι α προτυποποιου ν το υποεπι πεδο αυτο θε τοντας συγκεκριμε νες προδιαγραφε ς για ε να δι κτυο CAN. To ISO θεωρει ο τι το δι κτυο θα ε χει τη μορφη διαυ λου μονη ς γραμμη ς (single line structure) και οι γραμμε ς του διαυ λου τερματι ζονται με αντιστα σεις των 120Ω, ο πως φαι νεται και στο Σχη μα 2.5. Επι σης, ε να κο μβος σχεδιασμε νος συ μφωνα με το ISO θα περιλαμβα νει ε να μικροελεγκτη και ε ναν ελεγκτη CΑΝ, ο οποι ος θα ει ναι συνδεδεμε νος με τον πομποδε κτη (transceiver) με σω μιας σειριακη ς συ νδεσης εξο δου (data output line Tx) και μιας σειριακη ς συ νδεσης εισο δου (data input Rx). O πομποδε κτης θα πρε πει να ει ναι συνδεδεμε νος σε μια ονομαστικη τα ση +5V (Σχη μα 2.6).\n28 16 Κεφάλαιο 2. Η τεχνολογία CAN Τα επι πεδα της τα σης στον δι αυλο φαι νονται στο Σχη μα 2.7. Οι κο μβοι, διαβα ζοντας το δι αυλο, θα αναγνωρι ζουν υπολειπο μενη κατα σταση εα ν η τα ση CAN_H ει ναι μικρο τερη απο τη τα ση CAN_L κατα 0,5V. Εα ν η τα ση του CAN_H ει ναι τουλα χιστον 0,9V μεγαλυ τερη απο CAN_L, το τε ε χουμε επικρατη κατα σταση. Η ονομαστικη τα ση στην επικρατη κατα σταση ει ναι 3,5V για την CAN_H και 1,5V και την CAN_L. Τε λος, θα πρε πει να επισημανθει ο τι οι εξωτερικε ς ηλεκτρομαγνητικε ς παρεμβολε ς δεν επηρεα ζουν το δι κτυο CAN, διο τι θα επηρεα σουν εξι σου και την γραμμη CAN_H και την γραμμη CAN_L, με αποτε λεσμα η διαφορικη τα ση που λαμβα νεται υπο ψιν να παραμε νει σταθερη. Σχη μα 2.5: H μορφη του δικτυ ου CAN Σχη μα 2.6: Ένας κο μβος στο δι κτυο του CAN Το υποεπίπεδο: Medium Dependent Interface Όπως γι νεται κατανοητο απο τα παραπα νω σε ε να κο μβο χρεια ζονται οι δυ ο γραμμε ς για το CAN, γει ωση και επιπλε ον τροφοδοσι α. Με χρι στιγμη ς δεν υπα ρχει διεθνω ς\n29 2.2. Το Φυσικό Επίπεδο του CAN 17 Σχη μα 2.7: Tα ονομαστικα επι πεδα των τα σεων στο δι αυλο συμφωνημε νο standard για τις υλοποιη σεις της συ νδεσης και οι περισσο τεροι μηχανικοι σχεδια ζουν το δικο τους δι κτυο ανα λογα με τις ανα γκες της εφαρμογη ς. Αυτο που ε χει καθιερωθει σαν μηχανολογικη δια ταξη ει ναι το βυ σμα D-sub με 9 ακροδε κτες (Σχη μα 2.8) σαν προ τυπη διεπαφη, με την εξη ς συνδεσμολογι α των ακροδεκτω ν: pin2: CAN_L, pin3: Γει ωση, pin7: CAN_H, pin9: Τροφοδοσι α. Έτσι, ε νας κο μβος μπορει να ε χει ε να αρσενικο και ε να θυληκο D-sub βυ σμα, ο που η τροφοδοσι α συνδε εται στο αρσενικο. Τε λος, η χρη ση δυ ο συστραμμε νων αγωγω ν με σα σε θωρακισμε νο καλω διο ως τον δι αυλο, μειω νει τις εκπομπε ς RF και αυξα νει την ανοχη στον θο ρυβο. Σχη μα 2.8: Ένα αρσενικο D-sub με 9 ακροδε κτες (pins)\n30 18 Κεφάλαιο 2. Η τεχνολογία CAN 2.3 Το Επίπεδο Ζεύξης Δεδομένων του CAN Όπως ει παμε στο επι πεδο Ζευ ξης Δεδομε νων περιγρα φονται ο ε λεγχος προ σβασης στο δι αυλο καθω ς και οι τρο ποι εντοπισμου κατεστραμμε νων πλαισι ων 4 και σφαλμα - των H μορφή του πλαισίου CAN Υπα ρχουν 4 ει δη πλαισι ων στο CAN: το πλαίσιο δεδομένων (data frame): ει ναι το βασικο πλαι σιο που κυκλοφορει σε ε ναν δι αυλο CAN και αποστε λλεται απο ε ναν κο μβο προς ε ναν η περισσο τερους παραλη πτες. το πλαίσιο αίτησης (remote frame): το πλαι σιο αυτο αποστε λλεται απο ε ναν κο μβο με σκοπο να ζητη σει το data frame με το ι διο id. το πλαίσιο σφάλματος (error frame): χρησιμοποιει ται ως ειδοποι ηση ο τι εντοπι στηκε σφα λμα και το πλαι σιο πρε πει να καταστραφει. και το πλαίσιο υπερφόρτωσης (overload frame): χρησιμοποιει ται για να παρε χει κα ποια ε ξτρα καθυστε ρηση η να ειδοποιη σει για ε να συγκεκριμε νο σφα λμα S O F Msg ID R T R I D E R 0 DLC Δεδομε να CRC CRC DLM A C K ACK DLM E O F Πεδι ο Διευθε τησης Πεδι ο Ελε γχου Πεδι ο Δεδομε νων Πεδι ο CRC Πεδι ο ACK Σχη μα 2.9: H μορφη ενο ς CAN data frame. Με πρα σινο φαι νονται τα πεδι α που χωρι ζεται ε να πλαι σιο ( ields), με γαλα ζιο οι ακολουθι ες που ανη κουν σε κα θε πεδι ο και με γκρι το συ νολο των bits των ακουλουθιω ν αυτω ν. Στο Σχη μα 2.9 φαι νεται η μορφη ενο ς πλαισι ου δεδομε νων στο CAN. Το πλαι σιο αι τησης ει ναι ουσιαστικα ε να πλαι σιο δεδομε νων, ο που ε χει RTR-bit υπολειπο μενο και 4 Χρησιμοποιει ται ο ο ρος πλαίσιο (CAN frame) και ο χι ο ο ρος μήνυμα (CAN Message) για να προσδιοριστει ο χι μο νο το μη νυμα με τα δεδομε να αλλα και ο λα τα υπο λοιπα bit ελε γχου.\n31 2.3. Το Επίπεδο Ζεύξης Δεδομένων του CAN 19 δεν μεταφε ρει δεδομε να, οπο τε και στις παρακα τω παραγρα φους θα αναλυθει το data frame. SOF-bit. πλαισι ου. Αποτελει ε να επικρατε ς bit που δηλω νει την εκκι νηση της μετα δοσης ενο ς Πεδίο διευθέτησης. Αποτελει ται απο τον identi ier του μηνυ ματος (Msg ID) και το RTR bit και το πεδι ο αυτο καθορι ζει τη προτεραιο τητα του πλαισι ου στον δι αυλο. To Msg ID ει ναι o identi ier του πλαισι ου. Υπα ρχουν δυ ο προ τυπα στο CAN: το βασικο (base/standard CAN) και το επεκταμε νο (extended CAN). Το πιο συχνα χρησιμοποιου μενο ει ναι το base CAN, στο οποι ο ο identi ier ει ναι μια ακολουθι α των 11 bits. Το extended CAN δι νει τη δυνατο τητα για identi ier των 29 bits, που χρησιμοποιει ται ο μως σε λιγο τερες εφαρμογε ς. Το RTR-bit (Remote Transmition Request bit) ει ναι, ο πως ειπω θηκε, το bit που διαχωρι ζει τα data frames (RTR = 0) απο τα remote frames (RTR = 1). Πεδίο Ελέγχου. Στο πεδι ο αυτο περιλαμβα νονται 6 bits: το IDE-bit, το R0-bit και η ακολουθι α των 4 bit DLC. Το bit IDE (Identi ier Extension Bit), ει ναι το bit που ξεχωρι ζει το base πλαι σιο απο ε να extended πλαι σιο. Στα base CAN το IDE-bit ει ναι επικρατε ς, ενω στο extended υπολειπο μενο. Το bit R0 (Reserved)ει ναι σε αχρηστι α και διαθε σιμο για επο μενες εκδο σεις του CAN και μεταδι δεται πα ντα σαν επικρατε ς. Η ακολουθι α DLC (Data Length Code) δι νει τον αριθμο των bytes δεδομε νων που θα μεταδοθου ν στο Πεδι ο Δεδομε νων. Το CAN επιτρε πει με χρι 8 bytes δεδομε νων. H ακολουθι α DLC μπορει να πα ρει και τιμε ς μεγαλυ τερες απο 8, ο που χρησιμοποιου νται σε ειδικε ς περιπτω σεις. Πεδίο Δεδομένων. Εδω μπορου ν να μεταδοθου ν απο 0 ε ως 8 bytes δεδομε νων. Η μεγα λη ευρωστι α του CAN στις διαταραχε ς οφει λεται στην μετα δοση μικρω ν μηνυμα - των, μειω νοντας την πιθανο τητα αλλοι ωσης των δεδομε νων.\n32 20 Κεφάλαιο 2. Η τεχνολογία CAN Πεδίο CRC bit.. Αποτελει ται απο την ακολουθι α CRC των 15-bit και το CRC Dilimiter Με σω της ακολουθι ας CRC (Cyclic Redundancy Check) ε νας κο μβος μπορει να ελε γξει εα ν το μη νυμα που λαμβα νει ε χει καταστραφει απο διαταραχε ς και να εντοπι σει τυχο ν σφα λματα. Το CRC DLM bit (CRC Delimiter) θα πρε πει πα ντα να ει ναι υπολειπο μενο και βοηθα ει στην ευ ρεση σφαλμα των στον δι αυλο. Πεδίο ACK. Το πεδι ο αυτο περιε χει δυ ο bits. To ACK Slot και το αντι στοιχο dilimiter. Με σω του ACK Slot (Acknowledgement Slot) ει ναι δυνατη η ευ ρεση εσφαλμε νης αποστολη ς ενο ς πλαισι ου. Ο αποστολε ας ενο ς πλαισι ου περιμε νει απα ντηση απο τουλα χιστον ε ναν κο μβο λη ψης, ο τι το πλαι σιο ε φτασε χωρι ς σφα λματα. Έτσι, κα θε παραλη πτης ο οποι ος ε χει λα βει ορθα ε να πλαι σιο (συ μφωνα με το πλαι σιο CRC), το αναφε ρει στον αποστολε α εγγρα φοντας ε να επικρατε ς bit κατα τη δια ρκεια του ACK slot. Έτσι, κα θε αποστολε ας στε λνει ε να υπολειπο μενο bit στην ACK slot, και διαβα ζοντας την κατα σταση του διαυ λου θα πρε πει να διαβα σει επικρατη στα θμη, ω στε το πλαι σιο να ε χει σταλει σωστα. Βε βαια με αυτη τη με θοδο εξασφαλι ζεται η ορθη λη ψη τουλα χιστον απο ε ναν κο μβους και ο χι απο ο λους. Στη περι πτωση που κα ποιος κο μβος δεν ε λαβε σωστα, θα πρε πει να αποστει λει αργο τερα στον δι αυλο ε να πλαι σιο σφα λματος. Ένα υπολειπο μενο ACK DLM (ACK Dilimiter) πρε πει πα ντα να ακολουθει το ACK Slot, για να ει ναι σι γουρο ο τι η επικρατη ς στα θμη κατα τη δια ρκεια του ACK Slot η ταν ο ντως μι α θετικη επιβεβαι ωση λη ψης και ο χι η ε ναρξη ενο ς πλαισι ου σφα λ- ματος. EOF. Η End-of-Frame ει ναι μι α ακολουθι α απο 7 υπολειπο μενα bits που δηλω νει το τε λος ενο ς πλαισι ου (δεδομε νων η αιτη ματος). Μαζι με το ACK DLM, ε χουμε ε να συ νολο απο 8 υπολειπο μενα bits στο τε λος κα θε πλαισι ου, που η μη-διακοπη τους απο επικρατε ς bit εξασφαλι ζει την μετα δοση ενο ς πλαισι ου χωρι ς σφα λματα.\n33 2.3. Το Επίπεδο Ζεύξης Δεδομένων του CAN Διευθέτηση Διαύλου Στο CAN, κα θε κο μβος μπορει να στει λει ε να μη νυμα στον δι αυλο μο νο εφο σον αυτο ς δεν ει ναι κατειλημμε νος απο α λλο κο μβο. Αυτο πρακτικα σημαι νει ο τι το πεδι ο intermission bit δεν διακο πτεται απο ε να επικρατές bit. Ως επικρατές bit το CAN ορι ζει το λογικο 0 και ως υπολειπόμενο bit το λογικο 1. Όταν περισσο τεροι απο ε νας κο μβος επιχειρη σουν να μεταδω σουν σε ε ναν αρχικα διαθε σιμο διαυ λο, το τε το πρωτο κολλο χρησιμοποιει για τον καθορισμο της προτεραιο τητας τον identi ier του πλαισι ου καθω ς και το bit RTR (Remote Transmission Request), το οποι ο υπα ρχει για να διαχωρι ζεται ε να data frame απο ε να remote frame. Έτσι, αρχι ζουν δυ ο κο μβοι να μεταδι δουν το δικο τους πλαι σιο. Αρχικα ο λοι μεταδι δουν το SOF-bit (Start of Frame) σαν ε να επικρατε ς, ω στε να ξεκινη σει η μετα δοση και στη συνε χεια τον identi ier τους. Οι ακολουθι ες των identi ier συγκρι νονται στο δι αυλο με την εξη ς διαδικασι α: κα θε κο μβος στε λνει ε να bit και διαβα ζει ταυτο χρονα την κατα - σταση του διαυ λου (δηλαδη τι ε χουν στει λει οι υπο λοιποι κο μβοι) και στην περι πτωση που ε στειλε υπολειπο μενο bit ενω δια βασε ο τι ο δι αυλος ει ναι σε στα θμη επικρατου ς το τε αποχωρει απο την προσπα θεια να καταλα βει τον δι αυλο, διο τι κα ποιος α λλος ε χει στει λει identi ier μεγαλυ τερης προτεραιο τητας. Τα λογικα κυκλω ματα που ελε γχουν το δι αυλο ει ναι σχεδιασμε να, ε τσι ω στε αν ε νας κο μβος δω σει τα ση που αντιστοιχει σε 1 (υπολειπο μενο) και ε νας α λλος τα ση που αντιστοιχει σε 0 (επικρατε ς), ο δι αυλος θα καταλη ξει σε τα ση που αντιστοιχει σε λογικο 0. Τε λος, ε αν δυ ο πλαι σια ε χουν τον ι διο identi ier ελε γχεται το RTR-bit. Στα data frames αντιστοιχει επικρατε ς RTR-bit, ενω στα remote frame υπολειπο μενο RTR-bit. Έτσι, ο ταν ζητει ται ε να πλαι σιο (με σω remote frame) και ταυτο χρονα εκπε μπεται αυτο το ι διο πλαι σιο (data frame), ει ναι λογικο να επικρατη σει το δευ τερο κατευθει αν. Με βα ση ο λα τα παραπα νω και συμπεριλαμβανομε νου ο τι το περισσο τερο σημαντικο bit εκπε μπεται πρω το, συμπεραι νεται ο τι τα IDs με μικρο τερη τιμη ε χουν προτεραιο τητα σε σχε ση με μεγαλυ τερα Μηχανισμοί εντοπισμού και διαχείρισης σφαλμάτων Το πρωτο κολλο CAN υποστηρι ζει δια φορους μηχανισμου ς εντοπισμου των σφαλμα των, ο πως ο ε λεγχος bit (Bit Check), ο ε λεγχος πλαισι ου (Frame Check), ο ε λεγχος κυ-\n34 22 Κεφάλαιο 2. Η τεχνολογία CAN κλικου πλεονασμου (Cyclic Redundancy Check), o ε λεγχος βεβαι ωσης (Acknowledgement Check) και ο ε λεγχος του κανο να συσσω ρευσης (Stuff Rule Check). Bit Check. Κα θε κο μβος που μεταδι δει ε να πλαι σιο, ελε γχει ταυτο χρονα κατα πο - σον το επι πεδο στα θμης του διαυ λου διαφε ρει απο τη στα θμη του bit που επιχει ρησε να μεταδω σει. Εα ν οι δυ ο τιμε ς ει ναι διαφορετικε ς το τε εντοπι ζεται ε να σφάλμα bit (bit error). Θα πρε πει να επισημανθει ο τι δεν μεταφρα ζεται ως σφα λμα η εγγραφη ενο ς επικρατου ς bit κατα το ACK Slot. Frame Check. Επειδη η μορφη των πλαισι ων CAN ει ναι συγκεκριμε νη και υπα ρχουν καθορισμε νες μανιε ρες (πχ, τα dilimiter bits ει ναι πα ντα υπολειπο μενα), η παραβι αση τους θα ε χει ως αποτε λεσμα ε να σφα λμα μορφη ς (form error). Cyclic Redundancy Check. Με τη με θοδο αυτη ει ναι δυνατη η ευ ρεση αλλοιω - σεων των δεδομε νων λο γω εξωτερικω ν διαταραχω ν. Δηλαδη, εα ν το δι κτυο βα λλεται απο ηλεκτρομαγνητικε ς διαταραχε ς (ο πως το περιβα λλον ενο ς αυτοκινη του), το τε μπορει τα ση ματα των πλαισι ων να μεταβληθου ν και κα ποια bit να αλλα ξουν πολικο τητα. Ουσιαστικα αυτο που γι νεται ει ναι ο αποστολε ας να θεωρει τα bits των πεδι ων απο το SOF ε ως και το πεδι ο δεδομε νων, ως συντελεστε ς ενο ς πολυωνυ μου (δηλαδη το πολυω νυμο ει τε θα ε χει κα ποιους ο ρους με συντελεστη μονα δα, ει τε ο χι - 0,1). Στη συνε χεια, διαιρει το πολυω νυμο αυτο με ε να προκαθορισμε νο πολυω νυμο αναφορα ς και το υπο λοιπο αυτη ς της διαι ρεσης εγγρα φεται στην ακολουθι α CRC του πλαισι ου κωδικοποιημε νη σε κω δικα BCD. O παραλη πτης επαναλαμβα νει την διαδικασι α της διαι ρεσης με διαιρετε ο το πολυω νυμο που σχηματι ζεται απο τα bits του πλαισι ου που ε λαβε και διαιρε τη το ι διο πολυ ωνυμο αναφορα ς. Εα ν το υπο λοιπο της διαι ρεσης δεν ει ναι ι διο με την ακολουθι α CRC που ε λαβε, το τε υπη ρξε σφα λμα μετα δοσης των δεδομε νων. Acknowledgement Check. O αποστολε ας αναμε νει κατα τη δια ρκεια του ACK Slot, τουλα χιστον ε νας παραλη πτης να στει λει μι α βεβαι ωση ορθη ς παραλαβη ς με σω της εκπομπη ς ενο ς επικρατου ς bit. H ε λλειψη αυτη ς της βεβαι ωσης (υπολειπο μενη στα θμη στο ACK Slot), δι νει ε να σφάλμα βεβαίωσης (acknowledgement error).\n35 2.3. Το Επίπεδο Ζεύξης Δεδομένων του CAN 23 Stuffing Rule Check. To CAN ακολουθει τον κανο να της συσσω ρευσης bit (bit stuf ing rule), με βα ση τον οποι ο κα θε παραλη πτης δεν πρε πει να διαβα σει πα νω απο 5 bit στη σειρα της ι δια πολικο τητας. Έτσι, εα ν ο παραλη πτης διαβα σει 5 bit της ι διας πολικο τητας στη σειρα και μετα διαβα σει και το 6ο με ι δια πολικο τητα απο τα προηγου μενα το τε αναγνωρι ζεται ε να σφάλμα συσσώρευσης (stuff error).\n37 3 To ρομποτικό χέρι BarrettHand 3.1 Περιγραφή Το BarrettHand ει ναι μι α ρομποτικη αρπα γη τριω ν δακτυ λων με 4 ανεξα ρτητους ενεργοποιητε ς (4 βαθμοι ελευθερι ας). Αποτελει ται, λοιπο ν, απο 4 κο μβους (pucks), ο που σε κα θε ε ναν αντιστοιχει ε νας κινητη ρας. Οι 3 κινητη ρες εντοπι ζονται στα 3 δα κτυλα του χεριου, ενω ο 4ος αφορα τον μηχανισμο spread, με τον οποι ο τα δυ ο δα κτυλα μπορου ν να περιστραφου ν με χρι 180 o γυ ρω απο τον α ξονα της παλα μης (α ξονας Ζ - Σχη μα 3.1), ε τσι ω στε το 3ο ακι νητο δα κτυλο να λειτουργει σαν αντι χειρας. Οι εξωτερικε ς αρθρω σεις των δακτυ λων λειτουργου ν, χωρι ς δικο τους κινητη ρα, σε συ ζευξη με τον κινητη ρα του δακτυ λου λο γω του μηχανισμου TorqueSwitch (Βλ. παρακα τω). Κα θε κινητη ρας ε χει ε να οπτικο κωδικοποιητη (optical encoder) ο οποι ος κβαντι ζει τη κι νηση του κινητη ρα, αναλο γως με τις στροφε ς του. Ο κωδικοποιητη ς αυτο ς λειτουργει ουσιαστικα σαν αισθητη ρας ανα δρασης της θε σης του κινητη ρα (επομε νως και της γωνι ας του α κρου), με την θε ση αυτη να ε χει ως μονα δες με τρησης: encoder counts (cts). Στην αρχικη θε ση του χεριου (zero position) και οι τε σσερις κωδικοποιητε ς θεωρει ται ο τι μετρα νε μηδενικη θε ση (0 cts). Σαν αρχικη θε ση του χεριου θεωρει ται η θε ση που παι ρνει το χε ρι κατα τη διαδικασι α της αρχικοποι ησης και ει ναι αυτη που φαι νεται στο Σχη μα 3.1. Τα ο ρια στη γωνι α κι νησης των αρθρω σεων για τα δα κτυλα και το spread φαι νο-\n38 26 Κεφάλαιο 3. To ρομποτικό χέρι BarrettHand νται στα Σχη ματα 3.2 και 3.3, αντι στοιχα. Αυτα τα ο ρια αφορου ν την αρχικη θε ση του χεριου (Σχη μα 3.1), χωρι ς τη παρεμβολη εμποδι ων και το spread να ει ναι ει τε τελει ως ανοικτο (0 o ), ει τε τελει ως κλειστο (180 o ). Εννοει ται ο τι εμπο διο η διαφορετικε ς θε σεις του spread μπορου ν να μικρυ νουν το ευ ρος κινη σεων των αρθρω σεων των δακτυ λων, ει τε να οδηγη σουν στην συ γκρουση των α κρων μεταξυ τους. Υπο τις παραπα νω πρου ποθε σεις κα θε εσωτερικο ς συ νδεσμος του δακτυ λου μπορει να κινηθει στο ευ ρος που αντιστοιχου ν σε , 1 cts, κα θε εξωτερικο ς συ νδεσμος στο ευ ρος 0 o 48 o, ενω το spread στο ευ ρος 0 o 180 o που αντιστοιχου ν σε cts. Σχη μα 3.1: H αρχικη θε ση του χεριου (zero position), απο την οποι α υπολογι ζεται και το κινηματικο μοντε λο Σχη μα 3.2: Τα ο ρια στη κι νηση των δακτυ λων Τα ηλεκτρονικα του χεριου αντιστοιχου ν σε κα θε κο μβο κα ποιες συγκεκριμε νες ιδιο - τητες (properties), οι οποι ες μπορου ν να διαβαστου ν η να τροποποιηθου ν καθορι ζοντας την λειτουργι α του hardware (πχ, μι α ιδιο τητα του δακτυ λου 1 ει ναι η ταχυ τητα\n39 3.1. Περιγραφή 27 Σχη μα 3.3: Τα ο ρια στη κι νηση του spread κι νησης. η ανα γνωση της ιδιο τητας προσφε ρει ανα δραση, ενω η αλλαγη της ε λεγχο της κι νησης) TorqueSwitch Ως TorqueSwitch αναφε ρεται ο πατενταρισμε νος μηχανισμο ς απο την Barrett ο οποι ος εμπλεκο μενος συντελει τη συ ζευξη δυ ο αρθρω σεων του δακτυ λου σε ε να μο νο κινητη ρα. Όταν ο εσωτερικο ς συ νδεσμος συναντη σει ε να εμπο διο και σταματη σει το τε ο μηχανολογικο ς εξοπλισμο ς αντιλαμβα νεται ο τι ξεπερα στηκε η προκαθορισμε νη threshold ροπη. Έτσι, ο οδοντωτο ς τροχο ς που μεταφε ρει την κι νηση στην εσωτερικη α ρθρωση απεμπλε κεται, με συνε πεια να μεταφε ρεται η κι νηση μο νο στον εξωτερικο συ νδεσμο. Έτσι, ο εξωτερικο ς συ νδεσμος συνεχι ζει να κλει νει γραπω νοντας το αντικει μενο (Σχη μα 3.4) Αισθητήρας ροπής στην άρθρωση Ένα ακο μη αισθητη ριο που υπα ρχει διαθε σιμο στο BarrettHand ει ναι ε νας αισθητη - ρας ροπη ς στην εξωτερικη α ρθρωση (Joint-Torque sensor) κα θε δακτυ λου. Ο αισθητη - ρας αποτελει ται απο μι α ευ καμπτη δε σμη τεσσα ρων ελασμα των, τα οποι α μπορου ν να μετρη σουν την καταπο νηση (strain gages), που συνδε ονται σε ε να κυ κλωμα γε φυρας Wheatstone (Σχη μα 3.5). Όταν μι α δυ ναμη εφαρμοστει στο α κρο του δακτυ λου (Force A), το τε η ροπη στην α ρθρωση υπολογι ζεται απο την απο κλιση αυτη ς της δε σμης. Η απο κλιση της δε σμης ει ναι ανα λογη της διαφορα ς στην ε κταση του καλωδι ου, η οποι α μεταφρα ζεται σε δυ ναμη (Force B), με σω της τροχαλι ας που υπα ρχει συνδεδεμε νη με το συ στημα της δε σμης. Έτσι, η κα μψη των ελασμα των δημιουργει μι α μετρου μενη τα ση στην γε φυρα Wheatstone, η οποι α ενισχυ εται και μετατρε πεται σε ψηφιακο ση μα.\n40 28 Κεφάλαιο 3. To ρομποτικό χέρι BarrettHand Σχη μα 3.4: O μηχανισμο ς TorqueSwitch Λειτουργία των αρθρώσεων Οι ιδιο τητες P και JP των δακτυ λων περιε χουν τιμε ς του οπτικου κωδικοποιητη θε σης του κινητη ρα και του δευτερευ οντα κωδικοποιητη, αντι στοιχα. Τα νε α μοντε λα, συμπεριλαμβανομε νου του 282, ει ναι εξοπλισμε να με ε να δευτερευ οντα οπτικο κωδικοποιητη. Η γωνι α του εσωτερικου συνδε σμου (δηλαδη η μεταβλητη της θ 2, βλ. Ενο τητα 3.3 περι Κινηματικου μοντε λου) σε σχε ση με το επι πεδο της παλα μης μπορει να υπολογι-\n41 3.1. Περιγραφή 29 Σχη μα 3.5: To αισθητη ριο ροπη ς των δακτυ λων στει σε rad, εα ν ει ναι γνωστη η τιμη της ιδιο τητας JP: θ inner = JP 2π rad Επι σης η γωνι α του εξωτερικου συνδε σμου (δηλαδη η μεταβλητη θ 3 )σε σχε ση με το επι πεδο της παλα μης μπορει να βρεθει χρησιμοποιω ντας τη τιμη της ιδιο τητας P: θ outer = P 2π θ inner + 2π 9 rad Οι παραπα νω τυ ποι προκυ πτουν απο τις σχε σεις μετα δοσης της κι νησης και τους τυ πους των γραναζιω ν που χρησιμοποιου νται. Επι σης, η κι νηση του εσωτερικου με τη κι νηση του εξωτερικου συνδε σμου συνδε εται με μια αναλογι α 3:1 ο ταν δεν ε χει συμβει το σπα σιμο του TorqueSwitch (breakaway). Δηλαδη, εα ν ο εσωτερικο ς συ νδεσμος κινηθει 3 o, o εξωτερικο ς θα κινηθει 1 o. Αυτη η αναλογι α ισχυ ει πριν το breakaway, καθω ς μετα απο αυτο ο εσωτερικο ς συ νδεσμος δεν θα κινει ται καθο λου, ενω ο εξωτερικο ς θα συνεχι σει να κλει νει. Αυτο ει ναι ιδιαι τερα χρη σιμο σε συνεργασι α με τους παραπα νω τυ πους καθω ς ο χρη στης μπορει να παρακολουθει τις δυ ο γωνι ες του δακτυ λου, να ελε γχει αν η συγκεκριμε νη αναλογι α ισχυ ει\n42 30 Κεφάλαιο 3. To ρομποτικό χέρι BarrettHand (ε στω και κατα προσε γγιση) και σε περι πτωση που δεν ισχυ ει το τε θα ξε ρει ο τι συνε βη breakaway και μα λιστα και σε ποιο σημει ο. Κα τι ιδιαι τερα χρη σιμο για να γνωρι ζει το ρομπο τ σε ποιο σημει ο βρι σκεται ε να εμπο διο Καταστάσεις λειτουργίας (Modes) του BarrettHand To BarrettHand ε χει 5 διαφορετικα mode ελε γχου στα οποι α μπορει να λειτουργη - σει. Για να λειτουργη σει το χε ρι σε κα θε mode θα πρε πει οι ιδιο τητες MODE και TSTOP να πα ρουν συγκεκριμε νες τιμε ς (αναλυτικο τερα για τις ιδιο τητες βλ. Ενο τητα 4). Idle Mode. Για να λειτουργη σει σε αυτο το mode το χε ρι θα πρε πει MODE=0. Σε αυτο το mode το χε ρι (η το δα κτυλο στο οποι ο εφαρμο ζεται) ει ναι ανενεργο και ακι νητο. Ένα παρα δειγμα χρη σης ει ναι ο ταν ο χειριστη ς θε λει σε κα ποια χρονικη στιγμη να σταματη σει την κι νηση. Αξιοσημει ωτο ει ναι το γεγονο ς ο τι οι αρθρω σεις των δακτυ λων δεν μπορου ν να κινηθου ν ελευ θερα, λο γω της μηχανολογικη ς τους κατασκευη ς (nonbackdrivability). Έτσι σε αυτο το mode οι αρθρω σεις των δακτυ λων δεν μπορου ν να κινηθου ν και ακινητοποιου νται ω στε να μην χρεια ζεται επιπλε ον ρευ μα στους κινητη ρες για τη συγκρα τηση ενο ς φορτι ου. Αυτο δεν ισχυ ει για την α ρθρωση του spread, ο που η α ρθρωση ο ταν μπει σε αυτο το mode ακινητοποιει ται απο τη προηγου μενη κι νηση, αλλα μπορει να κινηθει ελευ θερα. Torque Mode. Για να λειτουργη σει σε αυτο το mode το χε ρι θα πρε πει MODE=2, TSTOP=0. Σε αυτο το mode ο χρη στης μπορει να τροφοδοτει με εντολε ς ροπη ς (torque commands, βλ. ιδιο τητα T) κα θε ε ναν απο τους 4 κινητη ρες η κα ποιο υποσυ νολο αυτω ν, ενω παρα λληλα να λαμβα νει ως ανα δραση τη θε ση των αρθρω σεων. Οι πραγματικε ς ροπε ς που θα εφαρμο ζονται στις αρθρω σεις του δακτυ λου δεν σχετι ζονται με ακρι βεια με τις ροπε ς που θα εφαρμο ζονται στο κινητη ρα με τη χρη ση των εντολω ν, λο γω των μεγα λων τριβω ν που εισα γει στο συ στημα ο μηχανισμο ς μεταφορα ς της κι νησης (συγκεκριμε να οι worm drives). Τε λος, προτει νεται ο χρη στης να παρακολουθει τις ταχυ τητες, τη θερμοκρασι α των κινητη ρων καθω ς και τα ο ρια των αρθρω σεων για να αποτραπει καταστροφη του BarrettHand. Σε αυτο το mode η συχνο τητα τροφοδοσι ας των ροπω ν προτει νεται να ει ναι τουλα χιστον 200Hz ω στε η κι νηση να ει ναι ομα λη.\n43 3.1. Περιγραφή 31 Position Mode. Για να λειτουργη σει σε αυτο το mode το χε ρι θα πρε πει MODE=3, TSTOP=0. Σε αυτο το mode ο χρη στης μπορει να τροφοδοτει με εντολε ς θε σης (position commands, βλ. ιδιο τητα P) κα θε ε ναν απο τους 4 κινητη ρες η κα ποιο υποσυ νολο αυτω ν. To BarrettHand θα επιχειρη σει να φτα σει στην επιθυμητη θε ση χρησιμοποιω ντας ε ναν PID ελεγκτη, με κε ρδη K P, K D, K I. Γενικα, προτει νεται να μη δι νεται σαν επο μενη θε ση, κα ποια πολυ μακρινη απο την τρε χουσα, γιατι το συ στημα μαζι με τον PID ενδε χεται να γι νει ασταθε ς. Ο χρη στης πρε πει να γρα ψει μο νος του ε να προφι λ παραγωγη ς θε σεων (πχ κα ποια συνα ρτηση του χρο νου), ενω λαμβα νει feedback θε σης απο τους οπτικου ς κωδικοποιητε ς. Το BarrettHand σε αυτο το mode ει ναι ενη μερο για τα ο ρια των αρθρω σεων και δεν θα επιτρε ψει στο χρη στη να τα ξεπερα σει. Παρο λα αυτα θα πρε πει να περιοριστει η ταχυ τητα των δακτυ λων απο τον ι διο το χρη στη με δικο του ελεγκτη. Σε αυτο το mode προτει νεται συχνο τητα τουλα χιστον 50 Hz για να διατηρει ται η κι νηση ομαλη. Velocity Mode. Για να λειτουργη σει σε αυτο το mode το χε ρι θα πρε πει MODE=4, TSTOP=0. Σε αυτο το mode ο χρη στης μπορει να τροφοδοτει με εντολε ς ταχυ τητας (βλ. ιδιο τητα V) κα θε ε ναν απο τους 4 κινητη ρες η κα ποιο υποσυ νολο αυτω ν. To BarrettHand θα διατηρει την προηγου μενη ταχυ τητα με χρι να ενημερωθει με κα ποια καινου ργια. Το χε ρι σε αυτο το mode ει ναι ενη μερο για τα ο ρια των αρθρω σεων και δεν θα επιτρε ψει στο χρη στη να τα ξεπερα σει, καθω ς και περιορι ζει τη ταχυ τητα στη με γιστη τιμη που ορι ζει η ιδιο τητα MV (Max Velocity). Σε αυτο το mode δεν υπα ρχει κα ποια ελα χιστη συχνο τητα, οπο τε και ει ναι ευ χρηστο σε εφαρμογε ς που δεν ενδιαφε ρουν ιδιαι τερα οι καθυστερη σεις. Trapezoidal Mode. Για να λειτουργη σει σε αυτο το mode το χε ρι θα πρε πει MODE=5, TSTOP=1. Σε αυτο το mode ο χρη στης μπορει να στε λνει διακριτε ς τελικε ς θε σεις (target endpoint positions, βλ. ιδιο τητα E) σε κα θε ε ναν απο τους 4 κινητη ρες η κα ποιο υποσυ νολο αυτω ν. To BarrettHand θα παρα ξει το δικο του προφι λ τραπεζοειδου ς κι νησης, ο που θα αρχι σει να επιταχυ νει απο την τρε χουσα θε ση (συ μφωνα με την ιδιο τητα ACCEL), με χρι να φτα σει την με γιστη επιτρεπτη ταχυ τητα (ιδιο τητα MV), ενω στη συνε χεια θα αρχι σει να επιβραδυ νει ω στε να φτα σει στη δοσμε νη τελικη θε ση με μηδενικη ταχυ τητα. Σε αυτο το mode δεν θα πρε πει να στε λνονται εντολε ς θε σης (P), καθω ς αυτο\n44 32 Κεφάλαιο 3. To ρομποτικό χέρι BarrettHand το mode ε χει σχεδιαστει για εντολε ς κι νησης διακριτε ς στο χρο νο συνη θως με αποστα - σεις κα ποιων δευτερολε πτων μεταξυ τους. Το χε ρι σε αυτο το mode ει ναι ενη μερο για τα ο ρια των αρθρω σεων και δεν θα επιτρε ψει στο χρη στη να τα ξεπερα σει, καθω ς και περιορι ζει τη ταχυ τητα στη με γιστη τιμη που ορι ζει η ιδιο τητα MV (Max Velocity). Ου τε σε αυτο το mode υπα ρχει κα ποια ελα χιστη συχνο τητα αποστολη ς, οπο τε και ει ναι ευ χρηστο σε εφαρμογε ς που δεν ενδιαφε ρουν ιδιαι τερα οι καθυστερη σεις. Παρο λα αυτα, ο χρη στης δεν πρε πει να στει λει μι α νε α τελικη θε ση προτου η τρε χουσα κι νηση ολοκληρωθει. Η ιδιο τητα MODE του δακτυ λου θα ε χει τη τιμη 5 (Trapezoidal) για ο σο διαρκει η κι νηση, ενω στη συνε χεια θα πε σει στο 3 (Position) η στο 0 (Idle), ο ταν η κι νηση ολοκληρωθει. Εα ν η ιδιο τητα HOLD ε χει τιμη ι ση με 1, το τε η MODE θα μειωθει απο 5 σε 3 και το δα κτυλο μετα το τε λος της κι νησης θα κρατη σει τη θε ση του. Εα ν HOLD=0, το τε η MODE θα πε σει απο 5 σε 0 και ο κινητη ρας θα μπορει να κινει ται ελευ θερα μετα το τε λος της κι νησης. Αυτο ισχυ ει για την α ρθρωση του spread. Για τις εσωτερικε ς αρθρω σεις των δακτυ λων, ανεξαρτη τως της τιμη ς της HOLD τα δα κτυλα θα κρατη σουν την θε ση τους, ο πως ειπω θηκε και προηγουμε νως. 3.2 Κινηματικό Μοντέλο Σε αυτη ν την ενο τητα θα παρουσιαστει η κινηματικη ανα λυση που διε πει τα δα - κτυλα του BarrettHand Ευθεία κινηματική ανάλυση Στην ευθει α κινηματικη ανα λυση υπολογι ζεται η θε ση και ο προσανατολισμο ς της α κρης ενο ς δακτυ λου του BarrettHand ως προς το αδρανειακο πλαι σιο που τοποθετει ται στο κε ντρο της παλα μης του χεριου, συναρτη σει των μεταβλητω ν των αρθρω σεων. Ουσιαστικα ε χουμε 4 αρθρω σεις, α ρα 4 πλαι σια που αντιστοιχου με σε αυτε ς. Όπως φαινεται και στο Σχη μα 3.6, τοποθετει ται το αδρανειακο πλα ισιο της βα σης W (η 0) στο κε ντρο της παλα μης του χεριου. Η πρω τη α ρθρωση αποτελει ται απο την α ρθρωση του spread, η δευ τερη ει ναι η εσωτερικη α ρθρωση του δακτυ λου, η τρι τη η εξωτερικη α ρ- θρωση (η οποι α δεν οδηγειται απο κινητη ρα) και, τε λος, η τε ταρτη η νοητη α ρθρωση του α κρου του δακτυ λου. Τα πλαι σια τοποθετου νται συ μφωνα με την Denavit-Hartenberg τροποποιημε νη με -\n45 3.2. Κινηματικό Μοντέλο 33 Παράμετρος A w A 1 A 2 A 3 D w D 3 Φ 2 Φ 3 Τιμή 25 mm 50 mm 70 mm 50 mm 84 mm 9,5 mm 0 o με 0,4 o 42 o Πι νακας 3.1: Οι φυσικε ς παρα μετροι του BarrettHand Άρθρωση i a i 1 α i 1 d i θ i 1 ra w 0 D w rθ k1 (π/2)j 2 A 1 π/2 0 Θ k2 + Φ 2 3 A Θ k2 + Φ 3 4 A 3 π/2 D 3 0 Πι νακας 3.2: Οι παρα μετροι D-H για το BarrettHand Δάκτυλο k r j Πι νακας 3.3: Οι τιμε ς των r, j για τα 3 δα κτυλα θοδο Craig [3, p. 59]. Οι παρα μετροι της συ μβασης που θα χρησιμοποιη σουμε ει ναι οι εξη ς: a i : Το μη κος της κοινη ς καθε του μεταξυ των αξο νων z i και z i+1. α i : Η γωνι α κα μψης του συνδε σμου i. d i : Η απομα κρυνση του συνδε σμου i. θ i : Η γωνι α α ρθρωσης του συνδε σμου μεταξυ των συνδε σμων i-1, i. Οι αποστα σεις και τα φυσικα χαρακτηριστικα του χεριου, ο πως φαι νονται στο Σχη μα 3.6 δι νονται στο πι νακα 3.1. Επι σης, οι παρα μετροι D-H δι νονται του BarrettHand δι νονται στους Πι νακες 3.2 και 3.3.\n46 34 Κεφάλαιο 3. To ρομποτικό χέρι BarrettHand Ο ομογενη ς μετασχηματισμο ς που συνδε ει δυ ο γειτονικου ς συνδε σμους δι νεται απο τη σχε ση [3, p. 65]: c θi s θi 0 a i 1 s g i 1,i = θi c αi 1 c θi c αi 1 s αi 1 s αi 1 d i s θi s αi 1 c θi s αi 1 c αi 1 c αi 1 d i Οι γωνι ες α i 1 ει ναι σταθερε ς και ανεξα ρτητες απο τις μεταβλητε ς των αρθρω σεων, οπο τε και με βα ση το Πι νακα 3.2 μπορου με να απλοποιη σουμε τους ομογενη ς μετασχηματισμου ς των αρθρω σεων αναλο γως τη τιμη της γωνι ας. Για παρα δειγμα, για την α ρ- θρωση 1 ισχυ ει α i 1 = 0 α ρα και s α1 = 0 και c α1 = 1. Επι σης, καθω ς με σα στο πι νακα θα υπα ρχουν μο νο οι μεταβλητε ς θ i μπορου με να θεωρη σουμε την συ μβαση c 1 = c θ1, c 12 = c θ1 +θ 2 κοκ. Οπο τε για τις δυ ο πρω τες αρθρω σεις ε χουμε: c 1 s 1 0 a 0 s g 01 = 1 c d c 2 s 2 0 a g 12 = s 2 c Άρα: c 1 c 2 c 1 s 2 s 1 a 1 c 1 + a 0 s g 02 = g 01 g 12 = 1 c 2 s 1 s 2 c 1 a 1 s 1 s 2 c 2 0 d\n47 3.2. Κινηματικό Μοντέλο 35 Για την τρι τη α ρθρωση ε χουμε: c 3 s 3 0 a 2 s g 23 = 3 c Άρα: c 1 c 23 c 1 s 23 s 1 a 2 c 1 c 2 + a 1 c 1 + a 0 s g 03 = g 02 g 23 = 1 c 23 s 1 s 23 c 1 a 2 c 1 c 2 + a 1 s 1 s 23 c 23 0 a 2 s 2 + d Τε λος μπορου με να βρου με το συνολικο μετασχηματισμο ανα μεσα στο πλαι σιο του α κρου και της παλα μης: a d g 34 = c 1 c 23 s 1 c 1 s 23 a 3 c 1 c 23 d 4 c 1 s 23 + a 2 c 1 c 2 + a 1 c 1 + a 0 s g 04 = g 03 g 34 = 1 c 23 c 1 s 1 s 23 a 3 s 1 c 23 d 4 s 1 s 23 + a 2 s 1 c 2 + a 1 s 1 s c 2 3 a 3 s 23 + d 4 c 23 + a 2 s 2 + d Αντίστροφη κινηματική ανάλυση Εα ν τω ρα θε λουμε η α κρη ενο ς δακτυ λου να βρι σκεται στην επιθυμητη θε ση (p x, p y, p z ) ως προς το αδρανειακο πλαι σιο της βα σης, το τε οι μεταβλητε ς των αρθρω σεων μπορου ν να υπολογιστου ν λαμβα νοντας υπο ψιν τα γεωμετρικα χαρακτηριστικα του δακτυ λου. Τα δα κτυλα 1 και 2 μπορου ν να κινηθου ν με την 1η α ρθρωση του spread, ενω το τρι το ο χι. Οπο τε αφου το spread κινει τα δα κτυλα σε ε να επι πεδο xy μπορου με να που με ο τι ισχυ ει: arctan(y/x) για τα δάκτυλα 1,2 θ 1 = 0 για το δάκτυλο 3\n48 36 Κεφάλαιο 3. To ρομποτικό χέρι BarrettHand Σχη μα 3.6: Κινηματικη ανα λυση BarrettHand Επι σης, αν λα βουμε υπο ψιν μας ο τι οι δυ ο επο μενες αρθρω σεις του δακτυ λου κινου ν το δα κτυλο σε ε να επι πεδο ο πως φαι νεται στο Σχη μα 3.7 το τε μπορου με να χρησιμοποιη σουμε τον νο μο των συνημιτο των στο τρι γωνο BCD και να βγα λουμε την επο μενη σχε ση : θ 3 = arccos ( p 2 x + p 2 y a 1 ) 2 + p 2 z a 2 2 a2 3 2a 2 a 3 Την μεταβλητη της δευ τερης α ρθρωσης μπορου με να τη βρου με απο την διαφορα των γωνιω ν α και β (Βλ. Σχη μα 3.7): ( ) θ 2 = α β = arctan p z a3 s 3 arctan p 2 x + p 2 y a a 2 + a 3 c 3 1 Τε λος θα πρε πει να τονιστει ο τι ο υποχω ρος επιτρεπτω ν λυ σεων ει ναι αυτο ς που ικανοποιει τη σχε ση:\n49 3.3. Το πρωτόκολλο επικοινωνίας 37 θ 3 = Φ 3 + ( ) 1 ( π ) θ 2 = o 40 o + ( ) 1 θ 2 3 Σχη μα 3.7: Η γεωμετρι α του δακτυ λου του BarrettHand 3.3 Το πρωτόκολλο επικοινωνίας To BarrettHand χρησιμοποποιει σαν πρωτο κολλο επικοινωνι ας το CAN με κα ποιες τροποποιη σεις. Οι τροποποι ησεις που ε χουν υλοποιηθει στους CAN controllers σε κα θε κο μβο του ρομπο τ αφορου ν την κωδικοποιη ση της πληροφορι ας που αντιλαμβα νεται το ρομπο τ με σα σε ενα απλο μη νυμα CAN. Η γνω ση αυτω ν των τροποποιη σεων αρκου ν για να γρα ψει κα ποιος μια εφαρμογη ελε γχου του ρομπο τ. Αρχικα το BarrettHand μπορει να δουλε υει σε ε ναν δι αυλο CAN με ταχυ τητα 1ΜΒaud, 8 TQ/bit, σημει ο δειγματοληψι ας στο Το μήνυμα CAN στο BarrettHand Όπως προαναφε ρθηκε το BarrettHand ανταλλα σει απλα μηνυ ματα CAN στο χαμηλο επι πεδο. Στο μεσαι ο επι πεδο, ο μως, τα μηνυ ματα αυτα αποκωδικοποιου νται απο το κα θε κο μβο ω στε να αντλη σουν την πληροφορι α που χρεια ζονται. Έτσι, δια φορα bits με σα στο μη νυμα ε χουν μι α συγκεκριμε νη ερμηνει α για το ρομπο τ, διαφορετικη απο α λλες συσκευε ς CAN.\n50 38 Κεφάλαιο 3. To ρομποτικό χέρι BarrettHand ID Group 0 Όλοι οι ενεργοποιητε ς 3 Position Feedback (P) 5 Όλο το BarrettHand (κο μβοι 11-14) 6 Property feedback (non-position) 7 Secondary encoder feedback (JP) 8 Tactile Top 10 data 9 Tactile Full Data 10 F/T Sensor, force data 11 F/T Sensor, torque data Πι νακας 3.4: Τα ID που αντιστοιχου ν σε δια φορα group messages ID Κόμβος 0 PC 11 Finger 1 12 Finger 2 13 Finger 3 14 Spread Πι νακας 3.5: Τα ID που αντιστοιχου ν στους κο μβους του χεριου O Message Identifier Στο Σχη μα 3.8 φαι νεται η μορφη του MsgID στο πρωτο κολλο που ακολουθει το χε ρι. Αφου το BarrettHand χρησιμοποιει standard CAN ο message identi ier (MsgID) θα αποτελει ται απο 11 bits. Tο πρω το bit του MsgID ει ναι μι α σημαι α που δηλω νει αν το μη νυμα ε χει πολλου ς αποδε κτες (group message), η μο νο ε ναν. Τα επο μενα 5 bit αποτελου ν το ID του αποστολε α (πεδι ο FROM), ενω τα επο μενα 5 το πεδι ο του παραλη πτη (πεδι ο ΤΟ). Τα πεδι α FROM και TO μπορου ν να πα ρουν μι α απο τις τιμε ς 0, 11, 12, 13, 14. Μηδενικο ID ε χει ο υπολογιστη ς ελε γχου (control PC), ενω ε χουν τα δα κτυλα 1-3 και 14 το spread. Εα ν η σημαι α πολλαπλω ν αποδεκτω ν ει ναι στο λογικο ε να, το τε το πεδι ο TO θεωρει ται group ID και ερμηνευ εται με βα ση το Πι νακα 3.4. Στον πι νακα αυτο φαι νονται group IDs τα οποι α αφορου ν κυρι ως τον βραχι ονα της Barrett και ο χι το BarrettHand. Το group ID που ει ναι χρη σιμο για το χε ρι ει ναι το 5 και αφορα ο λα τα δα κτυλα μαζι. Εα ν ο μως το Group ID ει ναι μηδε ν το τε το πεδι ο του παραλη πτη θα ερμηνευτει με βα ση το Πι νακα 3.5. Αριθμοι που δεν υπα ρχουν στον Πι νακα 3.5 (απο 1 ε ως 10) αφορου ν τους κο μβους (αρθρω σεις/αισθητη ρες κλπ) του βραχι ονα WAM.\n51 3.3. Το πρωτόκολλο επικοινωνίας Group From (Αποστολε ας) To (Παραλη πτης) Σχη μα 3.8: O MsgID στο πρωτο κολλο του BarrettHand. Με μπλε φαι νεται η περιγραφη των bits, με πρα σινο o αριθμο ς των bits του κα θε πεδι ου, ενω με γκρι ε να παρα δειγμα τιμω ν του MsgID Το πεδίο δεδομένων Σε ε να τυπικο μη νυμα CAN το πεδι ο δεδομε νων αποτελει ται απο το με γιστο των 8 bytes. Στο πρωτο κολλο της Barrett ε χουμε απο 4-6 bytes. H βασικη λογικη των 6 bytes δεδομε νων φαι νεται στο Σχη μα 3.9. Bits Περιγραφη Request Property Μηδενικο byte Low Byte of Data value Mid-Low Byte of Data value Mid-High Byte of Data value High Byte of Data value Bytes 1o 2o 3o 4o 5o 6o Σχη μα 3.9: To πεδι ο των δεδομε νων σε μι α αποστολη αι τησης To πρω το byte περιε χει την πληροφορι α σχετικα με το αν ζητει ται η ανα γνωση κα - ποιας ιδιο τητας (get property) η η εγγραφη /ανανε ωση της (set property), καθω ς και το ποια ιδιο τητα ει ναι αυτη. Για R=0 ε χουμε μι α get property εντολη, ενω για R=1 μι α set property εντολη. Στο πεδι ο Ρ των 7-bit υπα ρχει το ID της ιδιο τητας. Πι νακες με την αντιστοι χιση των ιδιοτη των σε IDs παρε χει η Barrett. To δευ τερο byte του πεδι ου ει ναι πα ντα μηδε ν, ενω τα υπο λοιπα περιε χουν την τιμη της ιδιο τητας. Εα ν η ιδιο τητα ει ναι των 32-bit χρησιμοποιου νται 4 byte, ενω εα ν ει ναι των 16-bit χρησιμοποιου νται 2 byte για εξοικονο μιση χω ρου. Η πλειοψηφι α των ιδιοτη των ει ναι των 16-bit, αλλα υπα ρχουν περιπτω σεις ο που χρεια ζεται να μεταφερθου ν τιμε ς μεγαλυ τερες απο , ο πως τη θε ση ενο ς δακτυ λου, ο που μετρη σεις του οπτικου κωδικοποιητη φτα νουν τις Θα πρε πει να δοθει ιδιαι τερη προσοχη στη\n52 40 Κεφάλαιο 3. To ρομποτικό χέρι BarrettHand σειρα με την οποι α μεταδι δονται τα bytes. Πρω τα ε χουμε το λιγο τερο σημαντικο byte του αριθμου, ενω προς το τε λος το περισσο τερο σημαντικο byte. Την παραπα νω λογικη ακολουθου ν κα τα μηνυ ματα που επιστρε φουν απο το χε ρι σαν απα ντηση. Σε αυτο το κανο να υπα ρχουν, ο μως, εξαιρε σεις. Οι εξαιρε σεις αφορου ν την πακεταρισμε νη ανα δραση θε σης σε ε να μη νυμα CAN (packed position feedback). Έτσι ο ταν ζητηθει η ιδιο τητα P η η ιδιο τητα JP, το BarrettHand θα στει λει ε να μη νυμα με δεδομε να των 22-bit και με διαφορετικη σειρα των bytes απο αυτη που αναφε ρθηκε προηγουμε νως, ο πως φαι νεται στο Σχη μα Δηλαδη, το πρω το byte θα ξεκινα ει με τα δυ ο πρω τα bits ι σα με 1 και 0 και στη συνε χεια τα υπο λοιπα 22 bits των 3 bytes θα περιε χουν τη τιμη της θε σης (ει τε τη P, ει τε τη JP, αναλο γως ποια ζητη θηκε), με το περισσο τερο σημαντικο byte πρω το. Στη περι πτωση που το δα κτυλο ε χει και τους δυ ο οπτικου ς κωδικοποιητε ς (και αυτο ν του κινητη ρα και τον δευτερευ οντα), ο πως και συμβαι νει στο μοντε λο 282, το τε η αι τηση της ιδιο τητας P θα ε χει ως απα ντηση ε να μη νυμα CAN που περιε χει την τιμη και της ιδιο τητας P και της JP στο ι διο μη νυμα (dual packed position feedback) ακολουθω ντας την ι δια λογικη. Κα τι εξαιρετικα χρη σιμο απο πλευρα ς αξιοποι ησης του ευ ρους ζω νης του διαυ λου καθω ς ο ελεγκτη ς μπορει να ζητη σει και να λα βει και τις δυ ο τιμε ς την ι δια φορα, χωρι ς να φορτω νει το δι αυλο με επιπλε ον αιτη σεις. Σε αυτη τη περι πτωση ε χουμε δυο τιμε ς των 22-bit. Η πρω τη ει ναι η τιμη της P και η δευ τερη η τιμη της JP. Στο Σχη μα 3.11 φαι νεται η μορφη των δεδομε νων ενο ς τε τοιου μηνυ ματος. High Byte of Data (10 + Data) Mid Byte of Data Low Byte of Data Σχη μα 3.10: To πεδι ο των δεδομε νων σε ε να μη νυμα απα ντησης σε αι τηση P/JP ο ταν δεν υπα ρχει δευτερευ ον οπτικο ς κωδικοποιητη ς Χρόνοι απόκρισης Όπως ειπω θηκε και προηγουμε νως, ο δι αυλος CAN τρε χει στo 1 Mbps, το οποι ο και αποτελει την με γιστη ταχυ τητα ο πως ορι ζεται απο το προ τυπο. Αυτο σημαι νει ο τι το hardware που ε χει σχεδιαστει να λαμβα νει μηνυ ματα CAN δεν μπορει να λα βει μηνυ -\n53 3.3. Το πρωτόκολλο επικοινωνίας 41 High Byte of P (10 + Data) Mid Data of P Low Byte of P High Byte of JP (10 + Data) Mid Data of JP Low Byte of JP Σχη μα 3.11: To πεδι ο των δεδομε νων σε ε να μη νυμα απα ντησης σε αι τηση P ο ταν υπα ρ- χει δευτερευ ον οπτικο ς κωδικοποιητη ς ματα σε μεγαλυ τερη συχνο τητα. Επομε νως, ο χρο νος που χρεια ζεται για να μεταδοθει ε να bit ει ναι 1μs. Όπως αναπτυ χθηκε στο Κεφα λαιο 2, ε να πλαι σιο CAN αποτελει ται απο τουλα χιστον 44 bits. Επι σης, υπα ρχουν α λλα 3 bits εκτο ς του πλαισι ου που το ακολουθου ν διαχωρι ζοντα ς το απο το επο μενο. Οπο τε θεωρου με ο τι ε να πλαι σιο αποτελει ται απο τουλα - χιστον 47 bits, εα ν δεν υπα ρχουν δεδομε να που μεταφε ρει. Το πεδι ο των δεδομε νων μπορει να ει ναι απο 0-8 bytes (0-64 bits), αναλο γως το μη νυμα. Η ταχυ τητα με την οποι α ο υπολογιστη ς ελε γχου (control PC) μπορει να επεξεργαστει μηνυ ματα CAN εξαρτα ται απο την συσκευ η επικοινωνι ας και το λειτουργικο συ - στημα το οποι ο τρε χει. Η παρακα τω ανα λυση θεωρει ο τι χρησιμοποιει ται ε να λειτουργικο συ στημα πραγματικου χρο νου (Βλ. Κεφα λαιο 6) και μι α συσκευη επικοινωνι ας που υποστηρι ζεται απο ε να λειτουργικο πραγματικου χρο νου. Η κα ρτα PCAN-PCI υποστηρι ζεται, ενω ο αντα πτορας PCAN-USB ο χι, καθω ς και προσθε τει μι α καθυστε ρηση περι του 1ms στην επικοινωνι α. Ήδη στην Υποενο τητα ε γινε αναφορα στις επιπλε ον καθυστε ρησεις που μπορει να προκυ ψουν κατα τη δια δοση του ση ματος (propagation delays). Λαμβα νοντας υπο ψιν αυτε ς τις καθυ στερησεις και το γεγονο ς ο τι οι περισσο τερες ιδιο τητες ει ναι των 3 bytes (24 bits), συμπεραι νεται ο τι η μετα δοση ενο ς τε τοιου μηνυ ματος διαρκει καθυστερήσεις = 71µs + 4µs = 75µs. Έτσι, η αι τηση για την ανα γνωση μι ας ιδιο τητας (get property) χρεια ζεται περι που 75μs και περι που τον ι διο χρο νο για να ληφθει απο τον υπολογιστη ελε γχου η απα ντηση. Εξαι ρεση, αποτελει η απα ντηση σε αι τηση της ιδιο τητας θε σης (P), ο ταν υπα ρχει δευτερευ ων οπτικο ς κωδικοποιητη ς, ο που το μη νυμα θα περι εχει και την τιμη του P και του JP, και χρεια ζεται περι που 125μs. Για παρα δειγμα ε νας βρο γχος ελε γχου για τον ε λεγχο θε σης του δακτυ λου θα περι-\n54 42 Κεφάλαιο 3. To ρομποτικό χέρι BarrettHand λαμβα νει: Αποστολη ενο ς μηνυ ματος CAN απο το PC προς το δα κτυλο για ανα γνωση θε σης - get property P - Xρο νος: 75μs. Αποστολη ενο ς μηνυ ματος CAN απο το δα κτυλο προς το PC με τις θε σεις P, JP - Xρο νος: 125μs. Αποστολη ενο ς μηνυ ματος CAN απο το PC προς το δα κτυλο για ανα γνωση αισθητη ρα ροπη ς - get property SG - Xρο νος: 75μs. Αποστολη ενο ς μηνυ ματος CAN απο το δα κτυλο προς το PC με τη ροπη SG - Xρο - νος: 75μs. Επεξεργασι α απο το PC - Χρο νος: 10μs. Αποστολη ενο ς μηνυ ματος CAN απο το PC προς το δα κτυλο με τη νε α θε ση P set property P - Xρο νος: 75μs. Οπο τε, η συνολική διάρκεια του βρόγχου ελέγχου και για τα 3 δάκτυλα θα είναι 1,305 ms. Η με γιστη συχνο τητα ελε γχου θα ει ναι 766Hz, ενω προτει νεται να πε σει στα 600Hz, ω στε να εξοικονομηθει ευ ρος ζω νης για τυχο ν επαναποστολε ς μηνυμα των λο γω θορυ βου, η καθυστερη σεις διακοπω ν (IRQ latencies) του λειτουργικου συστη ματος Παραδείγματα Σε αυτη ν την ενο τητα θα παρουσιαστου ν παραδει γματα μηνυμα των στο CAN που μπορει να κυκλοφορου ν στον δι αυλο σε μια επικοινωνι α με το ρομπο τ. MSGID= , DLC=0100, D0= , D1= , D2= , D3= Μη νυμα απο το PC προς το κο μβο 12 (δα κτυλο 2) ω στε να γραφτει (set property επειδη το 1ο bit του D0 ει ναι 1) η ιδιο τητα 29 (CMD) σε τιμη 18 (CMD_CLOSE). Με λι γα λο για θα κλει σει το δα κτυλο 2.\n55 3.3. Το πρωτόκολλο επικοινωνίας 43 MSGID= , DLC=0100, D0= , D1= , D2= , D3= Μη νυμα απο το PC προς το κο μβο 13 (δα κτυλο 3) ω στε να γραφτει η ιδιο τητα 29 (CMD) σε τιμη 20 (CMD_OPEN). Με λι γα λο για θα ανοι ξει το δα κτυλο 3. MSGID= , DLC=0100, D0= , D1= , D2= , D3= Μη νυμα απο το PC προς το κο μβο 11 (δα κτυλο 1) ω στε να γραφτει η ιδιο τητα 8 (MODE) σε τιμη 5 (TRAPEZOIDAL). Το δα κτυλο 1 θα μπει σε mode τραπεζοειδου ς κι νησης. MSGID= , DLC=0001, D0= Μη νυμα απο το PC προς το κο μβο 11 (δα κτυλο 1) ω στε να διαβαστει (get property επειδη το 1ο bit του D0 ει ναι 0) η ιδιο τητα 8 (MODE). Ζητα με να μα θουμε σε τι mode βρι σκεται το δα κτυλο 1. Στη συνε χεια, ο δι αυλος θα μεταδι δει ε να μη νυμα CAN που στο πεδι ο δεδομε νων θα ε χει τη τιμη 0-5, αναλο γως το mode, και συ μφωνα με τις αρχε ς που περιγρα φηκαν σε προηγου μενες ενο τητες. MSGID= , DLC=0100, D0= , D1= , D2= , D3= Μη νυμα απο το κο μβο 11 (δα κτυλο 1) προς το κο μβο 0 (PC) που περιε χει τη τιμη 5 ως απα ντηση στην προηγου μενη αι τηση του mode λειτουργι ας. MSGID= , DLC=0001, D0= Μη νυμα απο το PC προς το κο μβο 12 (δα κτυλο 2) ω στε να διαβαστει η ιδιο τητα 25 (SG). Ζητα με να μα θουμε ποια η τιμη του αισθητη ρα ροπη ς του δακτυ λου 2. Στη συνε χεια, ο δι αυλος θα μεταδι δει ε να μη νυμα CAN που στο πεδι ο δεδομε νων θα ε χει τη τιμη , αναλο γως τη ροπη που ασκει ται στο χε ρι, και συ μφωνα με τις αρχε ς που περιγρα φηκαν σε προηγου μενες ενο τητες. MSGID= , DLC=0100, D0= , D1= , D2= , D3= Μη νυμα απο το κο μβο 12 (δα κτυλο 12) προς το κο μβο 0 (PC) που περιε χει τη\n56 44 Κεφάλαιο 3. To ρομποτικό χέρι BarrettHand τιμη 2501 ως απα ντηση στην προηγου μενη αι τηση της τιμη ς του αισθητη ρα ροπη ς (SG). MSGID= , DLC=0001, D0= Μη νυμα απο το PC προς το κο μβο 12 (δα κτυλο 2) ω στε να διαβαστει η ιδιο τητα 48 (P). Ζητει ται η θε ση του του δακτυ λου 2. Σαν απα ντηση θα ληφθει μη νυμα που θα περιε χει και την τιμη του P και τη τιμη του JP. MSGID= , DLC=0100, D0= , D1= , D2= , D3= Μη νυμα απα ντηση στη προηγου μενη αι τηση, απο το κο μβο 12 (δα κτυλο 12) προς το κο μβο 0 (PC) που περιε χει τις τιμε ς για το P και του JP σαν dual packed position feedback Hardware και Software Hardware Για την επικοινωνι α με τον ηλεκτρονικο υπολογιστη το BarrettHand πρε πει να χρησιμοποιη σει κα ποιον προσαρμογε α (adapter) απο CAN σε κα ποια τεχνολογι α επικοινωνι ας συμβατη με ε να συ γχρονο υπολογιστη. Η Barrett προσφε ρει τον PCAN-USB adapter της PEAK System, για επικοινωνι α με σω USB θυ ρας, ενω ει ναι δυνατη και η χρη ση του PCAN-PCI adapter. Ο αντα πτορας PCAN-USB εισα γει μι α καθυστε ρηση στην επικοινωνι α περι που 1ms, ενω δεν αποτελει και συσκευη που υποστηρι ζεται σε λειτουργικα συστη ματα πραγματικου χρο νου. Παρο λα αυτα, για τις περισσο τερες εφαρμογε ς ει ναι επαρκη ς. Αντι θετα η PCAN-PCI κα ρτα επιτρε πει την real-time επικοινωνι α με το ρομπο τ Χρήση του BarrettHand σε Windows Σχετικα με το λογισμικο, χρεια ζονται οι βασικοι drivers των συσκευω ν της Peak- Systems και εφαρμογε ς υψηλο τερου επιπε δου που υλοποιου ν τον interface με το ρομπο τ. Η Barrett παρε χει το λογισμικο pyhand, που ει ναι γραμμε νο σε Python και μπορει να τρε ξει κα τω απο Windows. Το pyhand ε χει περιορισμε νες δυνατο τητες στο γραφικο περιβα λλον, αλλα αρκετε ς δυνατο τητες εα ν ο χρη στης γρα ψει δικα του python scripts.\n57 3.3. Το πρωτόκολλο επικοινωνίας 45 Όσον αφορα το γραφικο περιβα λλον του pyhand (GUI) η λειτουργικο τητα του περιορι ζεται σε demo επιδει ξεις, γραφικε ς απεικονι σεις των τιμω ν των αισθητη ρων και στοιχειω δης ε λεγχος θε σης κα θε δακτυ λου με το ποντι κι. Το API του pyhand προσφε ρει συναρτη σεις για την επικοινωνι α με το χε ρι, ω στε ο χρη στης να μπορει να τις χρησιμοποιη σει σε δικα του προγρα μματα (scripts). Ένα αρνητικο του pyhand ει ναι ο τι ο κω δικας ε χει γραφτει για χρη ση με το αντα πτορα PCAN- USB και περιλαμβα νει αρκετε ς καθυστερη σεις κατα την επικοινωνι α. Συγκεκριμε να ε χει μετρηθει ο τι για να σταλει ε να μη νυμα στο ρομπο τ (πχ μια set property εντολη ) χρεια - ζεται τουλα χιστον 5ms, για να υπα ρχει ευρωστι α. Εα ν ο χρη στης βια σει το συ στημα και αυξη σει τη συχνο τητα επικοινωνι ας τροποποιω ντας το κω δικα, μπορει να βρεθει αντιμε τωπος με σφα λματα, ο πως το να διαβα ζει το δι αυλο πολυ νωρι τερα απο ο τι πρε πει Χρήση του BarrettHand σε Linux Η χρη ση του BarrettHand σε συνδυασμο με κα ποια διανομη Linux σαν λειτουργικο συ στημα του υπολογιστη ελε γχου, απαιτει ται εα ν ο χρη στης θε λει να ελε γξει το χε ρι σαν με ρος ενο ς μεγαλυ τερου ρομποτικου συστη ματος, με σω ROS. Tο ROS ε χει σχεδιαστει για να δουλευ ει βε λτιστα κα τω απο ε ναν πυρη να Linux (Linux kernel) και η χρη ση του καθι σταται επιτακτικη, απο τη στιγμη που ε χει καθιερωθει α τυπα σαν ε να ει δους standard. Η Barrett παρε χει μι α βιβλιοθη κη σε C++, την libbarrett, η οποι α τρε χει σε Linux. Ένα αρνητικο με την βιβλιοθη κη η ταν ο τι ε χει σχεδιαστει για χρη ση του BarrettHand σε συνδυασμο με το WAM (τον βραχι ονα που αποτελει προι ο ν της Barrett) και μειωμε νες δυνατο τητες για την χρη ση του χεριου μο νο του. Η προσπα θεια τροποποι ησης του κω δικα της libbarrett δημιου ργησε επιπλε ον επιπλοκε ς στην ορθη και ασφαλη λειτουργι α του κω δικα, λο γω ε λλειψης πλη ρους κατανο ηση ς του. Ακο μη, ε νας driver για χρη ση με σω ROS, ει ναι ο OWD (Open WAM Driver), λογισμικο ανοικτου κω δικα που σχεδια στηκε απο το Carnegie Mellon University. Το συγκεκριμε νο λογισμικο δοκιμα στηκε στα πλαι σια της παρου σας εργασι ας με χρις ενο ς σημει ου ο που τα προβλη ματα που δημιουργου σε η ταν μεγαλυ τερα απο αυτα που ε λυνε. Η παλαιο τητα του λογισμικου και η εξειδι κευση στις ανα γκες του παραπα νω πανεπιστημι ου και οι ασυμβατο τητες που προε κυψαν κατε στησαν την τροποποι ηση του κω δικα προβλη-\n58 46 Κεφάλαιο 3. To ρομποτικό χέρι BarrettHand ματικη. Για τους παραπα νω τεχνικου ς λο γους προτιμη θηκε η συγγραφη απο το μηδε ν ενο ς driver, του BAD.\n59 4 BAD και έλεγχος του BarrettHand μέσω ROS Η ορθη σχεδι αση ενο ς ρομποτικου συστη ματος βραχι ονα-χεριου, απαιτει επιδεξιο τητα και λειτουργικο τητα παρο μοια με αυτη του ανθρω πινου χεριου. Έτσι, ε να ρομποτικο χε ρι που θα χρησιμοποιει ται σε περιβα λλον που ε χει σχεδιαστει για τον α νθρωπο (πχ ε να νοικοκυριο ), θα πρε πει να ει ναι σε θε ση να συλλαμβα νει αντικει μενα ποικι λης ακαμψι ας (stiffness), προσαρμο ζοντας την συμπεριφορα του κατα περι σταση. Επι σης, θα πρε πει η αλληλεπι δραση του με τον α νθρωπο να ε χει μια φυσικη ροη. Αυτο σημαι νει, ο τι μι α απλη εργασι α ο πως η μεταφορα ενο ς ποτηριου με νερο απο το τραπε ζι στον α νθρωπο θα πρε πει να γι νεται εντελω ς φυσικα, απελευθερω νοντας το ποτη ρι ο ταν ο α νθρωπος το πια σει, χωρι ς να χρεια ζεται περαιτε ρω εντολε ς και προσπα θεια απο τον χρη στη. Ο στοιχειω δης ε λεγχος του ρομποτικου χεριου με σω ROS ει ναι πρου πο θεση για να λειτουργη σει το BarrettHand με σα σε ε να ολοκληρωμε νο ρομποτικο συ στημα. Ένα ολοκληρωμε νο συ στημα θα περιλαμβα νει το BarrettHand, τον ρομποτικο βραχι ονα KUKA LWR4+, αισθητη ρες ο ρασης κ.α. Όλα αυτα τα υποσυστη ματα θα πρε πει να συντονι ζουν την λειτουργι α τους για την επι τευξη κα ποιου σκοπου με πλατφο ρμα κοινη ς διεπαφη ς το ROS. Για το σκοπο αυτο η ταν επιτακτικη η ανα γκη ανα πτυξης μι ας απλη ς εφαρμογη ς που θα οδηγει το χε ρι κα τω απο το λειτουργικο συ στημα Linux και θα μπορει να\n60 48 Κεφάλαιο 4. BAD και έλεγχος του BarrettHand μέσω ROS χρησιμοποιηθει σε συνδυασμο με το ROS. 4.1 To λογισμικό BAD To λογισμικο BAD (BarrettHand AUTh Driver) ει ναι λογισμικο ανοικτου κω δικα, γραμμε νο σε C++, που σχεδια στηκε για τους σκοπου ς της παρου σας διπλωματικη ς. Αποτελει την διεπαφη (API) μεταξυ του irmware του χεριου και μι ας διανομη ς Linux. Η συνολικη επικοινωνι α με το χε ρι αποτελει ται απο πε ντε επι πεδα, ο πως φαι νεται και στο Σχη μα 4.1. Στην ενο τητα αυτη θα περιγραφου ν οι βασικε ς λειτουργι ες του BAD συνοπτικα. Για καλυ τερη κατανο ηση της λειτουργι ας του, ο αναγνω στης μπορει να αναφερθει στον εμπλουτισμε νο με σχο λια κω δικα. Τα παρακα τω επι πεδα υλοποιου νται απο κλα σεις με εξαι ρεση την κλα ση kinematics η οποι α υλοποιει το κινηματικο μοντε λο ο πως περιγρα φηκε σε προηγου μενο κεφα λαιο και δεν αποτελει λογικο επι πεδο του BAD. O πηγαι ος κω δικας του BAD επισυνα πτεται με το παρο ν, ενω μπορει να βρεθει και στο github repository: 5. Higher Level BAD functions 4. BarrettHand Protocol 3. CAN bus Implementation 2. PCAN-Basic 1. Peak Linux Driver Σχη μα 4.1: Τα επι πεδα της επικοινωνι ας με το χε ρι Peak Linux Driver Όπως αναφε ρθηκε και προηγουμε νως το χε ρι μπορει να χρησιμοποιη σει τους αντα - πτορες της PEAK-Systems για να επικοινωνη σει με ε ναν ηλεκτρονικο υπολογιστη, ει τε PCAN-USB, ει τε PCAN-PCI. Ο driver για το συγκεκριμε νο hardware ει ναι η δη υλοποιημε νος και παρε χεται απο την κατασκευα στρια εταιρει α. Ουσιαστικα, υπα ρχουν δυ ο εκδο σεις του driver: ο CharDev και ο NetDev. Ο CharDev ουσιαστικα βασι ζεται σε επικοινωνι α με σω των character device drivers του πυρη να, ενω ο NetDev ει ναι ε νας driver\n61 4.1. To λογισμικό BAD 49 που βασι ζεται στην αρχιτεκτονικη των network sockets (βλ. και SocketCAN). Για την επικοινωνι α με το χε ρι θα χρησιμοποιηθει ο CharDev driver PCAN-Basic API To PCAN-Basic API αποτελει μι α υλοποιημε νη διεπαφη μεταξυ του Peak Linux driver στο χαμηλο επι πεδο και εφαρμογε ς C++. Ουσιαστικα με σα σε αυτο υλοποιου νται οι λειτουργι ες εγγραφη ς και ανα γνωσης του δι αυλου CAN, καθω ς και συμπληρωματικε ς λειτουργι ες αρχικοποι ησης και επαναφορα ς του δι αυλου Υλοποίηση του διαύλου CAN Σε αυτο το επι πεδο ξεκινα ει η λειτουργικο τητα του BAD. Το επι πεδο αυτο υλοποιει ται απο την κλα ση CANbus και λειτουργει σαν wrapper λογισμικο επεκτει νοντας το PCAN-Basic. Οι βασικε ς λειτουργι ες αρχικοποι ησης, εγγραφη ς και ανα γνωσης απο τον δι αυλο υλοποιου νται στις συναρτη σεις-με λη της κλα σης: CANbus::init(), CANbus:: reset(), CANbus::write() και CANbus::read(), αντιστοι χως. Ο αναγνω στης ι σως αρχικα θεωρη σει ο τι το παρο ν επι πεδο ει ναι πλεοναστικο και δεν προσφε ρει επιπλε ον λειτουργικο τητα. Αυτο ει ναι λανθασμε νο, καθω ς το παρο ν επι πεδο ει ναι αναγκαι ο για την αυ ξηση του βαθμου επεκτασιμο τητας του BAD. Οι συναρτη σεις του παρο ντος επιπε δου παι ρνουν σαν εισο δους ε να γενικευμε νο μη νυμα CAN (το οποι ο αντιπροσωπευ εται απο τη κλα ση CANMessage του BAD) και το περνα νε στις ειδικευμε νες συναρτη σεις του PCAN-Basic. Έτσι υψηλο τερα επι πεδα απλα παρα γουν ε να αντικει μενο CANMessage χωρι ς να τους απασχολει η με θοδος επικοινωνι ας στο χαμηλο επι πεδο. Με αυτο το τρο πο εα ν ο χρη στης επιλε ξει διαφορετικο hardware για την επικοινωνι α (πχ διαφορετικη ς κατασκευα στριας απο την PEAK-Systems) η επιλε ξει για το ι διο hardware να χρησιμοποιη σει διαφορετικου ς drivers απο αυτου ς της PEAK-Systems (ο πως πχ real-time drivers του Xenomai, βλ. Κεφα λαιο 6) μπορει απλα να τροποποιη σει το παρο ν επι πεδο, χωρι ς να αλλα ξει τι ποτα στα ανω τερα επι πεδα. init(): Χρησιμοποιει απλα την συνα ρτηση CAN_Initialize() του PCAN-Basic, κα - νοντας τους απαραι τητους ελε γχους σε περι πτωση σφα λματος, η σε περι πτωση που ο δι αυλος ε χει αρχικοποιηθει η δη.\n62 50 Κεφάλαιο 4. BAD και έλεγχος του BarrettHand μέσω ROS reset(): Χρησιμοποιει απλα την συνα ρτηση CAN_Reset() του PCAN-Basic, κα νοντας τους απαραι τητους ελε γχους σε περι πτωση σφα λματος. O Peak driver παρουσια - ζει προβλη ματα, οπο τε προτιμα ται να χρησιμοποιει ται η init(). write(): Δε χεται ως ο ρισμα ε να αντικει μενο CANMessage (που περιλαμβα νει τον MSGID, το DLC και τα δεδομε να του μηνυ ματος) και εγγρα φουν αυτο το μη νυμα σε ε να αντικει μενο TPCANMsg που χρησιμοποιει το PCAN-Basic. Στη συνε χεια, εγγρα φει στον διαυ λο αυτο το μη νυμα κα νοντας χρη ση της συνα ρτησης CAN_Write() του PCAN-Basic. read(): Χρησιμοποιει τη συνα ρτηση CAN_Read() για να διαβα σει ε να μη νυμα απο το δι αυλο (αντικει μενο TPCANMsg). Στη συνε χεια, μεταγρα φει τα στοιχει α του μηνυ ματος σε ε να αντικει μενο CANMessage και το επιστρε φει Πρωτόκολλο BarrettHand Το επι πεδο αυτο υλοποιει ται απο την κλα ση BHand και χρησιμοποιει τις λειτουργι ες του προηγου μενου επιπε δου, υλοποιω ντας το πρωτο κολλο που χρησιμοποιει το BarrettHand και σε συμφωνι α με ο σα ειπω θηκαν στην Ενο τητα Έτσι σε αυτο το επι πεδο οι βασικο τερες συναρτη σεις που υλοποιου νται ει ναι οι BHand::setProperty(), BHand::getProperty(), BHand::BarrettCANProtocolEncode, BHand::Barrett- CANProtocolDecode, BHand::getDualPackedPosition, BHand::init(), BHand:: initpropvalues(). Παρακα τω εξηγου νται οι βασικε ς αυτε ς λειτουργι ες, οι οποι ες θα ακολουθου νται απο επεξηγηματικο ψευδοκω δικα και ο χι απο τον πηγαι ο κω δικα σε C++ για λο γους αναγνωσιμο τητας και οικονομι ας χω ρου. BarrettCANProtocolEncode(): Η συγκεκριμε νη ρουτι να υλοποιει το πρωτοκο λλο επικοινωνι ας ο ταν θε λουμε να γρα ψουμε ε να μη νυμα στον δι αυλο, κωδικοποιω ντας την απαιτου μενη πληροφορι α για μι α ενε ργεια του BarrettHand σε ε να μη νυμα CAN. Λαμβα νει σαν ει σοδο τον παραλη πτη (ο αποστολε ας ει ναι προφανω ς ο κο μβος 0, δηλαδη το PC), την ιδιο τητα που αναφε ρεται η ενε ργεια, την τιμη σε περι πτωση που θε λουμε να θε σουμε την ιδιο τητα, το αν ο παραλη πτες ει ναι περισσο τεροι απο ε ναν και το αν η ενε ργεια θε λει να θε σει (set) η να διαβα σει μια ιδιο τητα (get). Ενω σαν ε ξοδο\n63 4.1. To λογισμικό BAD 51 μας δι νει το μη νυμα CAN. Η λογικη της υπακου ει στην Ενο τητα και παρουσια ζεται στον Αλγο ριθμο 1. Αλγόριθμος 1 BarrettCANProtocolEncode 1: procedure B CANP E (ID_παραλη πτη, ιδιο τητα, τιμη, παραλη - πτες, set_get) 2: Δημιου ργησε ε να αντικει μενο μηνυ ματος CANMessage 3: Εάν παραλήπτες = πολλοί Τότε 4: CANMessage.MSGID 0x400 OR 0x00 OR ID_παραλήπτη 5: Αλλιώς CANMessage.MSGID ID_παραλήπτη 6: Εάν η ιδιότητα ει ναι των 32-bit Τότε 7: CANMessage.DLC 6 8: Αλλιώς CANMessage.MSGID 4 9: Εάν θε λουμε να θε σουμε μια ιδιο τητα δηλαδη set_get = set Τότε 10: CANMessage.DATA 0x80 OR 11: CANMessage.MSGID 0 12: Εάν η ιδιότητα ει ναι των 32-bit Τότε 13: CANMessage.DATA τιμη AND 0x000000F F 14: CANMessage.DATA τιμη AND 0x0000F F 00 15: ολι σθησε το CANMessage.DATA κατα 1 byte δεξια 16: CANMessage.DATA τιμη AND 0x00F F : ολι σθησε το CANMessage.DATA κατα 2 byte δεξια 18: CANMessage.DATA τιμη AND 0xF F : ολι σθησε το CANMessage.DATA κατα 3 byte δεξια 20: Αλλιώς Δηλαδη αν ε χουμε ιδιο τητα των 16 bit 21: CANMessage.DATA τιμη AND 0x00F F 22: CANMessage.DATA τιμη AND 0xF F 00 23: ολι σθησε το CANMessage.DATA κατα 1 byte δεξια 24: Αλλιώς Δηλαδη αν ε χουμε get property 25: CANMessage.DLC 1 26: CANMessage.DATA ιδιότητα Επέστρεψε το CANMessage BarrettCANProtocolDecode(): Εδω ε χουμε την αντι στροφη διαδικασι α αποκωδικοποι ησης ενο ς μηνυ ματος CAN που διαβα ζουμε απο το δι αυλο σε χρη σιμη πληροφορι α για το ρομποτικο χε ρι. Λαμβα νει σαν ει σοδο ε να μη νυμα CAN και μι α σημαι α που ενημερω νει την ρουτι να για το αν προ κειται να διαβα σουμε κα ποια απο τις εξαιρε σεις της Ενο τητας Η συγκεκριμε νη σημαι α μπορει να πα ρει 3 διακριτε ς τιμε ς. Μι α αν δεν ει ναι packed το μη νυμα που διαβα ζουμε, μι α αν ει ναι packed (πχ ε χει απαιτηθει η ιδιο τητα JP) και μι α αν ε χουμε dual packed μη νυμα (αν υπα ρχει δευ τερος κωδικοποιητη ς, απαιτη θηκε η ιδιο τητα P και αναμε νονται οι τιμε ς P και JP σε ε να μη νυμα).\n64 52 Κεφάλαιο 4. BAD και έλεγχος του BarrettHand μέσω ROS Σαν ε ξοδο επιστρε φει τη τιμη της ιδιο τητας που περιε χει το μη νυμα. Θα πρε πει να τονιστει ο τι επιστρε φει μι α τιμη μο νο, οπο τε στην περι πτωση που το εν λο γω μη νυμα ει ναι dual packed θα πρε πει να χρησιμοποιηθει μι α επιπλε ον ρουτι να. Εα ν ε χουμε σημαι α που να δει χνει packed το τε θα επιστρε φονται προφανω ς τα 3 πρω τα bytes των δεδομε νων (και μοναδικα ) και εα ν δει χνει dual packed θα επιστρε φει μο νο τα 3 τελευται α απο τα 6 bytes (δηλαδη το JP). Οπο τε, για να πα ρουμε και τις δυ ο τιμε ς θα πρε πει να τρε ξουμε δυ ο φορε ς την BarrettCANProtocolDecode() (βλ. παρακα τω). O ψευδοκω δικας της ρουτι νας φαι νεται στον Αλγο ριθμο 2. getdualpackedposition(): H συνα ρτηση αυτη χειρι ζεται την εξαι ρεση της μετα - δοσης dual packed μηνυμα των για ανα δραση θε σης. Όταν δηλαδη ζητει ται η θε ση P το παρο ν μοντε λο του χεριου θα επιστρε ψει σε ε να μη νυμα και την τιμη της P και τη τιμη της JP. Επομε νως, δε χεται σαν ει σοδο το ID του κο μβου που θε λουμε να μα θουμε τη θεση του και επιστρε φει σαν ε ξοδο τις δυ ο αυτε ς τιμε ς, χρησιμοποιω ντας τις προηγου - μενες συναρτη σεις, καθω ς και συναρτη σεις του προηγου μενου επιπε δου (Αλγο ριθμος 3). Σαν ε ξοδο επιστρε φει τη τιμη της ιδιο τητας που περιε χει το μη νυμα. Θα πρε πει να τονιστει ο τι επιστρε φει μι α τιμη μο νο, οπο τε στην περι πτωση που το εν λο γω μη νυμα ει ναι dual packed θα πρε πει να χρησιμοποιηθει μι α επιπλε ον ρουτι να. Εα ν ε χουμε σημαι α που να δει χνει packed το τε θα επιστρε φονται προφανω ς τα 3 πρω τα bytes των δεδομε νων (και μοναδικα ) και εα ν δει χνει dual packed θα επιστρε φει μο νο τα 3 τελευται α απο τα 6 bytes (δηλαδη το JP). Οπο τε, για να πα ρουμε και τις δυ ο τιμε ς θα πρε πει να τρε ξουμε δυ ο φορε ς την BarrettCANProtocolDecode() (βλ. παρακα τω). O ψευδοκω δικας της ρουτι νας φαι νεται στον Αλγο ριθμο 2. setproperty(): Χρησιμοποιει ται για να ενημερω σουμε μια ιδιο τητα ενο ς κο μβου και λαμβα νει 3 εισο δους. Τον κο μβο-παραλη πτη, την ιδιο τητα που προ κειται να θε σουμε, και την νε α τιμη της ιδιο τητας. H συνα ρτηση χρησιμοποιει τις παραπα νω συναρτη σεις του επιπε δου για την κωδικοποι ηση της πληροφορι ας καθω ς και τη συνα ρτηση CAN-bus::write() για να γρα ψει αυτο το μη νυμα στον δι αυλο (Αλγο ριθμος 4. Έτσι, εα ν ο χρη στης θε λει να αλλα ξει την ιδιο τητα της θε σης του δευ τερου δακτυ λου σε 3000 cts, μπορει απλα να τρε ξει: setproperty(finger2, P, 3000).\n65 4.1. To λογισμικό BAD 53 Αλγόριθμος 2 BarrettCANProtocolDecode 1: procedure B CANP D (CANMessage, σημαι α) 2: Εάν σημαία=ο χι packed Τότε 3: Εάν CANMessage.DLC = 4 Τότε 4: ε χω μη νυμα που αφορα ιδιο τητα των 32 bit 5: Αλλιώςε χω μη νυμα που αφορα ιδιο τητα των 16 bit 6: Εάν η ιδιο τητα ει ναι των 32 bit Τότε 7: α CANMessage.DATA 8: β CANMessage.DATA 9: γ CANMessage.DATA 10: δ CANMessage.DATA 11: ολι σθησε το α κατα 3 bytes αριστερα 12: ολι σθησε το β κατα 2 bytes αριστερα 13: ολι σθησε το γ κατα 1 byte αριστερα 14: τιμή α OR β OR γ OR δ 15: Αλλιώς δηλαδη αν ει ναι των 16 bit 16: α CANMessage.DATA 17: β CANMessage.DATA 18: ολι σθησε το α κατα 1 byte αριστερα 19: τιμή α OR β 20: Εάν σημαία = packed Τότε 21: α CANMessage.DATA 22: β CANMessage.DATA 23: γ CANMessage.DATA 24: α α AND Ox7F Δηλαδη μηδε νισε το πρω το bit που ει ναι 1 25: ολι σθησε το α κατα 2 bytes αριστερα 26: ολι σθησε το β κατα 1 byte αριστερα 27: τιμή α OR β OR γ 28: Αλλιώς δηλαδη dual packed 29: Αλλιώς εάν σημαία = dual packed 30: α CANMessage.DATA 31: β CANMessage.DATA 32: γ CANMessage.DATA 33: α α AND Ox7F Δηλαδη μηδε νισε το πρω το bit που ει ναι 1 34: ολι σθησε το α κατα 2 bytes αριστερα 35: ολι σθησε το β κατα 1 byte αριστερα 36: τιμή α OR β OR γ Επέστρεψε τη τιμη\n66 54 Κεφάλαιο 4. BAD και έλεγχος του BarrettHand μέσω ROS Αλγόριθμος 3 getdualpackedposition 1: procedure D P P (ID_κο μβου) 2: CANMessage BarrettCANProtocolEncode(ID_κο μβου, P, 0, ε νας παραλη πτης, get) 3: CANbus::write(CANMessage) Γρα ψε το μη νυμα στο δι αυλο 4: Περι μενε 0,5 ms για την απα ντηση 5: CANMessage CANbus::read() Δια βασε το δι αυλο 6: p BarrettCANProtocolDecode(CANMessage, packed) 7: jp BarrettCANProtocolDecode(CANMessage, dualpacked) Επέστρεψε p, jp Αλγόριθμος 4 setproperty 1: procedure P (παραλη πτης, ιδιο τητα, νε α_τιμη ) 2: Εάν παραλη πτης=15 Τότε Έχω group message προς groupid = 5 3: CANMessage BarrettCANProtocolEncode(5, ιδιο τητα, τιμη,... 4:...πολλοι παραλη πτες, set) 5: CANbus::write(CANMessage) 6: Αλλιώς Δηλαδη παραλη πτης απο για τα 4 pucks 7: CANMessage BarrettCANProtocolEncode(παραλη πτης, ιδιο τητα,... 8: τιμη, ε νας παραλη πτης, set) 9: CANbus::write(CANMessage) getproperty(): Χρησιμοποιει ται για να διαβα σουμε την τιμη μιας ιδιο τητας ενο ς κο μβου και λαμβα νει 2 εισο δους. Τον κο μβο παραλη πτη και την ιδιο τητα που προ κειται να διαβαστει. Σαν ε ξοδο ε χουμε την τιμη που διαβα στηκε. Αλγόριθμος 5 getproperty 1: procedure P (παραλη πτης, ιδιο τητα) 2: Εάν παραλη πτης=15 Τότε Έχω group message προς groupid = 5 3: CANMessage BarrettCANProtocolEncode(5, ιδιο τητα, 0,... 4:...πολλοι παραλη πτες, get) 5: CANbus::write(CANMessage) 6: Αλλιώς Δηλαδη παραλη πτης απο για τα 4 pucks 7: CANMessage BarrettCANProtocolEncode(παραλη πτης, ιδιο τητα,... 8: 0, ε νας παραλη πτης, get) 9: CANbus::write(CANMessage) 10: Περι μενε 0,5ms για την απα ντηση 11: CANMessage CANbus::read() Δια βασε το δι αυλο 12: Εάν η ιδιότητα ει ναι η P Τότε 13: τιμή BarrettCANProtocolDecode(CANMessage, packed) 14: Αλλιώς 15: τιμή BarrettCANProtocolDecode(CANMessage, no_packed) Επέστρεψε την τιμη\n67 4.1. To λογισμικό BAD 55 init(): Αποτελει μι α βοηθητικη συνα ρτηση. Χρησιμοποιει ται ως βασικη ρουτι να αρχικοποι ησης ο λων των δακτυ λων και του spread κατα την ε ναρξη της λειτουργι ας. H συνα ρτηση δεν δε χεται ορι σματα και χρησιμοποιει τις παραπα νω συναρτη σεις για να γρα ψει συγκεκριμε νες ιδιο τητες στους κο μβους. Αρχικα, διαβα ζει απο τα 3 δα κτυλα και το spread την ιδιο τητα ROLE για να ελε γξει ο τι υπα ρχει επικοινωνι α με το χε ρι και ο τι ο δι αυλος CAN ε χει αρχικοποιηθει. Στη συνε χεια, αλλα ζει τις τιμε ς της ιδιο τητας STATUS ο λων των κο μβων σε READY=2. Τε λος, γρα φει στην ιδιο τητα CMD τη τιμη CMD_HI=13 ω στε να αρχι σει το α νοιγμα και η αρχικοποι ηση ο λων των κο μβων, ο πως φαι νεται στον Αλγο ριθμο 6. Αλγόριθμος 6 init() 1: procedure 2: Για puck απο 1 ε ως 4 τρέξε 3: role_i 1 4: Για puck απο 1 ε ως 4 τρέξε Δες αν υπα ρχει επικοινωνι α με τους κο μβους 5: role_i getproperty(puck, ROLE) 6: Εάν τουλα χιστον ε να απο τα role_i < 0 Τότε Επέστρεψε Σφα λμα 7: Για puck απο 1 ε ως 4 τρέξε 8: setpropery(puck, STAT, STATUS_READY) 9: Περι μενε 750 ms πριν ανοι ξεις τον κο μβο 10: setpropery(puck, CMD, CMD_HI) 11: Περι μενε 3 δευτερο λεπτα να ολοκληρωθει η κι νηση Higher Level BAD functions Στο υψηλο τερο επι πεδο του BAD, που υλοποιει ται απο τη κλα ση BAD, υπα ρχουν πολλε ς λειτουργι ες υψηλου επι πεδου, ο πως ρουτι νες για grasping δια φορων αντικειμε νων, ενω υπα ρχει η δυνατο τητα υλοποι ησης ελεγκτω ν ανα λογα με τις ανα γκες του χρη στη. Για την ακρι βεια, ο χρη στης μπορει να τροποποιη σει τις συναρτη σεις-με λη της κλα σης, προσθε τοντας επιπλε ον λειτουργι ες και ρουτι νες. Κα ποια βασικα παραδει γματα ει ναι οι ρουτι νες handover(), detectbreakaway(), timing() κα. handover(): Αποτελει μι α ρουτι να κατα την οποι α το χε ρι αφου αρχικοποιηθει σε ανοικτη θε ση, αρχι ζει και κλει νει με με τρια ταχυ τητα, αναμε νοντας να συναντη σει ε να κυλινδρικο αντικει μενο (ο πως ε να μπουκα λι). Το προ γραμμα αντιλαμβα νεται με σω των αισθητη ρων ροπη ς ο τι το αντικει μενο ε χει γραπωθει απο το χε ρι και στη συνε χεια με -\n68 56 Κεφάλαιο 4. BAD και έλεγχος του BarrettHand μέσω ROS νει σε αυτη ν την θε ση. Όσο το χε ρι κρατα ει το αντικει μενο ο βραχι ονας μπορει να μετακινηθει μετακινω ντας το α κρο του μπροστα σε ε ναν α νθρωπο, προσφε ροντας του το αντικει μενο. Όταν ο α νθρωπος θα πα ει να πα ρει το αντικει μενο, το προ γραμμα θα αντιληφθει την απο τομη αλλαγη της ροπη ς στους αισθητη ρες, απο την δυ ναμη που ασκει ο α νθρωπος με σω του μπουκαλιου και θα απελευθερω σει το αντικει μενο ομαλα. Ουσιαστικα το πει ραμα περιλαμβα νει δυ ο στα δια: το grasping και το release. Ο αλγο ριθμος σε μορφη ψευδοκω δικα φαι νεται στον Αλγο ριθμο 7. Αλγόριθμος 7 Αλγο ριθμος Handover 1: procedure F A R 2: Περι μενε 1 δευτερο λεπτο 3: Εάν το χέρι δεν έχει αρχικοποιηθεί Τότε 4: αρχικοποι ησε το χε ρι 5: Αλλιώς α νοιξε το χε ρι 6: Για i απο 1 ε ως 3 τρέξε 7: strain(i) τιμη του αισθητη ρα ροπη ς του δακτύλου i 8: Ξεκι να να κλει νεις ο λα τα δα κτυλα με ταχυ τητα 40 9: Για-όσο κανε να δα κτυλο δεν ε χει συναντη σει εμπο διο τρέξε 10: Για i απο 1 ε ως 3 τρέξε 11: current_strain(i) τιμη του αισθητη ρα ροπη ς του δακτύλου i 12: Εάν current_strain(i) strain(i) > 500 Τότε 13: Σταμα τα το δα κτυλο i γιατι συνα ντησε εμπο διο 14: new_strain(i) τιμη του αισθητη ρα ροπη ς του πα νω δακτυ λου 15: Για-όσο δεν εχει παραδωθει το αντικει μενο τρέξε 16: current_strain(i) τιμη του αισθητη ρα ροπη ς του πα νω δακτυ λου 17: Εάν current_strain new_strain > 30 Τότε 18: Ξεκι να να ανοι γεις ο λα τα δα κτυλα με ταχυ τητα 20 και μετα με 40 handshake(): Η συγκεκριμε νη ρουτι να στοχευ ει στην βελτι ωση της συμπεριφορα ς του BarrettHand σε μι α κατα σταση χειραψι ας. Απο μηχανολογικη ς κατασκευη ς το χε ρι ε χει αρθρω σεις οι οποι ες δεν ει ναι ελευ θερα οδηγου μενες (non-backdrivability). Αυτο συμβαι νει στις τρεις αρθρω σεις των δακτυ λων, εκτο ς απο το spread. Το μειονε κτημα σε αυτη τη περι πτωση ει ναι ο τι τα δα κτυλα ο ταν δεν κα νουν κα ποια κι νηση λο γω του κινητη ρα, δεν μπορου ν να κινηθου ν ελευ θερα. Το πλεονε κτημα ει ναι ο τι δεν χρεια ζεται επιπλε ον ρευ μα στο κινητη ρα για να συγκρατη σουν τα δα κτυλα ε να φορτι ο. Στη περι πτωση, ο μως, της αλληλεπι δρασης με ε να ανθρω πινο χε ρι σε μι α χειραψι α, τα δα - κτυλα δεν θα πρε πει να ει ναι α καμπτα, αλλα να παι ρνουν το απαραι τητο σχη μα και να\n69 4.1. To λογισμικό BAD 57 αγκαλια ζουν το ανθρω πινο χε ρι. Για το σκοπο αυτο χρησιμοποιου νται οι αισθητη ρες ροπη ς που ε χουν τα δα κτυλα (strain gauge). Όταν ε να δα κτυλο αισθανθει μι α θετικη ροπη (που προε κυψε απο δυ ναμη αντι θετη στο κλει σιμο του χεριου ) το τε το δα κτυλο θα πρε πει να αναπτυ ξει αρνητικη ταχυ τητα (δηλαδη να ανοι ξει, απομακρυνο μενο απο τη παλα μη). Έτσι, το δα κτυλο θα παρουσια ζει υποχωρητικο τητα. Όταν το δα κτυλο δεν αισθα νεται κα ποια δυ ναμη, θα πρε πει να αναπτυ σει θετικη μικρη ταχυ τητα και να κλει νει, αγκαλια ζοντας το ανθρω πινο χε ρι. Στον Αλγο ριθμο 8 φαι νεται ο ψευδοκω δικας της ρουτι νας. Αλγόριθμος 8 Αλγο ριθμος handshake 1: procedure S 2: Θε σε το spread σε γωνι α 180 o 3: max_torque : max_velocity 200 5: init_strain α νυσμα με τις 3 τιμε ς των αισθητη ρων ροπη ς απουσι α δυ ναμης 6: Στει λε τα δα κτυλα σε γωνι α 90 o 7: Για-όσο ει σαι σε κατα σταση χειραψι ας τρέξε 8: strain α νυσμα με τις 3 τιμε ς των αισθητη ρων ροπη ς 9: Για i απο 1 ε ως 3 τρέξε 10: error strain(i) - init_strain(i) 11: velocity -(error/max_torque)*max_velocity 12: Κι νησε το δα κτυλο i με ταχυ τητα velocity precisiongrasp(): Αποτελει ρουτι να με την οποι α το χε ρι μπορει να πραγματοποιη σει ε να κρα τημα ακριβει ας (precision grasp) σε λεπτα αντικει μενα, ο πως ε να κινητο τηλε φωνο. Το κρα τημα πραγματοποιει ται με τα ακροδα κτυλα και θα πρε πει να ασκει ται η κατα λληλη δυ ναμη για τη διατη ρηση του. Η διατη ρηση του πιασι ματος ει ναι δυ - σκολη υπο θεση καθω ς η επιφα νεια επαφη ς ει ναι μικρη και κατ επε κταση ε χουμε μικρε ς τριβε ς. Παρο λα αυτα το non-backdrivability των δακτυ λων επιτρε πει μετα την επαφη την απενεργοποι ηση των κινητη ρων και τη διατη ρηση ικανη ς δυ ναμης για ελαφρια αντικει μενα. Σε περι πτωση που χρεια ζεται precision grasp για κα ποιο πιο βαρυ αντικει μενο το ρομπο τ θα πρε πει να οδηγει συνε χεια τους κινητη ρες των δακτυ λων. Κα τι τε τοιο χρεια - ζεται προσοχη, καθω ς υπα ρχει ε να ο ριο μετα το οποι ο η καταπο νηση των κινητη ρων επιφε ρει την πτω ση της τροφοδοσι ας λο γω των πολλω ν ampere (browning out).\n70 58 Κεφάλαιο 4. BAD και έλεγχος του BarrettHand μέσω ROS Στον Αλγο ριθμο 9 φαι νεται η διαδικασι α. Αρχικα, τα δα κτυλα κλει νουν ως ε να σημει ο ετοιμα ζοντας το grasping (preshaping). Στη συνε χεια, κλει νουν προσεκτικα για την πραγματοποι ηση της επαφη ς. Αλγόριθμος 9 Αλγο ριθμος precisiongrasp 1: procedure G 2: Θε σε το spread σε γωνι α0 o 3: Θε σε τα τρι α δα κτυλα σε γωνι α60 4: Για i απο 1 ε ως 3 τρέξε 5: sg i Τιμη του i αισθητηρι ου ροπη ς χωρι ς επαφη 6: Περι μενε με χρι να λα βεις ση μα ε ναρξης του grasping 7: Για i απο 1 ε ως 3 τρέξε 8: Θε σε το i-στο δα κτυλο σε ταχυ τητα (κλεισι ματος) : Για-όσο τουλα χιστον 1 δα κτυλο δεν ε χει ε ρθει σε επαφη τρέξε 10: Για i απο 1 ε ως 3 τρέξε 11: current_sg Τιμη του i αισθητηρι ου ροπη ς 12: Εάν sg i current_sg i > 150 Τότε 13: Σταμα τησε το δα κτυλο i 14: Ενημε ρωσε ο τι το δα κτυλο i η ρθε σε επαφη 15: Περι μενε με χρι να λα βεις ση μα να αφη σεις το αντικει μενο 16: Για i απο 1 ε ως 3 τρέξε 17: position i Η θε ση του δακτυ λου i 18: Πη γαινε το δα κτυλοi στη θε ση position i 3 o distortioncontrol(): H συγκεκριμε νη συνα ρτηση ελε γχει την θε ση των δακτυ λων με τε τοιο τρο πο ω στε να ελεγχθει ε μμεσα η παραμο ρφωση ενο ς αντικειμε νου, ο πως ε να πλαστικο μπουκα λι. Ο αλγο ριθμος ει ναι απλο ς (βλ. Αλγο ριθμο 10) και κλει νει τα δα κτυλα με χρι να αισθανθει το αντικει μενο στην θε ση P A. Η θε ση ο που αν τα δα κτυλα κλει σουν συναντιω νται μεταξυ τους ει ναι η P B. Αναλο γως με το πο σο θε λουμε να παραμορφω σουμε το αντικει μενο τα δα κτυλα μετα την θε ση P A συνεχι ζουν να κλει νουν με χρι την επιθυμητη P x. Πλη ρης παραμο ρφωση σημαι νει P x = P B, ενω μηδενικη παραμο ρφωση σημαι νει P x = P A. Με τρια παραμο ρφωση σημαι νει P x = 0, 5(P B P A ) + P A κοκ. holdgrasp(): Ρουτι να η οποι α κρατα ει συνεχω ς ε να συγκεκριμε νο grasp ασκω ντας συνεχω ς μι α επιθυμητη δυ ναμη στο αντικει μενο (Αλγο ριθμος 11. Εα ν ο αισθητη ρας ροπη ς αισθα νεται μεγαλυ τερη δυ ναμη απο την επιθυμητη το δα κτυλο κινει ται προς τα\n71 4.1. To λογισμικό BAD 59 Αλγόριθμος 10 Αλγο ριθμος distortioncontrol 1: procedure C (dist) 2: Για i απο 1 ε ως 3 τρέξε 3: sg i Τιμη αισθητη ρα ροπη ς i 4: Κου να το δα κτυλο i με ταχυ τητα (κλεισι ματος) : Για-όσο τουλα χιστον 1 δα κτυλο δεν ε χει ε ρθει σε επαφη τρέξε 6: current_sg i Τιμη αισθητη ρα ροπη ς i 7: Εάν current_sg i sg i > 350 Τότε 8: Σταμα τα τη κι νηση του δακτυ λου i 9: Ενημε ρωσε ο τι το δα κτυλο i η ρθε σε επαφη 10: Για i απο 1 ε ως 3 τρέξε 11: P A Τιμη της θε σης του δακτυ λου i 12: dx i dist(p B P A ) 13: Για-όσο τουλα χιστον 1 δα κτυλο δεν ε χει φτα σει στην επιθυμητη P x τρέξε 14: Για i απο 1 ε ως 3 τρέξε 15: current_pos i Τιμη θε σης δακτυ λου i 16: Εάν current_pos i P A + dx i Τότε 17: Σταμα τα τη κι νηση του δακτυ λου 18: Ενημε ρωσε ο τι το δα κτυλο i ε φτασε την επιθυμητη P x ε ξω για να μειω σει τη πι εση, ενω αν ει ναι μικρο τερη απο την επιθυμητη κλει νει προς το αντικει μενο αυξα νοντας την δυ ναμη επαφη ς. Δυστυχω ς λο γω του υψηλου θορυ βου των αισθητηρι ων ροπη ς η συνα ρτηση ει ναι αποτελεσματικη σε ε να μικρο συ νολο περιπτω σεων, χα νοντας σε ευρωστι α. Αλγόριθμος 11 Αλγο ριθμος holdgrasp 1: procedure G (force) 2: Για-όσο θε λω να κρατη σω το grasp τρέξε 3: Για i απο 1 ε ως 3 τρέξε 4: sg i Τιμη αισθητη ρα i 5: pos i Τιμη θε σης δακτυ λου i 6: Εάν sg i < force 50 Τότε 7: Πη γαινε το δα κτυλο i στη θε ση pos i : Αλλιώς 9: Πη γαινε το δα κτυλο i στη θε σηpos i 100 logger(): Μι α συνα ρτηση που μπορει να τρε ξει σαν ε να ασυ γχρονο thread παρα λ- ληλα με οποιαδη ποτε α λλη συνα ρτηση απο τις παραπα νω. Δημιουργει ε να αρχει ο στο φα κελο log_files στο οποι ο καταγρα φει δεδομε να για το χρονικο δια στημα που διαρκει ε να πει ραμα. Με σα στο αρχει ο καταγρα φονται γραμμε ς με την εξη ς σειρα : Χρόνος\n72 60 Κεφάλαιο 4. BAD και έλεγχος του BarrettHand μέσω ROS Θέση1 Θέση2 Θέση3 ΘέσηSpread SG1 SG2 SG3. Επι σης, η συνα ρτηση δι νει ε να μοναδικο ο νομα στο log ile με βα ση την ημερομηνι α και την ω ρα πραγματοποι ησης του πειρα ματος. Θα πρε πει να σημειωθει ο τι η χρη ση της συνα ρτησης αυτη ς μπορει να μειω σει την απο δοση του πειρα ματος καθω ς θα χρησιμοποιει ται με ρος του bandwidth του διαυ λου για την ζη τηση των δεδομε νων. detectbreakaway(): Αποτελει μι α ρουτι να η οποι α εντοπι ζει σε ποια γωνιακη θε ση ε σπασε το δα κτυλο (breakaway). Ουσιαστικα, συγκρι νει την θε ση της πρω της α ρθρωσης (ιδιο τητα P) και της δευ τερης ιδιο τητα JP και βρι σκει τον λο γο της λ = θ 1 /θ 2. Ο λο γος αυτο ς υπο κανονικε ς συνθη κες ει ναι σταθερο ς και ι σος με λ = 3. Όταν ο μως συμβει το breakaway, ο λο γος αλλα ζει, καθω ς η πρω τη α ρθρωση παραμε νει ακι νητη, ενω η δευ τερη συνεχι ζει και κινει ται. Οι τιμε ς απο τις ιδιο τητες του κο μβου μετατρε πονται σε μοι ρες συ μφωνα με τις εξι σωσεις της Ενο τητας Ιδιαι τερα χρη σιμη ρουτι να σε περιπτω σεις αντικειμε νων αγνω στου σχη ματος, ω στε το χε ρι να αντιληφθει μερικω ς το σχη μα χωρι ς τη χρη ση οπτικω ν αισθητη ρων και προχωρημε νων μεθο δων Εφαρμογές και πειράματα Σε αυτη ν την ενο τητα θα παρουσιαστου ν εφαρμογε ς και παραδει γματα που πραγματοποιη θηκαν με το BAD καθω ς και η διαδικασι α εξαγωγη ς συμπερασμα των. Κα θε ε να απο τα παρακα τω πειρα ματα χρησιμοποιει τις συναρτη σεις του ανωτε ρου επιπε δου του BAD που σχεδια στηκαν καταλλη λως. Για την παρουσι αση των πειραμα των η ταν αναγκαι α η ανα πτυξη μι ας συγκεκριμε νης μεθοδολογι ας. Αρχικα πρε πει να γι νει καταγραφη δεδομε νων ταυτο χρονα με την εκτε λεση του κω - δικα του BAD. Έτσι, γρα φτηκε επιπλε ον κω δικας, ο οποι ος ζητα ει απο το ρομπο τ για κα θε χρονικη στιγμη την θε ση των τεσσα ρων αρθρω σεων (3 δα κτυλα και spread) καθω ς και τη τιμη που καταγρα φουν οι τρεις αισθητη ρες ροπη ς των δακτυ λων. Αυτη η διαδικασι α υλοποιει ται στην συνα ρτηση BAD::logger(). Έτσι, θα πρε πει ταυτο χρονα να τρε χει η συνα ρτηση BAD::logger() και η συνα ρτηση BAD::peirama() (ο που peirama το ο νομα της εκα στωτε συνα ρτησης για μια εφαρμογη ). Για να γι νει αυτο, χρησιμοποιη θηκαν τεχνικε ς παρα λληλου προγραμματισμου και ε γινε χρη ση των νημα των POSIX Threads. Έτσι, δημιουργει ται ε να ξεχωριστο εκτε λεσιμο αρχει ο (το bad_logger), το\n73 4.1. To λογισμικό BAD 61 οποι ο τρε χει δυ ο νη ματα παρα λληλα, ε να για τoν logger και ε να για την εφαρμογη. Ει ναι προφανε ς ο τι τα δυ ο νη ματα ανταγωνι ζονται για προ σβαση σε ε ναν κοινο πο ρο του συστη ματος, τον δι αυλο CAN, ο που δεν μπορου ν να ε χουν ταυτο χρονη προ σβαση και απαιτει ται συγχρονισμο ς. Έτσι, εμπλουτι στηκαν οι συναρτη σεις set και getproperty() του χαμηλο τερου επιπε δου του BAD με κατα λληλες κλη σεις συναρτη σεων του POSIX API για mutex locks. Στην αρχη κα θε set η getproperty() το νη μα κλειδω νει την mutex lock και στο τε λος την ξεκλειδω νει. Οπο τε ο ταν ε να απο τα δυ ο νη ματα θε λει να εγγρα - ψει δεδομε να στον δι αυλο το κα νει χωρι ς ενο χληση απο το α λλο με χρι να ολοκλη ρωσει την διαδικασι α του. Ένα νη μα δεν μπορει να χρησιμοποιη σει τον δι αυλο αν βρει κλειδωμε νη την mutex lock. Ει ναι προφανε ς ο τι τα πειρα ματα που γι νονται με τον bad_logger υστερου ν στην ταχυ τητα επικοινωνι ας, καθω ς ο logger χρησιμοποιει το ευ ρος ζω νης του διαυ λου. Στη συνε χεια, και αφου ο logger ε χει καταγρα ψει τα δεδομε να σε ε να αρχει ο κειμε νου, η καταγραφη εισα γεται στο MATLAB. Ένα προ βλημα που αντιμετωπι στηκε ει ναι o θο ρυβος στα δεδομε να λο γω ατελειω ν στα ηλεκτρονικα του BarrettHand. Ο θο ρυβος αυτο αποτελει ται κυρι ως απο αφυ σικα μεγα λα νου μερα ροπη ς η θε σης ανα χρονικε ς περιο δους, τα οποι α και καθαρι στηκαν κατα την επεξεργασι α των δεδομε νων σαν outliers. Κα θε φορα που εντοπιζο ταν ε να outlier, απαλοιφω ταν και την θε ση του λα μβανε η τιμη της προηγου μενης χρονικη ς στιγμη ς. Στη συνε χεια, τα δεδομε να προβα λλονται γραφικα με τη βοη θεια του MATLAB και παρουσια ζονται στον παρο ν. Το matlab script data_processing.m πραγματοποιει ο λα τα προαναφερθε ντα. Επι σης, ε γινε ληψη οπτικοακουστικου υλικου και σε κα θε πει ραμα αντιστοιχει ε να βι ντεο. Στο παρο ν, παρουσια ζεται κα ποια καρε σαν φωτογραφι ες. Τα βι ντεο επισυνα πτονται με το παρο ν και επι σης μπορου ν να βρεθου ν online εδω : https://www.dropbox.com/sh/1efjkbwvt822ze4/aacdaiur-vkkzjfgoznejxjva? dl= Ανθρωπομορφική παράδοση αντικειμένου Η εφαρμογη αυτη αναφε ρθηκε και προηγουμε νως με σω της συνα ρτησης Handover() και εξυπηρετει στην παρα δοση ενο ς αντικειμε νου. Το χε ρι αφου αρχικα πια σει ε να κυλινδρικο αντικει μενο, το παραδι δει στον α νθρωπο αφη νοντα ς το τη στιγμη που ο α ν-\n74 62 Κεφάλαιο 4. BAD και έλεγχος του BarrettHand μέσω ROS θρωπος το πια νει ασκω ντας του μια μικρη δυ ναμη. Δηλαδη σε αυτη τη περι πτωση το χε ρι αφη νει το αντικει μενο λαμβα νοντας ως κριτη ριο μι α τιμη δυ ναμης κατωφλι ου (threshold). Μι α α λλη εκδοχη του αλγορι θμου περιλαμβα νει ε να διαφορετικο κριτη ριο. Στη δευ τερη αυτη εκδοχη δεν υπα ρχει ε να σταθερο κατω φλι δυ ναμης, αλλα ο αλγο ριθμος λαμβα νει συνεχω ς για ε να δια στημα κα ποιων ms δει γματα απο τους αισθητη ρες δυ - ναμης. Στη συνε χεια βρι σκει τη διακυ μανση των δειγμα των και το ρομπο τ αφη νει το αντικει μενο εφο σον αυτη η διακυ μανση περα σει ε να κατω φλι. Δηλαδη, στην δευ τερη εκδοχη το χε ρι θα κρατη σει σταθερα το αντικει μενο ακο μα και αν ο χρη στης προσπαθη σει να το πα ρει και θα το αφη σει μο νο ο ταν ο χρη στης το κουνη σει επι μονα μπρος πι σω παρα γοντας μι α ταλα ντωση. Αξι ζει να σημειωθει ο τι η λογικη της δευ τερης εκδοχη ς δημιουργη θηκε για εφαρμογε ς που ο χρη στης θε λει να οδηγη σει το ρομπο τ σπρω χνοντας το αντικει μενο, ε τσι το χε ρι μαζι με τον βραχι ονα να ακολουθη σει την κι νηση και δεν θα αφη σει το αντικει μενο. Με την επι μονη ταλα ντωση πραγματοποιει ται η δια κριση των δυ ο σημα των. Στο Αλγο ριθμο 7 φαι νεται η λογικη του προγρα μματος με τo κριτη ριο απλου κατωφλι ου. Στο Σχη μα 4.2 φαι νεται η θε ση των τριω ν δακτυ λων σε μοι ρες και κα τω φαι νονται οι ροπε ς που αισθα νεται το κα θε δα κτυλο για κα θε χρονικη στιγμη. Στο Σχη μα 4.3 φαι νεται το αποτε λεσμα καρε καρε. Στα Σχη ματα 4.4 και 4.5 φαι νονται τα αντι στοιχα αποτελε σματα για την δευ τερη εκδοχη. Όπως φαι νεται και στα διαγρα μματα απλου κατωφλι ου, οι γωνι ες των δακτυ λων αρχικα αυξα νονται (δηλαδη τα δα κτυλα κλει νουν) με χρι να πια σουν το αντικει μενο. Στη χρονικη στιγμη t 1 = 6, 3s τα δα κτυλα αισθα νονται μια μεγα λη δυ ναμη, που σημαι νει ο τι επια σαν το αντικει μενο, οπο τε και σταματου ν την κι νηση τους. Με χρι τη t 2 = 12, 2s και η θε ση των δακτυ λων καθω ς και η δυνα μη που αισθα νονται παραμε νουν σταθερε ς. Tο χρονικο δια στημα [t 1, t 2 ) ει ναι το δια στημα που ο βραχι oνας θα μεταφε ρει το χε ρι μαζι με το αντικει μενο προς την κατευ θυνση του ανθρω που. Στη t 2 το χε ρι διαισθα νεται απο τομη αυ ξηση της δυ ναμης που ασκει ται στα ακροδα κτυλα και ιδιαι τερα στο δα κτυλο 1 (μπλε χρω μα). Αυτο σημαι νει ο τι ο α νθρωπος πι εσε το αντικει μενο για να το πα ρει (απο πα νω), οπο τε και τα δα κτυλα ανοι γουν, αρχικα με αργο ρυθμο για να μη πε σει το αντικει μενο απο τομα και στη συνε χεια με πιο γρη γορο. Αντι στοιχα στο Σχη μα 4.4 παρατηρου με ο τι παρο λο που το προφι λ των σημα των\n75 4.1. To λογισμικό BAD 63 ει ναι παρο μοιο στο δια γραμμα των ροπω ν φαι νονται να αναπτυ σσονται μεγα λες δυνα μες οι οποι ες δεν επηρρεα ζουν τις θε σεις των δακτυ λων και αυτε ς παραμε νουν σταθερε ς κρατω ντας το αντικει μενο. Μο νο στη χρονικη στιγμη t 1 = 17 που αρχι ζει μι α ταλα ντωση υψηλη ς συχνο τητας το ρομπο τ αντιλαμβα νεται ο τι πρε πει να αφη σει το αντικει μενο. Σχη μα 4.2: Διαγρα μματα θε σης αρθρω σεων και ροπη ς ως προς το χρο νο σε ανθρωπομορφικη παρα δοση αντικειμε νου με κριτη ριο κατωφλι ου\n76 64 Κεφάλαιο 4. BAD και έλεγχος του BarrettHand μέσω ROS Σχη μα 4.3: Φωτογραφι ες του πειρα ματος σε ανθρωπομορφικη παρα δοση αντικειμε νου με κριτη ριο κατωφλι ου Κατάσταση Χειραψίας Περιγρα φηκε και παραπα νω απο τη συνα ρτηση handshake() του ανω τερου επιπε δου του BAD. Στο Σχη μα 4.7 φαι νεται για κα ποιες χρονικε ς στιγμε ς το πει ραμα, ενω στo Σχη μα 4.6 φαι νονται τα διαγρα μματα ανα δρασης θε σης και δυ ναμης. Στο συγκεκριμε νο πει ραμα ει χαμε πολυ θο ρυβο λο γω των συνεχω ν δυνα μεων που ασκου νταν στα δα κτυλα και ο οποι ος φιλτραρι στηκε. Υπενθυμι ζουμε ο τι ο σκοπο ς του ει ναι τα δα κτυλα να παι ρνουν τη μορφη του ανθρω πινου χεριου που κρατα νε, αγκαλια ζοντας το φυσικα. Παρατηρου με στα διαγρα μματα ο τι αρχικα οι δυνα μεις που νιω θει το χε ρι ει ναι μηδενικε ς (η διαφοροποι ηση του αισθητη ριου απο δα κτυλο σε δα κτυλο οφει λεται σε σφα λματα των ηλεκτρονικω ν και σε διαφοροποιη σεις των φυσικω ν υλικω ν). Τα δα - κτυλα στη χρονικη στιγμη t = 5, 6s αρχι ζουν να κλει νουν ταυτο χρονα με χρι ε να σημει ο\n77 4.1. To λογισμικό BAD 65 Σχη μα 4.4: Διαγρα μματα θε σης αρθρω σεων και ροπη ς ως προς το χρο νο σε ανθρωπομορφικη παρα δοση αντικειμε νου με κριτη ριο διακυ μανσης\n78 66 Κεφάλαιο 4. BAD και έλεγχος του BarrettHand μέσω ROS Σχη μα 4.5: Φωτογραφι ες του πειρα ματος σε ανθρωπομορφικη παρα δοση αντικειμε νου με κριτη ριο διακυ μανσης (ενω ε χει κλει σει η δη και το spread και ε χουμε τα 3 δα κτυλα στη σειρα ). Στη συνε χεια, κλει νουν σιγα σιγα, ενω ο ταν συναντη σουν μι α δυ ναμη υποχωρου ν, μπαι νοντας σε μι α διαδικασι α ταλαντω σεων. Έτσι, ο ταν ο α νθρωπος αισθα νεται α βολα το ρομπο τ υποχωρει αναλο γως το σχη μα του ανθρω πινου χεριου και το ει δος της χειραψι ας. Τη χρονικη στιγμη t = 11s το χε ρι σταθεροποιει ται. Αυτη η σταθεροποι ηση συμβαι νει αφου το χε ρι λα βει ε να ση μα που σηματοδοτει την ε ναρξη της χειραψι ας και το τε λος της περιο δου προσαρμογη ς. Αυτο το ση μα στο πει ραμα αυτο παρα γεται απο το πληκτρολο γιο, ενω ο ταν βρι σκεται πα νω στον βραχι ονα, το ση μα αυτο θα ε ρχεται με σω ROS, αφου ο βραχι ονας αισθανθει την ε ναρξη της ταλα ντωσης της χειραψι ας. Οι επιπλε ον δυνα μεις που φαι νονται να ασκου νται στα δα κτυλα μετα την σταθεροποι ηση των θε σεων των δακτυ λων οφει λωνται στην χειραψι α και την αλληλεπι δραση ανθρω που-βραχι ονα.\n79 4.1. To λογισμικό BAD 67 Σχη μα 4.6: Διαγρα μματα θε σης αρθρω σεων και ροπη ς ως προς το χρο νο σε κατα σταση χειραψι ας\n80 68 Κεφάλαιο 4. BAD και έλεγχος του BarrettHand μέσω ROS Σχη μα 4.7: Φωτογραφι ες του πειρα ματος χειραψι ας\n81 4.1. To λογισμικό BAD Πιάσιμο ακριβείας Το πι ασιμο ακριβει ας (precision grasp) ει ναι ε να ει δος κρατη ματος ιδιαι τερα χρη - σιμο για λεπτα αντικει μενα ο πως ε να κινητο. Στη προηγου μενη ενο τητα παρουσι αστηκε ο αλγο ριθμος που τον υλοποιει ενω σε αυτη την Υποενο τητα φαι νονται τα αποτελε σματα του πειρα ματος. Στο Σχη μα 4.8 φαι νονται τα διαγρα μματα θε σης και ροπη ς των δακτυ λων, ενω στο Σχη μα 4.9 φαι νονται κα ποια καρε απο το πει ραμα. Όπως φαι νεται τη χρονικη στιγμη t 1 = 4s (καρε #2) το χε ρι παι ρνει μια αρχικη θε ση (preshaping) και οι θε σεις αυξα νονται. Το χε ρι περιμε νει να ε ρθει σε επαφη με το τραπε ζι (δουλεια που υπο κανονικε ς συνθη κες γι νεται απο το βραχι ονα) ο πως φαι νεται στο καρε #3. Στο t 2 = 11, 2s (καρε #4) τα δα κτυλα κλει νουν, ενω στη t 3 = 12s τα ακροδα κτυλα ε ρχονται σε επαφη με το αντικειμε νο, κα τι που φαι νεται απο την απο τομη αυ ξηση των δυνα μεων. Έτσι το αντικει μενο μπορει να μεταφερθει (καρε #5). Αξι ζει να σημειωθει ο τι το δα κτυλο 1 διατηρει μι α δυ ναμη αρκετα χαμηλο τερη απο τα α λλα δυ ο δα κτυλα, κα τι που καταδεικνυ ει ο τι η επαφη δεν η ταν καλη στο συγκεκριμε νο πει ραμα. Αυτο δεν αλλοι ωσε το αποτε λεσμα καθω ς απο την ι δια μερια ει ναι το δα κτυλο 2, με το οποι ο ει χε καλη επαφη και το δα κτυλο 1 λειτου ργησε υποστηρικτικα. Σαφω ς, στην t 4 = 16, 3s τα δα κτυλα ανοι γουν λι γο και αφη νουν το αντικει μενο (καρε #6) Έλεγχος παραμόρφωσης αντικειμένου Η συγκεκριμε νη εφαρμογη αφορα τον ε λεγχο της παραμο ρφωσης ενο ς αντικειμε νου, ο πως ε να πλαστικο μπουκα λι. Θεωρει ται ει δη γνωστο ο τι γνωρι ζουμε το πο σο θα πρε πει το αντικει μενο να παρομορφωθει και ο τι το ρομποτικο συ στημα ε χει η δη επεξεργαστει δεδομε να με σω οπτικω ν αισθητη ριων. Έτσι, διαφορετικα θα πρε πει να πια - σει το ρομπο τ ε να πλαστικο μπουκα λι η ε να μπαλο νι και διαφορετικα ε να γυα λινο ποτη ρι. Στα πει ραματα παρουσια ζονται 3 περιπτω σεις ως παραδει γματα. Στη πρω τη περι πτωση θε λουμε να μη παραμορφωθει το μπουκα λι, στη δευ τερη να παραμορφωθει με τρια και στη τρι τη να παραμορφωθει ο σο περισσο τερο επιτρε πουν τα τεχνικα χαρακτηριστικα του BarrettHand. Οπο τε ε χουμε τα αντι στοιχα ζευγα ρια διαγραμμα τωνφωτογραφιω ν: στα Σχη ματα φαι νεται το πει ραμα για μηδενικη παραμο ρφωση, στα Σχη ματα για με τρια παραμο ρφωση και στα Σχη ματα\n82 70 Κεφάλαιο 4. BAD και έλεγχος του BarrettHand μέσω ROS Σχη μα 4.8: Διαγρα μματα θε σης αρθρω σεων και ροπη ς ως προς το χρο νο σε πια σιμο ακριβει ας\n83 4.1. To λογισμικό BAD 71 Σχη μα 4.9: Φωτογραφι ες του πειρα ματος πια σιμο ακριβει ας για με γιστη παραμο ρφωση. Στο 3ο καρε στις φωτογραφι ες φαι νεται οπτικα η διαφορα των τριω ν περιπτω - σεων, ενω επι σης στα δια γραμματα παρατη ρουμε ανα λογες διαφορε ς. Στο Σχη μα 4.10 φαι νεται ο τι αφου αγγι ξουν τα δα κτυλα το μπουκα λι (t = 5s) στη συνε χεια η θε ση τους αλλα ζει ελα χιστα και η θε ση παραμε νει κα τω απο τις 100 μοι ρες. Στο Σχη μα 4.12 βλε πουμε ο τι μετα το 6ο δευτερο λεπτο τα δα κτυλα συνεχι ζουν να αυξα νουν την θε ση τους με χρι τις 110 μοι ρες παραμορφω νοντας το αντικει μενο. Ενω στο Σχη μα 4.14 φαι νεται το πως τα δα κτυλα φτα νουν και με νουν στην στις 120 μοι ρες στη πλη ρη παραμο ρφωση Χρόνοι απόκρισης Για την απο δοση του BAD χρησιμοποιη θηκαν βιβλιοθη κες της C++ με τις οποι ες μετρη θηκε ο χρο νος που χρεια ζεται για να ξεκινη σει και να ολοκληρωθει μι α εντολη\n84 72 Κεφάλαιο 4. BAD και έλεγχος του BarrettHand μέσω ROS Σχη μα 4.10: Διαγρα μματα θε σης αρθρω σεων και ροπη ς ως προς το χρο νο σε ε λεγχο παραμο ρφωσης με μηδενική παραμο ρφωση\n85 4.1. To λογισμικό BAD 73 Σχη μα 4.11: Φωτογραφι ες του πειρα ματος σε ε λεγχο παραμο ρφωσης με μηδενική παραμο ρφωση getproperty. Κατα τη δια ρκεια αυτη ς της εντολη ς γι νεται αρχικα η εγγραφη ενο ς μηνυ ματος CAN στο δι αυλο που γι νεται η αι τηση της ιδιο τητας και στη συνε χεια διαβα ζεται η απα ντηση απο το ρομπο τ με εντολη ανα γνωσης του διαυ λου. Γι αυτο το λο γο προτιμη θηκε ως αξιο πιστο κριτη ριο η εκτε λεση της getproperty και ο χι της setproperty καθω ς η τελευται α εγγρα φει ε να μη νυμα στο δι αυλο και επιστρε φει, χωρι ς να υπολογι ζεται ο χρο νος που χρεια ζεται να φτα σει το μη νυμα στο ρομπο τ. Με τη χρη ση του BAD σε συνεργασι α με τον USB αντα πτορα μι α getproperty χρεια - ζεται 1,815 ms ενω σε συνεργασι α με την PCI κα ρτα χρεια ζεται 0,760 ms. Επιβεβαιω - νεται, δηλαδη, η πληροφορι α ο τι ο USB αντα πτορας εισα γει μι α καθυστε ρηση περι που 1 ms. Θα πρε πει να υπενθυμη σουμε ο τι το λογισμικο pyhand για τον ε λεγχο του χεριου στα Windows δεν επε τρεπε την πραγματοποι ηση μιας getproperty σε χρο νο λιγο τερο απο 5 ms. Παρο λα αυτα οι χρο νοι ει ναι ακο μα μεγα λοι αν σκεφτου με ο τι ε νας βρο γχος ελε γχου δεν αποτελει ται μο νο απο μι α εντολη getproperty, αλλα απο πολλαπλε ς εντολε ς ει τε get ει τε set οι οποι ες ζητα νε ανα δραση απο τους αισθητη ρες και θε τουν νε ες τιμε ς. Στην Ενο τητα παρουσια στηκε ε να παρα δειγμα βρο γχου ελε γχου υπο συνθη - κες αυστηρου πραγματικου χρο νου (hard real time) το οποι ο συμπε ραινε ονομαστικη συχνο τητα του βρο γχου τα 766Ηz (δηλαδη 1,305 ms). Στη πρα ξη και αν υποθε σουμε χρη ση του BAD με κα ρτα PCI ο ι διος βρο γχος χρεια ζεται 6,69 ms, δηλαδη ονομαστικη\n86 74 Κεφάλαιο 4. BAD και έλεγχος του BarrettHand μέσω ROS Σχη μα 4.12: Διαγρα μματα θε σης αρθρω σεων και ροπη ς ως προς το χρο νο σε ε λεγχο παραμο ρφωσης με μέτρια παραμο ρφωση\n87 4.2. BAD και ROS 75 Σχη μα 4.13: Φωτογραφι ες του πειρα ματος σε ε λεγχο παραμο ρφωσης με μέτρια παραμο ρφωση συχνο τητα 149,47 Hz. H ονομαστικη συχνο τητα ει ναι η με γιστη και αρκετα θεωρητικη, καθω ς στη πρα ξη θα πρε πει να λειτουργου με σε μικρο τερη συχνο τητα ω στε να αφεθου ν περιθω ρια για επιπλε ον καθυστερη σεις που μπορου ν να προκυ ψουν, με αποτε λεσμα την υπερφο ρτωση του διαυ λου και την απω λεια μηνυ ματων. Για παρα δειμα, ε να απλο Linux χωρι ς real time πυρη να, μπορει να καθυστερει αν ο χρη στης κατα τη δια ρκεια ελε γχου του ρομπο τ χρησιμοποιει α λλες λειτουργι ες οι οποι ες απασχολου ν την CPU. Έτσι, λοιπο ν, ε νας περιορισμο ς ει ναι ο τι ο ε λεγχος ροπω ν δεν μπορει να πραγματοποιηθει ομαλα με συχνο τητες μικρο τερες των 200Hz. Η λυ ση για την περαιτε ρω βελτι ωση των χρο νων ει ναι η χρη ση ενο ς λειτουργικου συστη ματος πραγματικου χρο νου. 4.2 BAD και ROS Το περιβάλλον του ROS Το ROS (Robot Operating System) παρε χει δυνατο τητες σαν αυτε ς ενο ς λειτουργικου συστη ματος και επιτρε πει στους ανθρω πους που ασχολου νται με την ανα πτυξη ρομποτικω ν συστημα των, να χτι ζουν περι πλοκα συστη ματα με πιο αποδοτικο τρο πο. Το ROS προσφε ρει τα τεχνικα εργαλει α επικοινωνι ας μεταξυ υποσυστημα των, την υπστη - ριξη απο μια ενεργη κοινο τητα προγραμματιστω ν, καθω ς και πληθω ρα ε τοιμων υλοποιη σεων για τις βασικε ς λειτουργι ες ενο ς ρομπο τ. Ουσιαστικα, αποτελει ε να συ νολο\n88 76 Κεφάλαιο 4. BAD και έλεγχος του BarrettHand μέσω ROS Σχη μα 4.14: Διαγρα μματα θε σης αρθρω σεων και ροπη ς ως προς το χρο νο σε ε λεγχο παραμο ρφωσης με υψηλή παραμο ρφωση\n89 4.2. BAD και ROS 77 Σχη μα 4.15: Φωτογραφι ες του πειρα ματος σε ε λεγχο παραμο ρφωσης με υψηλή παραμο ρφωση προγραμμα των που ο ταν συνδιαστου ν μαζι αποτελου ν ε να ολοκληρωμε νο λογισμικο ρομποτικη ς, ανοικτου κω δικα. Το ROS δεν αντικαθιστα ε να λειτουργικο συ στημα, αλλα λειτουργει παρα λληλα με αυτο και ε χει σχεδια στει για να δουλευ ει βε λτιστα σε ε να περιβα λλον linux. Τα κυ ρια πλεονεκτη ματα, για τα οποι α χρησιμοποιει ται το ROS ει ναι τα εξη ς: Κατανεμημένος προγραμματισμός: Ένα ρομποτικο συ στημα αποτελει ται απο πολλα διαφορετικα υποσυστη ματα (βραχι ονας, εργαλει ο/χε ρι, αισθητη ρες κλπ), τα οποι α επιτελου ν διαφορετικε ς λειτουργι ες. Μπορει ακο μα να ε χουμε κατανεμη μενα ρομποτικα συστη ματα, ο που μια ομα δα απο ρομπο τ πρε πει να συνεργαστει για την επι τευξη ενο ς κοινου σκοπου. Επι σης, πολλοι α νθρωποι στε λνουν εντολε ς απο ε ναν υπολογιστη στο ρομπο τ, οπο τε μπορου με να θεωρη σουμε αυτη την διεπαφη με τον α νθρωπο ε να επιπλε ον κομμα τι του ρομποτικου λογισμικου. Όλα τα παραπα νω, καθιστου ν επιτακτικη την ανα γκη για την επικοινωνι α μεταξυ διαφορετικω ν διεργασιω ν, κα τι που παρε χει η πλατφο ρμα του ROS. Επαναχρησιμοποιήσιμος κώδικας: Τα βασικα πακε τα του ROS αποτελου ν σταθερε ς, χωρι ς σφα λματα, υλοποιη σεις πολλω ν αλγορι θμων ρομποτικη ς. Επι σης, το ROS και οι τεχνικε ς διεπαφη ς που χρησιμοποιει, ε χουν αρχι σει να καθιερω νονται παγκοσμι ως στον χω ρο σαν προ τυπα, οπο τε και ο προγραμματιστη ς μπορει να\n90 78 Κεφάλαιο 4. BAD και έλεγχος του BarrettHand μέσω ROS βρει πληθω ρα ε τοιμου κω δικα και υλοποιη σεων χωρι ς να ανακαλυ πτει το τρο χο απο την αρχη. Ταχύς έλεγχος: H χρη ση του ROS προσφε ρει γρη γορη ε λεγχο της ορθη ς λειτουργι ας μιας υλοποι ησης. Η ανα πτυξη λογισμικου ει ναι διαδικασι α επι πονη και χρονοβο ρα, πο σο μα λλον ο ταν γι νεται για εφαρμογε ς ρομποτικη ς σε πραγματικο μηχανολογικο εξοπλισμο. Το ROS ε χει σχεδιαστει ικανοποιητικα ω στε να διαχωρι ζει τα χαμηλα επι πεδα που επικοινωνου ν με το hardware και τα υψηλο τερα επι πεδα που εφαρμο ζονται οι αλγο ριθμοι ελε γχου. Αυτο προσφε ρει την επιλογη αντικατα στασης των χαμηλο τερων επιπε δων με λογισμικο προσομοι ωσης, ο ταν ο ρομποτικο ς εξοπλισμο ς δεν ει ναι διαθε σιμος. Βεβαι ως, δεν ει ναι μο νο το ROS που προσφε ρει ο λα τα παραπα νω. Αυτο που καθιστα το ROS την καλυ τερη επιλογη, ει ναι το επι πεδο ανα πτυξης που ε χει φτα σει και η κοινο τητα προγραμματιστω ν που το υποστηρι ζει. Αυτο κα νει προφανε ς ο τι θα συνεχι ζει να αναπτυ σσεται και να χρησιμοποιει ται για πολλα χρο νια ακο μα Διανομές και εκδόσεις του ROS Οι δια φορες εκδο σεις του ROS ονομα ζονται διανομές (distributions). Οι ονομασι ες των διανομω ν ξεκινου ν με διαδοχικα γρα μματα της αλφαβη του που καθορι ζουν χρονικα πο τε βγη κε η διανομη. Τη δεδομε νη στιγμη που γρα φεται η παρου σα εργασι α, η τελευται α ε κδοση του ROS ει ναι η indigo, ενω παλιο τερες εκδο σεις αποτελου ν: hydro, groovy, fuerte, electric, diamondback, C Turtle κλπ. Στα πλαι σια της συγκεκριμε νης διπλωματικη ς χρησιμοποιη θηκε η ε κδοση hydro, καθω ς θεωρη θηκε πιο συνετη η χρη ση της σταθερη ς και η δη τεσταρισμε νης δευ τερης νεο τερης ε κδοσης. Ο αναγνω στης θα πρε πει να ε χει υπο ψιν του, ο τι η κυ ρια διαφορα στις εκδο σεις μεταξυ τους αποτελει η διαφοροποι ηση που συνε βη στο build sytem απο την groovy και μετα. To build system ουσιαστικα ει ναι ο τρο πος που το ROS μεταγλωττι ζει τον πηγαι ο κω δικα. Οι εκδο σεις προγενε στερες της groovy, χρησιμοποιου ν ε να συ στημα μεταγλω τ- τισης που ονομα ζεται rosbuild, ενω οι νεο τερες χρησιμοποιου ν το catkin. Αυτο θα πρε πει να το γνωρι ζει ο χρη στης σε περι πτωση που θε λει να χρησιμοποιη σει παλαιο τερα\n91 4.2. BAD και ROS 79 πακε τα του ROS που γρα φτηκαν βασισμε να στο rosbuild. Οι διαφορε ς των δυ ο συστημα των αποτελου ν τεχνικη ανα λυση η οποι α ξεφευ γει απο τους σκοπου ς του παρο ντος, οπο τε και δεν θα επεκταθου με. Τε λος, να σημειωθει ο τι τα ο σα αναφε ρονται παρακα τω θεωρου ν σαν δεδομε νη τη χρη ση του catkin Κατανοώντας βασικές έννοιες του ROS Αρχικα θα παρουσιαστου ν οι βασικε ς δομε ς και εννοι ες που χρησιμοποιει το ROS ω στε να γι νει περισσο τερο κατανοητη η λειτουργι α του. Πακέτο (package). Ο κω δικας στο ROS οργανω νεται σε πακε τα. Ένα πακε το ουσιαστικα ει ναι ε να συ νολο αρχει ων πηγαι ου κω δικα και εκτελε σιμων που επιτελου ν μι α συγκεκριμε νη λειτουργι α. Κα θε πακε το συνοδευ εται απο ε να μανιφέστο (manifest), το οποι ο ουσιαστικα ει ναι ε να xml αρχει ο που περιε χει meta-πληροφορι ες, ο πως το ο νομα του πακε του, την ε κδοση του κ.α. Master. Ένας απο τους στο χους του ROS ει ναι η ανα πτυξη λογισμικου σε μικρα ανεξα ρτητα προγρα μματα που ονομα ζονται κόμβοι (nodes) και τα οποι α θα τρε χουν την ι δια στιγμη. Για να γι νει αυτο αποτελεσματικα, τα προγρα μματα αυτα θα πρε πει να επικοινωνου ν μεταξυ τους ανταλλα σοντας πληροφορι ες. Αυτο επιτελει ται απο τον ROS Master. O ROS Master θα πρε πει να τρε χει συνεχω ς για ο σο χρησιμοποιει ται το ROS. Κόμβος (node). Ουσιαστικα σαν κο μβος ορι ζεται κα θε ανεξα ρτητο κομμα τι κω - δικα -μι α διεργασι α- που επιτελει μι α εργασι α, κα νει κα ποιους υπολογισμου ς κλπ. Για παρα δειγμα, σε ε να ρομποτικο συ στημα, ο σχεδιαστη ς μπορει να ε χει ε ναν κο μβο να ελε γχει την κα μερα, ε ναν κο μβο να ελε γχει το βραχι ωνα, ε ναν το χε ρι κ.ο.κ. Μήνυμα (message). Αποτελου ν τον βασικο μηχανισμο του ROS, σε συνδυασμο με τα topics, για την επικοινωνι α των κο μβων μεταξυ τους. Ουσιαστικα, ει ναι δομε ς δεδομε νων που ανταλλα σονται μεταξυ των κο μβων. Θέμα (topic). Ει ναι ο βασικο ς δι αυλος επικοινωνι ας μεταξυ των κο μβων. Όταν δυ ο η περισσο τεροι κο μβοι θε λουν να επικοινωνη σουν μεταξυ τους μπορου ν να το κα νουν\n92 80 Κεφάλαιο 4. BAD και έλεγχος του BarrettHand μέσω ROS με σω των topics. Ένας κο μβος που θε λει να μεταδω σει δεδομε να (πχ ε νας κο μβος που ελε γχει ε ναν αισθητη ρα), μπορει να δημοσιευ σει (να κα νει publish) σε ε να topic τα δεδομε να για να τα δουν οι κο μβοι που ε χουν κα νει subscribe στο συγκεκριμε νο topic. Μια επικοινωνι α τυ που πολλοι -προς-πολλοι. Αρκετα χρη σιμο για να υπα ρχει μια ροη δεδομε νων απο τους αισθητη ρες, παραδει γματος χα ριν. Υπηρεσία (service). Σε αντι θεση με τα topics, η επικοινωνι α με σω services ει ναι τυ που ε νας-προς-ε ναν. Οπο τε ο ταν ε νας κο μβος θε λει να στει λει ε να μη νυμα σε ε ναν α λλον και απαιτει και κα ποια απα ντηση μπορει να χρησιμοποιη σει τα services. Οπο τε μι α service, ορι ζεται σαν ε να ζευ γος μηνυ ματων, ε να για την αι τηση και ε να για την απα ντηση. Χρη σιμο για γρη γορους υπολογισμου ς. Ενέργεια (action). Τα actions ει ναι ουσιαστικα services με περισσο τερες δυνατο τητες. Η διαφορα εδω ει ναι ο τι τα actions ει ναι προσανατολισμε να για εργασι ες που θε λουν μεγα λο χρονικο δια στημα για να εκτελεστου ν και δεν ει ναι απλε ς αιτη σεις (ο πως grasping, navigation κλπ). Επι σης, ο εντολε ας του μηνυ ματος ε χει τη δυνατο τητα να παι ρνει ανα δραση απο τον κο μβο που πραγματοποιει την εργασι α, και σε περι πτωση που θελη σει ο πρω τος να διακο ψει την εργασι α του τελευται ου. Διακομιστής παραμέτρων (parameter server). Ει ναι ε να λεξικο παραμε τρων, ο που οι κο μβοι μπορου ν να διαβα σουν την τιμη κα ποιων παραμε τρων η να αλλα ξουν την τιμη τους. Γενικα, δεν ει ναι σχεδιασμε νο για εφαρμογη ς υψηλη ς απο δοσης H χρήση της actionlib με το BAD Για την ενσωμα τωση του BAD στο ROS χρησιμοποιη θηκαν ενε ργειες της actionlib για τους λο γους που αναφε ρθηκαν παραπα νω, καθω ς η φυ ση του grasping ει ναι τε τοια που εξυπηρετει ται καλυ τερα με actions απο ο,τι με services. Κα θε ενε ργεια εκτελει ται απο ε ναν διακομιστή ενεργειών (action server). Για να αρχι σει να εκτελει ται η ενε ργεια θα πρε πει να σταλει ο στόχος (goal) της ενε ργειας απο ε ναν πελάτη (action client) στον action server. Για κα θε διαφορετικη ενε ργεια που θε λουμε να κα νει το BarrettHand, θα πρε πει να δημιουργου με και ε να ζευ γος action\n93 4.2. BAD και ROS 81 server-client. Το πακε το actionlib του ROS παρε χει τις απαραι τητες διεπαφε ς για μια τε τοια επικοινωνι α. Έτσι, λοιπο ν, ε χουμε ε ναν κο μβο του ROS που θα ελε γχει το χε ρι (BarrettHand node) και ε ναν κο μβο που θα πραγματοποιει υπολογισμου ς, αλγορι θμους ελε γχου κ.α. (Master Node). Ει ναι προφανε ς ο τι ο κο μβος του BarrettHand θα περιε χει ε ναν αριθμο απο action servers οι οποι οι θα επικοινωνου ν με το BAD και κατ επε κταση με το hardware του ρομποτικου χεριου, ενω ο Master Node θα περιε χει τους αντι στοιχους client servers που θα καλου ν τις απαραι τητες ενε ργειες. Παραδει γματα ενεργειω ν ει ναι οι συναρτη σεις του υψηλου επιπε δου του BAD με τις οποι ες πραγματοποιη θηκαν τα παραπα νω πειρα - ματα. Οπο τε και ο κο μβος του BarrettHand καλει αυτε ς τις συναρτη σεις ω στε να πραγματοποιου νται οι αντι στοιχες ενε ργειες. Αντι στοιχα, υπα ρχει ε νας κο μβος του ROS για το βραχι ονα της KUKA, ο οποι ος επικοινωνει με τη βιβλι οθηκη του FRI και ελε γχει το hardware του βραχι ονα. Έτσι, λοιπο ν, το με σο επικοινωνι ας μεταξυ του χεριου και του βραχι ονα ει ναι ο Master Node, ο οποι ος δι νει εισο δους και παι ρνει ανα δραση απο το KUKA απο τους KUKA-Clients (οι οποι οι επικοινωνου ν με την σειρα τους με τους KUKA-Servers) και δι νει εισο δους/λαμβα νει ανα δραση απο το BarrettHand με σω την BarrettHand-Clients. Το Σχη μα 4.16 ξεκαθαρι ζει αυτη τη λογικη.\n94 82 Κεφάλαιο 4. BAD και έλεγχος του BarrettHand μέσω ROS Σχη μα 4.16: Η αρχιτεκτονικη των κο μβων στη συ νδεση KUKA-BarrettHand στο ROS\nΑνα πτυξη των ηλεκτρονικω ν πηγω ν του ΣΕΑΒ με τη χρη ση ανοιχτου λογισμικου\nΗλεκτρονικές πηγές ΣΕΑΒ Ανα πτυξη των ηλεκτρονικω ν πηγω ν του ΣΕΑΒ με τη χρη ση ανοιχτου λογισμικου Λεωνίδας Πισπιρίγγας Προγραμματιστής- Διαχειριστής συστημάτων HEAL-Link Συ νδεσμος Ελληνικω ν Ακαδημαϊκω\nΑΡΙΣΤΟΤΕΛΕΙΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΟΝΙΚΗΣ ΣΧΟΛΗ ΘΕΤΙΚΩΝ ΕΠΙΣΤΗΜΩΝ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΦΩΤΙΟΣ Ζ. ΛΟΥΚΟΣ Μ Δ Π Δ Σ Ο ΔΙΔΑΚΤΟΡΙΚΗ ΔΙΑΤΡΙΒΗ Επιβλε πουσα: Ελε νη Καρατζα, Καθηγη τρια ΘΕΣΣΑΛΟΝΙΚΗ Δεκε μβριος 2013