Namestitev ROS v sliko Ubuntu IMG za eno ploščo

Predstavitev

Pred dnevi sem se med delom na diplomski nalogi soočil s potrebo po izdelavi slike Ubuntuja za platformo z eno ploščo z že nameščenim ROS (Robot Operating System - robotski operacijski sistem). Skratka, diploma je namenjena upravljanju skupine robotov. Roboti so opremljeni z dvema kolesoma in tremi daljinomeri. Vse skupaj je nadzorovano iz ROS-a, ki teče na plošči ODROID-C2.

Namestitev ROS v sliko Ubuntu IMG za eno ploščo
Robot Pikapolonica. Oprostite za slabo kakovost fotografije

Za namestitev ROS-a na vsakega robota posebej ni bilo ne časa ne želje, zato je bila potrebna sistemska slika z že nameščenim ROS-om. Po brskanju po internetu sem našel več pristopov, kako bi to lahko naredili.
Na splošno lahko vse najdene rešitve razdelimo v naslednje skupine.

  1. Programi, ki ustvarijo sliko iz že pripravljenega in konfiguriranega sistema (Distroshare Ubuntu Imager, linux live kit, linux respin, Systemback itd.)
  2. Projekti, ki vam omogočajo ustvarjanje lastne podobe (yocto, linux iz nič)
  3. Samostojno sestavljanje slike (prilagoditev CD-ja v živo и ruski ekvivalentplus članek na Habréju)

Uporaba rešitev iz prve skupine se je zdela najenostavnejša in najbolj privlačna možnost, vendar mi nikoli ni uspelo ustvariti žive sistemske slike za ODROID. Tudi rešitve druge skupine mi niso ustrezale zaradi dokaj visokega vstopnega praga. Tudi ročna montaža po razpoložljivih tutorialih ni bila primerna, ker... Moja slika ni imela stisnjenega datotečnega sistema.
Posledično sem naletel na video o chrootu (chroot - spremeni koren, povezava do videoposnetka na koncu objave) in njegovih zmogljivosti, je bilo odločeno, da ga uporabimo. Nato bom opisal svoj poseben primer prilagajanja Ubuntuja za razvijalce robotike.

Vir podatkov:

  • Celoten postopek spreminjanja slike (razen zapisovanja na kartico SD s pomočjo balenaEtcher) je bil izveden v operacijskem sistemu Ubuntu 18.04.
  • Operacijski sistem, katerega sklop sem spremenil, je namizna različica Ubuntu 18.04.3 mate.
  • Stroj, na katerem naj bi sestavljen sistem deloval je ODROID-C2.

Priprava slike

  1. Prenesite sliko Ubuntu za ODROID iz uradna spletna stran

  2. Razpakiranje arhiva

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

  3. Ustvarite imenik, v katerega bomo montirali sliko

    mkdir mnt

  4. Določite particijo, na kateri se nahaja datotečni sistem

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

    Iščemo particijo z datotečnim sistemom v formatu ext2, ext3 ali ext4. Potrebujemo naslov začetka odseka (na zaslonu je označen z rdečo):

    Namestitev ROS v sliko Ubuntu IMG za eno ploščo

    Opomba. Lokacijo datotečnega sistema si lahko ogledate tudi s pomočjo pripomočka razdeljen.

  5. Montaža slike

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

    Razdelek, ki ga potrebujemo, se začne z blokom 264192 (vaše številke se lahko razlikujejo), velikost enega bloka je 512 bajtov, pomnožite jih, da dobite zamik v bajtih.

  6. Pojdite v mapo z nameščenim sistemom in se zadržite v njej

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

    ~/livecd/mnt — polna pot do imenika z nameščenim sistemom
    bin/sh - lupina (lahko se nadomesti tudi z bin/bash)
    Zdaj lahko začnete nameščati potrebne pakete in aplikacije.

Namestitev ROS

Nameščal sem najnovejšo različico ROS (ROS Melodic) glede na uradna vadnica.

  1. Posodabljanje seznama paketov

    sudo apt-get update

    Tukaj sem dobil napako:

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

    To je posledica dejstva, da je ključ za podpisovanje paketa potekel. Če želite posodobiti ključe, vnesite:

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

  2. Priprava sistema za namestitev 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. Namestitev ROS
    Na žalost mi ni uspelo namestiti namizne različice ROS-a, zato sem namestil samo osnovne pakete:

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

    Opomba 1 Med postopkom namestitve je včasih prišlo do napake:

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

    To je bilo popravljeno s čiščenjem predpomnilnika s pripomočkom apt:

    sudo apt-get clean; sudo apt-get autoclean

    Opomba 2 Po namestitvi vir z ukazom:

    source /opt/ros/melodic/setup.bash

    ne bo šlo, saj Bash nismo zagnali, zato ga NI treba vnesti v terminal.

  4. Namestitev potrebnih odvisnosti

    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. Nastavitev pravic dostopa
    Ker smo prijavljeni in dejansko izvajamo vsa dejanja v imenu korena sistema, ki se sestavlja, bo ROS zagnan samo s pravicami superuporabnika.
    Pri poskusu zagona roscore brez sudo se pojavi napaka:

    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 preprečimo pojav napake, rekurzivno spremenimo pravice dostopa do domačega imenika uporabnika ROS. Za to vtipkamo:

    sudo rosdep fix-permissions

  6. Dodatna namestitev paketov rviz in rqt

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

Zadnji dotiki

  1. Izhod iz chroota:
    exit
  2. Odprite sliko
    cd ..
    sudo umount mnt/
  3. Zapakirajmo sistemsko sliko v arhiv
    xz –ckv1 <файл образа>

Vse! Zdaj s pomočjo balenaetcher sliko sistema lahko zapišete na SD kartico, jo vstavite v ODROID-C2 in imeli boste nameščen Ubuntu z ROS!

Reference:

  • Ta videoposnetek vam je zelo pomagal pri goljufanju v Linuxu in zakaj ga potrebujete:



Vir: www.habr.com

Dodaj komentar