Introducere
Zilele trecute, în timp ce lucram la diploma mea, m-am confruntat cu nevoia de a crea o imagine Ubuntu pentru un computer cu o singură placă de bază cu ROS deja instalat (Robot Operating System - sistem de operare robot). Pe scurt, diploma este dedicată conducerii unui grup de roboți. Roboții sunt echipați cu două roți și trei telemetru. Totul este controlat de la ROS, care rulează pe placa ODROID-C2.

Buburuza robot. Scuze pentru calitatea slabă a fotografiei
Nu a existat nici timp, nici dorința de a instala ROS pe fiecare robot individual și, prin urmare, a fost nevoie de o imagine de sistem cu ROS deja instalat. După ce am navigat pe internet, am găsit mai multe abordări cu privire la modul în care se poate face acest lucru.
În general, toate soluțiile găsite pot fi împărțite în următoarele grupuri.
- Programe care creează o imagine dintr-un sistem gata făcut și configurat (, , , systemback etc.)
- Proiecte care vă permit să vă creați propria imagine (, )
- Asamblați singur imaginea ( и , un plus )
Utilizarea soluțiilor din primul grup părea a fi cea mai simplă și mai atractivă opțiune, dar nu am reușit niciodată să creez o imagine de sistem live pentru ODROID. Nici soluțiile din a doua grupă nu mi s-au potrivit din cauza pragului de intrare destul de mare. Nici asamblarea manuală conform tutorialelor disponibile nu a fost potrivită, deoarece... Imaginea mea nu avea un sistem de fișiere comprimat.
Drept urmare, am dat peste un videoclip despre chroot (chroot - schimbă rădăcina(Link video la sfârșitul postării) și capacitățile sale, am decis să-l folosesc. Mai jos voi descrie cazul meu particular de personalizare. Ubuntu pentru dezvoltatorii de robotică.
Date inițiale:
- Întregul proces de modificare a imaginii (cu excepția scrierii pe cardul SD folosind balenaEtcher) a fost efectuat în sistemul de operare Ubuntu 18.04.
- Sistemul de operare al cărui ansamblu a fost modificat a fost – Ubuntu Versiunea desktop mate 18.04.3.
- Mașina pe care ar trebui să funcționeze sistemul asamblat este ODROID-C2.
Pregătirea imaginii
Descărcați imaginea Ubuntu pentru ODROID cu
Despachetarea arhivei
unxz –kv <файл архива с образом>Creați un director în care vom monta imaginea
mkdir mntDeterminați partiția pe care se află sistemul de fișiere
file <файл образа>Cautam o partitie cu sistem de fisiere in format ext2, ext3 sau ext4. Avem nevoie de adresa de la începutul secțiunii (evidențiată cu roșu pe ecran):

Notă. Locația sistemului de fișiere poate fi vizualizată și folosind utilitarul despărțit.Montarea imaginii
sudo mount -o loop,offset=$((264192*512)) <файл с образом> mnt/Secțiunea de care avem nevoie începe cu blocul 264192 (numerele dvs. pot diferi), dimensiunea unui bloc este de 512 octeți, înmulțiți-i pentru a obține indentarea în octeți.
Accesați folderul cu sistemul montat și petreceți timpul în el
cd mnt/ sudo chroot ~/livecd/mnt/ bin/sh~/livecd/mnt — calea completă către directorul cu sistemul montat
bin/sh - carcasă (poate fi înlocuită și cu bin/bash)
Acum puteți începe să instalați pachetele și aplicațiile necesare.
Instalarea ROS
Am instalat cea mai recentă versiune de ROS (ROS Melodic) conform .
Actualizați lista de pachete
sudo apt-get updateAici am primit eroarea:
Err:6 http://deb.odroid.in/c2 bionic InRelease The following signatures were invalid: EXPKEYSIG 5360FB9DAB19BAC9 Mauro Ribeiro (mdrjr) <mauro.ribeiro@hardkernel.com>Acest lucru se datorează faptului că cheia de semnare a pachetului a expirat. Pentru a actualiza cheile, tastați:
sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys AB19BAC9Pregătirea sistemului pentru instalarea ROS
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 updateInstalarea ROS
Din păcate, nu am reușit să instalez versiunea desktop a ROS, așa că am instalat doar pachetele de bază:sudo apt install ros-melodic-ros-base apt search ros-melodicNotă 1. În timpul procesului de instalare a apărut uneori o eroare:
dpkg: error: failed to write status database record about 'iputils-ping' to '/var/lib/dpkg/status': No space left on deviceS-a rezolvat prin ștergerea cache-ului folosind utilitarul apt:
sudo apt-get clean; sudo apt-get autocleanNotă 2. După instalare, sursă folosind comanda:
source /opt/ros/melodic/setup.bashnu va funcționa, pentru că Nu am rulat bash, așa că NU trebuie să fie introdus în terminal.
Instalarea dependențelor necesare
sudo apt install python-rosdep python-rosinstall python-rosinstall-generator python-wstool build-essentialsudo apt install python-rosdepsudo rosdep init rosdep updateConfigurarea drepturilor de acces
Deoarece suntem autentificati și, de fapt, efectuăm toate acțiunile în numele rădăcinii sistemului care este asamblat, ROS va fi lansat doar cu drepturi de superutilizator.
Când încercați să rulați roscore fără sudo, apare o eroare: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'Pentru a preveni apariția erorii, să modificăm recursiv drepturile de acces la directorul principal al utilizatorului ROS. Pentru a face acest lucru, tastăm:
sudo rosdep fix-permissionsInstalare suplimentară a pachetelor rviz și rqt
sudo apt-get install ros-melodic-rqt ros-melodic-rviz
Retușuri finale
- Ieșiți din chroot:
exit - Demontați imaginea
cd .. sudo umount mnt/ - Să împachetăm imaginea sistemului într-o arhivă
xz –ckv1 <файл образа>
Toate! Acum cu ajutorul Poți scrie imaginea sistemului pe un card SD, o poți introduce în ODROID-C2 și vei avea Ubuntu cu ROS instalat!
referințe:
- Acest videoclip a ajutat foarte mult cum să trișați în Linux și de ce aveți nevoie de el:

Sursa: www.habr.com

