A ROS telepítése egy Ubuntu IMG lemezképbe egy kártyához
Bevezetés
A minap, miközben dolgozatomon dolgoztam, azzal szembesültem, hogy létre kell hoznom egy Ubuntu image-t egy egylapos platformhoz, amelyen már telepítve van a ROS (Robot operációs rendszer - robot operációs rendszer). Röviden, az oklevél egy robotcsoport irányítására vonatkozik. A robotok két kerékkel és három távolságmérővel vannak felszerelve. Az egészet ROS-ról irányítják, ami az ODROID-C2 kártyán fut.
Robot Katicabogár. Elnézést a rossz képminőségért
Nem volt sem idő, sem kedv a ROS-t külön-külön minden robotra telepíteni, ezért szükség volt egy olyan rendszerképre, amelyen a ROS már telepítve van. Az internet böngészése után több megközelítést is találtam arra vonatkozóan, hogyan lehetne ezt megtenni.
Általában az összes talált megoldás a következő csoportokba sorolható.
Az első csoportból származó megoldások használata tűnt a legegyszerűbb és legvonzóbb lehetőségnek, de soha nem tudtam élő rendszerképet létrehozni az ODROID számára. A második csoport megoldásai szintén nem feleltek meg nekem a meglehetősen magas belépési küszöb miatt. A rendelkezésre álló oktatóanyagok szerinti kézi összeszerelés sem volt megfelelő, mert... A képemen nem volt tömörített fájlrendszer.
Ennek eredményeként találkoztam egy videóval a chrootról (chroot - gyökér megváltoztatása, link a videóhoz a bejegyzés végén) és annak képességei mellett döntöttek a felhasználás mellett. Ezután leírom az Ubuntu robotika fejlesztők számára történő testreszabásának sajátos esetét.
Forrás adatok:
A teljes képmódosítási folyamat (kivéve az SD-kártyára való írást a balenaEtcher segítségével) az Ubuntu 18.04 operációs rendszeren történt.
Az operációs rendszer, amelynek összeállítását módosítottam, az Ubuntu 18.04.3 mate asztali verziója.
A gép, amelyen az összeállított rendszernek működnie kell, az ODROID-C2.
Hozzon létre egy könyvtárat, amelybe beillesztjük a képet
mkdir mnt
Határozza meg azt a partíciót, amelyen a fájlrendszer található
file <файл образа>
Ext2, ext3 vagy ext4 formátumú fájlrendszerű partíciót keresünk. Szükségünk van a szakasz elejének címére (a képernyőn pirossal kiemelve):
Megjegyzés. A fájlrendszer helye a segédprogram segítségével is megtekinthető megosztott.
A kép rögzítése
sudo mount -o loop,offset=$((264192*512)) <файл с образом> mnt/
A rész, amire szükségünk van, a 264192-es blokkkal kezdődik (a számok eltérhetnek), egy blokk mérete 512 bájt, ezeket szorozva megkapjuk a behúzást bájtokban.
Menjen a felszerelt rendszert tartalmazó mappába, és lógjon benne
cd mnt/
sudo chroot ~/livecd/mnt/ bin/sh
~/livecd/mnt — a könyvtár teljes elérési útja a csatlakoztatott rendszerrel bin/sh - shell (ez is helyettesíthető bin/bash)
Most megkezdheti a szükséges csomagok és alkalmazások telepítését.
ROS telepítése
A ROS legújabb verzióját (ROS Melodic) telepítettem a szerint hivatalos bemutató.
A csomagok listájának frissítése
sudo apt-get update
Itt kaptam a hibát:
Err:6 http://deb.odroid.in/c2 bionic InRelease
The following signatures were invalid: EXPKEYSIG 5360FB9DAB19BAC9 Mauro Ribeiro (mdrjr) <[email protected]>
Ez annak a ténynek köszönhető, hogy a csomagaláíró kulcs lejárt. A kulcsok frissítéséhez írja be:
Hozzáférési jogok beállítása
Mivel be vagyunk jelentkezve, és valójában minden műveletet az összeállítandó rendszer gyökerének nevében hajtunk végre, a ROS csak szuperfelhasználói jogokkal fog elindulni.
Amikor a roscore-t sudo nélkül próbálod futtatni, hiba történik:
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'
A hiba előfordulásának megelőzése érdekében változtassuk meg rekurzív módon a ROS-felhasználó kezdőkönyvtárának hozzáférési jogait. Ehhez beírjuk: