Sissejuhatus
Hiljuti, töötades diplomitöö kallal, kohtusin vajadusega luua Ubuntu pilt üherahalisele arvutile, millel on juba installitud ROS (Robot Operating System – robotite operatsioonisüsteem). Lühidalt öeldes on diplom pühendatud robotirühma juhtimisele. Robotid on varustatud kahe ratta ja kolme kaugusanduriga. Kõike seda juhitakse ROS-i kaudu, mis töötab ODROID-C2 plaadil.

Robot Ladybug. Vabandust halva foto kvaliteedi pärast
ROS-i installimine iga robotile eraldi ei olnud võimalik ei aja ega sooviga, mistõttu tekkis vajadus süsteemi pildi järele, kus ROS on juba installitud. Jalutades internetis ringi, leidsin mitmeid lähenemisviise, kuidas seda oleks võimalik teha.
Üldiselt saab kõik leitud lahendused jagada järgmiseks gruppideks.
- Programmid, mis loovad pildi valmis ja seadistatud süsteemist (, , , systemback jne.)
- Projektid, mis võimaldavad koguda oma pildi (, )
- Pildi käsitsi koostamine ( ja , pluss )
Esimese rühma lahenduste kasutamine tundus kõige lihtsam ja atraktiivsem variant, kuid mul ei õnnestunud ODROID-ile live-süsteemi luua. Teise rühma lahendused ei sobinud mulle ka piisavalt kõrge sissejuhatuspiiri tõttu. Käsitsi kokku panemine olemasolevate õpikute põhjal ei sobinud samuti, kuna minu pildil puudus kokku surutud failisüsteem.
Lõpuks sattudes chroot'i videole (chroot — change root, video link postituse lõpus) ja selle võimalustele, otsustasin selle kasutada. Järgnevalt kirjeldan oma konkreetset juhtumit Ubuntu kohandamisest robootika arendajatele.
Algandmed:
- Kogu pildi modifitseerimise protsess (välja arvatud SD-kaardile kirjutamine balenaEtcher'i abil) toimus Ubuntu 18.04 operatsioonisüsteemis.
- Operatsioonisüsteem, mille kogumine on muudetud – Ubuntu 18.04.3 mate desktop versioon.
- Seade, millel kokku pandud süsteem tööle peaks hakkama – ODROID-C2.
Pildi ettevalmistamine
Laadime alla Ubuntu pildi ODROID-ile
Pakkige arhiiv lahti
unxz –kvLoome kausta, kuhu mäntime pildi
mkdir mntMäärame osa, kus failisüsteem asub
fileOtsime ext2, ext3 või ext4 formaadis failisüsteemi partitsiooni. Vajame partitsiooni algusenaadu (millel on punane kast pildil):

Märkus. Failisüsteemi asukohta saab samuti vaadata utiliidi abil parted.Seame pilt
sudo mount -o loop,offset=$((264192*512)) mnt/Meie vajalik partitsioon algab plokist 264192 (teie numbrid võivad erineda), ühe ploki suurus on 512 baiti, korrutame need, et saada hajutust baitides.
Liigume montitud süsteemi kausta ja chrootime sinna
cd mnt/ sudo chroot ~/livecd/mnt/ bin/sh~/livecd/mnt — täispikk tee montitud süsteemi katalooge.
bin/sh — shell (saab asendada ka bin/bash)
Nüüd saab juba alustada vajalike paketide ja rakenduste paigaldamist.
ROS-i paigaldamine
Paigaldasin ROS-i viimase versiooni (ROS Melodic) vastavalt .
Uuendame paketide loendit.
sudo apt-get updateSiin tekkis mul viga:
Err:6 http://deb.odroid.in/c2 bionic InRelease Järgmised allkirjad olid kehtetud: EXPKEYSIG 5360FB9DAB19BAC9 Mauro Ribeiro (mdrjr)See on seotud selle faktiga, et pakettide allkirjastamise võtme kehtivusaeg on lõppenud. Võtmete uuendamiseks sisestame:
sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys AB19BAC9Valmistame süsteemi ROS-i installimiseks.
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 updatePaigaldame ROS
Kahjuks ei suutnud ma desktop versiooni ROS-i installida, seetõttu installisin ainult põhikomponendid:sudo apt install ros-melodic-ros-base apt search ros-melodicMärkus 1. Installimise käigus tekkis vahel viga:
dpkg: error: failed to write status database record about 'iputils-ping' to '/var/lib/dpkg/status': No space left on deviceSelle sain parandatud apt tööriista vahemälu puhastamisega:
sudo apt-get clean; sudo apt-get autocleanMärkus 2. Pärast installimist on vajalik allika aktiveerimine (source) käsuga:
source /opt/ros/melodic/setup.bashei toimi, kuna me ei käivitanud bash-i, nii et seda EI OLE vaja terminalis sisestada.
Paigaldame vajalikud sõltuvused
sudo apt install python-rosdep python-rosinstall python-rosinstall-generator python-wstool build-essentialsudo apt install python-rosdepsudo rosdep init rosdep updateSeame õigused
Kuna tegutseme root-i õigustes, hakkab ROS töötama ainult superkasutaja õigustes.
Kui proovida roscore'i ilma sudo-ta käivitada, tekib viga:Viga (viimane kutsumine): Fail "/opt/ros/melodic/lib/python2.7/dist-packages/roslaunch/__init__.py", rida 230, funktsioonis main, write_pid_file(options.pid_fn, options.core, options.port) Fail "/opt/ros/melodic/lib/python2.7/dist-packages/roslaunch/__init__.py", rida 106, funktsioonis write_pid_file, with open(pid_fn, "w") as f: IOError: [Errno 13] Juurdepääs keelatud: '/home/user/.ros/roscore-11311.pid'Kuna viga ei tohiks tekkida, muudetakse rekursiivselt ROSi kasutaja kodukatalooge õigusi. Selleks kirjutame:
sudo rosdep fix-permissionsPaigaldame paketid rviz ja rqt
sudo apt-get install ros-melodic-rqt ros-melodic-rviz
Viimased näpunäited
- Väljumine chrootist:
exit - Keskuse lahtiühendamine
cd .. sudo umount mnt/ - Pakendame süsteemi pildi arhiivi
xz –ckv1
Kõik! Nüüd saab kirjutada süsteemi pildi SD-kaardile, sisestada see ODROID-C2-sse ja teil on Ubuntu koos paigaldatud ROS-iga!
Lingid:
- Linuxis chrootimise õppimine ja selle eesmärk aitasid väga see video:

Allikas: habr.com

