Giriş
O biri gün diplomum üzərində işləyərkən bir obraz yaratmaq ehtiyacı ilə qarşılaşdım. Ubuntu ROS artıq quraşdırılmış tək lövhəli kompüter üçün (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.

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.
- Hazır və konfiqurasiya edilmiş sistemdən görüntü yaradan proqramlar (, , , systemback və s.)
- Öz imicinizi yaratmağa imkan verən layihələr (, )
- Şəklin özünüz yığılması ( и , bir artı )
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(Video linki yazının sonundadır) və imkanları ilə bağlı istifadə etmək qərarına gəldim. Aşağıda özəlləşdirmə işimi təsvir edəcəyəm. Ubuntu robototexnika inkişaf etdiriciləri üçün.
Başlanğıc:
- Şəklin dəyişdirilməsinin bütün prosesi (balenaEtcher istifadə edərək SD karta yazmaq istisna olmaqla) əməliyyat sistemində həyata keçirildi. Ubuntu 18.04.
- Yığılması dəyişdirilən əməliyyat sistemi – Ubuntu 18.04.3 mate masaüstü versiyası.
- Yığılmış sistemin işləməli olduğu maşın ODROID-C2-dir.
Təsvirin hazırlanması
Şəkli yükləyin Ubuntu ODROID üçün
Arxivin qablaşdırılması
unxz –kv <файл архива с образом>Şəkli quraşdıracağımız bir kataloq yaradın
mkdir mntFayl 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):

Qeyd edək. Fayl sisteminin yerləşdiyi yerə yardım proqramından istifadə etməklə də baxmaq olar ayrıldı.Şə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.
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 .
Paketlərin siyahısının yenilənməsi
sudo apt-get updateBudur səhvi aldım:
Err:6 http://deb.odroid.in/c2 bionic InRelease The following signatures were invalid: EXPKEYSIG 5360FB9DAB19BAC9 Mauro Ribeiro (mdrjr) <mauro.ribeiro@hardkernel.com>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 AB19BAC9Sistemin 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 C1CF6E31E6BADE8868B172B4F42ED6FBAB17C654sudo apt updateROS 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-melodicQeyd 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 deviceApt yardım proqramından istifadə edərək önbelleği təmizləməklə düzəldildi:
sudo apt-get clean; sudo apt-get autocleanQeyd 2. Quraşdırıldıqdan sonra əmrdən istifadə edərək mənbə:
source /opt/ros/melodic/setup.bashişləməyəcək, çünki Biz bash-ı işlətməmişik, ona görə də onu terminalda yazmağa ehtiyac DEYİL.
Lazımi asılılıqların quraşdırılması
sudo apt install python-rosdep python-rosinstall python-rosinstall-generator python-wstool build-essentialsudo apt install python-rosdepsudo rosdep init rosdep updateGiriş 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-permissionsRviz və rqt paketlərinin əlavə quraşdırılması
sudo apt-get install ros-melodic-rqt ros-melodic-rviz
Son toxunuşlar
- Xrootdan çıxın:
exit - Şəkli ayırın
cd .. sudo umount mnt/ - Sistem şəklini arxivə yığaq
xz –ckv1 <файл образа>
Hamısı! İndi köməyi ilə Sistem görüntüsünü SD karta yaza, ODROID-C2-yə yerləşdirə bilərsiniz və sizdə olacaq Ubuntu ROS quraşdırılmış!
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

