Instaliranje ROS-a u Ubuntu IMG sliku za jednu ploču
Uvod
Neki dan, dok sam radio na svojoj tezi, susreo sam se sa potrebom da kreiram Ubuntu sliku za platformu sa jednom pločicom sa već instaliranim ROS-om (Robot Operating System - operativni sistem robota). Ukratko, diploma je posvećena upravljanju grupom robota. Roboti su opremljeni sa dva točka i tri daljinomera. Cijela stvar se kontrolira iz ROS-a, koji radi na ODROID-C2 ploči.
Robot Ladybug. Izvinite zbog lošeg kvaliteta fotografije
Nije bilo ni vremena ni želje da se ROS instalira na svakog robota pojedinačno, pa je stoga postojala potreba za imidžom sistema sa već instaliranim ROS-om. Nakon pretraživanja interneta, pronašao sam nekoliko pristupa kako se to može učiniti.
Općenito, sva pronađena rješenja mogu se podijeliti u sljedeće grupe.
Korištenje rješenja iz prve grupe činilo mi se najjednostavnijom i najatraktivnijom opcijom, ali nikada nisam uspio napraviti sliku sistema uživo za ODROID. Rešenja druge grupe mi takođe nisu odgovarala zbog prilično visokog ulaznog praga. Ručno sklapanje prema dostupnim tutorijalima također nije bilo prikladno, jer... Moja slika nije imala komprimirani sistem datoteka.
Kao rezultat toga, naišao sam na video o chroot-u (chroot - promijeni korijen, link do videa na kraju posta) i njegovim mogućnostima, odlučeno je da se koristi. Zatim ću opisati svoj poseban slučaj prilagođavanja Ubuntua za programere robotike.
Početni podaci:
Cijeli proces modifikacije slike (osim upisivanja na SD karticu pomoću balenaEtcher-a) obavljen je na Ubuntu 18.04 operativnom sistemu.
Operativni sistem čiji sam sklop modifikovao je Ubuntu 18.04.3 mate desktop verzija.
Mašina na kojoj bi sklopljeni sistem trebao raditi je ODROID-C2.
Odredite particiju na kojoj se nalazi sistem datoteka
file <файл образа>
Tražimo particiju sa datotečnim sistemom u ext2, ext3 ili ext4 formatu. Potrebna nam je adresa početka sekcije (na ekranu istaknuta crvenom bojom):
Napomena. Lokacija sistema datoteka također se može vidjeti pomoću uslužnog programa podijeljen.
Montaža slike
sudo mount -o loop,offset=$((264192*512)) <файл с образом> mnt/
Odjeljak koji nam je potreban počinje blokom 264192 (vaši brojevi se mogu razlikovati), veličina jednog bloka je 512 bajtova, pomnožite ih da dobijete uvlačenje u bajtovima.
Idite u folder sa montiranim sistemom i ostanite u njemu
cd mnt/
sudo chroot ~/livecd/mnt/ bin/sh
~/livecd/mnt — puna putanja do direktorija s montiranim sistemom bin/sh - školjka (može se zamijeniti i sa bin/bash)
Sada možete započeti instaliranje potrebnih paketa i aplikacija.
Instaliranje ROS-a
Instalirao sam najnoviju verziju ROS-a (ROS Melodic) prema zvanični tutorijal.
Ažurirajte listu paketa
sudo apt-get update
Evo gdje sam dobio grešku:
Err:6 http://deb.odroid.in/c2 bionic InRelease
The following signatures were invalid: EXPKEYSIG 5360FB9DAB19BAC9 Mauro Ribeiro (mdrjr) <[email protected]>
To je zbog činjenice da je ključ za potpisivanje paketa istekao. Da ažurirate ključeve, upišite:
Postavljanje prava pristupa
Pošto smo prijavljeni i, u stvari, izvodimo sve radnje u ime root sistema koji se sklapa, ROS će biti pokrenut samo sa pravima superkorisnika.
Prilikom pokušaja pokretanja roscore bez sudoa, pojavljuje se greška:
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'
Da spriječimo pojavu greške, hajde da rekurzivno promijenimo prava pristupa kućnom direktoriju ROS korisnika. Da to uradimo ukucamo: