A ROS telepítése egy Ubuntu IMG lemezképbe egy kártyához

Bevezetés

A minap, miközben dolgozatomon dolgoztam, azzal szembesültem, hogy létre kell hoznom egy Ubuntu image-t egy egylapos platformhoz, amelyen már telepítve van a ROS (Robot operációs rendszer - robot operációs rendszer). Röviden, az oklevél egy robotcsoport irányítására vonatkozik. A robotok két kerékkel és három távolságmérővel vannak felszerelve. Az egészet ROS-ról irányítják, ami az ODROID-C2 kártyán fut.

A ROS telepítése egy Ubuntu IMG lemezképbe egy kártyához
Robot Katicabogár. Elnézést a rossz képminőségért

Nem volt sem idő, sem kedv a ROS-t külön-külön minden robotra telepíteni, ezért szükség volt egy olyan rendszerképre, amelyen a ROS már telepítve van. Az internet böngészése után több megközelítést is találtam arra vonatkozóan, hogyan lehetne ezt megtenni.
Általában az összes talált megoldás a következő csoportokba sorolható.

  1. Olyan programok, amelyek egy kész és konfigurált rendszerből képet készítenek (Ossza meg az Ubuntu Imager megosztását, linux live kit, linux respin, systemback stb.)
  2. Projektek, amelyek lehetővé teszik saját arculat létrehozását (yocto, linux a semmiből)
  3. A kép összeállítása saját kezűleg (élő CD testreszabása и orosz megfelelője, egy plusz cikk Habréról)

Az első csoportból származó megoldások használata tűnt a legegyszerűbb és legvonzóbb lehetőségnek, de soha nem tudtam élő rendszerképet létrehozni az ODROID számára. A második csoport megoldásai szintén nem feleltek meg nekem a meglehetősen magas belépési küszöb miatt. A rendelkezésre álló oktatóanyagok szerinti kézi összeszerelés sem volt megfelelő, mert... A képemen nem volt tömörített fájlrendszer.
Ennek eredményeként találkoztam egy videóval a chrootról (chroot - gyökér megváltoztatása, link a videóhoz a bejegyzés végén) és annak képességei mellett döntöttek a felhasználás mellett. Ezután leírom az Ubuntu robotika fejlesztők számára történő testreszabásának sajátos esetét.

Forrás adatok:

  • A teljes képmódosítási folyamat (kivéve az SD-kártyára való írást a balenaEtcher segítségével) az Ubuntu 18.04 operációs rendszeren történt.
  • Az operációs rendszer, amelynek összeállítását módosítottam, az Ubuntu 18.04.3 mate asztali verziója.
  • A gép, amelyen az összeállított rendszernek működnie kell, az ODROID-C2.

A kép előkészítése

  1. Töltse le az ODROID Ubuntu-képet innen hivatalos honlapja

  2. Az archívum kicsomagolása

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

  3. Hozzon létre egy könyvtárat, amelybe beillesztjük a képet

    mkdir mnt

  4. Határozza meg azt a partíciót, amelyen a fájlrendszer található

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

    Ext2, ext3 vagy ext4 formátumú fájlrendszerű partíciót keresünk. Szükségünk van a szakasz elejének címére (a képernyőn pirossal kiemelve):

    A ROS telepítése egy Ubuntu IMG lemezképbe egy kártyához

    Megjegyzés. A fájlrendszer helye a segédprogram segítségével is megtekinthető megosztott.

  5. A kép rögzítése

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

    A rész, amire szükségünk van, a 264192-es blokkkal kezdődik (a számok eltérhetnek), egy blokk mérete 512 bájt, ezeket szorozva megkapjuk a behúzást bájtokban.

  6. Menjen a felszerelt rendszert tartalmazó mappába, és lógjon benne

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

    ~/livecd/mnt — a könyvtár teljes elérési útja a csatlakoztatott rendszerrel
    bin/sh - shell (ez is helyettesíthető bin/bash)
    Most megkezdheti a szükséges csomagok és alkalmazások telepítését.

ROS telepítése

A ROS legújabb verzióját (ROS Melodic) telepítettem a szerint hivatalos bemutató.

  1. A csomagok listájának frissítése

    sudo apt-get update

    Itt kaptam a hibát:

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

    Ez annak a ténynek köszönhető, hogy a csomagaláíró kulcs lejárt. A kulcsok frissítéséhez írja be:

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

  2. A rendszer előkészítése a ROS telepítéséhez

    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. ROS telepítése
    Sajnos nem tudtam telepíteni a ROS asztali verzióját, ezért csak az alapcsomagokat telepítettem:

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

    Jegyzet 1. A telepítési folyamat során néha hiba történt:

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

    A gyorsítótár törlésével javították ki az apt segédprogrammal:

    sudo apt-get clean; sudo apt-get autoclean

    Jegyzet 2. A telepítés után a forrás a következő paranccsal történik:

    source /opt/ros/melodic/setup.bash

    nem fog menni, mert A bash-t nem futtattuk, így NEM kell beírni a terminálba.

  4. A szükséges függőségek telepítése

    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. Hozzáférési jogok beállítása
    Mivel be vagyunk jelentkezve, és valójában minden műveletet az összeállítandó rendszer gyökerének nevében hajtunk végre, a ROS csak szuperfelhasználói jogokkal fog elindulni.
    Amikor a roscore-t sudo nélkül próbálod futtatni, hiba történik:

    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'

    A hiba előfordulásának megelőzése érdekében változtassuk meg rekurzív módon a ROS-felhasználó kezdőkönyvtárának hozzáférési jogait. Ehhez beírjuk:

    sudo rosdep fix-permissions

  6. Az rviz és rqt csomagok további telepítése

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

Utolsó simítások

  1. Kilépés a chrootból:
    exit
  2. Szerelje le a képet
    cd ..
    sudo umount mnt/
  3. Csomagoljuk be a rendszerképet egy archívumba
    xz –ckv1 <файл образа>

Minden! Most a segítséggel balenametsző kiírhatod a rendszerképet SD kártyára, behelyezed az ODROID-C2-be, és máris telepítve lesz az Ubuntu ROS-szal!

referenciák:

  • Ez a videó sokat segített abban, hogyan kell csalni Linuxon, és miért van rá szükség:



Forrás: will.com

Hozzászólás