ROS-ді Ubuntu img image-да бір борттыққа орнату

Кіріспе

Келесі күні, менің дипломдық жұмысыммен жұмыс істеу кезінде мен ROS орнатылған бір тақталы платформа үшін Ubuntu кескінін жасау қажеттілігіне тап болдым (Robot Operating System – робот операциялық жүйесі). Бір сөзбен айтқанда, диплом роботтар тобын басқаруға арналған. Роботтар екі дөңгелекпен және үш қашықтық өлшегішпен жабдықталған. Барлығы ODROID-C2 тақтасында жұмыс істейтін ROS арқылы басқарылады.

ROS-ді Ubuntu img image-да бір борттыққа орнату
Robot Ladybug. Фото сапасының нашарлығы үшін кешіріңіз

Әрбір роботқа ROS орнатуға уақыт та, қалау да болмады, сондықтан ROS орнатылған жүйе кескіні қажет болды. Интернетті қарап шыққаннан кейін мен мұны қалай жасауға болатынын бірнеше тәсілдерді таптым.
Жалпы, барлық табылған шешімдерді келесі топтарға бөлуге болады.

  1. Дайын және конфигурацияланған жүйеден кескін жасайтын бағдарламалар (Ubuntu Imager бағдарламасын таратыңыз, linux live жинағы, linux respin, жүйелік кері және т.б.)
  2. Өз бейнеңізді жасауға мүмкіндік беретін жобалар (йокто, Linux нөлден бастап)
  3. Суретті өзіңіз құрастыру (тікелей CD теңшеу и орысша баламасыплюс Хабре туралы мақала)

Бірінші топтың шешімдерін пайдалану ең қарапайым және ең тартымды нұсқа болып көрінді, бірақ мен ешқашан ODROID үшін тірі жүйелік кескінді жасай алмадым. Екінші топтың шешімдері де кіру шегінің жоғары болуына байланысты маған сәйкес келмеді. Қолда бар оқулықтарға сәйкес қолмен құрастыру да жарамсыз болды, өйткені... Менің суретімде қысылған файлдық жүйе болмады.
Нәтижесінде мен chroot туралы бейнеге тап болдым (chroot - түбірді өзгерту, жазбаның соңындағы бейнеге сілтеме) және оның мүмкіндіктері, оны пайдалану туралы шешім қабылданды. Әрі қарай, мен робототехника әзірлеушілері үшін Ubuntu-ды теңшеудің нақты жағдайын сипаттаймын.

Бастапқы деректер:

  • Кескінді өзгертудің бүкіл процесі (balenaEtcher арқылы SD картасына жазуды қоспағанда) Ubuntu 18.04 операциялық жүйесінде орындалды.
  • Жинағын өзгерткен операциялық жүйе Ubuntu 18.04.3 mate жұмыс үстелінің нұсқасы болып табылады.
  • Жиналған жүйе жұмыс істеуі керек машина ODROID-C2.

Суретті дайындау

  1. ODROID үшін Ubuntu кескінін мына жерден жүктеп алыңыз ресми сайты

  2. Мұрағатты ашу

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

  3. Біз суретті орнататын каталог жасаңыз

    mkdir mnt

  4. Файлдық жүйе орналасқан бөлімді анықтаңыз

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

    Біз ext2, ext3 немесе ext4 пішіміндегі файлдық жүйесі бар бөлімді іздейміз. Бізге бөлімнің басының мекенжайы қажет (экранда қызыл түспен белгіленген):

    ROS-ді Ubuntu img image-да бір борттыққа орнату

    Ескерту: Файлдық жүйенің орнын қызметтік бағдарлама арқылы да көруге болады бөлінді.

  5. Кескінді орнату

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

    Бізге қажет бөлім 264192 блогынан басталады (сіздің сандарыңыз әртүрлі болуы мүмкін), бір блоктың өлшемі 512 байт, оларды байтпен шегініс алу үшін көбейтіңіз.

  6. Орнатылған жүйесі бар қалтаға өтіп, онда ілулі тұрыңыз

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

    ~/livecd/mnt — орнатылған жүйемен каталогқа толық жол
    бин/ш - қабық (сонымен де ауыстыруға болады bin/bash)
    Енді сіз қажетті пакеттер мен қолданбаларды орнатуды бастай аласыз.

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

    ол жұмыс істемейді, өйткені Біз 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 <файл образа>

Барлық! Енді көмегімен balenaEchcher жүйелік кескінді SD картасына жазып, ODROID-C2 ішіне енгізуге болады, сонда ROS орнатылған Ubuntu болады!

сілтемелер:

  • Бұл бейне Linux жүйесінде алдау жолын және оның не үшін қажет екенін білуге ​​көп көмектесті:



Ақпарат көзі: www.habr.com

пікір қалдыру