Τ
ο σύστημα ROS (Robotic Operating System) αποτελεί
μία πλατφόρμα λογισμικού για τον προγραμματισμό ρο-
μποτικών εφαρμογών. Αν και το ROS περιλαμβάνει πλή-
θος εντολών και υπηρεσιών που άπτονται της δικαιοδοσίας
του λειτουργικού συστήματος, όπως είναι ο έλεγχος συσκευ-
ών, εντούτοις μπορεί να λειτουργήσει και ως ένα ενδιάμεσο
περιβάλλον μεταξύ λειτουργικού συστήματος και εφαρμογών,
υποβοηθώντας με αυτό τον τρόπο κρίσιμες διαδικασίες των
ρομποτικών εφαρμογών που σχετίζονται με τη λήψη αποφά-
σεων. Επιπλέον, η σουίτα του ROS περιλαμβάνει όλα εκείνα
τα απαραίτητα εργαλεία και τις βιβλιοθήκες που επιτρέπουν
την ανάπτυξη και εκτέλεση προγραμμάτων λογισμικού. Τέ-
λος, πρέπει να σημειωθεί ότι, αν και υπάρχει πλήθος από πα-
ραπλήσιες πλατφόρμες που ειδικεύονται στην ανάπτυξη ρο-
μποτικών εφαρμογών, όπως είναι οι Player [1], YARP [2],
Orocos [3], CARMEN [4], Orca [5], MOOS [6] και Microsoft
Robotics Studio [7], η λύση του ROS υπερτερεί όλων αυτών,
καθώς προσφέρει καλύτερη και πιο αξιόπιστη λειτουργία.
Μεταξύ των βασικών χαρακτηριστικών που έχει το σύστημα
ROS είναι η δυνατότητα εκτέλεσης των προγραμμάτων που
αναπτύσσονται σε αυτό σε πραγματικό χρόνο (real-time). Ανα-
λυτικότερα, τα συστήματα πραγματικού χρόνου πρέπει να εί-
ναι σε θέση να λαμβάνουν αποφάσεις και να ολοκληρώνουν
κρίσιμες διαδικασίες μέσα σε σύντομο και προκαθορισμένο
χρονικό διάστημα.
Τα βασικά γνωρίσματα του ROS, σε σύγκριση με τις υπό-
λοιπες πλατφόρμες λογισμικού για την ανάπτυξη ρομποτικών
εφαρμογών, μπορούν να συνοψιστούν στα ακόλουθα:
A. Τοπολογία ομότιμων κόμβων (Peer-to-Peer)
Οι ρομποτικές εφαρμογές που αναπτύσσονται με τη χρήση
της πλατφόρμας του ROS αποτελούνται από ένα σύνολο
διεργασιών, οι οποίες ενδεχομένως εκτελούνται σε διαφορε-
τικούς υπολογιστές και επικοινωνούν μεταξύ τους μέσω μίας
τοπολογίας ομότιμων κόμβων. Αν και το ROS υποστηρίζει τη
χρήση ενός κεντρικού διακομιστή, όπως, για παράδειγμα, στο
σύστημα CARMEN [4], μία τέτοια προσέγγιση οδηγεί στην
ανάγκη μεταφοράς μεγάλου όγκου πληροφορίας. Το πρό-
βλημα αυτό γίνεται ακόμη πιο σημαντικό όταν η εφαρμογή
που εκτελούμε πρέπει να λειτουργεί σε πραγματικό χρόνο.
Αντίθετα, η αποκεντρωμένη προσέγγιση που επιτρέπεται με
τη χρήση της τοπολογίας των ομότιμων κόμβων καθιστά
απλούστερη και γρηγορότερη την επικοινωνία μεταξύ των
διεργασιών.
Β. Υποστήριξη πολλαπλών γλωσσών προγραμματισμού
Μέχρι στιγμής, η πλατφόρμα του ROS υποστηρίζει την ανά-
πτυξη προγραμμάτων με τη χρήση τεσσάρων κοινά χρησιμο-
ποιούμενων γλωσσών προγραμματισμού, της C++, της
Python, της Octave και της LISP, ενώ στο στάδιο της ανάπτυ-
ξης βρίσκεται ένα μεγάλο σύνολο άλλων γλωσσών (π.χ.,
υπάρχουν δοκιμαστικές εκδόσεις για Java και Lua). Επιπλέον,
προκειμένου να αυξηθεί η αποτελεσματικότητα της πλατφόρ-
μας του ROS, έχει ακολουθηθεί μία τελείως διαφορετική προ-
σέγγιση σε σχέση με αυτήν που χρησιμοποιείται στα υπόλοι-
πα λειτουργικά συστήματα. Συγκεκριμένα, αντί να αναπτυχθεί
όλη η πλατφόρμα σε γλώσσα C και να υπάρχουν διεπαφές
προς τις υπόλοιπες γλώσσες προγραμματισμού έχει επιλεγεί
η πλατφόρμα του ROS να αναπτυχθεί εξ ολοκλήρου σε καθε-
μία από τις γλώσσες αυτές, προκειμένου να επιτυγχάνει όσο
το δυνατόν καλύτερη αξιοποίηση των δυνατοτήτων που προ-
σφέρουν. Τέλος, προκειμένου να υποστηριχθεί η διαδικασία
της ανάπτυξης εφαρμογών με τη χρήση διαφορετικών γλωσ-
σών προγραμματισμού, το ROS χρησιμοποιεί έναν απλό τύπο
διεπαφής, ο οποίος περιγράφει τα μηνύματα που ανταλλάσ-
σονται μεταξύ των υποπρογραμμάτων.
Γ. Επαναχρησιμοποιήσιμο
Οι περισσότερες από τις υπάρχουσες εφαρμογές ρομποτι-
κής περιλαμβάνουν ένα σύνολο από προγράμματα οδήγησης
(drivers) και αλγορίθμους που μπορούν να επαναχρησιμοποι-
ηθούν και σε άλλες εφαρμογές, πέρα από αυτές για τις οποί-
ες αναπτύχθηκαν αρχικά. Για το σκοπό αυτό, όλες οι εφαρμο-
γές που αναπτύσσονται στην πλατφόρμα του ROS εκτελού-
νται ως αυτόνομα προγράμματα, τα οποία δεν εμφανίζουν
καμία εξάρτηση από το ROS. Τοποθετώντας «εικονικά» σχε-
δόν όλη την πολυπλοκότητα της εφαρμογής σε βιβλιοθήκες
και δημιουργώντας εκτελέσιμα προγράμματα μικρού μεγέ-
θους, τα οποία απλά στηρίζονται στις βιβλιοθήκες του ROS,
επιτρέπεται η εύκολη επαναχρησιμοποίηση του κώδικα μετα-
ξύ διαφορετικών εφαρμογών.
Δ. Ελεύθερο και Ανοιχτού Κώδικα
Ο πλήρης κώδικας της πλατφόρμας του ROS είναι διαθέσι-
μος για εγκατάσταση σε ένα πλήθος αρχιτεκτονικών και λει-
τουργικών συστημάτων κάτω από την άδεια BSD. Αξιοποιώ-
ντας τη βασική δομή λειτουργίας του ROS, η οποία επιτρέπει
την ανταλλαγή δεδομένων μεταξύ των πακέτων με τη χρήση
επικοινωνίας ανάμεσα στις διεργασίες χωρίς να απαιτείται η
σύνδεση αυτών στο ίδιο εκτελέσιμο, επιτρέπεται η ανάπτυξη
Linux Inside
68
Των Κώστα Σιώζιου, Διονύση Διαμαντόπουλου και Θανάση Δουκλιά <ksiop@microlab.ntua.gr>
Linux Labs - Robotics
Ποιος είπε ότι η ανάπτυξη ρομποτικών εφαρμογών
απαιτεί ειδικευμένο λογισμικό; Δείτε πόσο εύκολα
μπορεί να γίνει με το ROS!
Εργαλεία:
ROS, Ubuntu
Δυσκολία:
URL:
http://goo.gl/beyYx
Wiki
Ανάπτυξη ρομποτικών εφαρμογών με το ROS
Μέλη του εργαστηρίου MicroLab (EMΠ), ασχολούνται με την ανάπτυξη ρομποτικών εφαρμογών.
Οι ρομποτικές εφαρμογές που αναπτύσσονται με
τη χρήση της πλατφόρμας του ROS αποτελούνται
από ένα σύνολο διεργασιών, οι οποίες
ενδεχομένως εκτελούνται σε διαφορετικούς
υπολογιστές και επικοινωνούν μεταξύ τους
μέσω μίας τοπολογίας ομότιμων κόμβων.