ROS-ni bitta taxtali uchun Ubuntu IMG tasviriga o'rnatish

kirish

Boshqa kuni, mening dissertatsiyam ustida ishlayotganimda, ROS allaqachon o'rnatilgan bitta taxtali platforma uchun Ubuntu tasvirini yaratish zarurati bilan duch keldim (Robot Operating System - robot operatsion tizimi). Qisqasi, diplom robotlar guruhini boshqarishga bag'ishlangan. Robotlar ikkita g'ildirak va uchta masofa o'lchagich bilan jihozlangan. Hamma narsa ODROID-C2 platasida ishlaydigan ROS-dan boshqariladi.

ROS-ni bitta taxtali uchun Ubuntu IMG tasviriga o'rnatish
Robot Ladybug. Surat sifati pastligi uchun uzr

Har bir robotga ROS-ni alohida o'rnatish uchun vaqt ham, xohish ham yo'q edi, shuning uchun ROS allaqachon o'rnatilgan tizim tasviriga ehtiyoj bor edi. Internetni ko'rib chiqqandan so'ng, men buni qanday qilish mumkinligi haqida bir nechta yondashuvlarni topdim.
Umuman olganda, barcha topilgan yechimlarni quyidagi guruhlarga bo'lish mumkin.

  1. Tayyor va sozlangan tizimdan tasvir yaratuvchi dasturlar (Ubuntu Imager dasturini tarqatish, linux jonli to'plami, linux respin, systemback va boshqalar)
  2. O'zingizning rasmingizni yaratishga imkon beruvchi loyihalar (yocto, linux noldan)
  3. Tasvirni o'zingiz yig'ish (jonli CDni sozlash ΠΈ rus ekvivalenti, ortiqcha HabrΓ© haqidagi maqola)

Birinchi guruhning echimlaridan foydalanish eng oddiy va eng jozibali variant bo'lib tuyuldi, lekin men hech qachon ODROID uchun jonli tizim tasvirini yarata olmadim. Ikkinchi guruhning echimlari ham kirish chegarasi juda yuqori bo'lganligi sababli menga mos kelmadi. Mavjud darsliklar bo'yicha qo'lda yig'ish ham mos emas edi, chunki... Mening rasmimda siqilgan fayl tizimi yo'q edi.
Natijada men chroot haqidagi videoga duch keldim (chroot - ildizni o'zgartirish, postning oxiridagi videoga havola) va uning imkoniyatlari, undan foydalanishga qaror qilindi. Keyinchalik, men Ubuntu-ni robototexnika ishlab chiquvchilari uchun sozlash bo'yicha o'z ishimni tasvirlab beraman.

Dastlabki ma'lumotlar:

  • Tasvirni o'zgartirishning barcha jarayoni (balenaEtcher yordamida SD-kartaga yozishdan tashqari) Ubuntu 18.04 operatsion tizimida amalga oshirildi.
  • Men yig'ilishini o'zgartirgan operatsion tizim Ubuntu 18.04.3 mate ish stoli versiyasidir.
  • Yig'ilgan tizim ishlashi kerak bo'lgan mashina ODROID-C2.

Tasvirni tayyorlash

  1. ODROID uchun Ubuntu tasvirini yuklab oling rasmiy sayt

  2. Arxivni ochish

    unxz –kv <Ρ„Π°ΠΉΠ» Π°Ρ€Ρ…ΠΈΠ²Π° с ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ>

  3. Tasvirni o'rnatadigan katalog yarating

    mkdir mnt

  4. Fayl tizimi joylashgan bo'limni aniqlang

    file <Ρ„Π°ΠΉΠ» ΠΎΠ±Ρ€Π°Π·Π°>

    Biz ext2, ext3 yoki ext4 formatidagi fayl tizimiga ega bo'limni qidirmoqdamiz. Bizga bo'lim boshining manzili kerak (ekranda qizil rang bilan belgilangan):

    ROS-ni bitta taxtali uchun Ubuntu IMG tasviriga o'rnatish

    Eslatma. Fayl tizimining joylashuvini yordamchi dastur yordamida ham ko'rish mumkin xayrlashdi.

  5. Tasvirni o'rnatish

    sudo mount -o loop,offset=$((264192*512)) <Ρ„Π°ΠΉΠ» с ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ> mnt/

    Bizga kerak bo'lgan bo'lim 264192 blokdan boshlanadi (sizning raqamlaringiz farq qilishi mumkin), bitta blokning o'lchami 512 baytni tashkil qiladi, ularni baytlarda chekinish uchun ko'paytiring.

  6. O'rnatilgan tizim bilan jildga o'ting va unda osib qo'ying

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

    ~/livecd/mnt β€” o'rnatilgan tizim bilan katalogga to'liq yo'l
    bin/sh - qobiq (shuningdek, bilan almashtirilishi mumkin bin/bash)
    Endi siz kerakli paketlar va ilovalarni o'rnatishni boshlashingiz mumkin.

ROS o'rnatilmoqda

Shunga ko'ra ROS (ROS Melodic) ning so'nggi versiyasini o'rnatdim rasmiy darslik.

  1. Paketlar ro'yxatini yangilang

    sudo apt-get update

    Bu erda men xatoga yo'l qo'ydim:

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

    Buning sababi paketni imzolash kalitining amal qilish muddati tugagan. Kalitlarni yangilash uchun quyidagilarni kiriting:

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

  2. ROSni o'rnatish uchun tizimni tayyorlash

    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 o'rnatilmoqda
    Afsuski, men ROS ning ish stoli versiyasini o'rnatolmadim, shuning uchun men faqat asosiy paketlarni o'rnatdim:

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

    1 eslatma. O'rnatish jarayonida ba'zida xatolik yuz berdi:

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

    Bu apt yordam dasturi yordamida keshni tozalash orqali tuzatildi:

    sudo apt-get clean; sudo apt-get autoclean

    2 eslatma. O'rnatishdan so'ng, buyruq yordamida manba:

    source /opt/ros/melodic/setup.bash

    u ishlamaydi, chunki Biz bash-ni ishga tushirmadik, shuning uchun uni terminalda yozish shart EMAS.

  4. Kerakli bog'liqliklarni o'rnatish

    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. Kirish huquqlarini sozlash
    Biz tizimga kirganimiz va aslida yig'ilayotgan tizimning ildizi nomidan barcha amallarni bajarganimiz uchun ROS faqat superuser huquqlari bilan ishga tushiriladi.
    Roscore-ni sudosiz ishga tushirishga urinayotganda xatolik yuz beradi:

    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'

    Xatoning oldini olish uchun ROS foydalanuvchisining uy katalogiga kirish huquqlarini rekursiv ravishda o'zgartiraylik. Buning uchun biz yozamiz:

    sudo rosdep fix-permissions

  6. Rviz va rqt paketlarini qo'shimcha o'rnatish

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

Yakuniy teginishlar

  1. Chrootdan chiqish:
    exit
  2. Tasvirni ajratib oling
    cd ..
    sudo umount mnt/
  3. Tizim tasvirini arxivga joylashtiramiz
    xz –ckv1 <Ρ„Π°ΠΉΠ» ΠΎΠ±Ρ€Π°Π·Π°>

Hammasi! Endi yordam bilan balenaetcher tizim tasvirini SD-kartaga yozishingiz, ODROID-C2-ga joylashtirishingiz mumkin va sizda ROS bilan Ubuntu o'rnatilgan bo'ladi!

Manbalar:

  • Ushbu video Linuxda qanday qilib aldash va nima uchun kerakligi haqida ko'p yordam berdi:



Manba: www.habr.com

a Izoh qo'shish