Εγκατάσταση ROS σε εικόνα Ubuntu IMG για μία πλακέτα
Εισαγωγή
Τις προάλλες, ενώ εργαζόμουν για τη διατριβή μου, αντιμετώπισα την ανάγκη να δημιουργήσω μια εικόνα Ubuntu για μια πλατφόρμα μονής πλακέτας με ήδη εγκατεστημένο ROS (Robot Operating System - λειτουργικό σύστημα ρομπότ). Με λίγα λόγια, το δίπλωμα είναι αφιερωμένο στη διαχείριση μιας ομάδας ρομπότ. Τα ρομπότ είναι εξοπλισμένα με δύο τροχούς και τρεις αποστασιοποιητές. Το όλο θέμα ελέγχεται από το ROS, το οποίο τρέχει στην πλακέτα ODROID-C2.
Ρομπότ Πασχαλίτσα. Συγγνώμη για την κακή ποιότητα φωτογραφίας
Δεν υπήρχε ούτε χρόνος ούτε επιθυμία να εγκατασταθεί το ROS σε κάθε ρομπότ ξεχωριστά, και επομένως υπήρχε ανάγκη για μια εικόνα συστήματος με ήδη εγκατεστημένο ROS. Μετά την περιήγηση στο Διαδίκτυο, βρήκα διάφορες προσεγγίσεις για το πώς θα μπορούσε να γίνει αυτό.
Γενικά, όλες οι λύσεις που βρέθηκαν μπορούν να χωριστούν στις ακόλουθες ομάδες.
Η χρήση λύσεων από την πρώτη ομάδα φαινόταν να είναι η απλούστερη και πιο ελκυστική επιλογή, αλλά ποτέ δεν μπόρεσα να δημιουργήσω μια ζωντανή εικόνα συστήματος για το ODROID. Οι λύσεις της δεύτερης ομάδας επίσης δεν μου ταίριαξαν λόγω του αρκετά υψηλού ορίου εισόδου. Η χειροκίνητη συναρμολόγηση σύμφωνα με τα διαθέσιμα σεμινάρια δεν ήταν επίσης κατάλληλη, επειδή... Η εικόνα μου δεν είχε συμπιεσμένο σύστημα αρχείων.
Ως αποτέλεσμα, έπεσα πάνω σε ένα βίντεο για το chroot (chroot - αλλαγή ρίζας, σύνδεσμος προς το βίντεο στο τέλος της ανάρτησης) και τις δυνατότητές του, αποφασίστηκε η χρήση του. Στη συνέχεια, θα περιγράψω τη συγκεκριμένη περίπτωση προσαρμογής του Ubuntu για προγραμματιστές ρομποτικής.
Δεδομένα προέλευσης:
Ολόκληρη η διαδικασία τροποποίησης εικόνας (εκτός από την εγγραφή στην κάρτα SD με χρήση balenaEtcher) πραγματοποιήθηκε στο λειτουργικό σύστημα Ubuntu 18.04.
Το λειτουργικό σύστημα του οποίου τη συναρμολόγηση τροποποίησα είναι η έκδοση του Ubuntu 18.04.3 mate για επιτραπέζιους υπολογιστές.
Το μηχάνημα στο οποίο θα πρέπει να λειτουργεί το συναρμολογημένο σύστημα είναι το ODROID-C2.
Δημιουργήστε έναν κατάλογο στον οποίο θα προσαρτήσουμε την εικόνα
mkdir mnt
Προσδιορίστε το διαμέρισμα στο οποίο βρίσκεται το σύστημα αρχείων
file <файл образа>
Ψάχνουμε για ένα διαμέρισμα με σύστημα αρχείων σε μορφή ext2, ext3 ή ext4. Χρειαζόμαστε τη διεύθυνση της αρχής της ενότητας (επισημαίνεται με κόκκινο χρώμα στην οθόνη):
Σημείωση. Η θέση του συστήματος αρχείων μπορεί επίσης να προβληθεί χρησιμοποιώντας το βοηθητικό πρόγραμμα διαχωρίστηκε.
Τοποθέτηση της εικόνας
sudo mount -o loop,offset=$((264192*512)) <файл с образом> mnt/
Η ενότητα που χρειαζόμαστε ξεκινά με το μπλοκ 264192 (οι αριθμοί σας μπορεί να διαφέρουν), το μέγεθος ενός μπλοκ είναι 512 byte, πολλαπλασιάστε τα για να λάβετε την εσοχή σε byte.
Μεταβείτε στο φάκελο με το τοποθετημένο σύστημα και κάντε παρέα σε αυτόν
cd mnt/
sudo chroot ~/livecd/mnt/ bin/sh
~/livecd/mnt — πλήρης διαδρομή προς τον κατάλογο με το προσαρτημένο σύστημα bin/sh - κέλυφος (μπορεί επίσης να αντικατασταθεί με bin/bash)
Τώρα μπορείτε να ξεκινήσετε την εγκατάσταση των απαραίτητων πακέτων και εφαρμογών.
Εγκατάσταση ROS
Εγκατέστησα την πιο πρόσφατη έκδοση του ROS (ROS Melodic) σύμφωνα με επίσημο φροντιστήριο.
Ενημερώστε τη λίστα των πακέτων
sudo apt-get update
Εδώ είναι που έλαβα το σφάλμα:
Err:6 http://deb.odroid.in/c2 bionic InRelease
The following signatures were invalid: EXPKEYSIG 5360FB9DAB19BAC9 Mauro Ribeiro (mdrjr) <[email protected]>
Αυτό οφείλεται στο γεγονός ότι το κλειδί υπογραφής πακέτου έχει λήξει. Για να ενημερώσετε τα κλειδιά, πληκτρολογήστε:
Ρύθμιση δικαιωμάτων πρόσβασης
Εφόσον είμαστε συνδεδεμένοι και, στην πραγματικότητα, εκτελούμε όλες τις ενέργειες για λογαριασμό της ρίζας του συστήματος που συναρμολογείται, το ROS θα εκκινηθεί μόνο με δικαιώματα υπερχρήστη.
Όταν προσπαθείτε να εκτελέσετε το roscore χωρίς sudo, παρουσιάζεται ένα σφάλμα:
Traceback (most recent call last): File "/opt/ros/melodic/lib/python2.7/dist-packages/roslaunch/__init__.py", line 230, in main write_pid_file(options.pid_fn, options.core, options.port) File "/opt/ros/melodic/lib/python2.7/dist-packages/roslaunch/__init__.py", line 106, in write_pid_file with open(pid_fn, "w") as f: IOError: [Errno 13] Permission denied: '/home/user/.ros/roscore-11311.pid'
Για να αποτρέψουμε την εμφάνιση του σφάλματος, ας αλλάξουμε αναδρομικά τα δικαιώματα πρόσβασης στον αρχικό κατάλογο του χρήστη ROS. Για να το κάνουμε αυτό πληκτρολογούμε:
Ας συσκευάσουμε την εικόνα του συστήματος σε ένα αρχείο
xz –ckv1 <файл образа>
Ολα! Τώρα με τη βοήθεια BalenaEtcher μπορείτε να εγγράψετε την εικόνα του συστήματος σε μια κάρτα SD, να την τοποθετήσετε στο ODROID-C2 και θα έχετε εγκατεστημένο το Ubuntu με ROS!
Βιβλιογραφικές αναφορές:
Αυτό το βίντεο βοήθησε πολύ στο πώς να εξαπατήσετε στο Linux και γιατί το χρειάζεστε: