ProHoster > Blog > uprava > Instaliranje ROS-a u Ubuntu IMG sliku za jednu ploču
Instaliranje ROS-a u Ubuntu IMG sliku za jednu ploču
Uvod
Prije neki dan, dok sam radio na diplomskom radu, suočio sam se s potrebom da napravim Ubuntu sliku za platformu s jednom pločom s već instaliranim ROS-om (Robot Operating System - operativni sustav robota). Ukratko, diploma je posvećena upravljanju grupom robota. Roboti su opremljeni s dva kotača i tri daljinomjera. Cijela stvar se kontrolira iz ROS-a, koji radi na ploči ODROID-C2.
Robot Bubamara. Oprostite zbog loše kvalitete fotografije
Nije bilo ni vremena ni želje da se ROS instalira na svakog robota pojedinačno, pa je stoga bila potrebna slika sustava s već instaliranim ROS-om. Nakon pregledavanja 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 skupine.
Korištenje rješenja iz prve skupine činilo mi se kao najjednostavnija i najatraktivnija opcija, ali nikad nisam uspio izraditi živu sliku sustava za ODROID. Rješenja druge skupine također mi nisu odgovarala zbog prilično visokog ulaznog praga. Ručna montaža prema dostupnim tutorijalima također nije bila prikladna, jer... Moja slika nije imala komprimirani datotečni sustav.
Kao rezultat toga, naišao sam na video o chrootu (chroot - promijeniti korijen, poveznica na video na kraju posta) i njegovim mogućnostima, odlučeno je koristiti ga. Zatim ću opisati svoj poseban slučaj prilagodbe Ubuntua za programere robotike.
Početni podaci:
Cijeli proces modificiranja slike (osim pisanja na SD karticu pomoću balenaEtcher) izveden je na Ubuntu 18.04 operativnom sustavu.
Operativni sustav čiji sklop sam modificirao je Ubuntu 18.04.3 mate desktop verzija.
Stroj na kojem bi montirani sustav trebao raditi je ODROID-C2.
Odredite particiju na kojoj se nalazi datotečni sustav
file <файл образа>
Tražimo particiju s datotečnim sustavom u formatu ext2, ext3 ili ext4. Trebamo adresu početka odjeljka (označeno crvenom bojom na ekranu):
Napomena. Lokacija datotečnog sustava također se može vidjeti pomoću uslužnog programa slomljen.
Montaža slike
sudo mount -o loop,offset=$((264192*512)) <файл с образом> mnt/
Odjeljak koji nam treba počinje s blokom 264192 (vaši brojevi se mogu razlikovati), veličina jednog bloka je 512 bajtova, pomnožite ih da biste dobili uvlaku u bajtovima.
Idite u mapu s montiranim sustavom i družite se u njoj
cd mnt/
sudo chroot ~/livecd/mnt/ bin/sh
~/livecd/mnt — puni put do direktorija s montiranim sustavom spremnik/sh - školjka (također se može zamijeniti s bin/bash)
Sada možete početi instalirati potrebne pakete i aplikacije.
Instalacija ROS-a
Instalirao sam najnoviju verziju ROS-a (ROS Melodic) prema službeni tutorial.
Ažuriranje liste paketa
sudo apt-get update
Ovdje 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. Za ažuriranje ključeva upišite:
Postavljanje prava pristupa
Budući da smo prijavljeni i, zapravo, obavljamo sve radnje u ime korijena sustava koji se sastavlja, ROS će se pokrenuti samo s pravima superkorisnika.
Kada pokušavate pokrenuti roscore bez sudo-a, javlja se pogreš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'
Kako bismo spriječili pojavu pogreške, rekurzivno promijenimo prava pristupa matičnom direktoriju ROS korisnika. Da bismo to učinili, upisujemo: