Tek kart için bir Ubuntu IMG görüntüsüne ROS kurulumu

Giriş

Geçen gün tezim üzerinde çalışırken, ROS'un kurulu olduğu tek kartlı bir platform için bir Ubuntu görüntüsü oluşturma ihtiyacıyla karşı karşıya kaldım (Robot İşletim Sistemi - robot işletim sistemi). Kısacası diploma bir grup robotu yönetmeye adanmıştır. Robotlar iki tekerlek ve üç telemetre ile donatılmıştır. Her şey ODROID-C2 kartı üzerinde çalışan ROS tarafından kontrol ediliyor.

Tek kart için bir Ubuntu IMG görüntüsüne ROS kurulumu
Robot Uğur Böceği. Düşük fotoğraf kalitesi için özür dileriz

ROS'u her robota ayrı ayrı yüklemek için ne zaman ne de istek vardı ve bu nedenle, ROS'un zaten kurulu olduğu bir sistem görüntüsüne ihtiyaç vardı. İnternette gezindikten sonra bunun nasıl yapılabileceğine dair birkaç yaklaşım buldum.
Genel olarak bulunan tüm çözümler aşağıdaki gruplara ayrılabilir.

  1. Hazır ve yapılandırılmış bir sistemden görüntü oluşturan programlar (Distroshare Ubuntu Görüntüleyici, linux canlı kiti, linux yeniden başlatma, sistem geri yüklemesi vb.)
  2. Kendi imajınızı yaratmanıza izin veren projeler (yocto, sıfırdan linux)
  3. Görüntüyü kendiniz monte etmek (canlı CD özelleştirme и Rus eşdeğeriartı Habre ile ilgili makale)

İlk gruptaki çözümleri kullanmak en basit ve en çekici seçenek gibi görünüyordu ancak ODROID için hiçbir zaman canlı sistem görüntüsü oluşturamadım. İkinci grubun çözümleri de oldukça yüksek giriş eşiği nedeniyle bana uymuyordu. Mevcut eğitimlere göre manuel montaj da uygun değildi çünkü... Resmimin sıkıştırılmış bir dosya sistemi yoktu.
Sonuç olarak chroot hakkında bir videoyla karşılaştım (chroot - kökü değiştir, gönderinin sonundaki videoya bağlantı) ve yeteneklerinin kullanılmasına karar verildi. Daha sonra, robotik geliştiricileri için Ubuntu'yu özelleştirme konusundaki özel durumumu anlatacağım.

Başlangıç ​​verileri:

  • Görüntü değiştirme işleminin tamamı (balenaEtcher kullanılarak SD karta yazma hariç) Ubuntu 18.04 işletim sistemi üzerinde gerçekleştirildi.
  • Montajını değiştirdiğim işletim sistemi Ubuntu 18.04.3 mate masaüstü versiyonudur.
  • Montajlı sistemin çalışması gereken makine ODROID-C2'dir.

Resmin hazırlanması

  1. ODROID için Ubuntu görüntüsünü şuradan indirin: resmi sitesi

  2. Arşivi açma

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

  3. İmajı monte edeceğimiz bir dizin oluşturun

    mkdir mnt

  4. Dosya sisteminin bulunduğu bölümü belirleyin

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

    Ext2, ext3 veya ext4 formatında dosya sistemine sahip bir bölüm arıyoruz. Bölümün başlangıcının adresine ihtiyacımız var (ekranda kırmızıyla vurgulanmıştır):

    Tek kart için bir Ubuntu IMG görüntüsüne ROS kurulumu

    Not. Dosya sisteminin konumu yardımcı program kullanılarak da görüntülenebilir aralandı.

  5. Görüntüyü monte etme

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

    İhtiyacımız olan bölüm 264192 bloğuyla başlıyor (numaralarınız farklı olabilir), bir bloğun boyutu 512 bayttır, bayt cinsinden girintiyi elde etmek için bunları çarpın.

  6. Monte edilmiş sistemin bulunduğu klasöre gidin ve orada takılın

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

    ~/livecd/mnt — monte edilmiş sistemin bulunduğu dizinin tam yolu
    çöp kutusu/sh - kabuk (ayrıca değiştirilebilir çöp kutusu/bash)
    Artık gerekli paketleri ve uygulamaları kurmaya başlayabilirsiniz.

ROS'u yükleme

ROS'un (ROS Melodic) en son sürümünü şuna göre yükledim: resmi eğitim.

  1. Paket listesinin güncellenmesi

    sudo apt-get update

    Hatayı burada aldım:

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

    Bunun nedeni paket imzalama anahtarının süresinin dolmuş olmasıdır. Anahtarları güncellemek için şunu yazın:

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

  2. Sistemi ROS kurulumu için hazırlama

    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'u yükleme
    Ne yazık ki ROS'un masaüstü sürümünü yükleyemedim, bu yüzden yalnızca temel paketleri yükledim:

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

    1 edin. Yükleme işlemi sırasında bazen bir hata oluştu:

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

    Apt yardımcı programını kullanarak önbelleği temizleyerek düzeltildi:

    sudo apt-get clean; sudo apt-get autoclean

    2 edin. Kurulumdan sonra şu komutu kullanarak kaynak yapın:

    source /opt/ros/melodic/setup.bash

    işe yaramayacak çünkü Bash'ı çalıştırmadığımız için terminale yazılmasına gerek YOKTUR.

  4. Gerekli bağımlılıkların kurulması

    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. Erişim haklarını ayarlama
    Oturum açtığımız ve aslında tüm eylemleri bir araya getirilen sistemin kökü adına gerçekleştirdiğimiz için, ROS yalnızca süper kullanıcı haklarıyla başlatılacaktır.
    Roscore'u sudo olmadan çalıştırmaya çalışırken bir hata oluşuyor:

    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'

    Hatanın oluşmasını önlemek için, ROS kullanıcısının ana dizinine erişim haklarını yinelemeli olarak değiştirelim. Bunu yapmak için şunu yazıyoruz:

    sudo rosdep fix-permissions

  6. Rviz ve rqt paketlerinin ek kurulumu

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

Son dokunuşlar

  1. Chroot'tan çık:
    exit
  2. Resmin bağlantısını kaldır
    cd ..
    sudo umount mnt/
  3. Sistem görüntüsünü bir arşive paketleyelim
    xz –ckv1 <файл образа>

Tüm! Şimdi yardımıyla BalenaEtcher sistem görüntüsünü bir SD karta yazabilir, ODROID-C2'ye takabilirsiniz ve ROS kurulu Ubuntu'ya sahip olacaksınız!

Bağlantılar:

  • Bu video Linux'ta nasıl hile yapılacağı ve buna neden ihtiyacınız olduğu konusunda çok yardımcı oldu:



Kaynak: habr.com

Yorum ekle