Toissapäivänä opinnäytetyötäni työskennellessäni kohtasin tarpeen luoda Ubuntu-kuva yhden levyn alustalle, johon ROS oli jo asennettu (Robot Operating System - robotin käyttöjärjestelmä). Lyhyesti sanottuna tutkintotodistus on omistettu robottiryhmän hallintaan. Robotit on varustettu kahdella pyörällä ja kolmella etäisyysmittarilla. Koko asiaa ohjataan ROS:sta, joka toimii ODROID-C2-kortilla.
Ei ollut aikaa eikä halua asentaa ROS-järjestelmää jokaiseen robottiin erikseen, ja siksi tarvittiin järjestelmäkuva, jossa ROS oli jo asennettuna. Selattuani Internetiä löysin useita tapoja, kuinka tämä voitaisiin tehdä.
Yleisesti ottaen kaikki löydetyt ratkaisut voidaan jakaa seuraaviin ryhmiin.
Ensimmäisen ryhmän ratkaisujen käyttäminen vaikutti yksinkertaisimmalta ja houkuttelevimmalta vaihtoehdolta, mutta en koskaan pystynyt luomaan elävää järjestelmäkuvaa ODROIDille. Toisen ryhmän ratkaisut eivät myöskään sopineet minulle melko korkean pääsykynnyksen vuoksi. Manuaalinen kokoaminen saatavilla olevien opetusohjelmien mukaan ei myöskään sopinut, koska... Kuvassani ei ollut pakattua tiedostojärjestelmää.
Tämän seurauksena törmäsin videoon chrootista (chroot - vaihda juuri, linkki videoon julkaisun lopussa) ja sen ominaisuudet, päätettiin käyttää sitä. Seuraavaksi kuvaan erityistapaustani Ubuntun mukauttamisesta robotiikan kehittäjille.
taustaa:
Koko kuvan muokkausprosessi (paitsi kirjoittaminen SD-kortille balenaEtcherillä) suoritettiin Ubuntu 18.04 -käyttöjärjestelmällä.
Käyttöjärjestelmä, jonka kokoonpanoa muokkasin, on Ubuntu 18.04.3 mate -työpöytäversio.
Kone, jolla kootun järjestelmän pitäisi toimia, on ODROID-C2.
Etsimme osiota tiedostojärjestelmällä ext2, ext3 tai ext4 muodossa. Tarvitsemme osion alun osoitteen (korostettu punaisella näytöllä):
Huom. Tiedostojärjestelmän sijaintia voi tarkastella myös apuohjelmalla erosimme.
Kuvan asennus
sudo mount -o loop,offset=$((264192*512)) <файл с образом> mnt/
Tarvittava osa alkaa lohkolla 264192 (numerosi voivat vaihdella), yhden lohkon koko on 512 tavua, kerro ne saadaksesi sisennyksen tavuissa.
Mene kansioon, jossa on asennettu järjestelmä, ja vietä aikaa siinä
cd mnt/
sudo chroot ~/livecd/mnt/ bin/sh
~/livecd/mnt — koko polku hakemistoon, jossa on asennettu järjestelmä bin/sh - kuori (voidaan myös korvata roskakori/bash)
Nyt voit aloittaa tarvittavien pakettien ja sovellusten asentamisen.
Käyttöoikeuksien määrittäminen
Koska olemme kirjautuneena sisään ja itse asiassa suoritamme kaikki toimet koottavan järjestelmän juuren puolesta, ROS käynnistetään vain pääkäyttäjän oikeuksilla.
Kun yrität suorittaa roscorea ilman sudoa, tapahtuu virhe:
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'
Virheen estämiseksi muutetaan rekursiivisesti ROS-käyttäjän kotihakemiston käyttöoikeuksia. Tätä varten kirjoitamme: