ROS installimine Ubuntu IMG-pildis ühes lauaarvutis

Sissejuhatus

Hiljuti, töötades oma diplomiga, tekkis mul vajadus luua Ubuntu pilt üheplaadilise arvuti jaoks, kus on juba installitud ROS (Robot Operating System – robotite operatsioonisüsteem). Lühidalt öeldes, on diplom pühendatud robotigrupi juhtimisele. Robotid on varustatud kahe ratta ja kolme kaugusmõturiga. Kogu seda hallatakse ROS-i kaudu, mis töötab ODROID-C2 arendusplaadil.

ROS installimine Ubuntu IMG-pildis ühes lauaarvutis
Robot Ladybug. Vabandust halbade fotode kvaliteedi pärast

Ei olnud aega ega soovi installida ROS-i eraldi igale robotile, mistõttu tekkis vajadus süsteemipildi järele, kus ROS on juba installitud. Uurides internetti, leidsin mitmeid lähenemisviise, kuidas seda teha.
Leitud lahendused saab üldiselt jagada järgnevatesse gruppidesse.

  1. Programmid, mis loovad pildi valmis ja seadistatud süsteemist (Distroshare Ubuntu Imager, linux live kit, linux respin, systemback jne.)
  2. Projektid, mis võimaldavad koostada oma pildi (yocto, linux from scratch)
  3. Pildi käsitsi koostamine (liveCD customization ja vene analoog, pluss artikkel habras)

Esimese grupi lahenduste kasutamine tundus kõige lihtsam ja atraktiivsem variant, kuid ma ei suutnud siiski ODROIDile live-süsteemi pilti luua. Teise rühma lahendused ei sobinud mulle samuti piisavalt kõrge sisenemisbarjääri tõttu. Käsitsi koostamine olemasolevate juhendite alusel ei sobinud samuti, kuna minu pildil ei olnud kompressitud failisüsteemi.
Kokkuvõttes, sattudes chroot (chroot — change root, video link postituse lõpus) ja selle võimaluste peale, otsustasin seda kasutada. Edasi kirjeldan oma individuaalset juhtumit Ubuntu kohandamiseks robootika arendajatele.

Sisendisubmit:

  • Kogu pildi modifitseerimise protsess (välja arvatud SD-kaardile kirjutamine balenaEtcheriga) toimus Ubuntu 18.04 operatsioonisüsteemis.
  • Operatsioonisüsteem, mille koostasin – Ubuntu 18.04.3 mate desktop versioon.
  • Masin, millel peab koostatud süsteem töötama – ODROID-C2.

Pildi ettevalmistamine

  1. Laadige alla Ubuntu pilt ODROID jaoks ametlikult veebisaidilt

  2. Pakkige arhiv lahti

    unxz –kv

  3. Looge kaust, kuhu mountida pilt

    mkdir mnt

  4. Määrake partitsioon, millel failisüsteem asub

    file

    Otsige partitsiooni, kus failisüsteem on vormindatud ext2, ext3 või ext4. Me vajame partitsiooni algusaadressi (punasega esile tõstetud ekraanipildil):

    ROS installimine Ubuntu IMG-pildis ühes lauaarvutis

    Märkus. Failisüsteemi asukohta saab vaadata ka kasutades utiliiti parted.

  5. Mountimme pildi

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

    Meie vajalik partitsioon algab plokist 264192 (numbrid võivad teil erineda), ühe ploki suurus on 512 baiti, korrutame need, et saada nihke bitti.

  6. Liigume montitud süsteemi kausta ja chrootime sinna

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

    ~/livecd/mnt — täielik tee montitud süsteemi kausta
    bin/sh — shell (saab asendada ka bin/bash)
    Nüüd saame hakata installima vajalikke pakette ja rakendusi.

ROS-i installimine

Ma installisin ROS-i viimase versiooni (ROS Melodic) järgi ametlikku õpetust.

  1. Uuendame pakettide loendi

    sudo apt-get update

    Siin tekkis mul tõrge:

    Err:6 http://deb.odroid.in/c2 bionic InRelease
    Alljärgnevad allkirjad olid kehtetud: EXPKEYSIG 5360FB9DAB19BAC9 Mauro Ribeiro (mdrjr)

    See on seotud selle asjaoluga, et pakettide allkirjastamise võtme kehtivusaeg on lõppenud. Võtmete uuendamiseks sisestame:

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

  2. Valmistame süsteemi ROS-i installimiseks ette

    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. Installime ROS-i
    Kahjuks ei õnnestunud mul installida ROS-i desktop versiooni, seega installisin ainult põhipaketid:

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

    Märkus 1. Installimise käigus tekkis aeg-ajalt tõrge:

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

    Tõrge lahendati apt utiliidi vahemälu tühjendamise abil:

    sudo apt-get clean; sudo apt-get autoclean

    Märkus 2. Pärast installimist käivita (source) käsuga:

    source /opt/ros/melodic/setup.bash

    ei õnnestu, kuna me ei käivitanud bash'i, seega ei pea seda terminalis sisestama.

  4. Installime vajalikud sõltuvused

    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. Seame õigused
    Kuna oleme chrootinud ja teostame kõiki toiminguid põhimõtteliselt root õigustega, siis käivitatakse ROS samuti ainult superkasutaja õigustes.
    Kui proovite käivitada roscore ilma sudo-ta, tekib tõrge:

    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'

    Kuna tõrke vältimiseks muudame rekursiivselt ROS kasutaja kodukausta õigusi. Selleks sisestame:

    sudo rosdep fix-permissions

  6. Paigaldame paketid rviz ja rqt

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

Viimased puudutused

  1. Väljumine chrootist:
    exit
  2. Montaazime pildi
    cd ..
    sudo umount mnt/
  3. Pakime süsteemi pildi arhiivi
    xz –ckv1

Kõik! Nüüd saab balenaEtcher kasutada süsteemi pilti SD-kaardile kirjutamiseks, sisestada see ODROID-C2-sse ning teil on Ubuntu koos installitud ROS-iga!

Lingid:

  • Kuidas chrootida Linuxis ja milleks see vajalik on, aitas see video:

Mängi videot


Allikas: habr.com
Osta usaldusväärne hostimine veebilehtede jaoks DDoS-i kaitsega, VPS VDS serverid 🔥 Osta usaldusväärne hostimine veebilehtede jaoks DDoS-i kaitsega, VPS VDS serverid | ProHoster