Instalarea ROS într-o imagine Ubuntu IMG pentru o singură placă
Introducere
Zilele trecute, în timp ce lucram la teza mea, m-am confruntat cu nevoia de a crea o imagine Ubuntu pentru o platformă single-board 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.
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 către videoclipul de la sfârșitul postării) și capacitățile sale, s-a decis să-l folosească. În continuare, voi descrie cazul meu particular de personalizare a 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 pe sistemul de operare Ubuntu 18.04.
Sistemul de operare al cărui ansamblu l-am modificat este versiunea desktop Ubuntu 18.04.3 mate.
Mașina pe care ar trebui să funcționeze sistemul asamblat este ODROID-C2.
Pregătirea imaginii
Descărcați imaginea Ubuntu pentru ODROID de pe site-ul oficial
Despachetarea arhivei
unxz –kv <файл архива с образом>
Creați un director în care vom monta imaginea
mkdir mnt
Determinaț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 tutorial oficial.
Actualizați lista de pachete
sudo apt-get update
Aici am primit eroarea:
Err:6 http://deb.odroid.in/c2 bionic InRelease
The following signatures were invalid: EXPKEYSIG 5360FB9DAB19BAC9 Mauro Ribeiro (mdrjr) <[email protected]>
Acest lucru se datorează faptului că cheia de semnare a pachetului a expirat. Pentru a actualiza cheile, tastați:
Configurarea 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:
Toate! Acum cu ajutorul balenaetcher puteți arde imaginea sistemului pe un card SD, o puteți introduce în ODROID-C2 și veți 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: