Инсталирање ROS во слика на Ubuntu IMG за една плоча
Вовед
Пред некој ден, додека работев на мојата теза, се соочив со потребата да создадам слика на Ubuntu за платформа со една плоча со веќе инсталиран ROS (Robot Operating System - оперативен систем робот). Накратко, дипломата е посветена на управување со група роботи. Роботите се опремени со две тркала и три далечина. Целата работа е контролирана од ROS, кој работи на плочата ODROID-C2.
Роботот Бубамара. Извинете за лошиот квалитет на фотографијата
Немаше ниту време ниту желба да се инсталира ROS на секој робот поединечно и затоа имаше потреба од системска слика со веќе инсталиран ROS. Откако прелистував на Интернет, најдов неколку пристапи за тоа како тоа може да се направи.
Општо земено, сите пронајдени решенија може да се поделат во следните групи.
Користењето решенија од првата група се чинеше дека е наједноставната и најатрактивна опција, но никогаш не можев да создадам слика на системот во живо за ODROID. Решенијата на втората група исто така не ми одговараа поради прилично високиот влезен праг. Рачното склопување според достапните упатства исто така не беше соодветно, бидејќи ... Мојата слика немаше компримиран датотечен систем.
Како резултат, наидов на видео за chroot (chroot - смени корен, линк до видеото на крајот од објавата) и неговите можности, беше одлучено да се искористи. Следно, ќе го опишам мојот конкретен случај на прилагодување на Ubuntu за развивачи на роботика.
Основна линија:
Целиот процес на модификација на сликата (освен пишувањето на SD-картичката со помош на balenaEtcher) беше извршен на оперативниот систем Ubuntu 18.04.
Оперативниот систем чие склопување го изменив е Ubuntu 18.04.3 mate десктоп верзијата.
Машината на која треба да работи склопениот систем е ODROID-C2.
Направете директориум во кој ќе ја монтираме сликата
mkdir mnt
Одредете ја партицијата на која се наоѓа датотечен систем
file <файл образа>
Бараме партиција со датотечен систем во формат ext2, ext3 или ext4. Ни треба адресата на почетокот на делот (означена со црвено на екранот):
Забелешка. Локацијата на датотечниот систем може да се гледа и со помош на алатката раздели.
Монтирање на сликата
sudo mount -o loop,offset=$((264192*512)) <файл с образом> mnt/
Делот што ни треба започнува со блок 264192 (вашите броеви може да се разликуваат), големината на еден блок е 512 бајти, помножете ги за да го добиете вовлекувањето во бајти.
Одете во папката со монтираниот систем и дружете се во неа
cd mnt/
sudo chroot ~/livecd/mnt/ bin/sh
~/livecd/mnt — целосна патека до директориумот со монтираниот систем bin/sh - школка (исто така може да се замени со канта/баш)
Сега можете да започнете со инсталирање на потребните пакети и апликации.
Инсталирање на ROS
Ја инсталирав најновата верзија на ROS (ROS Melodic) според официјален туторијал.
Ажурирање на списокот на пакети
sudo apt-get update
Еве каде ја добив грешката:
Err:6 http://deb.odroid.in/c2 bionic InRelease
The following signatures were invalid: EXPKEYSIG 5360FB9DAB19BAC9 Mauro Ribeiro (mdrjr) <[email protected]>
Ова се должи на фактот дека клучот за потпишување пакет е истечен. За да ги ажурирате копчињата, напишете:
Поставување права за пристап
Бидејќи сме најавени и, всушност, ги извршуваме сите дејства во име на коренот на системот што се составува, ROS ќе се стартува само со права на суперкорисници.
Кога се обидувате да извршите roscore без sudo, се појавува грешка:
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'
За да спречиме појава на грешка, ајде рекурзивно да ги промениме правата за пристап до домашниот директориум на корисникот на ROS. За да го направите ова, пишуваме:
Ајде да ја спакуваме сликата на системот во архива
xz –ckv1 <файл образа>
Сите! Сега со помош баленаЕчер можете да ја запишете сликата на системот на SD-картичка, да ја вметнете во ODROID-C2 и ќе имате инсталирано Ubuntu со ROS!
Референци:
Ова видео помогна многу за тоа како да мамете во Linux и зошто ви е потребно: