ROS-ի տեղադրում Ubuntu IMG պատկերում մեկ տախտակի համար

Ներածություն

Օրերս, երբ աշխատում էի իմ թեզի վրա, ես բախվեցի Ubuntu-ի պատկեր ստեղծելու մեկ տախտակով պլատֆորմի համար արդեն տեղադրված ROS-ով (Robot Operating System - ռոբոտի օպերացիոն համակարգ) Մի խոսքով, դիպլոմը նվիրված է ռոբոտների խմբի կառավարմանը։ Ռոբոտները հագեցած են երկու անիվներով և երեք հեռաչափով։ Ամբողջը կառավարվում է ROS-ից, որն աշխատում է ODROID-C2 տախտակի վրա:

ROS-ի տեղադրում Ubuntu IMG պատկերում մեկ տախտակի համար
Robot Ladybug. Կներեք նկարի վատ որակի համար

Յուրաքանչյուր ռոբոտի վրա առանձին-առանձին ROS տեղադրելու ոչ ժամանակ կար, ոչ ցանկություն, և, հետևաբար, արդեն տեղադրված ROS-ով համակարգի պատկերի կարիք կար: Ինտերնետում զննելուց հետո ես գտա մի քանի մոտեցում, թե ինչպես դա կարելի է անել:
Ընդհանուր առմամբ, գտնված բոլոր լուծումները կարելի է բաժանել հետևյալ խմբերի.

  1. Ծրագրեր, որոնք պատկեր են ստեղծում պատրաստի և կազմաձևված համակարգից (Ubuntu Imager- ի տարածում, linux կենդանի հավաքածու, Linux respin, systemback և այլն)
  2. Նախագծեր, որոնք թույլ են տալիս ստեղծել ձեր սեփական պատկերը (յոկտո, Linux զրոյից)
  3. Ինքներդ պատկերը հավաքեք (կենդանի ձայնասկավառակի հարմարեցում и Ռուսական համարժեքգումարած հոդված Habré-ի մասին)

Առաջին խմբի լուծումների օգտագործումը թվում էր ամենապարզ և գրավիչ տարբերակն էր, բայց ես երբեք չկարողացա ստեղծել ODROID-ի համար կենդանի համակարգի պատկեր: Երկրորդ խմբի լուծումներն ինձ նույնպես չեն սազում մուտքի բավականին բարձր շեմի պատճառով։ Ձեռքով հավաքումը, ըստ առկա ձեռնարկների, նույնպես հարմար չէր, քանի որ... Իմ պատկերը սեղմված ֆայլային համակարգ չուներ:
Արդյունքում ես հանդիպեցի մի տեսանյութ chroot-ի մասին (chroot - փոխել արմատը, տեսանյութի հղումը գրառման վերջում) և դրա հնարավորությունները, որոշվեց օգտագործել այն։ Հաջորդը, ես նկարագրելու եմ Ubuntu-ն ռոբոտաշինության մշակողների համար հարմարեցնելու իմ կոնկրետ դեպքը:

Նախնական տվյալներ.

  • Պատկերի փոփոխման ամբողջ գործընթացը (բացառությամբ SD քարտի վրա balenaEtcher-ի միջոցով գրելու) իրականացվել է Ubuntu 18.04 օպերացիոն համակարգով:
  • Օպերացիոն համակարգը, որի ժողովը ես փոփոխել եմ, Ubuntu 18.04.3 mate desktop տարբերակն է:
  • Մեքենան, որի վրա պետք է աշխատի հավաքված համակարգը, ODROID-C2 է։

