Uvod
Neki dan, dok sam radio na diplomi, suočio sam se s potrebom stvaranja slike Ubuntu za jednopločno računalo 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.
- Programi koji stvaraju sliku iz gotovog i konfiguriranog sustava (, , , povratak sustava itd.)
- Projekti koji vam omogućuju stvaranje vlastite slike (, )
- Sami sastavite sliku ( и plus )
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(Video link na kraju posta) i njegove mogućnosti, odlučio sam ga koristiti. U nastavku ću opisati svoj konkretan slučaj prilagodbe. Ubuntu za razvojne programere robotike.
Početni podaci:
- Cijeli proces izmjene slike (osim pisanja na SD karticu pomoću balenaEtchera) izveden je u operativnom sustavu. Ubuntu 18.04.
- Operativni sustav čiji je sklop modificiran bio je – Ubuntu 18.04.3 verzija za stolna računala Mate.
- Stroj na kojem bi montirani sustav trebao raditi je ODROID-C2.
Priprema slike
Preuzmite sliku Ubuntu za ODROID s
Raspakiranje arhive
unxz –kv <файл архива с образом>Napravite direktorij u koji ćemo montirati sliku
mkdir mntOdredite 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 .
Ažuriranje liste paketa
sudo apt-get updateOvdje sam dobio grešku:
Err:6 http://deb.odroid.in/c2 bionic InRelease The following signatures were invalid: EXPKEYSIG 5360FB9DAB19BAC9 Mauro Ribeiro (mdrjr) <mauro.ribeiro@hardkernel.com>To je zbog činjenice da je ključ za potpisivanje paketa istekao. Za ažuriranje ključeva upišite:
sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys AB19BAC9Priprema sustava za ugradnju ROS-a
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 updateInstalacija ROS-a
Nažalost, nisam uspio instalirati desktop verziju ROS-a, pa sam instalirao samo osnovne pakete:sudo apt install ros-melodic-ros-base apt search ros-melodicNapomena 1 Tijekom postupka instalacije ponekad se dogodila pogreška:
dpkg: error: failed to write status database record about 'iputils-ping' to '/var/lib/dpkg/status': No space left on deviceTo je popravljeno brisanjem predmemorije pomoću uslužnog programa apt:
sudo apt-get clean; sudo apt-get autocleanNapomena 2 Nakon instalacije izvorni izvor pomoću naredbe:
source /opt/ros/melodic/setup.bashneće uspjeti, jer Nismo pokrenuli bash, tako da ga NE treba upisivati u terminal.
Instaliranje potrebnih ovisnosti
sudo apt install python-rosdep python-rosinstall python-rosinstall-generator python-wstool build-essentialsudo apt install python-rosdepsudo rosdep init rosdep updatePostavljanje 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:
sudo rosdep fix-permissionsDodatna instalacija paketa rviz i rqt
sudo apt-get install ros-melodic-rqt ros-melodic-rviz
Završni detalji
- Izlaz iz chroota:
exit - Isključite sliku
cd .. sudo umount mnt/ - Spakirajmo sliku sustava u arhivu
xz –ckv1 <файл образа>
Svi! Sada uz pomoć Sliku sustava možete snimiti na SD karticu, umetnuti je u ODROID-C2 i imat ćete Ubuntu s instaliranim ROS-om!
reference:
- Ovaj video je puno pomogao oko toga kako varati u Linuxu i zašto vam je to potrebno:

Izvor: www.habr.com

