Installeer ROS in 'n Ubuntu IMG-beeld vir 'n enkele bord

Inleiding

Die ander dag, terwyl ek aan my tesis gewerk het, het ek gekonfronteer met die behoefte om 'n Ubuntu-beeld te skep vir 'n enkelbord-platform met ROS reeds geïnstalleer (Robot bedryfstelsel - robot bedryfstelsel). Kortom, die diploma word gewy aan die bestuur van 'n groep robotte. Die robotte is toegerus met twee wiele en drie afstandmeters. Die hele ding word beheer vanaf ROS, wat op die ODROID-C2-bord loop.

Installeer ROS in 'n Ubuntu IMG-beeld vir 'n enkele bord
Robot Ladybug. Jammer vir die swak foto kwaliteit

Daar was nie tyd of begeerte om ROS individueel op elke robot te installeer nie, en daarom was daar 'n behoefte aan 'n stelselbeeld met ROS reeds geïnstalleer. Nadat ek op die internet geblaai het, het ek verskeie benaderings gevind hoe dit gedoen kan word.
Oor die algemeen kan alle oplossings wat gevind word in die volgende groepe verdeel word.

  1. Programme wat 'n beeld skep vanaf 'n klaargemaakte en gekonfigureerde stelsel (Distroshare Ubuntu Imager, linux live kit, linux respin, stelselterug, ens.)
  2. Projekte wat jou toelaat om jou eie beeld te skep (yocto, linux van nuuts af)
  3. Stel self die beeld saam (lewendige CD-aanpassing и Russiese ekwivalent, 'n pluspunt artikel oor hub)

Die gebruik van oplossings van die eerste groep was die eenvoudigste en aantreklikste opsie, maar ek kon nooit 'n lewendige stelselbeeld vir ODROID skep nie. Die oplossings van die tweede groep het my ook nie gepas nie weens die redelik hoë toegangsdrempel. Handmatige samestelling volgens die beskikbare tutoriale was ook nie geskik nie, want... My beeld het nie 'n saamgeperste lêerstelsel gehad nie.
Gevolglik het ek op 'n video afgekom oor chroot (chroot - verander wortel, skakel na die video aan die einde van die pos) en sy vermoëns, is besluit om dit te gebruik. Vervolgens sal ek my spesifieke geval beskryf van die aanpassing van Ubuntu vir robotika-ontwikkelaars.

Aanvanklike gegewens:

  • Die hele beeldmodifikasieproses (behalwe om na die SD-kaart te skryf met behulp van balenaEtcher) is op die Ubuntu 18.04-bedryfstelsel uitgevoer.
  • Die bedryfstelsel waarvan ek die samestelling verander het, is Ubuntu 18.04.3 mate-desktopweergawe.
  • Die masjien waarop die saamgestelde stelsel moet werk, is ODROID-C2.

Berei die beeld voor

  1. Laai die Ubuntu-prent vir ODROID af van amptelike webwerf

  2. Pak die argief uit

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

  3. Skep 'n gids waarin ons die prent sal monteer

    mkdir mnt

  4. Bepaal die partisie waarop die lêerstelsel geleë is

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

    Ons is op soek na 'n partisie met 'n lêerstelsel in ext2, ext3 of ext4 formaat. Ons benodig die adres van die begin van die afdeling (in rooi uitgelig op die skerm):

    Installeer ROS in 'n Ubuntu IMG-beeld vir 'n enkele bord

    Noot. Die ligging van die lêerstelsel kan ook met die hulpprogram bekyk word geskei.

  5. Monteer die beeld

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

    Die afdeling wat ons benodig begin met blok 264192 (jou getalle kan verskil), die grootte van een blok is 512 grepe, vermenigvuldig hulle om die inkeping in grepe te kry.

  6. Gaan na die gids met die gemonteerde stelsel en kuier daarin

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

    ~/livecd/mnt - volledige pad na die gids met die gemonteerde stelsel
    bin/sh - dop (kan ook vervang word met bin/bash)
    Nou kan jy die nodige pakkette en toepassings begin installeer.

Installeer ROS

Ek het die nuutste weergawe van ROS (ROS Melodies) volgens amptelike tutoriaal.

  1. Opdatering van die lys van pakkette

    sudo apt-get update

    Dit is waar ek die fout gekry het:

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

    Dit is te wyte aan die feit dat die pakketondertekeningsleutel verval het. Om die sleutels op te dateer, tik:

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

  2. Berei die stelsel voor vir die installering van 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. Installeer ROS
    Ongelukkig kon ek nie die rekenaarweergawe van ROS installeer nie, so ek het slegs die basiese pakkette geïnstalleer:

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

    Opmerking 1. Tydens die installasieproses het soms 'n fout voorgekom:

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

    Dit is reggestel deur die kas skoon te maak met die gepaste nut:

    sudo apt-get clean; sudo apt-get autoclean

    Opmerking 2. Na die installasie, bron met behulp van die opdrag:

    source /opt/ros/melodic/setup.bash

    dit sal nie werk nie, want Ons het nie bash laat loop nie, so dit hoef NIE in die terminale getik te word nie.

  4. Die installering van die nodige afhanklikhede

    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. Opstel van toegangsregte
    Aangesien ons aangemeld is en in werklikheid alle aksies uitvoer namens die wortel van die stelsel wat saamgestel word, sal ROS slegs met supergebruikerregte geloods word.
    As u probeer om roscore sonder sudo uit te voer, vind 'n fout plaas:

    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'

    Om te verhoed dat die fout voorkom, laat ons die toegangsregte tot die ROS-gebruiker se tuisgids rekursief verander. Om dit te doen tik ons:

    sudo rosdep fix-permissions

  6. Bykomende installasie van die rviz- en rqt-pakkette

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

Finale aanslag

  1. Verlaat chroot:
    exit
  2. Ontkoppel die prent
    cd ..
    sudo umount mnt/
  3. Kom ons pak die stelselbeeld in 'n argief
    xz –ckv1 <файл образа>

Almal! Nou met die hulp balenaetcher jy kan die stelselbeeld op 'n SD-kaart verbrand, dit in ODROID-C2 plaas, en jy sal Ubuntu hê met ROS geïnstalleer!

verwysings:

  • Hierdie video het baie gehelp met hoe om in Linux te kul en hoekom jy dit nodig het:



Bron: will.com

Voeg 'n opmerking