Instaliranje ROS-a u Ubuntu IMG sliku za jednu ploču

Uvod

Neki dan, dok sam radio na svojoj tezi, susreo sam se sa potrebom da kreiram Ubuntu sliku za platformu sa jednom pločicom sa već instaliranim ROS-om (Robot Operating System - operativni sistem robota). Ukratko, diploma je posvećena upravljanju grupom robota. Roboti su opremljeni sa dva točka i tri daljinomera. Cijela stvar se kontrolira iz ROS-a, koji radi na ODROID-C2 ploči.

Instaliranje ROS-a u Ubuntu IMG sliku za jednu ploču
Robot Ladybug. Izvinite zbog lošeg kvaliteta fotografije

Nije bilo ni vremena ni želje da se ROS instalira na svakog robota pojedinačno, pa je stoga postojala potreba za imidžom sistema sa već instaliranim ROS-om. Nakon pretraživanja interneta, pronašao sam nekoliko pristupa kako se to može učiniti.
Općenito, sva pronađena rješenja mogu se podijeliti u sljedeće grupe.

  1. Programi koji kreiraju sliku iz gotovog i konfigurisanog sistema (Distrosirajte Ubuntu Imager, linux live kit, linux respin, sistemski povratak, itd.)
  2. Projekti koji vam omogućavaju da kreirate vlastitu sliku (yocto, linux od nule)
  3. Sami sastavite sliku (prilagođavanje CD-a uživo и Ruski ekvivalent, plus članak o Habréu)

Korištenje rješenja iz prve grupe činilo mi se najjednostavnijom i najatraktivnijom opcijom, ali nikada nisam uspio napraviti sliku sistema uživo za ODROID. Rešenja druge grupe mi takođe nisu odgovarala zbog prilično visokog ulaznog praga. Ručno sklapanje prema dostupnim tutorijalima također nije bilo prikladno, jer... Moja slika nije imala komprimirani sistem datoteka.
Kao rezultat toga, naišao sam na video o chroot-u (chroot - promijeni korijen, link do videa na kraju posta) i njegovim mogućnostima, odlučeno je da se koristi. Zatim ću opisati svoj poseban slučaj prilagođavanja Ubuntua za programere robotike.

Početni podaci:

  • Cijeli proces modifikacije slike (osim upisivanja na SD karticu pomoću balenaEtcher-a) obavljen je na Ubuntu 18.04 operativnom sistemu.
  • Operativni sistem čiji sam sklop modifikovao je Ubuntu 18.04.3 mate desktop verzija.
  • Mašina na kojoj bi sklopljeni sistem trebao raditi je ODROID-C2.

Priprema slike

  1. Preuzmite Ubuntu sliku za ODROID sa službene stranice

  2. Raspakivanje arhive

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

  3. Kreirajte direktorij u koji ćemo montirati sliku

    mkdir mnt

  4. Odredite particiju na kojoj se nalazi sistem datoteka

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

    Tražimo particiju sa datotečnim sistemom u ext2, ext3 ili ext4 formatu. Potrebna nam je adresa početka sekcije (na ekranu istaknuta crvenom bojom):

    Instaliranje ROS-a u Ubuntu IMG sliku za jednu ploču

    Napomena. Lokacija sistema datoteka također se može vidjeti pomoću uslužnog programa podijeljen.

  5. Montaža slike

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

    Odjeljak koji nam je potreban počinje blokom 264192 (vaši brojevi se mogu razlikovati), veličina jednog bloka je 512 bajtova, pomnožite ih da dobijete uvlačenje u bajtovima.

  6. Idite u folder sa montiranim sistemom i ostanite u njemu

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

    ~/livecd/mnt — puna putanja do direktorija s montiranim sistemom
    bin/sh - školjka (može se zamijeniti i sa bin/bash)
    Sada možete započeti instaliranje potrebnih paketa i aplikacija.

Instaliranje ROS-a

Instalirao sam najnoviju verziju ROS-a (ROS Melodic) prema zvanični tutorijal.

  1. Ažurirajte listu paketa

    sudo apt-get update

    Evo gdje sam dobio grešku:

    Err:6 http://deb.odroid.in/c2 bionic InRelease
    The following signatures were invalid: EXPKEYSIG 5360FB9DAB19BAC9 Mauro Ribeiro (mdrjr) <[email protected]>

    To je zbog činjenice da je ključ za potpisivanje paketa istekao. Da ažurirate ključeve, upišite:

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

  2. Priprema sistema za instalaciju ROS-a

    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. Instaliranje ROS-a
    Nažalost, nisam mogao da instaliram desktop verziju ROS-a, pa sam instalirao samo osnovne pakete:

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

    Napomena 1. Tokom procesa instalacije ponekad je došlo do greške:

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

    Popravljeno je brisanjem keša pomoću uslužnog programa apt:

    sudo apt-get clean; sudo apt-get autoclean

    Napomena 2. Nakon instalacije, izvor koristeći naredbu:

    source /opt/ros/melodic/setup.bash

    neće raditi, jer Nismo pokrenuli bash, tako da ga NE treba ukucati u terminal.

  4. Instaliranje potrebnih zavisnosti

    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. Postavljanje prava pristupa
    Pošto smo prijavljeni i, u stvari, izvodimo sve radnje u ime root sistema koji se sklapa, ROS će biti pokrenut samo sa pravima superkorisnika.
    Prilikom pokušaja pokretanja roscore bez sudoa, pojavljuje se greška:

    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'

    Da spriječimo pojavu greške, hajde da rekurzivno promijenimo prava pristupa kućnom direktoriju ROS korisnika. Da to uradimo ukucamo:

    sudo rosdep fix-permissions

  6. Dodatna instalacija rviz i rqt paketa

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

Završni dodiri

  1. Izlaz iz chroot-a:
    exit
  2. Demontirajte sliku
    cd ..
    sudo umount mnt/
  3. Spakujmo sliku sistema u arhivu
    xz –ckv1 <файл образа>

Sve! Sada uz pomoć balenaetcher možete snimiti sliku sistema na SD karticu, umetnuti je u ODROID-C2 i imat ćete instaliran Ubuntu sa ROS-om!

Reference:

  • Ovaj video je puno pomogao oko toga kako varati u Linuxu i zašto vam je to potrebno:



izvor: www.habr.com

Dodajte komentar