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

Uvod

Prije neki dan, dok sam radio na diplomskom radu, suočio sam se s potrebom da napravim Ubuntu sliku za platformu s jednom pločom s već instaliranim ROS-om (Robot Operating System - operativni sustav robota). Ukratko, diploma je posvećena upravljanju grupom robota. Roboti su opremljeni s dva kotača i tri daljinomjera. Cijela stvar se kontrolira iz ROS-a, koji radi na ploči ODROID-C2.

Instaliranje ROS-a u Ubuntu IMG sliku za jednu ploču
Robot Bubamara. Oprostite zbog loše kvalitete fotografije

Nije bilo ni vremena ni želje da se ROS instalira na svakog robota pojedinačno, pa je stoga bila potrebna slika sustava s već instaliranim ROS-om. Nakon pregledavanja 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 skupine.

  1. Programi koji stvaraju sliku iz gotovog i konfiguriranog sustava (Distros dijelite Ubuntu Imager, linux live kit, linux respin, povratak sustava itd.)
  2. Projekti koji vam omogućuju stvaranje vlastite slike (yocto, linux od nule)
  3. Sami sastavite sliku (live CD prilagodba и ruski ekvivalentplus članak na Habréu)

Korištenje rješenja iz prve skupine činilo mi se kao najjednostavnija i najatraktivnija opcija, ali nikad nisam uspio izraditi živu sliku sustava za ODROID. Rješenja druge skupine također mi nisu odgovarala zbog prilično visokog ulaznog praga. Ručna montaža prema dostupnim tutorijalima također nije bila prikladna, jer... Moja slika nije imala komprimirani datotečni sustav.
Kao rezultat toga, naišao sam na video o chrootu (chroot - promijeniti korijen, poveznica na video na kraju posta) i njegovim mogućnostima, odlučeno je koristiti ga. Zatim ću opisati svoj poseban slučaj prilagodbe Ubuntua za programere robotike.

Početni podaci:

  • Cijeli proces modificiranja slike (osim pisanja na SD karticu pomoću balenaEtcher) izveden je na Ubuntu 18.04 operativnom sustavu.
  • Operativni sustav čiji sklop sam modificirao je Ubuntu 18.04.3 mate desktop verzija.
  • Stroj na kojem bi montirani sustav trebao raditi je ODROID-C2.

Priprema slike

  1. Preuzmite Ubuntu sliku za ODROID sa službena stranica

  2. Raspakiranje arhive

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

  3. Napravite direktorij u koji ćemo montirati sliku

    mkdir mnt

  4. Odredite particiju na kojoj se nalazi datotečni sustav

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

    Tražimo particiju s datotečnim sustavom u formatu ext2, ext3 ili ext4. Trebamo adresu početka odjeljka (označeno crvenom bojom na ekranu):

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

    Napomena. Lokacija datotečnog sustava također se može vidjeti pomoću uslužnog programa slomljen.

  5. Montaža slike

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

    Odjeljak koji nam treba počinje s blokom 264192 (vaši brojevi se mogu razlikovati), veličina jednog bloka je 512 bajtova, pomnožite ih da biste dobili uvlaku u bajtovima.

  6. Idite u mapu s montiranim sustavom i družite se u njoj

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

    ~/livecd/mnt — puni put do direktorija s montiranim sustavom
    spremnik/sh - školjka (također se može zamijeniti s bin/bash)
    Sada možete početi instalirati potrebne pakete i aplikacije.

Instalacija ROS-a

Instalirao sam najnoviju verziju ROS-a (ROS Melodic) prema službeni tutorial.

  1. Ažuriranje liste paketa

    sudo apt-get update

    Ovdje 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. Za ažuriranje ključeva upišite:

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

  2. Priprema sustava za ugradnju 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. Instalacija ROS-a
    Nažalost, nisam uspio instalirati desktop verziju ROS-a, pa sam instalirao samo osnovne pakete:

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

    Napomena 1 Tijekom postupka instalacije ponekad se dogodila pogreška:

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

    To je popravljeno brisanjem predmemorije pomoću uslužnog programa apt:

    sudo apt-get clean; sudo apt-get autoclean

    Napomena 2 Nakon instalacije izvorni izvor pomoću naredbe:

    source /opt/ros/melodic/setup.bash

    neće uspjeti, jer Nismo pokrenuli bash, tako da ga NE treba upisivati ​​u terminal.

  4. Instaliranje potrebnih ovisnosti

    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
    Budući da smo prijavljeni i, zapravo, obavljamo sve radnje u ime korijena sustava koji se sastavlja, ROS će se pokrenuti samo s pravima superkorisnika.
    Kada pokušavate pokrenuti roscore bez sudo-a, javlja se pogreš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'

    Kako bismo spriječili pojavu pogreške, rekurzivno promijenimo prava pristupa matičnom direktoriju ROS korisnika. Da bismo to učinili, upisujemo:

    sudo rosdep fix-permissions

  6. Dodatna instalacija paketa rviz i rqt

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

Završni detalji

  1. Izlaz iz chroota:
    exit
  2. Isključite sliku
    cd ..
    sudo umount mnt/
  3. Spakirajmo sliku sustava u arhivu
    xz –ckv1 <файл образа>

Svi! Sada uz pomoć balenaetcher možete snimiti sliku sustava na SD karticu, ubaciti je u ODROID-C2, i imat ćete instaliran Ubuntu s 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