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.
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.
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.
Kami mencari partisi dengan sistem file dalam format ext2, ext3 atau ext4. Kami memerlukan alamat awal bagian (disorot dengan warna merah di layar):
Catatan. Lokasi sistem file juga dapat dilihat menggunakan utilitas berpisah.
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.
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.
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:
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:
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: