Tekkotsu over NaoQi -VS- Αυτόνομοι Πράκτορες Εργασία Εξαμήνου Χειμερινό Εξ Ορφανουδάκης Μάνος
Tekkotsu Open-source Framework, σε C++, πολύ κομψή αρχιτεκτονική, με ιδιαίτερη μαγεία που κρύβει την απλότητα των εργαλείων που χρησιμοποιεί Αρχικά περιστράφηκε γύρω από τα Sony Aibo Πλέον υποστηρίζει περίπου 8 robots (+1 :) Πληθώρα εργαλείων έτοιμων προς χρήση Particle filters,odometers,kalman,filters,kinematics (forward AND reverse), a complete vision pipeline Finate State Automata based behaviours Παράλληλη / σειριακή εκτέλεση συμπεριφορών Γιατί Tekkotsu;
Tekkotsu: Αρχιτεκτονική Main Process: Handle usercode execution through events. Behavior Class: Core Unit Event Router: Handle Event distribution Timers : Custom EventsControls Vision Pipeline
Tekkotsu: Αρχιτεκτονική Motion Process: Handle real-time joint controlWorldState: Sensor Readings: stay constant while behaviour or motion command is running.MotionManager: Handle MotionCommandsMotionCommand: Motion Primitive
Tekkotsu: Αρχιτεκτονική
NaoQi Γιατί NaoQi; 'Cause Aldebaran says so! :) Easy as Pie to write code! Modernized distributed modular architecture Cross-Language: Python is bliss Webots compatibility: NaoQi over Webots Scheme: Tekkotsu over NaoQi over Webots! NaoQi 1.6 : TBA 1 Μαρτίου Closed Loop Omni Directional Walk Event based code
NaoQi NaoQi middleware: Ο μοναδικός τρόπος να αξοποιήσεις το hardware του Ναο! Δεν έχουν αποκαλυφθεί πολλές λεπτομέρειες για την επικοινωνία με το υπόλοιπο hardware. Introspective Cross-Platform Closs- Language Modular Distributed Architecture: Parallel or serial (asynchronous or asynchronous) function calls between modules residing on different machine Εύκολη υλοποιήση κατανεμημένων αρχιτεκτονικών. SOAP calls, use of thread pools NaoQi 1.6 : TBA 1 Μαρτίου Events!
NaoQi Architecture
Bridging Two Worlds Υλοποιήση inter-architectural bindings! Κλήσεις από την μια πλατφόρμα μεταφράζονται σε κλήσεις στην δεύτερη και αντίστροφα. Η ροή της πληροφορίας που στοχεύουμε είναι το Tekkotsu να ”εξουσίαζει” το hardware που παρέχει το NaoQi. Περιγραφή Hardware στο Tekkotsu: Compile-time definition (selection) of robotic hardware. Συμπεριλαμβάνονται τα αντίστοιχα αρχεία, και με βάση την διαρρύθμιση καθορίζονται τα software libraries. Compilation script inclusion: Προσθήκη του API της Aldebaran στον κώδικα του Tekkotsu, λιγότερο από προφανές οτι υπάρχουν ασυμβατότητες: Pthread libraries, inclusion priorities etc
Bridging Two Worlds Υλοποιήση DeviceDrivers: Στην ”γλώσσα” του Tekkotsu, τα DeviceDrivers συσχετίζονται με: MotionHooks: δουλεία τους να μεταφέρουν πληροφορία από το Tekkotsu προς τον έξω κόσμο. (Joint Positions, led readings etc). DataSources: αντίστροφη πορεία, μεταφορά τιμών αισθητήρων προς το Tekkotsu. (Joint real positions, intertial sensors, etc). Η εικόνα από κάμερα συμπεριλαμβάνεται σε αυτά, με λίγο διαφορετικό τρόπο.
Bridging Two Worlds CameraDriverNaoQi13: Σύνδεση του Tekkotsu Vision Pipeline με την εικόνα του NaoQi. O driver αξιοποιεί ALBroker και AlVideoDevice. Image Polling Thread: Camera Proxy 'getImageRemote' call every N ms. Μετατροπή YUV422 format: Aibo-era YUV vision pipeline, μετατροπή της εικόνας στο YUV format. Παράδοση εικόνας στο Vision Pipiline
Συμπεράσματα Δύο πολύ κομψές προσεγγίσεις! Ο κώδικας που προστέθηκε πρακτικά μικρός! Γίνεται! Το πρώτο δίποδο ρομπότ του Tekkotsu! Αρκετά πράγματα στo Motion είναι out of context για το Nao. Η χρήση των ”έτοιμων” από την Aldebaran πραγμάτων πολλές φόρες δεν ειναι προφανής μέσα στο Tekkotsu. Ευχαριστώ! Ερωτήσεις;
Bridging Two Worlds CameraDriverNaoQi13: Σύνδεση του Tekkotsu Vision Pipeline με την εικόνα του NaoQi. Image Polling Thread: Camera Proxy 'getImageRemote' call every N ms. Μετατροπή YUV422 format: Aibo-era YUV vision pipeline, μετατροπή της εικόνας στο YUV format. Παράδοση εικόνας στο Vision Pipiline