Memasang ROS dalam imej Ubuntu IMG untuk papan tunggal
Pengenalan
Pada hari yang lain, semasa mengerjakan tesis saya, saya berhadapan dengan keperluan untuk mencipta imej Ubuntu untuk platform papan tunggal dengan ROS 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.
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 ke video di penghujung siaran) dan keupayaannya, diputuskan untuk menggunakannya. Seterusnya, saya akan menerangkan kes khusus saya untuk menyesuaikan Ubuntu untuk pembangun robotik.
Data awal:
Keseluruhan proses pengubahsuaian imej (kecuali menulis ke kad SD menggunakan balenaEtcher) telah dilakukan pada sistem pengendalian Ubuntu 18.04.
Sistem pengendalian yang pemasangannya saya ubah suai ialah versi desktop pasangan Ubuntu 18.04.3.
Mesin di mana sistem yang dipasang harus berfungsi ialah ODROID-C2.
Menyediakan imej
Muat turun imej Ubuntu untuk ODROID daripada laman rasmi
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 tutorial rasmi.
Mengemas kini senarai pakej
sudo apt-get update
Di sinilah saya mendapat ralat:
Err:6 http://deb.odroid.in/c2 bionic InRelease
The following signatures were invalid: EXPKEYSIG 5360FB9DAB19BAC9 Mauro Ribeiro (mdrjr) <[email protected]>
Ini disebabkan oleh fakta bahawa kunci tandatangan pakej telah tamat tempoh. Untuk mengemas kini kunci, taip:
Menyediakan 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:
Semua! Sekarang dengan bantuan balenaetcher anda boleh membakar imej sistem ke kad SD, memasukkannya ke dalam ODROID-C2, dan anda akan memasang Ubuntu dengan ROS!
Rujukan:
Video ini banyak membantu dengan cara menipu dalam Linux dan sebab anda memerlukannya: