ROS-ի տեղադրում Ubuntu IMG պատկերում մեկ տախտակի համար
Ներածություն
Օրերս, երբ աշխատում էի իմ թեզի վրա, ես բախվեցի Ubuntu-ի պատկեր ստեղծելու մեկ տախտակով պլատֆորմի համար արդեն տեղադրված ROS-ով (Robot Operating System - ռոբոտի օպերացիոն համակարգ) Մի խոսքով, դիպլոմը նվիրված է ռոբոտների խմբի կառավարմանը։ Ռոբոտները հագեցած են երկու անիվներով և երեք հեռաչափով։ Ամբողջը կառավարվում է ROS-ից, որն աշխատում է ODROID-C2 տախտակի վրա:
Robot Ladybug. Կներեք նկարի վատ որակի համար
Յուրաքանչյուր ռոբոտի վրա առանձին-առանձին ROS տեղադրելու ոչ ժամանակ կար, ոչ ցանկություն, և, հետևաբար, արդեն տեղադրված ROS-ով համակարգի պատկերի կարիք կար: Ինտերնետում զննելուց հետո ես գտա մի քանի մոտեցում, թե ինչպես դա կարելի է անել:
Ընդհանուր առմամբ, գտնված բոլոր լուծումները կարելի է բաժանել հետևյալ խմբերի.
Առաջին խմբի լուծումների օգտագործումը թվում էր ամենապարզ և գրավիչ տարբերակն էր, բայց ես երբեք չկարողացա ստեղծել ODROID-ի համար կենդանի համակարգի պատկեր: Երկրորդ խմբի լուծումներն ինձ նույնպես չեն սազում մուտքի բավականին բարձր շեմի պատճառով։ Ձեռքով հավաքումը, ըստ առկա ձեռնարկների, նույնպես հարմար չէր, քանի որ... Իմ պատկերը սեղմված ֆայլային համակարգ չուներ:
Արդյունքում ես հանդիպեցի մի տեսանյութ chroot-ի մասին (chroot - փոխել արմատը, տեսանյութի հղումը գրառման վերջում) և դրա հնարավորությունները, որոշվեց օգտագործել այն։ Հաջորդը, ես նկարագրելու եմ Ubuntu-ն ռոբոտաշինության մշակողների համար հարմարեցնելու իմ կոնկրետ դեպքը:
Նախնական տվյալներ.
Պատկերի փոփոխման ամբողջ գործընթացը (բացառությամբ SD քարտի վրա balenaEtcher-ի միջոցով գրելու) իրականացվել է Ubuntu 18.04 օպերացիոն համակարգով:
Օպերացիոն համակարգը, որի ժողովը ես փոփոխել եմ, Ubuntu 18.04.3 mate desktop տարբերակն է:
Մեքենան, որի վրա պետք է աշխատի հավաքված համակարգը, ODROID-C2 է։
Որոշեք այն բաժինը, որի վրա գտնվում է ֆայլային համակարգը
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-ը կգործարկվի միայն գերօգտագործողի իրավունքներով:
Երբ փորձում եք գործարկել 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 օգտագործողի հիմնական գրացուցակում: Դա անելու համար մենք մուտքագրում ենք.
Բոլորը! Այժմ օգնությամբ balenaetcher Դուք կարող եք այրել համակարգի պատկերը SD քարտի վրա, տեղադրել այն ODROID-C2-ի մեջ, և դուք կունենաք տեղադրված Ubuntu ROS-ով:
Հղումներ.
Այս տեսանյութը շատ օգնեց, թե ինչպես խաբել Linux-ում և ինչու է դա ձեզ անհրաժեշտ.