ROS-i installimine Ubuntu IMG-pildile ühe plaadi jaoks
Sissejuhatus
Teisel päeval, töötades oma lõputöö kallal, seisin silmitsi vajadusega luua Ubuntu pilt ühe tahvli platvormi jaoks, millel on juba installitud ROS (Roboti operatsioonisüsteem – roboti operatsioonisüsteem). Lühidalt öeldes on diplom pühendatud robotite rühma juhtimisele. Robotid on varustatud kahe ratta ja kolme kaugusmõõturiga. Kogu asja juhitakse ROS-ist, mis töötab ODROID-C2 plaadil.
Robot Lepatriinu. Vabandame kehva fotokvaliteedi pärast
Ei olnud aega ega soovi paigaldada ROS-i igale robotile eraldi ja seetõttu tekkis vajadus juba installitud ROS-iga süsteemipildi järele. Pärast Internetis sirvimist leidsin mitu lähenemisviisi, kuidas seda teha.
Üldiselt võib kõik leitud lahendused jagada järgmistesse rühmadesse.
Esimese grupi lahenduste kasutamine tundus kõige lihtsam ja atraktiivsem variant, kuid ma ei saanud kunagi ODROIDi jaoks reaalajas süsteemipilti luua. Ka teise grupi lahendused ei sobinud mulle üsna kõrge sisseastumisläve tõttu. Ka käsitsi kokkupanek olemasolevate õpetuste järgi ei sobinud, sest... Minu pildil ei olnud tihendatud failisüsteemi.
Selle tulemusena sattusin videole chrooti kohta (chroot - muuda juurt, link postituse lõpus olevale videole) ja selle võimalused, otsustati seda kasutada. Järgmisena kirjeldan oma konkreetset juhtumit Ubuntu kohandamiseks robootikaarendajatele.
Esialgsed andmed:
Kogu pildi muutmise protsess (välja arvatud SD-kaardile kirjutamine balenaEtcheri abil) viidi läbi operatsioonisüsteemis Ubuntu 18.04.
Operatsioonisüsteem, mille koostu muutsin, on Ubuntu 18.04.3 mate töölauaversioon.
Masin, millel kokkupandud süsteem peaks töötama, on ODROID-C2.
Otsime partitsiooni ext2, ext3 või ext4 formaadis failisüsteemiga. Vajame jaotise alguse aadressi (ekraanil punasega esile tõstetud):
Märkus. Failisüsteemi asukohta saab vaadata ka utiliidi abil lahus.
Pildi paigaldamine
sudo mount -o loop,offset=$((264192*512)) <файл с образом> mnt/
Vajalik jaotis algab plokiga 264192 (teie numbrid võivad erineda), ühe ploki suurus on 512 baiti, korrutage need, et saada taane baitides.
Minge paigaldatud süsteemiga kausta ja veetke selles aega
cd mnt/
sudo chroot ~/livecd/mnt/ bin/sh
~/livecd/mnt — täielik tee ühendatud süsteemiga kataloogi prügikast/sh - kest (saab ka asendada prügikast/bash)
Nüüd saate alustada vajalike pakettide ja rakenduste installimist.
ROS-i installimine
Installisin ROS-i uusima versiooni (ROS Melodic) vastavalt ametlik õpetus.
Pakettide nimekirja uuendamine
sudo apt-get update
Siit sain vea:
Err:6 http://deb.odroid.in/c2 bionic InRelease
The following signatures were invalid: EXPKEYSIG 5360FB9DAB19BAC9 Mauro Ribeiro (mdrjr) <[email protected]>
Selle põhjuseks on asjaolu, et paketi allkirjastamise võti on aegunud. Võtmete värskendamiseks tippige:
Juurdepääsuõiguste seadistamine
Kuna oleme sisse logitud ja tegelikult teeme kõik toimingud kokkupandava süsteemi juure nimel, käivitatakse ROS ainult superkasutaja õigustega.
Kui proovite käivitada roscore'i ilma sudota, ilmneb tõrge:
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'
Vea vältimiseks muutkem rekursiivselt ROS-i kasutaja kodukataloogi juurdepääsuõigusi. Selleks sisestame: