Instalimi i ROS në një imazh Ubuntu IMG për një bord të vetëm

Paraqitje

Një ditë tjetër, ndërsa punoja në tezën time, u përballa me nevojën për të krijuar një imazh të Ubuntu për një platformë me një tabelë me ROS të instaluar tashmë (Robot Operating System - sistem operativ robot). Me pak fjalë, diploma i kushtohet menaxhimit të një grupi robotësh. Robotët janë të pajisur me dy rrota dhe tre distanca. E gjithë gjëja kontrollohet nga ROS, i cili funksionon në tabelën ODROID-C2.

Instalimi i ROS në një imazh Ubuntu IMG për një bord të vetëm
Robot Ladybug. Na vjen keq për cilësinë e dobët të fotografisë

Nuk kishte as kohë dhe as dëshirë për të instaluar ROS në secilin robot individualisht, dhe për këtë arsye kishte nevojë për një imazh të sistemit me ROS të instaluar tashmë. Pasi shfletova internetin, gjeta disa mënyra se si mund të bëhej kjo.
Në përgjithësi, të gjitha zgjidhjet e gjetura mund të ndahen në grupet e mëposhtme.

  1. Programet që krijojnë një imazh nga një sistem i gatshëm dhe i konfiguruar (Shpërndani Imazhin e Ubuntu, komplet linux live, linux respin, kthimi i sistemit, etj.)
  2. Projektet që ju lejojnë të krijoni imazhin tuaj (jocto, linux nga e para)
  3. Montoni vetë imazhin (personalizim live CD и Ekuivalenti rusplus artikull në Habré)

Përdorimi i zgjidhjeve nga grupi i parë dukej se ishte opsioni më i thjeshtë dhe më tërheqës, por nuk arrita kurrë të krijoja një imazh të drejtpërdrejtë të sistemit për ODROID. Zgjidhjet e grupit të dytë gjithashtu nuk më përshtateshin për shkak të pragut mjaft të lartë të hyrjes. Asambleja manuale sipas udhëzimeve të disponueshme gjithashtu nuk ishte e përshtatshme, sepse... Imazhi im nuk kishte një sistem skedari të ngjeshur.
Si rezultat, hasa në një video rreth chroot (chroot - ndërroj rrënjë, lidhje me videon në fund të postimit) dhe aftësitë e saj, u vendos që ta përdorni. Më pas, unë do të përshkruaj rastin tim të veçantë të personalizimit të Ubuntu-së për zhvilluesit e robotikës.

Të dhënat fillestare:

  • I gjithë procesi i modifikimit të imazhit (përveç shkrimit në kartën SD duke përdorur balenaEtcher) u krye në sistemin operativ Ubuntu 18.04.
  • Sistemi operativ, montimi i të cilit kam modifikuar është versioni desktop i Ubuntu 18.04.3 mate.
  • Makina në të cilën duhet të funksionojë sistemi i montuar është ODROID-C2.

Përgatitja e imazhit

  1. Shkarkoni imazhin e Ubuntu për ODROID nga faqen zyrtare

  2. Shpaketimi i arkivit

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

  3. Krijoni një direktori në të cilën do të montojmë imazhin

    mkdir mnt

  4. Përcaktoni ndarjen në të cilën ndodhet sistemi i skedarëve

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

    Ne jemi duke kërkuar për një ndarje me një sistem skedari në formatin ext2, ext3 ose ext4. Na duhet adresa e fillimit të seksionit (e theksuar me të kuqe në ekran):

    Instalimi i ROS në një imazh Ubuntu IMG për një bord të vetëm

    Shënim. Vendndodhja e sistemit të skedarëve mund të shihet gjithashtu duke përdorur programin i ndarë.

  5. Montimi i imazhit

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

    Seksioni që na nevojitet fillon me bllokun 264192 (numrat tuaj mund të ndryshojnë), madhësia e një blloku është 512 bajt, shumëzojini ato për të marrë dhëmbëzimin në bajt.

  6. Shkoni te dosja me sistemin e montuar dhe rri në të

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

    ~/livecd/mnt — shtegu i plotë drejt drejtorisë me sistemin e montuar
    bin/sh - guaskë (mund të zëvendësohet edhe me bin/bash)
    Tani mund të filloni të instaloni paketat dhe aplikacionet e nevojshme.

Instalimi i ROS

Kam instaluar versionin më të fundit të ROS (ROS Melodic) sipas tutorial zyrtar.

  1. Përditësimi i listës së paketave

    sudo apt-get update

    Ja ku mora gabimin:

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

    Kjo për faktin se çelësi i nënshkrimit të paketës ka skaduar. Për të përditësuar çelësat, shkruani:

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

  2. Përgatitja e sistemit për instalimin e 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. Instalimi i ROS
    Fatkeqësisht, nuk munda të instaloja versionin desktop të ROS, kështu që instalova vetëm paketat bazë:

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

    Shënimi 1. Gjatë procesit të instalimit ndonjëherë ndodhi një gabim:

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

    Ajo u rregullua duke pastruar cache duke përdorur mjetin apt:

    sudo apt-get clean; sudo apt-get autoclean

    Shënimi 2. Pas instalimit, burimi duke përdorur komandën:

    source /opt/ros/melodic/setup.bash

    nuk do të funksionojë, sepse Ne nuk e ekzekutuam bash, kështu që NUK ka nevojë të shtypet në terminal.

  4. Instalimi i varësive të nevojshme

    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. Vendosja e të drejtave të aksesit
    Meqenëse jemi të kyçur dhe, në fakt, kryejmë të gjitha veprimet në emër të rrënjës së sistemit që po montohet, ROS do të lansohet vetëm me të drejtat e superpërdoruesit.
    Kur përpiqeni të ekzekutoni roscore pa sudo, ndodh një gabim:

    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'

    Për të parandaluar shfaqjen e gabimit, le të ndryshojmë në mënyrë rekursive të drejtat e hyrjes në drejtorinë kryesore të përdoruesit ROS. Për ta bërë këtë ne shkruajmë:

    sudo rosdep fix-permissions

  6. Instalim shtesë i paketave rviz dhe rqt

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

Prekjet përfundimtare

  1. Dil nga chroot:
    exit
  2. Çmontoni imazhin
    cd ..
    sudo umount mnt/
  3. Le të paketojmë imazhin e sistemit në një arkiv
    xz –ckv1 <файл образа>

Të gjitha! Tani me ndihmën balenaetcher mund ta digjni imazhin e sistemit në një kartë SD, ta futni në ODROID-C2 dhe do të keni të instaluar Ubuntu me ROS!

referencat:

  • Kjo video ndihmoi shumë se si të mashtroni në Linux dhe pse ju nevojitet:



Burimi: www.habr.com

Shto një koment