Instaliranje ROS-a u IMG sliku Ubuntu za jednokratnu isplatu

Uvod

Neki dan, dok sam radio na diplomi, suočio sam se s potrebom stvaranja slike Ubuntu za jednopločno računalo 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 IMG sliku Ubuntu za jednokratnu isplatu
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 (Distroshare Ubuntu Slike, 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(Video link na kraju posta) i njegove mogućnosti, odlučio sam ga koristiti. U nastavku ću opisati svoj konkretan slučaj prilagodbe. Ubuntu za razvojne programere robotike.

Početni podaci:

  • Cijeli proces izmjene slike (osim pisanja na SD karticu pomoću balenaEtchera) izveden je u operativnom sustavu. Ubuntu 18.04.
  • Operativni sustav čiji je sklop modificiran bio je – Ubuntu 18.04.3 verzija za stolna računala Mate.
  • Stroj na kojem bi montirani sustav trebao raditi je ODROID-C2.

Priprema slike

  1. Preuzmite sliku Ubuntu za ODROID s 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 IMG sliku Ubuntu za jednokratnu isplatu

    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) <mauro.ribeiro@hardkernel.com>

    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 Sliku sustava možete snimiti na SD karticu, umetnuti je u ODROID-C2 i imat ćete Ubuntu s instaliranim ROS-om!

reference:

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

Reproduciraj videozapis


Izvor: www.habr.com
Kupite pouzdan hosting za stranice s DDoS zaštitom, VPS VDS poslužiteljima 🔥 Kupite pouzdan web hosting sa DDoS zaštitom, VPS VDS servere | ProHoster