Εγκατάσταση ROS σε εικόνα Ubuntu IMG για μία πλακέτα

Εισαγωγή

Τις προάλλες, ενώ εργαζόμουν για τη διατριβή μου, αντιμετώπισα την ανάγκη να δημιουργήσω μια εικόνα Ubuntu για μια πλατφόρμα μονής πλακέτας με ήδη εγκατεστημένο ROS (Robot Operating System - λειτουργικό σύστημα ρομπότ). Με λίγα λόγια, το δίπλωμα είναι αφιερωμένο στη διαχείριση μιας ομάδας ρομπότ. Τα ρομπότ είναι εξοπλισμένα με δύο τροχούς και τρεις αποστασιοποιητές. Το όλο θέμα ελέγχεται από το ROS, το οποίο τρέχει στην πλακέτα ODROID-C2.

Εγκατάσταση ROS σε εικόνα Ubuntu IMG για μία πλακέτα
Ρομπότ Πασχαλίτσα. Συγγνώμη για την κακή ποιότητα φωτογραφίας

Δεν υπήρχε ούτε χρόνος ούτε επιθυμία να εγκατασταθεί το ROS σε κάθε ρομπότ ξεχωριστά, και επομένως υπήρχε ανάγκη για μια εικόνα συστήματος με ήδη εγκατεστημένο ROS. Μετά την περιήγηση στο Διαδίκτυο, βρήκα διάφορες προσεγγίσεις για το πώς θα μπορούσε να γίνει αυτό.
Γενικά, όλες οι λύσεις που βρέθηκαν μπορούν να χωριστούν στις ακόλουθες ομάδες.

  1. Προγράμματα που δημιουργούν μια εικόνα από ένα έτοιμο και διαμορφωμένο σύστημα (Διανείμετε το Ubuntu Imager, κιτ linux live, linux respin, systemback, κ.λπ.)
  2. Έργα που σας επιτρέπουν να δημιουργήσετε τη δική σας εικόνα (γιοκτο, linux από την αρχή)
  3. Συναρμολογώντας την εικόνα μόνοι σας (Προσαρμογή ζωντανού CD и Ρωσικό αντίστοιχο, ένα θετικό άρθρο για το Habré)

Η χρήση λύσεων από την πρώτη ομάδα φαινόταν να είναι η απλούστερη και πιο ελκυστική επιλογή, αλλά ποτέ δεν μπόρεσα να δημιουργήσω μια ζωντανή εικόνα συστήματος για το ODROID. Οι λύσεις της δεύτερης ομάδας επίσης δεν μου ταίριαξαν λόγω του αρκετά υψηλού ορίου εισόδου. Η χειροκίνητη συναρμολόγηση σύμφωνα με τα διαθέσιμα σεμινάρια δεν ήταν επίσης κατάλληλη, επειδή... Η εικόνα μου δεν είχε συμπιεσμένο σύστημα αρχείων.
Ως αποτέλεσμα, έπεσα πάνω σε ένα βίντεο για το chroot (chroot - αλλαγή ρίζας, σύνδεσμος προς το βίντεο στο τέλος της ανάρτησης) και τις δυνατότητές του, αποφασίστηκε η χρήση του. Στη συνέχεια, θα περιγράψω τη συγκεκριμένη περίπτωση προσαρμογής του Ubuntu για προγραμματιστές ρομποτικής.

Δεδομένα προέλευσης:

  • Ολόκληρη η διαδικασία τροποποίησης εικόνας (εκτός από την εγγραφή στην κάρτα SD με χρήση balenaEtcher) πραγματοποιήθηκε στο λειτουργικό σύστημα Ubuntu 18.04.
  • Το λειτουργικό σύστημα του οποίου τη συναρμολόγηση τροποποίησα είναι η έκδοση του Ubuntu 18.04.3 mate για επιτραπέζιους υπολογιστές.
  • Το μηχάνημα στο οποίο θα πρέπει να λειτουργεί το συναρμολογημένο σύστημα είναι το ODROID-C2.

