Menginstal ROS di image IMG Ubuntu untuk papan tunggal

pengenalan

Suatu hari, saat mengerjakan tesis saya, saya dihadapkan pada kebutuhan untuk membuat image Ubuntu untuk platform papan tunggal dengan ROS yang sudah terinstal (Sistem Operasi Robot - sistem operasi robot). Singkatnya, ijazah dikhususkan untuk mengelola sekelompok robot. Robot tersebut dilengkapi dengan dua roda dan tiga pengukur jarak. Semuanya dikendalikan dari ROS, yang berjalan pada papan ODROID-C2.

Menginstal ROS di image IMG Ubuntu untuk papan tunggal
Robot Kepik. Maaf atas kualitas foto yang buruk

Tidak ada waktu atau keinginan untuk menginstal ROS pada setiap robot secara individual, dan oleh karena itu diperlukan image sistem dengan ROS yang sudah diinstal. Setelah menjelajahi Internet, saya menemukan beberapa pendekatan bagaimana hal ini dapat dilakukan.
Secara umum, semua solusi yang ditemukan dapat dibagi ke dalam kelompok berikut.

  1. Program yang membuat gambar dari sistem yang sudah jadi dan dikonfigurasi (Distroshare Ubuntu Imager, kit langsung linux, pemutaran ulang linux, sistemback, dll.)
  2. Proyek yang memungkinkan Anda membuat gambar Anda sendiri (yocto, linux dari awal)
  3. Merakit gambar sendiri (kustomisasi CD langsung ΠΈ Setara dengan bahasa Rusia, sebuah tambahan artikel tentang HabrΓ©)

Menggunakan solusi dari kelompok pertama tampaknya menjadi pilihan paling sederhana dan paling menarik, tapi saya tidak pernah bisa membuat image sistem langsung untuk ODROID. Solusi kelompok kedua juga tidak cocok untuk saya karena ambang masuk yang cukup tinggi. Perakitan manual sesuai tutorial yang ada juga kurang cocok, karena... Gambar saya tidak memiliki sistem file terkompresi.
Hasilnya, saya menemukan video tentang chroot (chroot - ubah root, tautan ke video di akhir posting) dan kemampuannya, diputuskan untuk menggunakannya. Selanjutnya, saya akan menjelaskan kasus khusus saya dalam menyesuaikan Ubuntu untuk pengembang robotika.

Sumber data:

  • Seluruh proses modifikasi gambar (kecuali penulisan ke kartu SD menggunakan balenaEtcher) dilakukan pada sistem operasi Ubuntu 18.04.
  • Sistem operasi yang rakitannya saya modifikasi adalah Ubuntu 18.04.3 versi desktop sobat.
  • Mesin tempat sistem rakitan harus bekerja adalah ODROID-C2.

Mempersiapkan gambar

  1. Unduh gambar Ubuntu untuk ODROID dari situs resmi

  2. Membongkar arsip

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

  3. Buat direktori tempat kita akan memasang gambar

    mkdir mnt

  4. Tentukan partisi tempat sistem file berada

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

    Kami mencari partisi dengan sistem file dalam format ext2, ext3 atau ext4. Kami memerlukan alamat awal bagian (disorot dengan warna merah di layar):

    Menginstal ROS di image IMG Ubuntu untuk papan tunggal

    Catatan. Lokasi sistem file juga dapat dilihat menggunakan utilitas berpisah.

  5. Memasang gambar

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

    Bagian yang kita butuhkan dimulai dengan blok 264192 (angka Anda mungkin berbeda), ukuran satu blok adalah 512 byte, kalikan untuk mendapatkan lekukan dalam byte.

  6. Buka folder dengan sistem terpasang dan nongkrong di dalamnya

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

    ~/livecd/mnt β€” path lengkap ke direktori dengan sistem yang terpasang
    tempat sampah/sh - cangkang (bisa juga diganti dengan tempat sampah/bash)
    Sekarang Anda dapat mulai menginstal paket dan aplikasi yang diperlukan.

Menginstal ROS

Saya menginstal ROS versi terbaru (ROS Melodic) menurut tutorial resmi.

  1. Memperbarui daftar paket

    sudo apt-get update

    Di sinilah saya mendapatkan kesalahan:

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

    Hal ini disebabkan oleh fakta bahwa kunci penandatanganan paket telah kedaluwarsa. Untuk memperbarui kunci, ketik:

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

  2. Mempersiapkan sistem untuk menginstal 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. Menginstal ROS
    Sayangnya, saya tidak dapat menginstal ROS versi desktop, jadi saya hanya menginstal paket dasar:

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

    Catatan 1 Pada saat proses instalasi terkadang terjadi error :

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

    Itu diperbaiki dengan membersihkan cache menggunakan utilitas apt:

    sudo apt-get clean; sudo apt-get autoclean

    Catatan 2 Setelah instalasi, source menggunakan perintah:

    source /opt/ros/melodic/setup.bash

    itu tidak akan berhasil, karena Kami tidak menjalankan bash, jadi TIDAK perlu diketik di terminal.

  4. Menginstal dependensi yang diperlukan

    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. Menyiapkan hak akses
    Karena kami masuk dan, pada kenyataannya, melakukan semua tindakan atas nama root sistem yang sedang dirakit, ROS hanya akan diluncurkan dengan hak pengguna super.
    Saat mencoba menjalankan roscore tanpa sudo, terjadi kesalahan:

    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'

    Untuk mencegah terjadinya kesalahan, mari kita ubah hak akses ke direktori home pengguna ROS secara rekursif. Untuk melakukan ini kami mengetik:

    sudo rosdep fix-permissions

  6. Instalasi tambahan paket rviz dan rqt

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

Sentuhan terakhir

  1. Keluar dari chroot:
    exit
  2. Lepas gambarnya
    cd ..
    sudo umount mnt/
  3. Mari kita kemas image sistem ke dalam arsip
    xz –ckv1 <Ρ„Π°ΠΉΠ» ΠΎΠ±Ρ€Π°Π·Π°>

Semua! Sekarang dengan bantuan balenaetcher Anda dapat membakar image sistem ke kartu SD, memasukkannya ke ODROID-C2, dan Anda akan menginstal Ubuntu dengan ROS!

Бсылки:

  • Video ini banyak membantu cara curang di Linux dan mengapa Anda membutuhkannya:



Sumber: www.habr.com

Tambah komentar