Inštalácia ROS do obrazu Ubuntu IMG pre jednu dosku

Úvod

Minule som pri práci na svojej diplomovej práci čelil potrebe vytvoriť obraz Ubuntu pre platformu s jednou doskou s už nainštalovaným ROS (Robot Operating System - operačný systém robotov). Stručne povedané, diplom je venovaný riadeniu skupiny robotov. Roboty sú vybavené dvoma kolesami a tromi diaľkomermi. Celé je to riadené z ROS, ktorý beží na doske ODROID-C2.

Inštalácia ROS do obrazu Ubuntu IMG pre jednu dosku
Robot Lienka. Ospravedlňujeme sa za zlú kvalitu fotografie

Nebol čas ani chuť inštalovať ROS na každého robota jednotlivo, a preto bol potrebný obraz systému s už nainštalovaným ROS. Po prehliadaní internetu som našiel niekoľko prístupov, ako by sa to dalo urobiť.
Vo všeobecnosti možno všetky nájdené riešenia rozdeliť do nasledujúcich skupín.

  1. Programy, ktoré vytvárajú obraz z hotového a nakonfigurovaného systému (Distroshare Ubuntu Imager, linux live kit, linux respin, systémový back atď.)
  2. Projekty, ktoré vám umožňujú vytvoriť si vlastný obrázok (yocto, linux od začiatku)
  3. Zostavenie obrazu sami (prispôsobenie živého CD и ruský ekvivalent, plus článok o Habrém)

Použitie riešení z prvej skupiny sa zdalo byť najjednoduchšou a najatraktívnejšou možnosťou, ale nikdy sa mi nepodarilo vytvoriť živý obraz systému pre ODROID. Riešenia druhej skupiny mi tiež nevyhovovali vzhľadom na dosť vysoký vstupný prah. Ručná montáž podľa dostupných návodov tiež nebola vhodná, pretože... Môj obrázok nemal komprimovaný súborový systém.
V dôsledku toho som narazil na video o chroot (chroot - zmena koreňa, odkaz na video na konci príspevku) a jeho schopnosti, bolo rozhodnuté ho použiť. Ďalej opíšem môj konkrétny prípad prispôsobenia Ubuntu pre vývojárov robotiky.

Počiatočné údaje:

  • Celý proces úpravy obrazu (okrem zápisu na SD kartu pomocou balenaEtcher) prebiehal na operačnom systéme Ubuntu 18.04.
  • Operačný systém, ktorého zostavu som upravil, je Ubuntu 18.04.3 mate desktop verzia.
  • Stroj, na ktorom by mal zostavený systém fungovať, je ODROID-C2.

Príprava obrazu

  1. Stiahnite si obrázok Ubuntu pre ODROID z oficiálne stránky

  2. Rozbaľovanie archívu

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

  3. Vytvorte si adresár, do ktorého pripojíme obraz

    mkdir mnt

  4. Určite oblasť, na ktorej sa nachádza súborový systém

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

    Hľadáme partíciu so súborovým systémom vo formáte ext2, ext3 alebo ext4. Potrebujeme adresu začiatku sekcie (zvýraznená červenou farbou na obrazovke):

    Inštalácia ROS do obrazu Ubuntu IMG pre jednu dosku

    Poznámka. Umiestnenie súborového systému je možné zobraziť aj pomocou pomôcky rozlúčili.

  5. Montáž obrazu

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

    Časť, ktorú potrebujeme, začína blokom 264192 (vaše čísla sa môžu líšiť), veľkosť jedného bloku je 512 bajtov, vynásobte ich, aby ste získali odsadenie v bajtoch.

  6. Prejdite do priečinka s namontovaným systémom a zaveste sa v ňom

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

    ~/livecd/mnt — úplná cesta k adresáru s pripojeným systémom
    bin/sh - škrupina (možno nahradiť aj za bin/bash)
    Teraz môžete začať inštalovať potrebné balíky a aplikácie.

Inštalácia ROS

Nainštaloval som najnovšiu verziu ROS (ROS Melodic) podľa oficiálny návod.

  1. Aktualizácia zoznamu balíkov

    sudo apt-get update

    Tu som dostal chybu:

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

    Dôvodom je skutočnosť, že platnosť podpisového kľúča balíka vypršala. Ak chcete aktualizovať kľúče, zadajte:

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

  2. Príprava systému 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štalácia ROS
    Bohužiaľ sa mi nepodarilo nainštalovať desktopovú verziu ROS, takže som nainštaloval iba základné balíčky:

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

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

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

    Bolo to opravené vymazaním vyrovnávacej pamäte pomocou nástroja apt:

    sudo apt-get clean; sudo apt-get autoclean

    Poznámka 2. Po inštalácii vytvorte zdroj pomocou príkazu:

    source /opt/ros/melodic/setup.bash

    nebude to fungovať, pretože Nespustili sme bash, takže ho NEMUSÍTE zadávať do terminálu.

  4. Inštalácia potrebných závislostí

    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. Nastavenie prístupových práv
    Keďže sme prihlásení a v skutočnosti vykonávame všetky akcie v mene koreňového adresára zostavovaného systému, ROS sa spustí iba s právami superužívateľa.
    Pri pokuse o spustenie roscore bez sudo sa vyskytne chyba:

    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'

    Aby sa chyba nevyskytla, zmeňme rekurzívne prístupové práva do domovského adresára používateľa ROS. Za týmto účelom napíšeme:

    sudo rosdep fix-permissions

  6. Dodatočná inštalácia balíkov rviz a rqt

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

Záverečné úpravy

  1. Ukončiť chroot:
    exit
  2. Odpojte obrázok
    cd ..
    sudo umount mnt/
  3. Zabalíme obraz systému do archívu
    xz –ckv1 <файл образа>

Všetky! Teraz s pomocou balenaetcher môžete napáliť obraz systému na SD kartu, vložiť do ODROID-C2 a budete mať nainštalované Ubuntu s ROS!

odkazy:

  • Toto video veľmi pomohlo s tým, ako podvádzať v Linuxe a prečo to potrebujete:



Zdroj: hab.com

Pridať komentár