Tək lövhə üçün Ubuntu IMG görüntüsündə ROS quraşdırılması

Giriş

Ötən gün dissertasiyam üzərində işləyərkən ROS artıq quraşdırılmış bir lövhəli platforma üçün Ubuntu görüntüsü yaratmaq ehtiyacı ilə üzləşdim (Robot Əməliyyat Sistemi - robot əməliyyat sistemi). Bir sözlə, diplom robotlar qrupunu idarə etməyə həsr olunub. Robotlar iki təkər və üç məsafəölçənlə təchiz olunub. Hər şey ODROID-C2 lövhəsində işləyən ROS-dan idarə olunur.

Tək lövhə üçün Ubuntu IMG görüntüsündə ROS quraşdırılması
Robot Ladybug. Fotonun keyfiyyətsizliyinə görə üzr istəyirik

Hər robotda ROS-u ayrı-ayrılıqda quraşdırmaq üçün nə vaxt, nə də arzu var idi və buna görə də ROS artıq quraşdırılmış sistem şəklinə ehtiyac var idi. İnternetə baxdıqdan sonra bunun necə edilə biləcəyinə dair bir neçə yanaşma tapdım.
Ümumiyyətlə, tapılan bütün həlləri aşağıdakı qruplara bölmək olar.

  1. Hazır və konfiqurasiya edilmiş sistemdən görüntü yaradan proqramlar (Distroshare Ubuntu Görüntüləyicisi, linux canlı dəsti, linux respin, systemback və s.)
  2. Öz imicinizi yaratmağa imkan verən layihələr (yocto, linux sıfırdan)
  3. Şəklin özünüz yığılması (canlı CD fərdiləşdirmə и rus ekvivalenti, bir artı Habré haqqında məqalə)

Birinci qrupdan olan həllərdən istifadə etmək ən sadə və ən cəlbedici seçim kimi görünürdü, lakin mən heç vaxt ODROID üçün canlı sistem görüntüsünü yarada bilmədim. İkinci qrupun həlləri də kifayət qədər yüksək giriş həddinə görə mənə uyğun gəlmədi. Mövcud dərsliklərə uyğun olaraq əl ilə montaj da uyğun deyildi, çünki... Mənim şəklimdə sıxılmış fayl sistemi yox idi.
Nəticədə chroot haqqında videoya rast gəldim (chroot - kök dəyişdirin, yazının sonundakı videoya keçid) və onun imkanlarını nəzərə alaraq ondan istifadə etmək qərara alınıb. Sonra, Ubuntu-nu robototexnika tərtibatçıları üçün fərdiləşdirməklə bağlı xüsusi halımı təsvir edəcəyəm.

Başlanğıc:

  • Bütün təsvirin modifikasiyası prosesi (balenaEtcher istifadə edərək SD karta yazmaq istisna olmaqla) Ubuntu 18.04 əməliyyat sistemində həyata keçirilib.
  • Montajını dəyişdirdiyim əməliyyat sistemi Ubuntu 18.04.3 mate desktop versiyasıdır.
  • Yığılmış sistemin işləməli olduğu maşın ODROID-C2-dir.

Təsvirin hazırlanması

  1. ODROID üçün Ubuntu şəklini buradan endirin rəsmi saytı

  2. Arxivin qablaşdırılması

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

  3. Şəkli quraşdıracağımız bir kataloq yaradın

    mkdir mnt

  4. Fayl sisteminin yerləşdiyi bölməni müəyyənləşdirin

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

    Biz ext2, ext3 və ya ext4 formatında fayl sistemi olan bölmə axtarırıq. Bölmənin başlanğıcının ünvanına ehtiyacımız var (ekranda qırmızı ilə vurğulanmışdır):

    Tək lövhə üçün Ubuntu IMG görüntüsündə ROS quraşdırılması

    Qeyd edək. Fayl sisteminin yerləşdiyi yerə yardım proqramından istifadə etməklə də baxmaq olar ayrıldı.

  5. Şəklin quraşdırılması

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

    Bizə lazım olan bölmə 264192 blokundan başlayır (rəqəmləriniz fərqli ola bilər), bir blokun ölçüsü 512 baytdır, baytlarda abzas almaq üçün onları çoxaldın.

  6. Quraşdırılmış sistemlə qovluğa gedin və orada oturun

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

    ~/livecd/mnt — quraşdırılmış sistemlə kataloqa tam yol
    bin/ş - qabıq (həmçinin ilə əvəz edilə bilər bin/bash)
    İndi lazımi paketləri və proqramları quraşdırmağa başlaya bilərsiniz.

ROS quraşdırılması

Mən ROS-un (ROS Melodic) ən son versiyasını quraşdırdım rəsmi dərslik.

  1. Paketlərin siyahısının yenilənməsi

    sudo apt-get update

    Budur səhvi aldım:

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

    Bu, paket imzalama açarının müddətinin bitməsi ilə bağlıdır. Açarları yeniləmək üçün yazın:

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

  2. Sistemin ROS quraşdırmaq üçün hazırlanması

    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 quraşdırılması
    Təəssüf ki, ROS-un masaüstü versiyasını quraşdıra bilmədim, ona görə də yalnız əsas paketləri quraşdırdım:

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

    Qeyd 1. Quraşdırma zamanı bəzən xəta baş verdi:

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

    Apt yardım proqramından istifadə edərək önbelleği təmizləməklə düzəldildi:

    sudo apt-get clean; sudo apt-get autoclean

    Qeyd 2. Quraşdırıldıqdan sonra əmrdən istifadə edərək mənbə:

    source /opt/ros/melodic/setup.bash

    işləməyəcək, çünki Biz bash-ı işlətməmişik, ona görə də onu terminalda yazmağa ehtiyac DEYİL.

  4. Lazımi asılılıqların quraşdırılması

    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. Giriş hüquqlarının qurulması
    Biz daxil olduğumuz və əslində yığılan sistemin kökü adından bütün hərəkətləri yerinə yetirdiyimiz üçün ROS yalnız super istifadəçi hüquqları ilə işə salınacaq.
    Sudo olmadan roscore işlətməyə çalışarkən xəta baş verir:

    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'

    Xətanın baş verməsinin qarşısını almaq üçün ROS istifadəçisinin ev kataloquna giriş hüquqlarını rekursiv şəkildə dəyişdirək. Bunu etmək üçün yazırıq:

    sudo rosdep fix-permissions

  6. Rviz və rqt paketlərinin əlavə quraşdırılması

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

Son toxunuşlar

  1. Xrootdan çıxın:
    exit
  2. Şəkli ayırın
    cd ..
    sudo umount mnt/
  3. Sistem şəklini arxivə yığaq
    xz –ckv1 <файл образа>

Hamısı! İndi köməyi ilə balenaetcher sistem şəklini SD karta yaza, onu ODROID-C2-yə daxil edə bilərsiniz və ROS quraşdırılmış Ubuntu olacaq!

Referanslar:

  • Bu video Linux-da necə fırıldaq etmək və niyə buna ehtiyacınız olduğuna dair çox kömək etdi:



Mənbə: www.habr.com

Добавить комментарий