Келесі күні, менің дипломдық жұмысыммен жұмыс істеу кезінде мен ROS орнатылған бір тақталы платформа үшін Ubuntu кескінін жасау қажеттілігіне тап болдым (Robot Operating System – робот операциялық жүйесі). Бір сөзбен айтқанда, диплом роботтар тобын басқаруға арналған. Роботтар екі дөңгелекпен және үш қашықтық өлшегішпен жабдықталған. Барлығы ODROID-C2 тақтасында жұмыс істейтін ROS арқылы басқарылады.
Robot Ladybug. Фото сапасының нашарлығы үшін кешіріңіз
Әрбір роботқа ROS орнатуға уақыт та, қалау да болмады, сондықтан ROS орнатылған жүйе кескіні қажет болды. Интернетті қарап шыққаннан кейін мен мұны қалай жасауға болатынын бірнеше тәсілдерді таптым.
Жалпы, барлық табылған шешімдерді келесі топтарға бөлуге болады.
Бірінші топтың шешімдерін пайдалану ең қарапайым және ең тартымды нұсқа болып көрінді, бірақ мен ешқашан ODROID үшін тірі жүйелік кескінді жасай алмадым. Екінші топтың шешімдері де кіру шегінің жоғары болуына байланысты маған сәйкес келмеді. Қолда бар оқулықтарға сәйкес қолмен құрастыру да жарамсыз болды, өйткені... Менің суретімде қысылған файлдық жүйе болмады.
Нәтижесінде мен chroot туралы бейнеге тап болдым (chroot - түбірді өзгерту, жазбаның соңындағы бейнеге сілтеме) және оның мүмкіндіктері, оны пайдалану туралы шешім қабылданды. Әрі қарай, мен робототехника әзірлеушілері үшін Ubuntu-ды теңшеудің нақты жағдайын сипаттаймын.
Бастапқы деректер:
Кескінді өзгертудің бүкіл процесі (balenaEtcher арқылы SD картасына жазуды қоспағанда) Ubuntu 18.04 операциялық жүйесінде орындалды.
Жинағын өзгерткен операциялық жүйе Ubuntu 18.04.3 mate жұмыс үстелінің нұсқасы болып табылады.
Жиналған жүйе жұмыс істеуі керек машина ODROID-C2.
Суретті дайындау
ODROID үшін Ubuntu кескінін мына жерден жүктеп алыңыз ресми сайты
Мұрағатты ашу
unxz –kv <файл архива с образом>
Біз суретті орнататын каталог жасаңыз
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/bash)
Енді сіз қажетті пакеттер мен қолданбаларды орнатуды бастай аласыз.
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 пайдаланушысының үй каталогына кіру құқықтарын рекурсивті түрде өзгертейік. Ол үшін тереміз: