Inštalácia ROS do IMG-obraz Ubuntu pre jednodeskový počítač

Úvod

Nedávno, pri práci na diplomovke, som čelil potrebe vytvoriť obraz Ubuntu pre jednodeskový počítač už s nainštalovaným ROS (Robot Operating System – operačný systém pre roboti). Ak by som to mal zhrnúť, diplom sa zaoberá riadením skupiny robotov. Roboty sú vybavené dvoma kolesami a tromi ultrazvukovými senzormi. Všetko toto sa ovláda z ROS, ktorý beží na doske ODROID-C2.

Inštalácia ROS do IMG-obraz Ubuntu pre jednodeskový počítač
Robot Ladybug. Prepáčte za zlú kvalitu fotografie

Nemal som čas ani chuť inštalovať ROS na každého robota osobitne, preto vznikla potreba systému s už nainštalovaným ROS. Po prechádzke po internete som našiel niekoľko prístupov, ako by to mohlo byť realizované.
Všeobecne možno všetky nájdené riešenia rozdeliť do nasledujúcich skupín.

  1. Programy, ktoré vytvárajú obraz z hotového a nastaveného systému (Distroshare Ubuntu Imager, linux live kit, linux respin, systemback a ďalšie)
  2. Projekty, ktoré umožňujú vytvoriť svoj vlastný obraz (yocto, linux from scratch)
  3. Vytvorenie obrazu vlastnoručne (liveCD customization a ruský ekvivalent, plus článok na habre)

Použitie riešení z prvej skupiny sa zdalo byť najjednoduchšou a najpríťažlivejšou možnosťou, avšak vytvoriť obraz live-systému pre ODROID sa mi nakoniec nepodarilo. Riešenia druhej skupiny mi taktiež nevyhovovali kvôli dosť vysokému prahu vchodu. Spracovanie podľa dostupných tutoriálov tiež nevyhovovalo, pretože v mojom obraze nebola komprimovaná súborová sústava.
Nakoniec som narazil na video o chroot (chroot — change root, odkaz na video na konci príspevku) a jeho možnosti, rozhodlo sa ho využiť. Nižšie opíšem svoj špecifický prípad prispôsobenia Ubuntu pre vývojárov robotiky.

Základné údaje:

  • Celý proces modifikácie obrazu (s výnimkou zápisu na SD kartu pomocou balenaEtcher) sa vykonával v operačnom systéme Ubuntu 18.04.
  • Operačný systém, ktorý som modifikoval – Ubuntu 18.04.3 verzia mate desktop.
  • Stroj, na ktorom má fungovať zostavený systém – ODROID-C2.

Príprava obrazu

  1. Stiahneme obraz Ubuntu pre ODROID z oficiálnej stránky

  2. Rozbaľujeme archív

    unxz –kv 

  3. Vytvárame adresár, do ktorého budeme montovať obraz

    mkdir mnt

  4. Určíme oddiel, na ktorom sa nachádza súborový systém

    file 

    Hľadáme oddiel so súborovým systémom vo formáte ext2, ext3 alebo ext4. Potrebujeme adresu začiatku oddielu (vyznačené červenou na obrazovke):

    Inštalácia ROS do IMG-obraz Ubuntu pre jednodeskový počítač

    Poznámka. Umiestnenie súborového systému si môžeme tiež pozrieť pomocou utilitky parted.

  5. Pripojíme obraz

    sudo mount -o loop,offset=$((264192*512))  mnt/

    Nám známy oddiel začína na bloku 264192 (u vás sa čísla môžu líšiť), veľkosť jedného bloku — 512 bajtov, vynásobíme ich, aby sme získali posun v bajtoch.

  6. Prejdeme do priečinka s pripojeným systémom a chrootujeme sa do neho

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

    ~/livecd/mnt — úplná cesta do adresára s pripojeným systémom
    bin/sh — shell (môžeme tiež nahradiť na bin/bash)
    Teraz sa môžeme už zaoberať inštaláciou potrebných balíkov a aplikácií.

Inštalácia ROS

Inštaloval som ROS poslednej verzie (ROS Melodic) podľa oficiálneho tutoriálu.

  1. Aktualizujeme zoznam balíkov

    sudo apt-get update

    Tu sa mi vyskytla chyba:

    Err:6 http://deb.odroid.in/c2 bionic InRelease
    Nasledujúce podpisy boli neplatné: EXPKEYSIG 5360FB9DAB19BAC9 Mauro Ribeiro (mdrjr)

    Súvisí to s tým, že platnosť kľúča pre podpis balíkov vypršala. Pre aktualizáciu kľúčov zadajte:

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

  2. Pripravujeme systém na inštaláciu 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. Inštalujeme ROS
    Bohužiaľ, nepodarilo sa mi nainštalovať desktop verziu ROS, takže som inštaloval iba základné balíky:

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

    Poznámka 1. Počas inštalácie sa občas vyskytla chyba:

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

    Opravil som to pomocou vyčistenia cache utilitky apt:

    sudo apt-get clean; sudo apt-get autoclean

    Poznámka 2. Po inštalácii spustíme (source) príkazom:

    source /opt/ros/melodic/setup.bash

    nepôjde, pretože sme nespustili bash, takže ho NETREBA zadávať v termináli.

  4. Inštalujeme potrebné závislosti

    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. Nastavujeme práva prístupu
    Keďže sme chrootli a v podstate vykonávame všetky akcie menom root zbieranej sústavy, ROS sa bude spúšťať len s právami superužívateľa.
    Pri pokuse o spustenie roscore bez sudo sa vyskytne chyba:

    Sledovať (posledný záznam bol): Súbor "\/opt\/ros\/melodic\/lib\/python2.7\/dist-packages\/roslaunch\/__init__.py", riadok 230, v main write_pid_file(options.pid_fn, options.core, options.port) Súbor "\/opt\/ros\/melodic\/lib\/python2.7\/dist-packages\/roslaunch\/__init__.py", riadok 106, v write_pid_file with open(pid_fn, "w") as f: IOError: [Errno 13] Oprávnenie zamietnuté: '\/home\/user\/.ros\/roscore-11311.pid'

    Aby táto chyba nevznikla, rekurzívne zmeníme práva prístupu k domácemu adresáru používateľa ROS. Na to napíšeme:

    sudo rosdep fix-permissions

  6. Nainštalujeme balíky rviz a rqt

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

Finálne úpravy

  1. Vychádzame z chroot:
    exit
  2. Odmontujeme obraz
    cd ..
    sudo umount mnt\/
  3. Zabalíme obraz systému do archívu
    xz –ckv1 

Všetko! Teraz pomocou balenaEtcher môžete zapísať obraz systému na SD kartu, vložiť do ODROID-C2 a budete mať Ubuntu so nainštalovaným ROS!

Odkazy:

  • S témou ako chrootovať v Linuxe a na čo to treba, veľmi pomohlo toto video:

Prehrajte video


Zdroj: habr.com
Kúpte si spoľahlivý hosting pre webové stránky s ochranou proti DDoS, VPS VDS servery 🔥 Kúpte si spoľahlivý hosting pre webové stránky s ochranou proti DDoS, VPS VDS servery | ProHoster