Προετοιμασία της εικόνας

  1. Κατεβάστε την εικόνα του Ubuntu για το ODROID από επίσημη ιστοσελίδα

  2. Αποσυσκευασία του αρχείου

    unxz –kv <файл архива с образом>

  3. Δημιουργήστε έναν κατάλογο στον οποίο θα προσαρτήσουμε την εικόνα

    mkdir mnt

  4. Προσδιορίστε το διαμέρισμα στο οποίο βρίσκεται το σύστημα αρχείων

    file <файл образа>

    Ψάχνουμε για ένα διαμέρισμα με σύστημα αρχείων σε μορφή ext2, ext3 ή ext4. Χρειαζόμαστε τη διεύθυνση της αρχής της ενότητας (επισημαίνεται με κόκκινο χρώμα στην οθόνη):

    Εγκατάσταση ROS σε εικόνα Ubuntu IMG για μία πλακέτα

    Σημείωση. Η θέση του συστήματος αρχείων μπορεί επίσης να προβληθεί χρησιμοποιώντας το βοηθητικό πρόγραμμα διαχωρίστηκε.

  5. Τοποθέτηση της εικόνας

    sudo mount -o loop,offset=$((264192*512)) <файл с образом> mnt/

    Η ενότητα που χρειαζόμαστε ξεκινά με το μπλοκ 264192 (οι αριθμοί σας μπορεί να διαφέρουν), το μέγεθος ενός μπλοκ είναι 512 byte, πολλαπλασιάστε τα για να λάβετε την εσοχή σε byte.

  6. Μεταβείτε στο φάκελο με το τοποθετημένο σύστημα και κάντε παρέα σε αυτόν

    cd mnt/
    sudo chroot ~/livecd/mnt/ bin/sh

    ~/livecd/mnt — πλήρης διαδρομή προς τον κατάλογο με το προσαρτημένο σύστημα
    bin/sh - κέλυφος (μπορεί επίσης να αντικατασταθεί με bin/bash)
    Τώρα μπορείτε να ξεκινήσετε την εγκατάσταση των απαραίτητων πακέτων και εφαρμογών.

Εγκατάσταση ROS

Εγκατέστησα την πιο πρόσφατη έκδοση του ROS (ROS Melodic) σύμφωνα με επίσημο φροντιστήριο.

  1. Ενημερώστε τη λίστα των πακέτων

    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]>

    Αυτό οφείλεται στο γεγονός ότι το κλειδί υπογραφής πακέτου έχει λήξει. Για να ενημερώσετε τα κλειδιά, πληκτρολογήστε:

    sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys AB19BAC9

  2. Προετοιμασία του συστήματος για την εγκατάσταση ROS

    sudo sh -c 'echo "deb http://packages.ros.org/ros/ubuntu $(lsb_release -sc) main" > /etc/apt/sources.list.d/ros-latest.list'

    sudo apt-key adv --keyserver 'hkp://keyserver.ubuntu.com:80' --recv-key C1CF6E31E6BADE8868B172B4F42ED6FBAB17C654

    sudo apt update

  3. Εγκατάσταση ROS
    Δυστυχώς, δεν μπόρεσα να εγκαταστήσω την επιτραπέζια έκδοση του ROS, έτσι εγκατέστησα μόνο τα βασικά πακέτα:

    sudo apt install ros-melodic-ros-base
    apt search ros-melodic

    Σημείωση 1 Κατά τη διαδικασία εγκατάστασης μερικές φορές παρουσιάστηκε ένα σφάλμα:

    dpkg: error: failed to write status database record about 'iputils-ping' to '/var/lib/dpkg/status': No space left on device

    Διορθώθηκε με εκκαθάριση της προσωρινής μνήμης χρησιμοποιώντας το βοηθητικό πρόγραμμα apt:

    sudo apt-get clean; sudo apt-get autoclean

    Σημείωση 2 Μετά την εγκατάσταση, προέλευση χρησιμοποιώντας την εντολή:

    source /opt/ros/melodic/setup.bash

    δεν θα λειτουργήσει, γιατί Δεν εκτελέσαμε το bash, επομένως ΔΕΝ χρειάζεται να πληκτρολογηθεί στο τερματικό.

  4. Εγκατάσταση των απαραίτητων εξαρτήσεων

    sudo apt install python-rosdep python-rosinstall python-rosinstall-generator python-wstool build-essential

    sudo apt install python-rosdep

    sudo rosdep init
    rosdep update

  5. Ρύθμιση δικαιωμάτων πρόσβασης
    Εφόσον είμαστε συνδεδεμένοι και, στην πραγματικότητα, εκτελούμε όλες τις ενέργειες για λογαριασμό της ρίζας του συστήματος που συναρμολογείται, το 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. Για να το κάνουμε αυτό πληκτρολογούμε:

    sudo rosdep fix-permissions

  6. Πρόσθετη εγκατάσταση των πακέτων rviz και rqt

    sudo apt-get install ros-melodic-rqt ros-melodic-rviz

Τελικές πινελιές

  1. Έξοδος από το chroot:
    exit
  2. Αποσυνδέστε την εικόνα
    cd ..
    sudo umount mnt/
  3. Ας συσκευάσουμε την εικόνα του συστήματος σε ένα αρχείο
    xz –ckv1 <файл образа>

Ολα! Τώρα με τη βοήθεια BalenaEtcher μπορείτε να εγγράψετε την εικόνα του συστήματος σε μια κάρτα SD, να την τοποθετήσετε στο ODROID-C2 και θα έχετε εγκατεστημένο το Ubuntu με ROS!

Βιβλιογραφικές αναφορές:

  • Αυτό το βίντεο βοήθησε πολύ στο πώς να εξαπατήσετε στο Linux και γιατί το χρειάζεστε:



Πηγή: www.habr.com

Προσθέστε ένα σχόλιο