Pengenalan
Beberapa hari yang lalu, semasa menyiapkan diploma saya, saya berdepan dengan keperluan untuk mencipta imej Ubuntu untuk komputer papan tunggal dengan ROS yang telah dipasang (Sistem Operasi Robot - sistem pengendalian robot). Pendek kata, diploma itu dikhaskan untuk menguruskan sekumpulan robot. Robot tersebut dilengkapi dengan dua roda dan tiga pengintai. Semuanya dikawal daripada ROS, yang berjalan pada papan ODROID-C2.

Robot Ladybug. Maaf atas kualiti foto yang kurang baik
Tiada masa atau keinginan untuk memasang ROS pada setiap robot secara individu, dan oleh itu terdapat keperluan untuk imej sistem dengan ROS telah dipasang. Selepas melayari Internet, saya menemui beberapa pendekatan bagaimana ini boleh dilakukan.
Secara umumnya, semua penyelesaian yang ditemui boleh dibahagikan kepada kumpulan berikut.
- Program yang mencipta imej daripada sistem siap sedia dan dikonfigurasikan (, , , systemback, dsb.)
- Projek yang membolehkan anda mencipta imej anda sendiri (, )
- Memasang imej sendiri ( и , tambahan )
Menggunakan penyelesaian daripada kumpulan pertama nampaknya merupakan pilihan yang paling mudah dan paling menarik, tetapi saya tidak pernah dapat mencipta imej sistem langsung untuk ODROID. Penyelesaian kumpulan kedua juga tidak sesuai dengan saya kerana ambang kemasukan yang agak tinggi. Pemasangan manual mengikut tutorial yang ada juga tidak sesuai, kerana... Imej saya tidak mempunyai sistem fail termampat.
Hasilnya, saya terjumpa video tentang chroot (chroot - tukar akar(Pautan video di penghujung catatan) dan keupayaannya, saya memutuskan untuk menggunakannya. Di bawah saya akan menerangkan kes penyesuaian khusus saya. Ubuntu untuk pembangun robotik.
Data awal:
- Keseluruhan proses pengubahsuaian imej (kecuali penulisan ke kad SD menggunakan balenaEtcher) telah dilakukan dalam sistem pengendalian. Ubuntu 18.04.
- Sistem pengendalian yang pemasangannya diubah suai ialah – Ubuntu 18.04.3 versi desktop mate.
- Mesin di mana sistem yang dipasang harus berfungsi ialah ODROID-C2.
Menyediakan imej
Muat turun imej Ubuntu untuk ODROID dengan
Membongkar arkib
unxz –kv <файл архива с образом>Buat direktori di mana kami akan memasang imej
mkdir mntTentukan partition di mana sistem fail terletak
file <файл образа>Kami sedang mencari partition dengan sistem fail dalam format ext2, ext3 atau ext4. Kami memerlukan alamat permulaan bahagian (diserlahkan dengan warna merah pada skrin):

Perhatian. Lokasi sistem fail juga boleh dilihat menggunakan utiliti berpisah.Memasang imej
sudo mount -o loop,offset=$((264192*512)) <файл с образом> mnt/Bahagian yang kami perlukan bermula dengan blok 264192 (nombor anda mungkin berbeza), saiz satu blok ialah 512 bait, darabkannya untuk mendapatkan lekukan dalam bait.
Pergi ke folder dengan sistem yang dipasang dan lepak di dalamnya
cd mnt/ sudo chroot ~/livecd/mnt/ bin/sh~/livecd/mnt — laluan penuh ke direktori dengan sistem yang dipasang
tong/sh - shell (boleh juga diganti dengan tong/bash)
Kini anda boleh mula memasang pakej dan aplikasi yang diperlukan.
Memasang ROS
Saya memasang versi terkini ROS (ROS Melodic) mengikut .
Mengemas kini senarai pakej
sudo apt-get updateDi sinilah saya mendapat ralat:
Err:6 http://deb.odroid.in/c2 bionic InRelease The following signatures were invalid: EXPKEYSIG 5360FB9DAB19BAC9 Mauro Ribeiro (mdrjr) <mauro.ribeiro@hardkernel.com>Ini disebabkan oleh fakta bahawa kunci tandatangan pakej telah tamat tempoh. Untuk mengemas kini kunci, taip:
sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys AB19BAC9Menyediakan sistem untuk memasang 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 C1CF6E31E6BADE8868B172B4F42ED6FBAB17C654sudo apt updateMemasang ROS
Malangnya, saya tidak dapat memasang versi desktop ROS, jadi saya hanya memasang pakej asas:sudo apt install ros-melodic-ros-base apt search ros-melodicCatatan 1 Semasa proses pemasangan kadangkala ralat berlaku:
dpkg: error: failed to write status database record about 'iputils-ping' to '/var/lib/dpkg/status': No space left on deviceIa telah diperbaiki dengan mengosongkan cache menggunakan utiliti apt:
sudo apt-get clean; sudo apt-get autocleanCatatan 2 Selepas pemasangan, sumber menggunakan arahan:
source /opt/ros/melodic/setup.bashia tidak akan berfungsi, kerana Kami tidak menjalankan bash, jadi ia TIDAK perlu ditaip dalam terminal.
Memasang kebergantungan yang diperlukan
sudo apt install python-rosdep python-rosinstall python-rosinstall-generator python-wstool build-essentialsudo apt install python-rosdepsudo rosdep init rosdep updateMenyediakan hak akses
Memandangkan kami telah log masuk dan, sebenarnya, melakukan semua tindakan bagi pihak akar sistem yang sedang dipasang, ROS hanya akan dilancarkan dengan hak superuser.
Apabila cuba menjalankan roscore tanpa sudo, ralat berlaku: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 mengelakkan ralat daripada berlaku, mari tukar secara rekursif hak akses kepada direktori rumah pengguna ROS. Untuk melakukan ini, kami menaip:
sudo rosdep fix-permissionsPemasangan tambahan pakej rviz dan rqt
sudo apt-get install ros-melodic-rqt ros-melodic-rviz
Sentuhan akhir
- Keluar dari chroot:
exit - Nyahlekap imej
cd .. sudo umount mnt/ - Mari bungkus imej sistem ke dalam arkib
xz –ckv1 <файл образа>
Semua! Sekarang dengan bantuan Anda boleh menulis imej sistem ke kad SD, memasukkannya ke dalam ODROID-C2, dan anda akan mempunyai Ubuntu dengan ROS dipasang!
Rujukan:
- Video ini banyak membantu dengan cara menipu dalam Linux dan sebab anda memerlukannya:

Sumber: www.habr.com

