Инсталирање ROS во слика на Ubuntu IMG за една плоча

Вовед

Пред некој ден, додека работев на мојата теза, се соочив со потребата да создадам слика на Ubuntu за платформа со една плоча со веќе инсталиран ROS (Robot Operating System - оперативен систем робот). Накратко, дипломата е посветена на управување со група роботи. Роботите се опремени со две тркала и три далечина. Целата работа е контролирана од ROS, кој работи на плочата ODROID-C2.

Инсталирање ROS во слика на Ubuntu IMG за една плоча
Роботот Бубамара. Извинете за лошиот квалитет на фотографијата

Немаше ниту време ниту желба да се инсталира ROS на секој робот поединечно и затоа имаше потреба од системска слика со веќе инсталиран ROS. Откако прелистував на Интернет, најдов неколку пристапи за тоа како тоа може да се направи.
Општо земено, сите пронајдени решенија може да се поделат во следните групи.

  1. Програми кои создаваат слика од готов и конфигуриран систем (Дистрибуирајте сликар на Убунту, комплет за живо на Linux, Linux respin, системско враќање, итн.)
  2. Проекти кои ви дозволуваат да креирате сопствена слика (јокто, Linux од нула)
  3. Составете ја сликата сами (приспособување на ЦД во живо и Руски еквивалент, плус статија за Хабре)

Користењето решенија од првата група се чинеше дека е наједноставната и најатрактивна опција, но никогаш не можев да создадам слика на системот во живо за ODROID. Решенијата на втората група исто така не ми одговараа поради прилично високиот влезен праг. Рачното склопување според достапните упатства исто така не беше соодветно, бидејќи ... Мојата слика немаше компримиран датотечен систем.
Како резултат, наидов на видео за chroot (chroot - смени корен, линк до видеото на крајот од објавата) и неговите можности, беше одлучено да се искористи. Следно, ќе го опишам мојот конкретен случај на прилагодување на Ubuntu за развивачи на роботика.

Основна линија:

  • Целиот процес на модификација на сликата (освен пишувањето на SD-картичката со помош на balenaEtcher) беше извршен на оперативниот систем Ubuntu 18.04.
  • Оперативниот систем чие склопување го изменив е Ubuntu 18.04.3 mate десктоп верзијата.
  • Машината на која треба да работи склопениот систем е ODROID-C2.

Подготовка на сликата

  1. Преземете ја сликата на Ubuntu за ODROID од официјална страница

  2. Отпакување на архивата

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

  3. Направете директориум во кој ќе ја монтираме сликата

    mkdir mnt

  4. Одредете ја партицијата на која се наоѓа датотечен систем

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

    Бараме партиција со датотечен систем во формат ext2, ext3 или ext4. Ни треба адресата на почетокот на делот (означена со црвено на екранот):

    Инсталирање ROS во слика на Ubuntu IMG за една плоча

    Забелешка. Локацијата на датотечниот систем може да се гледа и со помош на алатката раздели.

  5. Монтирање на сликата

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

    Делот што ни треба започнува со блок 264192 (вашите броеви може да се разликуваат), големината на еден блок е 512 бајти, помножете ги за да го добиете вовлекувањето во бајти.

  6. Одете во папката со монтираниот систем и дружете се во неа

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

    ~/livecd/mnt — целосна патека до директориумот со монтираниот систем
    bin/sh - школка (исто така може да се замени со канта/баш)
    Сега можете да започнете со инсталирање на потребните пакети и апликации.

Инсталирање на ROS

Ја инсталирав најновата верзија на ROS (ROS Melodic) според официјален туторијал.

  1. Ажурирање на списокот на пакети

    sudo apt-get update

    Еве каде ја добив грешката:

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

    Ова се должи на фактот дека клучот за потпишување пакет е истечен. За да ги ажурирате копчињата, напишете:

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

  2. Подготовка на системот за инсталирање 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. Инсталирање на ROS
    За жал, не можев да ја инсталирам десктоп верзијата на ROS, па ги инсталирав само основните пакети:

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

    Забелешка 1. За време на процесот на инсталација понекогаш се појавуваше грешка:

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

    Тоа беше поправено со чистење на кешот користејќи ја алатката apt:

    sudo apt-get clean; sudo apt-get autoclean

    Забелешка 2. По инсталацијата, извор со помош на командата:

    source /opt/ros/melodic/setup.bash

    нема да работи, бидејќи Не го извршивме баш, така што НЕ треба да се пишува во терминалот.

  4. Инсталирање на потребните зависности

    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. Поставување права за пристап
    Бидејќи сме најавени и, всушност, ги извршуваме сите дејства во име на коренот на системот што се составува, ROS ќе се стартува само со права на суперкорисници.
    Кога се обидувате да извршите roscore без sudo, се појавува грешка:

    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'

    За да спречиме појава на грешка, ајде рекурзивно да ги промениме правата за пристап до домашниот директориум на корисникот на ROS. За да го направите ова, пишуваме:

    sudo rosdep fix-permissions

  6. Дополнителна инсталација на пакетите rviz и rqt

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

Последни допири

  1. Излезете од chroot:
    exit
  2. Откачете ја сликата
    cd ..
    sudo umount mnt/
  3. Ајде да ја спакуваме сликата на системот во архива
    xz –ckv1 <файл образа>

Сите! Сега со помош баленаЕчер можете да ја запишете сликата на системот на SD-картичка, да ја вметнете во ODROID-C2 и ќе имате инсталирано Ubuntu со ROS!

Референци:

  • Ова видео помогна многу за тоа како да мамете во Linux и зошто ви е потребно:



Извор: www.habr.com

Додадете коментар