Պատկերի պատրաստում

  1. Ներբեռնեք Ubuntu-ի պատկերը ODROID-ից պաշտոնական կայք

  2. Արխիվի բացում

    unxz –kv <файл архива с образом>

  3. Ստեղծեք գրացուցակ, որտեղ մենք կտեղադրենք պատկերը

    mkdir mnt

  4. Որոշեք այն բաժինը, որի վրա գտնվում է ֆայլային համակարգը

    file <файл образа>

    Մենք փնտրում ենք միջնորմ ֆայլային համակարգով ext2, ext3 կամ ext4 ձևաչափով: Մեզ անհրաժեշտ է բաժնի սկզբի հասցեն (կարմիրով ընդգծված էկրանին).

    ROS-ի տեղադրում Ubuntu IMG պատկերում մեկ տախտակի համար

    Նշում. Ֆայլային համակարգի գտնվելու վայրը կարող է դիտվել նաև կոմունալ ծրագրի միջոցով բաժանվեց.

  5. Պատկերի տեղադրում

    sudo mount -o loop,offset=$((264192*512)) <файл с образом> mnt/

    Մեզ անհրաժեշտ հատվածը սկսվում է 264192 բլոկով (ձեր թվերը կարող են տարբերվել), մեկ բլոկի չափը 512 բայթ է, բազմապատկեք դրանք, որպեսզի ստանաք բայթերով անկումը։

  6. Գնացեք մոնտաժված համակարգով թղթապանակ և կախվեք դրա մեջ

    cd mnt/
    sudo chroot ~/livecd/mnt/ bin/sh

    ~/livecd/mnt — մոնտաժված համակարգով գրացուցակի ամբողջական ուղին
    բին/շ - կեղև (կարելի է նաև փոխարինել bin/bash)
    Այժմ կարող եք սկսել անհրաժեշտ փաթեթների և հավելվածների տեղադրումը:

ROS-ի տեղադրում

Տեղադրեցի ROS-ի վերջին տարբերակը (ROS Melodic) ըստ պաշտոնական ձեռնարկ.

  1. Փաթեթների ցանկի թարմացում

    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]>

    Դա պայմանավորված է այն հանգամանքով, որ փաթեթի ստորագրման բանալին ժամկետանց է: Ստեղները թարմացնելու համար մուտքագրեք.

    sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys AB19BAC9

  2. Համակարգի պատրաստում ROS-ի տեղադրման համար

    sudo sh -c 'echo "deb http://packages.ros.org/ros/ubuntu $(lsb_release -sc) main" > /etc/apt/sources.list.d/ros-latest.list'

    sudo apt-key adv --keyserver 'hkp://keyserver.ubuntu.com:80' --recv-key C1CF6E31E6BADE8868B172B4F42ED6FBAB17C654

    sudo apt update

  3. ROS-ի տեղադրում
    Ցավոք, ես չկարողացա տեղադրել ROS-ի աշխատասեղանի տարբերակը, ուստի տեղադրեցի միայն հիմնական փաթեթները.

    sudo apt install ros-melodic-ros-base
    apt search ros-melodic

    Նշում 1: Տեղադրման գործընթացում երբեմն սխալ է տեղի ունեցել.

    dpkg: error: failed to write status database record about 'iputils-ping' to '/var/lib/dpkg/status': No space left on device

    Այն շտկվել է քեշը մաքրելով՝ օգտագործելով apt կոմունալը.

    sudo apt-get clean; sudo apt-get autoclean

    Նշում 2: Տեղադրվելուց հետո աղբյուրը օգտագործելով հրամանը.

    source /opt/ros/melodic/setup.bash

    չի ստացվի, քանի որ Մենք չենք գործարկել bash-ը, ուստի այն տերմինալում մուտքագրելու կարիք չկա:

  4. Անհրաժեշտ կախվածությունների տեղադրում

    sudo apt install python-rosdep python-rosinstall python-rosinstall-generator python-wstool build-essential

    sudo apt install python-rosdep

    sudo rosdep init
    rosdep update

  5. Մուտքի իրավունքի կարգավորում
    Քանի որ մենք մուտք ենք գործել և, փաստորեն, կատարում ենք բոլոր գործողությունները հավաքվող համակարգի արմատի անունից, 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 օգտագործողի հիմնական գրացուցակում: Դա անելու համար մենք մուտքագրում ենք.

    sudo rosdep fix-permissions

  6. rviz և rqt փաթեթների լրացուցիչ տեղադրում

    sudo apt-get install ros-melodic-rqt ros-melodic-rviz

Վերջնական հպումներ

  1. Ելք chroot:
    exit
  2. Ապամոնտաժել պատկերը
    cd ..
    sudo umount mnt/
  3. Եկեք փաթեթավորենք համակարգի պատկերը արխիվի մեջ
    xz –ckv1 <файл образа>

Բոլորը! Այժմ օգնությամբ balenaetcher Դուք կարող եք այրել համակարգի պատկերը SD քարտի վրա, տեղադրել այն ODROID-C2-ի մեջ, և դուք կունենաք տեղադրված Ubuntu ROS-ով:

Հղումներ.

  • Այս տեսանյութը շատ օգնեց, թե ինչպես խաբել Linux-ում և ինչու է դա ձեզ անհրաժեշտ.



Source: www.habr.com

Добавить комментарий