Page 70 - Linux Inside τ. 8

Basic HTML Version

Linux Inside
70
export
ROS_PACKAGE_PATH=~/ros_workspace:/opt/ros/electric/
stacks:$ROS_PACKAGE_PATH
Με αυτό τον τρόπο καθοδηγούμε το λειτουργικό σύστημα
να αναζητήσει πρώτα τις δομές/πακέτα στο δικό μας κατάλο-
γο και, εν συνεχεία (αν δεν βρεθεί εκεί), η αναζήτηση να γίνει
στο εξ ορισμού μονοπάτι εγκατάστασης του ROS. Τέλος, και
προκειμένου να επιτρέπουμε την αυτόματη εισαγωγή των πα-
ραμέτρων που σχετίζονται με το περιβάλλον του ROS κάθε
φορά που ανοίγουμε ένα νέο τερματικό, χρησιμοποιούμε την
ακόλουθη εντολή:
echo "source /opt/ros/electric/setup.bash" >> ~/.bashrc
. ~/.bashrc
Προσοχή: Σε περίπτωση που έχουμε εγκαταστήσει στον
υπολογιστή μας περισσότερες από μία διανομές του ROS, το
αρχείο ~/.bashrc πρέπει να διαβάζει το αντίστοιχο
setup.bash για την τρέχουσα διανομή. Αντίστοιχα, αν θέλουμε
να αλλάξουμε το περιβάλλον στο τρέχον κέλυφος, τότε η
εντολή που χρησιμοποιούμε είναι:
source /opt/ros/electric/setup.bash
Περιήγηση στη δομή αρχείων του ROS
Στην ενότητα αυτή περιγράφονται οι βασικές αρχές για την
κατανόηση της δομής αρχείων του ROS, η οποία αποτελείται
από τις εξής τέσσερις οντότητες:
Πακέτο (Packet):
Αποτελεί το χαμηλότερο επίπεδο στην
ιεραρχία του συστήματος ROS, ενώ το περιεχόμενό τους
μπορεί να είναι οτιδήποτε (π.χ. βιβλιοθήκες, εργαλεία, εκτε-
λέσιμα, αρχεία παραμετροποίησης κ.ά.).
Δήλωση (Manifest):
Η συγκεκριμένη οντότητα αποτελεί
μία περιγραφή του πακέτου και χρησιμοποιείται προκειμένου
να καθορίσει τις εξαρτήσεις μεταξύ των πακέτων.
Δομή (Stack):
Οι δομές περιέχουν ένα σύνολο αρχείων,
τα οποία αποτελούν μία βιβλιοθήκη υψηλότερου επιπέδου.
Δήλωση Δομής (Stack Manifest):
Είναι το αντίστοιχο των
απλών δηλώσεων, απλά απευθύνονται σε δομές.
Έχοντας τη δομή ενός καταλόγου με αρχεία, είναι αρκετά
εύκολο να διακρίνουμε τα πακέτα από τις δομές: το πακέτο
είναι ένας κατάλογος που περιέχει ένα αρχείο με το όνομα
manifest.xml, ενώ η δομή είναι ένας κατάλογος που περιλαμ-
βάνει το αρχείο stack.xml. Το
Σχήμα 2
παρουσιάζει μία τυπι-
κή δομή καταλόγων, όπου φαίνεται η διάκριση μεταξύ των
προαναφερθεισών οντοτήτων που χρησιμοποιούνται στο σύ-
στημα ROS. Προκειμένου να περιηγηθούμε τα πακέτα και τις
δομές του ROS, υπάρχουν ορισμένες ειδικού σκοπού εντο-
λές, οι οποίες αντικαθιστούν τις αντίστοιχες εντολές (π.χ., ls
και cd) που συναντώνται στα λειτουργικά συστήματα. Εν συ-
νεχεία, περιγράφονται περιληπτικά οι βασικότερες εξ αυτών:
Οι εντολές rospack και rosstack επιτρέπουν την αναζήτηση
πληροφοριών σχετικά με τα πακέτα και τις δομές, αντίστοιχα.
Η χρήση της εντολής που επιστρέφει το μονοπάτι στο οποίο
βρίσκεται αποθηκευμένο το πακέτο ή η δομή, συντάσσεται ως
εξής:
$ rospack find [όνομα_πακέτου]
$ rosstack find [όνομα_δομής]
Για την απευθείας μετακίνηση στον κατάλογο όπου βρίσκε-
ται αποθηκευμένο ένα πακέτο ή μία δομή, χρησιμοποιείται η
εντολή roscd ως εξής:
$ roscd [όνομα_προορισμού [/υποκατάλογος]]
Πρέπει να σημειωθεί ότι για την εντολή roscd, όπως και για
κάθε άλλη εντολή του ROS, τα πακέτα/δομές που εντοπίζει
πρέπει να βρίσκονται σε υποκαταλόγους του μονοπατιού
$ROS_PACKAGE_PATH. Στην περίπτωση που χρησιμοποιή-
σουμε την εντολή roscd χωρίς ορίσματα, θα μεταφερθούμε
στον κατάλογο που αντιστοιχεί στο $ROS_ROOT. Αντίστοιχα,
η εντολή roscd log αλλάζει τον τρέχοντα κατάλογο στον κατά-
λογο στον οποίο το σύστημα ROS αποθηκεύει τα αρχεία κα-
ταγραφής (log files). Προσοχή: Σε περίπτωση που δεν έχουμε
εκτελέσει ακόμη κανένα πρόγραμμα στο ROS, η χρήση της
εντολής roscd log θα επιστρέψει ένα μήνυμα σφάλματος.
Επόμενη βασική εντολή είναι η rosls, η οποία επιτρέπει την
απευθείας προβολή των περιεχομένων ενός πακέτου, μίας
δομής ή μίας διαδρομής με βάση το όνομα αντί του μονοπα-
τιού (όπως συμβαίνει στις διανομές του Linux). Η σύνταξη της
συγκεκριμένης εντολής είναι:
$ rosls [όνομα_τοποθεσίας [/υποκατάλογος]]
Προκειμένου να δημιουργήσουμε ένα νέο πακέτο στο ROS,
χρησιμοποιούμε την ακόλουθη εντολή (η πληροφορία για τις
εξαρτήσεις είναι αποθηκευμένη στα αρχεία δηλώσεων):
roscreate-pkg [όνομα_πακέτου]
roscreate-pkg [όνομα_πακέτου] [εξάρτηση_1] [εξάρτηση_2]
[εξάρτηση_3]
Η δημιουργία πακέτων στο περιβάλλον του ROS, που είναι
αντίστοιχη με την εντολή make στο Linux, γίνεται με τις εντο-
λές:
rosmake [πακέτο]
rosmake [πακέτο1] [πακέτο2]
Για την εμφάνιση πληροφοριών που αφορούν στους κόμ-
βους του ROS οι οποίοι εκτελούνται εκείνη τη στιγμή, μπο-
ρούμε να χρησιμοποιήσουμε τις ακόλουθες εντολές:
rosnode ping - ελέγχει τη σύνδεση με τον κόμβο
Linux Labs - Robotics
Σε περίπτωση που δεν έχουμε εκτελέσει
ακόμη κανένα πρόγραμμα στο ROS, η χρήση
της εντολής roscd log θα επιστρέψει ένα
μήνυμα σφάλματος.
Οι τέσσερις οντότητες του λειτουργικού συστήματος ROS.
2