Pag-install ng ROS sa isang imahe ng Ubuntu IMG para sa single-board

Pagpapakilala

Noong isang araw, habang nagtatrabaho sa aking thesis, nahaharap ako sa pangangailangang lumikha ng imahe ng Ubuntu para sa isang single-board platform na may naka-install na ROS (Robot Operating System - robot operating system). Sa madaling salita, ang diploma ay nakatuon sa pamamahala ng isang grupo ng mga robot. Ang mga robot ay nilagyan ng dalawang gulong at tatlong rangefinder. Ang buong bagay ay kinokontrol mula sa ROS, na tumatakbo sa ODROID-C2 board.

Pag-install ng ROS sa isang imahe ng Ubuntu IMG para sa single-board
Robot Ladybug. Paumanhin para sa mahinang kalidad ng larawan

Walang oras o pagnanais na i-install ang ROS sa bawat robot nang paisa-isa, at samakatuwid ay may pangangailangan para sa isang imahe ng system na may naka-install na ROS. Pagkatapos mag-browse sa Internet, nakakita ako ng ilang paraan kung paano ito magagawa.
Sa pangkalahatan, ang lahat ng solusyon na matatagpuan ay maaaring hatiin sa mga sumusunod na grupo.

  1. Mga program na lumikha ng isang imahe mula sa isang handa at na-configure na sistema (Distroshare Ubuntu Imager, linux live kit, linux respin, systemback, atbp.)
  2. Mga proyektong nagbibigay-daan sa iyong lumikha ng sarili mong larawan (yocto, linux mula sa simula)
  3. Ang pag-assemble ng imahe sa iyong sarili (live na pagpapasadya ng CD ΠΈ katumbas ng Ruso, isang plus artikulo sa HabrΓ©)

Ang paggamit ng mga solusyon mula sa unang grupo ay tila ang pinakasimple at pinakakaakit-akit na opsyon, ngunit hindi ako nakagawa ng live na imahe ng system para sa ODROID. Ang mga solusyon ng pangalawang pangkat ay hindi rin nababagay sa akin dahil sa medyo mataas na threshold ng pagpasok. Ang manu-manong pagpupulong ayon sa magagamit na mga tutorial ay hindi rin angkop, dahil... Ang aking imahe ay walang naka-compress na file system.
Bilang resulta, nakatagpo ako ng isang video tungkol sa chroot (chroot - baguhin ang ugat, link sa video sa dulo ng post) at ang mga kakayahan nito, napagpasyahan na gamitin ito. Susunod, ilalarawan ko ang aking partikular na kaso ng pagpapasadya ng Ubuntu para sa mga developer ng robotics.

Pinagmulan ng data:

  • Ang buong proseso ng pagbabago ng imahe (maliban sa pagsulat sa SD card gamit ang balenaEtcher) ay isinagawa sa Ubuntu 18.04 operating system.
  • Ang operating system na ang assembly ay binago ko ay Ubuntu 18.04.3 mate desktop na bersyon.
  • Ang makina kung saan dapat gumana ang assembled system ay ODROID-C2.

Paghahanda ng larawan

  1. I-download ang imahe ng Ubuntu para sa ODROID mula sa opisyal na site

  2. Pag-unpack ng archive

    unxz –kv <Ρ„Π°ΠΉΠ» Π°Ρ€Ρ…ΠΈΠ²Π° с ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ>

  3. Lumikha ng isang direktoryo kung saan ilalagay namin ang imahe

    mkdir mnt

  4. Tukuyin ang partisyon kung saan matatagpuan ang file system

    file <Ρ„Π°ΠΉΠ» ΠΎΠ±Ρ€Π°Π·Π°>

    Naghahanap kami ng partition na may file system sa ext2, ext3 o ext4 na format. Kailangan namin ang address ng simula ng seksyon (naka-highlight sa pula sa screen):

    Pag-install ng ROS sa isang imahe ng Ubuntu IMG para sa single-board

    Tandaan. Ang lokasyon ng file system ay maaari ding matingnan gamit ang utility nahati.

  5. Pag-mount ng imahe

    sudo mount -o loop,offset=$((264192*512)) <Ρ„Π°ΠΉΠ» с ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ> mnt/

    Ang seksyon na kailangan namin ay nagsisimula sa block 264192 (maaaring mag-iba ang iyong mga numero), ang laki ng isang bloke ay 512 bytes, i-multiply ang mga ito upang makuha ang indentation sa bytes.

  6. Pumunta sa folder na may naka-mount na system at mag-hang out dito

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

    ~/livecd/mnt β€” buong landas patungo sa direktoryo na may naka-mount na sistema
    bin/sh - shell (maaari ding palitan ng bin/bash)
    Ngayon ay maaari mong simulan ang pag-install ng mga kinakailangang pakete at application.

Pag-install ng ROS

Nag-install ako ng pinakabagong bersyon ng ROS (ROS Melodic) ayon sa opisyal na tutorial.

  1. Pag-update ng listahan ng mga pakete

    sudo apt-get update

    Dito ko nakuha ang error:

    Err:6 http://deb.odroid.in/c2 bionic InRelease
    The following signatures were invalid: EXPKEYSIG 5360FB9DAB19BAC9 Mauro Ribeiro (mdrjr) <[email protected]>

    Ito ay dahil sa ang katunayan na ang package signing key ay nag-expire na. Upang i-update ang mga susi, i-type ang:

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

  2. Paghahanda ng system para sa pag-install ng 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. Pag-install ng ROS
    Sa kasamaang palad, hindi ko na-install ang desktop na bersyon ng ROS, kaya nag-install lang ako ng mga pangunahing pakete:

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

    Tandaan 1. Sa panahon ng proseso ng pag-install, minsan may naganap na error:

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

    Naayos ito sa pamamagitan ng pag-clear ng cache gamit ang apt utility:

    sudo apt-get clean; sudo apt-get autoclean

    Tandaan 2. Pagkatapos ng pag-install, source gamit ang command:

    source /opt/ros/melodic/setup.bash

    hindi ito gagana, dahil Hindi kami nagpatakbo ng bash, kaya HINDI ito kailangang i-type sa terminal.

  4. Pag-install ng mga kinakailangang dependencies

    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. Pag-set up ng mga karapatan sa pag-access
    Dahil kami ay naka-log in at, sa katunayan, ginagawa ang lahat ng mga aksyon sa ngalan ng root ng system na binuo, ang ROS ay ilulunsad lamang na may mga superuser na karapatan.
    Kapag sinusubukang patakbuhin ang roscore nang walang sudo, nangyayari ang isang error:

    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'

    Upang maiwasang mangyari ang error, muli nating baguhin ang mga karapatan sa pag-access sa home directory ng user ng ROS. Upang gawin ito, nagta-type kami:

    sudo rosdep fix-permissions

  6. Karagdagang pag-install ng rviz at rqt packages

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

Mga huling pagpindot

  1. Lumabas sa chroot:
    exit
  2. I-unmount ang larawan
    cd ..
    sudo umount mnt/
  3. I-pack natin ang system image sa isang archive
    xz –ckv1 <Ρ„Π°ΠΉΠ» ΠΎΠ±Ρ€Π°Π·Π°>

Lahat! Ngayon sa tulong balenaetcher maaari mong sunugin ang imahe ng system sa isang SD card, ipasok ito sa ODROID-C2, at magkakaroon ka ng Ubuntu na may ROS na naka-install!

Link:

  • Malaki ang naitulong ng video na ito kung paano manloko sa Linux at kung bakit mo ito kailangan:



Pinagmulan: www.habr.com

Magdagdag ng komento