ProHoster > Blog > yönetim > Tek kart için bir Ubuntu IMG görüntüsüne ROS kurulumu
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.
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.
İ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ı
ODROID için Ubuntu görüntüsünü şuradan indirin: resmi sitesi
Arşivi açma
unxz –kv <файл архива с образом>
İmajı monte edeceğimiz bir dizin oluşturun
mkdir mnt
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):
Not. Dosya sisteminin konumu yardımcı program kullanılarak da görüntülenebilir aralandı.
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.
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.
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:
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: