Instalarea ROS într-o imagine Ubuntu IMG pentru o singură placă

Introducere

Zilele trecute, în timp ce lucram la teza mea, m-am confruntat cu nevoia de a crea o imagine Ubuntu pentru o platformă single-board cu ROS deja instalat (Robot Operating System - sistem de operare robot). Pe scurt, diploma este dedicată conducerii unui grup de roboți. Roboții sunt echipați cu două roți și trei telemetru. Totul este controlat de la ROS, care rulează pe placa ODROID-C2.

Instalarea ROS într-o imagine Ubuntu IMG pentru o singură placă
Buburuza robot. Scuze pentru calitatea slabă a fotografiei

Nu a existat nici timp, nici dorința de a instala ROS pe fiecare robot individual și, prin urmare, a fost nevoie de o imagine de sistem cu ROS deja instalat. După ce am navigat pe internet, am găsit mai multe abordări cu privire la modul în care se poate face acest lucru.
În general, toate soluțiile găsite pot fi împărțite în următoarele grupuri.

  1. Programe care creează o imagine dintr-un sistem gata făcut și configurat (Distroshare Ubuntu Imager, kit live linux, linux respin, systemback etc.)
  2. Proiecte care vă permit să vă creați propria imagine (yocto, Linux de la zero)
  3. Asamblați singur imaginea (personalizare live CD и echivalent rusesc, un plus articol despre Habré)

Utilizarea soluțiilor din primul grup părea a fi cea mai simplă și mai atractivă opțiune, dar nu am reușit niciodată să creez o imagine de sistem live pentru ODROID. Nici soluțiile din a doua grupă nu mi s-au potrivit din cauza pragului de intrare destul de mare. Nici asamblarea manuală conform tutorialelor disponibile nu a fost potrivită, deoarece... Imaginea mea nu avea un sistem de fișiere comprimat.
Drept urmare, am dat peste un videoclip despre chroot (chroot - schimbă rădăcina, link către videoclipul de la sfârșitul postării) și capacitățile sale, s-a decis să-l folosească. În continuare, voi descrie cazul meu particular de personalizare a Ubuntu pentru dezvoltatorii de robotică.

Date inițiale:

  • Întregul proces de modificare a imaginii (cu excepția scrierii pe cardul SD folosind balenaEtcher) a fost efectuat pe sistemul de operare Ubuntu 18.04.
  • Sistemul de operare al cărui ansamblu l-am modificat este versiunea desktop Ubuntu 18.04.3 mate.
  • Mașina pe care ar trebui să funcționeze sistemul asamblat este ODROID-C2.

Pregătirea imaginii

  1. Descărcați imaginea Ubuntu pentru ODROID de pe site-ul oficial

  2. Despachetarea arhivei

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

  3. Creați un director în care vom monta imaginea

    mkdir mnt

  4. Determinați partiția pe care se află sistemul de fișiere

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

    Cautam o partitie cu sistem de fisiere in format ext2, ext3 sau ext4. Avem nevoie de adresa de la începutul secțiunii (evidențiată cu roșu pe ecran):

    Instalarea ROS într-o imagine Ubuntu IMG pentru o singură placă

    Notă. Locația sistemului de fișiere poate fi vizualizată și folosind utilitarul despărțit.

  5. Montarea imaginii

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

    Secțiunea de care avem nevoie începe cu blocul 264192 (numerele dvs. pot diferi), dimensiunea unui bloc este de 512 octeți, înmulțiți-i pentru a obține indentarea în octeți.

  6. Accesați folderul cu sistemul montat și petreceți timpul în el

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

    ~/livecd/mnt — calea completă către directorul cu sistemul montat
    bin/sh - carcasă (poate fi înlocuită și cu bin/bash)
    Acum puteți începe să instalați pachetele și aplicațiile necesare.

Instalarea ROS

Am instalat cea mai recentă versiune de ROS (ROS Melodic) conform tutorial oficial.

  1. Actualizați lista de pachete

    sudo apt-get update

    Aici am primit eroarea:

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

    Acest lucru se datorează faptului că cheia de semnare a pachetului a expirat. Pentru a actualiza cheile, tastați:

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

  2. Pregătirea sistemului pentru instalarea 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. Instalarea ROS
    Din păcate, nu am reușit să instalez versiunea desktop a ROS, așa că am instalat doar pachetele de bază:

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

    Notă 1. În timpul procesului de instalare a apărut uneori o eroare:

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

    S-a rezolvat prin ștergerea cache-ului folosind utilitarul apt:

    sudo apt-get clean; sudo apt-get autoclean

    Notă 2. După instalare, sursă folosind comanda:

    source /opt/ros/melodic/setup.bash

    nu va funcționa, pentru că Nu am rulat bash, așa că NU trebuie să fie introdus în terminal.

  4. Instalarea dependențelor necesare

    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. Configurarea drepturilor de acces
    Deoarece suntem autentificati și, de fapt, efectuăm toate acțiunile în numele rădăcinii sistemului care este asamblat, ROS va fi lansat doar cu drepturi de superutilizator.
    Când încercați să rulați roscore fără sudo, apare o eroare:

    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'

    Pentru a preveni apariția erorii, să modificăm recursiv drepturile de acces la directorul principal al utilizatorului ROS. Pentru a face acest lucru, tastăm:

    sudo rosdep fix-permissions

  6. Instalare suplimentară a pachetelor rviz și rqt

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

Retușuri finale

  1. Ieșiți din chroot:
    exit
  2. Demontați imaginea
    cd ..
    sudo umount mnt/
  3. Să împachetăm imaginea sistemului într-o arhivă
    xz –ckv1 <файл образа>

Toate! Acum cu ajutorul balenaetcher puteți arde imaginea sistemului pe un card SD, o puteți introduce în ODROID-C2 și veți avea Ubuntu cu ROS instalat!

referințe:

  • Acest videoclip a ajutat foarte mult cum să trișați în Linux și de ce aveți nevoie de el:



Sursa: www.habr.com

Adauga un comentariu