Instalace ROS do obrazu Ubuntu IMG pro jednu desku

úvod

Onehdy jsem při práci na své diplomové práci stál před potřebou vytvořit image Ubuntu pro platformu s jednou deskou s již nainstalovaným ROS (Robot Operating System - operační systém robota). Stručně řečeno, diplom je věnován řízení skupiny robotů. Roboti jsou vybaveni dvěma koly a třemi dálkoměry. Celé je to řízeno z ROS, který běží na desce ODROID-C2.

Instalace ROS do obrazu Ubuntu IMG pro jednu desku
Robot Beruška. Omlouváme se za špatnou kvalitu fotografie

Nebyl čas ani chuť instalovat ROS na každého robota jednotlivě, a proto byla potřeba obraz systému s již nainstalovaným ROS. Po procházení internetu jsem našel několik přístupů, jak by se to dalo udělat.
Obecně lze všechna nalezená řešení rozdělit do následujících skupin.

  1. Programy, které vytvářejí obraz z hotového a nakonfigurovaného systému (Distroshare Ubuntu Imager, linux live kit, linux respin, systémový back atd.)
  2. Projekty, které vám umožní vytvořit si vlastní obrázek (yocto, linux od nuly)
  3. Sestavení obrazu sami (přizpůsobení živého CD и ruský ekvivalentplus článek o Habrém)

Použití řešení z první skupiny se zdálo být nejjednodušší a nejatraktivnější možností, ale nikdy se mi nepodařilo vytvořit živý obraz systému pro ODROID. Řešení druhé skupiny mi také nevyhovovalo kvůli dost vysokému vstupnímu prahu. Ruční montáž podle dostupných návodů také nebyla vhodná, protože... Můj obrázek neměl komprimovaný systém souborů.
V důsledku toho jsem narazil na video o chrootu (chroot - změna kořene, odkaz na video na konci příspěvku) a jeho možnostech, bylo rozhodnuto jej použít. Dále popíšu svůj konkrétní případ přizpůsobení Ubuntu pro vývojáře robotiky.

Zdrojová data:

  • Celý proces úpravy obrazu (kromě zápisu na SD kartu pomocí balenaEtcher) byl proveden na operačním systému Ubuntu 18.04.
  • Operační systém, jehož sestavu jsem upravil, je verze Ubuntu 18.04.3 mate pro stolní počítače.
  • Stroj, na kterém by měl sestavený systém fungovat, je ODROID-C2.

Příprava obrázku

  1. Stáhněte si obrázek Ubuntu pro ODROID z oficiální stránky

  2. Rozbalení archivu

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

  3. Vytvořte adresář, do kterého budeme obraz připojovat

    mkdir mnt

  4. Určete oddíl, na kterém je umístěn systém souborů

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

    Hledáme oddíl se souborovým systémem ve formátu ext2, ext3 nebo ext4. Potřebujeme adresu začátku sekce (na obrazovce zvýrazněnou červeně):

    Instalace ROS do obrazu Ubuntu IMG pro jednu desku

    Poznámka. Umístění systému souborů lze také zobrazit pomocí nástroje rozdělil se.

  5. Montáž obrazu

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

    Sekce, kterou potřebujeme, začíná blokem 264192 (vaše čísla se mohou lišit), velikost jednoho bloku je 512 bajtů, vynásobte je, abyste získali odsazení v bajtech.

  6. Přejděte do složky s připojeným systémem a pověste se v ní

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

    ~/livecd/mnt — úplná cesta k adresáři s připojeným systémem
    bin/sh - shell (lze také nahradit bin/bash)
    Nyní můžete začít instalovat potřebné balíčky a aplikace.

Instalace ROS

Nainstaloval jsem nejnovější verzi ROS (ROS Melodic) podle oficiální návod.

  1. Aktualizace seznamu balíčků

    sudo apt-get update

    Tady jsem dostal chybu:

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

    Důvodem je skutečnost, že platnost podpisového klíče balíčku vypršela. Chcete-li aktualizovat klíče, zadejte:

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

  2. Příprava systému pro instalaci 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. Instalace ROS
    Bohužel se mi nepodařilo nainstalovat desktopovou verzi ROS, takže jsem nainstaloval pouze základní balíčky:

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

    Poznámka: 1. Během procesu instalace někdy došlo k chybě:

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

    Bylo to opraveno vymazáním mezipaměti pomocí nástroje apt:

    sudo apt-get clean; sudo apt-get autoclean

    Poznámka: 2. Po instalaci zadejte zdroj pomocí příkazu:

    source /opt/ros/melodic/setup.bash

    nebude fungovat, protože Nespustili jsme bash, takže jej NENÍ třeba zadávat do terminálu.

  4. Instalace potřebný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. Nastavení přístupových práv
    Protože jsme přihlášeni a ve skutečnosti provádíme všechny akce jménem root sestavovaného systému, bude ROS spuštěn pouze s právy superuživatele.
    Při pokusu o spuštění roscore bez sudo dojde k chybě:

    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 k chybě nedošlo, změňme rekurzivně přístupová práva k domovskému adresáři uživatele ROS. K tomu zadáme:

    sudo rosdep fix-permissions

  6. Dodatečná instalace balíčků rviz a rqt

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

Závěrečné doteky

  1. Ukončit chroot:
    exit
  2. Odpojte obraz
    cd ..
    sudo umount mnt/
  3. Zabalíme bitovou kopii systému do archivu
    xz –ckv1 <файл образа>

Všechno! Nyní s pomocí balenaetcher můžete vypálit obraz systému na SD kartu, vložit do ODROID-C2 a budete mít nainstalované Ubuntu s ROS!

Odkazy:

  • Toto video hodně pomohlo s tím, jak podvádět v Linuxu a proč to potřebujete:



Zdroj: www.habr.com

Přidat komentář