Instalante ROS en Ubuntu IMG-bildo por unutabulo

Enkonduko

La alian tagon, laborante pri mia tezo, mi alfrontis la bezonon krei Ubuntu-bildon por unu-tabulo platformo kun ROS jam instalita (Robot Operating System - robota operaciumo). Resume, la diplomo estas dediĉita al administrado de grupo de robotoj. La robotoj estas ekipitaj per du radoj kaj tri distancmezuriloj. La tuta afero estas regata de ROS, kiu funkcias sur la tabulo ODROID-C2.

Instalante ROS en Ubuntu IMG-bildo por unutabulo
Roboto-Kokcinelino. Pardonu pro la malbona fotokvalito

Ne estis tempo nek deziro instali ROS sur ĉiu roboto individue, kaj tial estis bezono de sistema bildo kun ROS jam instalita. Post foliumi interreto, mi trovis plurajn alirojn al kiel tio povus esti farita.
Ĝenerale, ĉiuj trovitaj solvoj povas esti dividitaj en la sekvajn grupojn.

  1. Programoj, kiuj kreas bildon el preta kaj agordita sistemo (Disdividi Ubuntu Imager, linukso viva ilaro, linukso respin, sistemdorso, ktp.)
  2. Projektoj kiuj ebligas al vi krei vian propran bildon (yocto, linukso de nulo)
  3. Kunvenante la bildon mem (viva KD personigo и rusa ekvivalento, pluso artikolo pri Habré)

Uzi solvojn de la unua grupo ŝajnis esti la plej simpla kaj plej alloga opcio, sed mi neniam povis krei vivan sisteman bildon por ODROID. La solvoj de la dua grupo ankaŭ ne konvenis al mi pro la sufiĉe alta enirsojlo. Mana muntado laŭ la disponeblaj lerniloj ankaŭ ne estis taŭga, ĉar... Mia bildo ne havis kunpremitan dosiersistemon.
Kiel rezulto, mi trovis videon pri chroot (chroot - ŝanĝi radikon, ligo al la video ĉe la fino de la afiŝo) kaj ĝiaj kapabloj, oni decidis uzi ĝin. Poste, mi priskribos mian apartan kazon pri personigo de Ubuntu por robotikaj programistoj.

Komencaj datumoj:

  • La tuta procezo de modifado de bildo (krom skribi al la SD-karto per balenaEtcher) estis farita sur la operaciumo Ubuntu 18.04.
  • La operaciumo, kies asembleon mi modifis, estas Ubuntu 18.04.3 mate surtabla versio.
  • La maŝino sur kiu la kunvenita sistemo devus funkcii estas ODROID-C2.

Preparante la bildon

  1. Elŝutu la bildon de Ubuntu por ODROID de oficiala retejo

  2. Malpakante la arkivon

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

  3. Kreu dosierujon en kiu ni montos la bildon

    mkdir mnt

  4. Determinu la subdiskon sur kiu troviĝas la dosiersistemo

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

    Ni serĉas vando kun dosiersistemo en formato ext2, ext3 aŭ ext4. Ni bezonas la adreson de la komenco de la sekcio (markita ruĝe sur la ekrano):

    Instalante ROS en Ubuntu IMG-bildo por unutabulo

    Notu. La loko de la dosiersistemo ankaŭ povas esti vidita uzante la ilon disigita.

  5. Muntante la bildon

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

    La sekcio, kiun ni bezonas, komenciĝas per bloko 264192 (viaj nombroj povas malsami), la grandeco de unu bloko estas 512 bajtoj, multipliku ilin por akiri la indentaĵon en bajtoj.

  6. Iru al la dosierujo kun la muntita sistemo kaj ripozu en ĝi

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

    ~/livecd/mnt — plena vojo al la dosierujo kun la muntita sistemo
    bin/sh - ŝelo (ankaŭ povas esti anstataŭigita per bin/bash)
    Nun vi povas komenci instali la necesajn pakaĵojn kaj aplikaĵojn.

Instalante ROS

Mi instalis la lastan version de ROS (ROS Melodic) laŭ oficiala lernilo.

  1. Ĝisdatigante la liston de pakaĵoj

    sudo apt-get update

    Jen kie mi ricevis la eraron:

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

    Ĉi tio estas pro la fakto, ke la klavo de subskribo de pakaĵo eksvalidiĝis. Por ĝisdatigi la klavojn, tajpu:

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

  2. Preparante la sistemon por instali 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. Instalante ROS
    Bedaŭrinde, mi ne povis instali la labortablan version de ROS, do mi instalis nur la bazajn pakaĵojn:

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

    Notu 1. Dum la instala procezo foje okazis eraro:

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

    Ĝi estis riparita forigante la kaŝmemoron per la taŭga ilo:

    sudo apt-get clean; sudo apt-get autoclean

    Notu 2. Post instalado, fontu per la komando:

    source /opt/ros/melodic/setup.bash

    ĝi ne funkcios, ĉar Ni ne rulis bash, do ĝi NE bezonas esti tajpita en la terminalo.

  4. Instalante la necesajn dependecojn

    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. Agordi alirrajtojn
    Ĉar ni estas ensalutitaj kaj, fakte, faras ĉiujn agojn nome de la radiko de la kunvenita sistemo, ROS nur estos lanĉita kun superuzantrajtoj.
    Kiam vi provas ruli roscore sen sudo, okazas eraro:

    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'

    Por eviti ke la eraro okazu, ni rekursie ŝanĝu la alirrajtojn al la hejma dosierujo de la uzanto de ROS. Por fari tion ni tajpas:

    sudo rosdep fix-permissions

  6. Kroma instalado de la rviz kaj rqt-pakaĵoj

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

Finaj tuŝoj

  1. Eliri chroot:
    exit
  2. Malmunti la bildon
    cd ..
    sudo umount mnt/
  3. Ni paku la sistembildon en arkivon
    xz –ckv1 <файл образа>

Ĉiuj! Nun kun la helpo balenaetcher vi povas bruligi la sistembildon al SD-karto, enigi ĝin en ODROID-C2, kaj vi havos Ubuntu kun ROS instalita!

Referencoj

  • Ĉi tiu video multe helpis pri kiel trompi en Linukso kaj kial vi bezonas ĝin:



fonto: www.habr.com

Aldoni komenton