Installation af ROS i et Ubuntu IMG-billede til et enkelt bord

Indledning

Forleden dag, mens jeg arbejdede på mit speciale, stod jeg over for behovet for at oprette et Ubuntu-image til en singleboard-platform med ROS allerede installeret (Robot operativsystem - robot operativsystem). Kort sagt er diplomet viet til at lede en gruppe robotter. Robotterne er udstyret med to hjul og tre afstandsmålere. Det hele styres fra ROS, som kører på ODROID-C2 boardet.

Installation af ROS i et Ubuntu IMG-billede til et enkelt bord
Robot Mariehøne. Beklager den dårlige billedkvalitet

Der var hverken tid eller lyst til at installere ROS på hver enkelt robot, og derfor var der behov for et systembillede med allerede installeret ROS. Efter at have surfet på internettet fandt jeg flere tilgange til, hvordan dette kunne gøres.
Generelt kan alle fundne løsninger opdeles i følgende grupper.

  1. Programmer, der skaber et billede fra et færdiglavet og konfigureret system (Distroshare Ubuntu Imager, linux live kit, linux respin, systemback osv.)
  2. Projekter, der giver dig mulighed for at skabe dit eget billede (yocto, linux fra bunden)
  3. Saml billedet selv (live CD tilpasning и russisk ækvivalentplus artikel om Habré)

At bruge løsninger fra den første gruppe syntes at være den enkleste og mest attraktive mulighed, men jeg var aldrig i stand til at skabe et live systembillede til ODROID. Løsningerne i den anden gruppe passede heller ikke mig på grund af den ret høje adgangstærskel. Manuel montering i henhold til de tilgængelige tutorials var heller ikke egnet, fordi... Mit billede havde ikke et komprimeret filsystem.
Som et resultat faldt jeg over en video om chroot (chroot - skift rod, link til videoen i slutningen af ​​indlægget) og dens muligheder, blev det besluttet at bruge det. Dernæst vil jeg beskrive mit særlige tilfælde med at tilpasse Ubuntu til robotudviklere.

Indledende data:

  • Hele billedændringsprocessen (undtagen skrivning til SD-kortet ved hjælp af balenaEtcher) blev udført på Ubuntu 18.04-operativsystemet.
  • Operativsystemet, hvis assembly jeg ændrede, er Ubuntu 18.04.3 mate desktop version.
  • Maskinen, som det samlede system skal fungere på, er ODROID-C2.

Forberedelse af billedet

  1. Download Ubuntu-billedet til ODROID fra officielle site

  2. Udpakning af arkiv

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

  3. Opret en mappe, hvori vi monterer billedet

    mkdir mnt

  4. Bestem den partition, hvor filsystemet er placeret

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

    Vi leder efter en partition med et filsystem i ext2, ext3 eller ext4 format. Vi har brug for adressen på begyndelsen af ​​afsnittet (fremhævet med rødt på skærmen):

    Installation af ROS i et Ubuntu IMG-billede til et enkelt bord

    Bemærk. Placeringen af ​​filsystemet kan også ses ved hjælp af hjælpeprogrammet parted.

  5. Montering af billedet

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

    Sektionen vi skal bruge starter med blok 264192 (dine tal kan være forskellige), størrelsen af ​​en blok er 512 bytes, gange dem for at få indrykningen i bytes.

  6. Gå til mappen med det monterede system og hæng ud i den

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

    ~/livecd/mnt — fuld sti til biblioteket med det monterede system
    bin/sh - skal (kan også erstattes med bin/bash)
    Nu kan du begynde at installere de nødvendige pakker og programmer.

Installation af ROS

Jeg installerede den seneste version af ROS (ROS Melodic) iflg officiel tutorial.

  1. Opdatering af listen over pakker

    sudo apt-get update

    Det er her jeg fik fejlen:

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

    Dette skyldes, at pakkesigneringsnøglen er udløbet. For at opdatere nøglerne skal du skrive:

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

  2. Forberedelse af systemet til installation af 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. Installation af ROS
    Desværre var jeg ikke i stand til at installere desktopversionen af ​​ROS, så jeg installerede kun de grundlæggende pakker:

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

    Bemærk 1. Under installationsprocessen opstod der nogle gange en fejl:

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

    Det blev rettet ved at rydde cachen ved hjælp af apt-værktøjet:

    sudo apt-get clean; sudo apt-get autoclean

    Bemærk 2. Efter installationen, kilde ved hjælp af kommandoen:

    source /opt/ros/melodic/setup.bash

    det vil ikke virke, fordi Vi kørte ikke bash, så det behøver IKKE at skrives i terminalen.

  4. Installation af de nødvendige afhængigheder

    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. Opsætning af adgangsrettigheder
    Da vi er logget ind og faktisk udfører alle handlinger på vegne af roden af ​​det system, der samles, vil ROS kun blive lanceret med superbrugerrettigheder.
    Når du forsøger at køre roscore uden sudo, opstår der en fejl:

    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'

    For at forhindre fejlen i at opstå, lad os rekursivt ændre adgangsrettighederne til ROS-brugerens hjemmemappe. For at gøre dette skriver vi:

    sudo rosdep fix-permissions

  6. Yderligere installation af rviz- og rqt-pakkerne

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

Sidste hånd

  1. Afslut chroot:
    exit
  2. Afmonter billedet
    cd ..
    sudo umount mnt/
  3. Lad os pakke systembilledet ind i et arkiv
    xz –ckv1 <файл образа>

Alle! Nu med hjælpen balenaetcher du kan brænde systembilledet til et SD-kort, indsætte det i ODROID-C2, og du vil have Ubuntu med ROS installeret!

referencer:

  • Denne video hjalp meget med, hvordan man snyder i Linux, og hvorfor du har brug for det:



Kilde: www.habr.com

Tilføj en kommentar