Installation av ROS i IMG-avbildning av Ubuntu för enkortsdator

Introduktion

HĂ€romdagen, nĂ€r jag arbetade med min examen, stötte jag pĂ„ behovet av att skapa en bild av Ubuntu för en inbyggd dator med redan installerat ROS (Robot Operating System – operativsystemet för robotar). Kort sagt handlar min avhandling om att styra en grupp av robotar. Robotarna Ă€r utrustade med tvĂ„ hjul och tre avstĂ„ndsmĂ€tare. Allt styrs frĂ„n ROS, som körs pĂ„ ett ODROID-C2-kort.

Installation av ROS i IMG-avbildning av Ubuntu för enkortsdator
Robot Ladybug. FörlÄt för dÄlig bildkvalitet.

Det fanns varken tid eller lust att installera ROS pÄ varje robot individuellt, vilket ledde till behovet av ett system med redan installerat ROS. Efter att ha surfat runt pÄ nÀtet hittade jag flera metoder för hur detta skulle kunna göras.
Övergripande kan alla hittade lösningar delas in i följande grupper.

  1. Program som skapar en bild av ett fÀrdigt och konfigurerat system (Distroshare Ubuntu Imager, linux live kit, linux respin, systemback och flera andra)
  2. Projekt som gör det möjligt att skapa sin egen bild (yocto, linux from scratch)
  3. Manuell bilduppbyggnad (liveCD customization och ryskt analog, plus artikel pÄ habra)

Att anvÀnda lösningar frÄn den första gruppen verkade vara det enklaste och mest attraktiva alternativet, men jag lyckades inte skapa en live-systembild för ODROID. Lösningar frÄn den andra gruppen passade mig inte heller pÄ grund av den ganska höga inlÀrningströskeln. Manuell uppbyggnad utifrÄn tillgÀngliga guider fungerade inte heller, eftersom min bild inte hade nÄgot komprimerat filsystem.
Till slut, efter att ha snubblat över en video om chroot (chroot — change root, lĂ€nk till videon i slutet av inlĂ€gget) och dess möjligheter, beslutades det att anvĂ€nda det. Jag kommer nu att beskriva mitt specifika fall av anpassning av Ubuntu för robotik utvecklare.

UtgÄngsdatan:

  • Hela processen för att modifiera bilden (med undantag för skrivningen till SD-kortet med balenaEtcher) utfördes i operativsystemet Ubuntu 18.04.
  • Operativsystemet som bilden modifierades av var – Ubuntu 18.04.3 mate desktop-version.
  • Maskinen dĂ€r det sammanstĂ€llda systemet ska köras Ă€r – ODROID-C2.

Förberedelse av bilden

  1. Ladda ner bilden av Ubuntu för ODROID frÄn den officiella sidan

  2. Packa upp arkivet

    unxz –kv

  3. Skapa en katalog dÀr vi ska montera bilden

    mkdir mnt

  4. BestÀm partitionen dÀr filsystemet ligger

    file

    Sök efter partition med filsystemet i formatet ext2, ext3 eller ext4. Vi behöver adressen till början av partitionen (markerad med rött i bilden):

    Installation av ROS i IMG-avbildning av Ubuntu för enkortsdator

    Anteckning. Filstrukturens placering kan ocksÄ ses med hjÀlp av verktyget parted.

  5. Montera bilden

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

    Den del vi behöver börjar med block 264192 (dina siffror kan variera), storleken av ett block Àr 512 byte, vi multiplicerar dem för att fÄ förskjutningen i byte.

  6. Vi gÄr till mappen med det monterade systemet och chrootar oss i den

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

    ~/livecd/mnt — fullstĂ€ndig vĂ€g till mappen med det monterade systemet
    bin/sh — skal (kan ocksĂ„ bytas mot bin/bash)
    Nu kan vi börja installera nödvÀndiga paket och applikationer.

Installera ROS

Jag installerade den senaste versionen av ROS (ROS Melodic) enligt den officiella handledningen.

  1. Uppdatera paketlistan

    sudo apt-get update

    HĂ€r fick jag ett fel:

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

    Det Àr relaterat till att signeringsnyckeln har gÄtt ut. För att uppdatera nycklarna skriver vi:

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

  2. Förbereder systemet för installationen av 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. Installerar ROS
    TyvÀrr kunde jag inte installera desktopversionen av ROS, sÄ jag installerade bara grundpaketen:

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

    Not 1. I installationsprocessen uppstod ibland ett fel:

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

    Det löstes genom att rensa apt-cache:

    sudo apt-get clean; sudo apt-get autoclean

    Not 2. Efter installationen behöver vi kÀllkoden (source) med kommandot:

    source /opt/ros/melodic/setup.bash

    kommer inte att fungera, eftersom vi inte har startat bash, sÄ det ska INTE skrivas i terminalen.

  4. Installerar nödvÀndiga beroenden

    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. StÀller in behörigheter
    Eftersom vi har chrootat oss och faktiskt utför alla ÄtgÀrder under namnet root för det byggda systemet, kommer ROS ocksÄ att köras endast med superanvÀndarrÀttigheter.
    Vid försök att köra roscore utan sudo uppstÄr ett fel:

    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'

    För att undvika fel Àndrar vi rekursivt accessrÀttigheterna till anvÀndarens hemkatalog ROS. För detta skriver vi in:

    sudo rosdep fix-permissions

  6. Installerar paketen rviz och rqt

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

Slutliga detaljer

  1. Klarar ut chroot:
    exit
  2. Avmonterar bilden
    cd ..
    sudo umount mnt/
  3. Packar systemavbilden i ett arkiv
    xz –ckv1

DÄ! Nu kan man med hjÀlp av balenaEtcher skriva systemavbilden pÄ SD-kortet, sÀtta in den i ODROID-C2, och du fÄr Ubuntu med installerat ROS!

LĂ€nkar:

  • Det hĂ€r videoklippet hjĂ€lpte mycket att förstĂ„ varför man kör chroot i linux och vad det Ă€r bra för:

Spela video


KĂ€lla: habr.com
Köp pĂ„litlig webbhotell med DDoS-skydd, VPS VDS-servrar đŸ”„ Köp pĂ„litlig webbhotell med DDoS-skydd, VPS VDS-servrar | ProHoster