La alian tagon, laborante pri mia tezo, mi alfrontis la bezonon krei Ubuntu-bildon por unu-tabulo platformo kun ROS jam instalita (Robot Operating System - robota operaciumo). Resume, la diplomo estas dediĉita al administrado de grupo de robotoj. La robotoj estas ekipitaj per du radoj kaj tri distancmezuriloj. La tuta afero estas regata de ROS, kiu funkcias sur la tabulo ODROID-C2.
Roboto-Kokcinelino. Pardonu pro la malbona fotokvalito
Ne estis tempo nek deziro instali ROS sur ĉiu roboto individue, kaj tial estis bezono de sistema bildo kun ROS jam instalita. Post foliumi interreto, mi trovis plurajn alirojn al kiel tio povus esti farita.
Ĝenerale, ĉiuj trovitaj solvoj povas esti dividitaj en la sekvajn grupojn.
Uzi solvojn de la unua grupo ŝajnis esti la plej simpla kaj plej alloga opcio, sed mi neniam povis krei vivan sisteman bildon por ODROID. La solvoj de la dua grupo ankaŭ ne konvenis al mi pro la sufiĉe alta enirsojlo. Mana muntado laŭ la disponeblaj lerniloj ankaŭ ne estis taŭga, ĉar... Mia bildo ne havis kunpremitan dosiersistemon.
Kiel rezulto, mi trovis videon pri chroot (chroot - ŝanĝi radikon, ligo al la video ĉe la fino de la afiŝo) kaj ĝiaj kapabloj, oni decidis uzi ĝin. Poste, mi priskribos mian apartan kazon pri personigo de Ubuntu por robotikaj programistoj.
Komencaj datumoj:
La tuta procezo de modifado de bildo (krom skribi al la SD-karto per balenaEtcher) estis farita sur la operaciumo Ubuntu 18.04.
La operaciumo, kies asembleon mi modifis, estas Ubuntu 18.04.3 mate surtabla versio.
La maŝino sur kiu la kunvenita sistemo devus funkcii estas ODROID-C2.
Determinu la subdiskon sur kiu troviĝas la dosiersistemo
file <файл образа>
Ni serĉas vando kun dosiersistemo en formato ext2, ext3 aŭ ext4. Ni bezonas la adreson de la komenco de la sekcio (markita ruĝe sur la ekrano):
Notu. La loko de la dosiersistemo ankaŭ povas esti vidita uzante la ilon disigita.
Muntante la bildon
sudo mount -o loop,offset=$((264192*512)) <файл с образом> mnt/
La sekcio, kiun ni bezonas, komenciĝas per bloko 264192 (viaj nombroj povas malsami), la grandeco de unu bloko estas 512 bajtoj, multipliku ilin por akiri la indentaĵon en bajtoj.
Iru al la dosierujo kun la muntita sistemo kaj ripozu en ĝi
cd mnt/
sudo chroot ~/livecd/mnt/ bin/sh
~/livecd/mnt — plena vojo al la dosierujo kun la muntita sistemo bin/sh - ŝelo (ankaŭ povas esti anstataŭigita per bin/bash)
Nun vi povas komenci instali la necesajn pakaĵojn kaj aplikaĵojn.
Instalante ROS
Mi instalis la lastan version de ROS (ROS Melodic) laŭ oficiala lernilo.
Ĝisdatigante la liston de pakaĵoj
sudo apt-get update
Jen kie mi ricevis la eraron:
Err:6 http://deb.odroid.in/c2 bionic InRelease
The following signatures were invalid: EXPKEYSIG 5360FB9DAB19BAC9 Mauro Ribeiro (mdrjr) <[email protected]>
Ĉi tio estas pro la fakto, ke la klavo de subskribo de pakaĵo eksvalidiĝis. Por ĝisdatigi la klavojn, tajpu:
Agordi alirrajtojn
Ĉar ni estas ensalutitaj kaj, fakte, faras ĉiujn agojn nome de la radiko de la kunvenita sistemo, ROS nur estos lanĉita kun superuzantrajtoj.
Kiam vi provas ruli roscore sen sudo, okazas eraro:
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'
Por eviti ke la eraro okazu, ni rekursie ŝanĝu la alirrajtojn al la hejma dosierujo de la uzanto de ROS. Por fari tion ni tajpas: