ROS:n asentaminen Ubuntu IMG -kuvaan yksilevylle

Esittely

Toissapäivänä opinnäytetyötäni työskennellessäni kohtasin tarpeen luoda Ubuntu-kuva yhden levyn alustalle, johon ROS oli jo asennettu (Robot Operating System - robotin käyttöjärjestelmä). Lyhyesti sanottuna tutkintotodistus on omistettu robottiryhmän hallintaan. Robotit on varustettu kahdella pyörällä ja kolmella etäisyysmittarilla. Koko asiaa ohjataan ROS:sta, joka toimii ODROID-C2-kortilla.

ROS:n asentaminen Ubuntu IMG -kuvaan yksilevylle
Robotti Leppäkerttu. Pahoittelut kuvien huonosta laadusta

Ei ollut aikaa eikä halua asentaa ROS-järjestelmää jokaiseen robottiin erikseen, ja siksi tarvittiin järjestelmäkuva, jossa ROS oli jo asennettuna. Selattuani Internetiä löysin useita tapoja, kuinka tämä voitaisiin tehdä.
Yleisesti ottaen kaikki löydetyt ratkaisut voidaan jakaa seuraaviin ryhmiin.

  1. Ohjelmat, jotka luovat kuvan valmiista ja konfiguroidusta järjestelmästä (Jaa Ubuntu Imager, linux live kit, linux respin, systemback jne.)
  2. Projektit, joiden avulla voit luoda oman kuvan (yocto, linux tyhjästä)
  3. Kokoamalla kuvan itse (live-CD-muokkaus и Venäjän vastaavaplus artikkeli Habresta)

Ensimmäisen ryhmän ratkaisujen käyttäminen vaikutti yksinkertaisimmalta ja houkuttelevimmalta vaihtoehdolta, mutta en koskaan pystynyt luomaan elävää järjestelmäkuvaa ODROIDille. Toisen ryhmän ratkaisut eivät myöskään sopineet minulle melko korkean pääsykynnyksen vuoksi. Manuaalinen kokoaminen saatavilla olevien opetusohjelmien mukaan ei myöskään sopinut, koska... Kuvassani ei ollut pakattua tiedostojärjestelmää.
Tämän seurauksena törmäsin videoon chrootista (chroot - vaihda juuri, linkki videoon julkaisun lopussa) ja sen ominaisuudet, päätettiin käyttää sitä. Seuraavaksi kuvaan erityistapaustani Ubuntun mukauttamisesta robotiikan kehittäjille.

taustaa:

  • Koko kuvan muokkausprosessi (paitsi kirjoittaminen SD-kortille balenaEtcherillä) suoritettiin Ubuntu 18.04 -käyttöjärjestelmällä.
  • Käyttöjärjestelmä, jonka kokoonpanoa muokkasin, on Ubuntu 18.04.3 mate -työpöytäversio.
  • Kone, jolla kootun järjestelmän pitäisi toimia, on ODROID-C2.

Kuvan valmistelu

  1. Lataa Ubuntu-kuva ODROIDille osoitteesta virallinen sivusto

  2. Arkiston purkaminen

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

  3. Luo hakemisto, johon liitämme kuvan

    mkdir mnt

  4. Määritä osio, jossa tiedostojärjestelmä sijaitsee

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

    Etsimme osiota tiedostojärjestelmällä ext2, ext3 tai ext4 muodossa. Tarvitsemme osion alun osoitteen (korostettu punaisella näytöllä):

    ROS:n asentaminen Ubuntu IMG -kuvaan yksilevylle

    Huom. Tiedostojärjestelmän sijaintia voi tarkastella myös apuohjelmalla erosimme.

  5. Kuvan asennus

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

    Tarvittava osa alkaa lohkolla 264192 (numerosi voivat vaihdella), yhden lohkon koko on 512 tavua, kerro ne saadaksesi sisennyksen tavuissa.

  6. Mene kansioon, jossa on asennettu järjestelmä, ja vietä aikaa siinä

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

    ~/livecd/mnt — koko polku hakemistoon, jossa on asennettu järjestelmä
    bin/sh - kuori (voidaan myös korvata roskakori/bash)
    Nyt voit aloittaa tarvittavien pakettien ja sovellusten asentamisen.

ROS:n asennus

Asensin ROS:n uusimman version (ROS Melodic) mukaan virallinen opetusohjelma.

  1. Päivitetään pakettilistaa

    sudo apt-get update

    Tästä sain virheen:

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

    Tämä johtuu siitä, että paketin allekirjoitusavain on vanhentunut. Päivitä avaimet kirjoittamalla:

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

  2. Järjestelmän valmistelu ROS-asennusta varten

    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:n asennus
    Valitettavasti en pystynyt asentamaan ROS:n työpöytäversiota, joten asensin vain peruspaketit:

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

    Huomautus 1 Asennusprosessin aikana tapahtui joskus virhe:

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

    Se korjattiin tyhjentämällä välimuisti apt-apuohjelmalla:

    sudo apt-get clean; sudo apt-get autoclean

    Huomautus 2 Asennuksen jälkeen lähde komennolla:

    source /opt/ros/melodic/setup.bash

    se ei toimi, koska Emme suorittaneet bashia, joten sitä EI tarvitse kirjoittaa terminaaliin.

  4. Tarvittavien riippuvuuksien asentaminen

    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. Käyttöoikeuksien määrittäminen
    Koska olemme kirjautuneena sisään ja itse asiassa suoritamme kaikki toimet koottavan järjestelmän juuren puolesta, ROS käynnistetään vain pääkäyttäjän oikeuksilla.
    Kun yrität suorittaa roscorea ilman sudoa, tapahtuu virhe:

    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'

    Virheen estämiseksi muutetaan rekursiivisesti ROS-käyttäjän kotihakemiston käyttöoikeuksia. Tätä varten kirjoitamme:

    sudo rosdep fix-permissions

  6. rviz- ja rqt-pakettien lisäasennus

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

Viimeiset silaukset

  1. Poistu chrootista:
    exit
  2. Irrota kuva
    cd ..
    sudo umount mnt/
  3. Pakataan järjestelmäkuva arkistoon
    xz –ckv1 <файл образа>

Kaikki! Nyt avulla paalinveitsijä voit polttaa järjestelmäkuvan SD-kortille, asettaa sen ODROID-C2:een, ja sinulla on Ubuntu ja ROS asennettuna!

viitteet:

  • Tämä video auttoi paljon Linuxissa huijaamisessa ja miksi sitä tarvitaan:



Lähde: will.com

Lisää kommentti