Daftar Isi:

RGB-D SLAM Dengan Kinect di Raspberry Pi 4 [Buster] ROS Melodic: 6 Langkah
RGB-D SLAM Dengan Kinect di Raspberry Pi 4 [Buster] ROS Melodic: 6 Langkah

Video: RGB-D SLAM Dengan Kinect di Raspberry Pi 4 [Buster] ROS Melodic: 6 Langkah

Video: RGB-D SLAM Dengan Kinect di Raspberry Pi 4 [Buster] ROS Melodic: 6 Langkah
Video: RGB-D SLAM с Kinect на Raspberry Pi 4 ROS Melodic 2024, November
Anonim
Image
Image

Tahun lalu saya menulis artikel tentang membangun dan menginstal ROS Melodic pada Raspberry Pi baru (saat itu) dengan OS Debian Buster. Artikel ini telah menerima banyak perhatian baik di sini di Instructables dan di platform lain. Saya sangat senang telah membantu begitu banyak orang untuk berhasil menginstal ROS di Raspberry Pi. Dalam video terlampir saya juga secara singkat mendemonstrasikan mendapatkan gambar kedalaman dari Kinect 360. Kemudian banyak orang telah menghubungi saya di LinkedIn dan bertanya kepada saya bagaimana saya bisa menggunakan Kinect dengan Raspberry Pi. Saya agak terkejut dengan pertanyaan itu, karena proses menyiapkan Kinect pada waktu itu memakan waktu sekitar 3-4 jam dan sepertinya tidak terlalu rumit. Saya membagikan file.bash_history saya dengan semua orang yang bertanya kepada saya tentang masalah ini dan pada bulan April akhirnya menemukan waktu untuk menulis artikel tentang cara menginstal driver Kinect dan menjalankan RGB-D SLAM dengan RTAB-MAP ROS. Minggu malam tanpa tidur setelah mulai menulis artikel saya sekarang mengerti mengapa begitu banyak orang menanyakan pertanyaan ini kepada saya:)

Saya akan mulai dengan penjelasan singkat tentang pendekatan apa yang berhasil dan mana yang tidak. Kemudian saya akan menjelaskan cara menginstal driver Kinect untuk digunakan dengan ROS Melodic dan terakhir cara mengatur mesin Anda untuk RGB-D SLAM dengan RTAB-MAP ROS.

Langkah 1: Apa yang Berhasil dan Apa yang Tidak

Ada beberapa driver yang tersedia untuk Kinect di Raspberry Pi - dua di antaranya didukung oleh ROS.

Driver OpenNI - paket openni_camera untuk ROS

driver libfreenect - paket freenect_stack untuk ROS

Jika Anda melihat repositori GitHub masing-masing, Anda dapat menemukan bahwa driver OpenNI terakhir diperbarui bertahun-tahun yang lalu dan dalam praktiknya adalah EOL untuk waktu yang lama. ibfreekinect di sisi lain sedang diperbarui tepat waktu. Sama untuk paket ROS masing-masing, freenect_stack dirilis untuk ROS melodic, sementara distro terbaru openni_camera telah mencantumkan dukungan untuk Fuerte…

Dimungkinkan untuk mengkompilasi dan menginstal driver OpenNI dan paket openni_camera pada Raspberry Pi untuk ROS Melodic, meskipun itu tidak berhasil untuk saya. Untuk melakukannya ikuti panduan ini, langkah 1, 2, 3, pada langkah 2 dan 3 hapus flag "-mfloat-abi=softfp" dari file Platform/Linux/Build/Common/Platform. ARM (sesuai saran tentang ini masalah Github). Kemudian kloning paket openni_camera ke ruang kerja catkin Anda dan kompilasi dengan catkin_make. Itu tidak berhasil untuk saya, kesalahannya adalah membuat generator kedalaman gagal. Alasan: Antarmuka USB tidak didukung!

Menggunakan libfreenect dan freenect_stack menghasilkan kesuksesan pada akhirnya, tetapi ada beberapa masalah yang harus dipecahkan dan solusinya agak kacau, meskipun bekerja sangat stabil (1 jam + operasi lanjutan).

Langkah 2: Menginstal Driver Freenect dan Freenect_stack

Menginstal Driver Freenect dan Freenect_stack
Menginstal Driver Freenect dan Freenect_stack

Saya akan berasumsi bahwa Anda menggunakan gambar ROS Melodic Desktop saya dari artikel ini. Jika Anda ingin melakukan instalasi di lingkungan yang berbeda, misalnya gambar ros_comm atau di Ubuntu untuk Raspberry Pi, pastikan Anda memiliki pengetahuan yang cukup tentang ROS untuk menyelesaikan masalah yang mungkin timbul dari perbedaan itu.

Mari kita mulai dengan membangun driver libfreenect dari sumber, karena versi repositori apt-get sudah terlalu usang.

sudo apt-get update

sudo apt-get install libusb-1.0-0-dev

git clone

cd libfreenect

pembuatan mkdir && pembuatan cd

cmake -L..

membuat

sudo make install

Semoga proses pembangunannya lancar dan penuh dengan pesan ramah lingkungan. Setelah Anda menginstal driver libfreenect, hal selanjutnya yang harus dilakukan adalah menginstal paket freenect_stack untuk ROS. Ada beberapa paket lain yang bergantung padanya, kita harus mengkloningnya dan membangunnya dengan catkin_make bersama-sama. Sebelum Anda mulai, pastikan ruang kerja catkin Anda diatur dan bersumber dengan benar!

Dari folder src ruang kerja catkin Anda:

git clone

git clone

git clone

git clone

git clone

git clone

Whooh, itu banyak kloning.

EDIT LATER: Seperti yang ditunjukkan oleh salah satu pembaca saya, repositori vision_opencv perlu diatur ke cabang melodi. Untuk cd itu ke src/vision_opencv dan jalankan

git checkout melodi

Kemudian kembali ke folder ruang kerja catkin Anda. Untuk memeriksa apakah kita dependensi untuk semua paket yang ada, jalankan perintah ini:

rosdep install --from-paths src --ignore-src

Jika Anda berhasil mengkloning semua paket yang diperlukan, ia akan meminta untuk mengunduh libfreekinect dengan apt-get. Jawab tidak, karena kami sudah menginstalnya dari sumber.

sudo apt-get install libbullet-dev libharfbuzz-dev libgtk2.0-dev libgtk-3-dev

catkin_make -j2

Waktu minum teh;) atau apa pun minuman favorit Anda.

Setelah proses kompilasi selesai, Anda dapat mencoba meluncurkan kinect stack dan memeriksa apakah itu menghasilkan gambar kedalaman dan warna dengan benar. Saya menggunakan Raspberry Pi tanpa kepala, jadi saya harus menjalankan RVIZ di komputer desktop saya.

Pada Raspberry Pi lakukan (Ubah alamat IP ke alamat IP Raspberry Pi Anda!):

ekspor ROS_MASTER_URI=https://192.168.0.108:11311

ekspor ROS_IP=192.168.0.108

roslaunch freenect_launch freenect.launch depth_registration:=true

Anda akan melihat output seperti pada Screenshot 1. "Menghentikan perangkat RGB dan aliran Depth flush." menunjukkan bahwa Kinect sudah siap, tetapi belum ada yang berlangganan topiknya.

Di komputer desktop Anda dengan ROS Melodic terinstal lakukan:

ekspor ROS_MASTER_URI=https://192.168.0.108:11311

ekspor ROS_IP=[ip-desktop-komputer-anda] rviz

Sekarang Anda seharusnya dapat melihat aliran gambar RGB dan Depth di RVIZ seperti pada Screenshot 2 di atas… tetapi tidak pada saat yang bersamaan.

Oke, di sinilah hal-hal hacky dimulai. Saya menghabiskan 3 hari mencoba driver dan pendekatan yang berbeda dan tidak ada yang berhasil - segera setelah saya mencoba mengakses dua aliran secara bersamaan, Kinect akan mulai kehabisan waktu seperti yang Anda lihat di Screenshot 3. Saya mencoba segalanya: catu daya yang lebih baik, komitmen libfreenect yang lebih lama dan freenect_stack, menghentikan usb_autosuspend, menyuntikkan pemutih ke port USB (oke, bukan yang terakhir! jangan lakukan itu, itu lelucon dan tidak boleh merupakan saran teknis:)). Kemudian di salah satu masalah Github saya melihat akun seseorang yang mengatakan Kinect mereka tidak stabil, sampai mereka "memuat bus USB" dengan menghubungkan dongle WiFi. Saya mencoba itu dan itu berhasil. Di satu sisi, saya senang itu berhasil. Di sisi lain, seseorang benar-benar harus memperbaikinya. Nah, sementara itu (semacam) memperbaikinya, mari kita lanjutkan ke langkah berikutnya.

Langkah 3: Menginstal RTAB MAP Mandiri

Memasang PETA RTAB Mandiri
Memasang PETA RTAB Mandiri

Pertama kita memiliki banyak dependensi untuk diinstal:

Meskipun ada paket armhf prebuilt yang tersedia untuk PCL, kami harus mengompilasinya dari sumber karena masalah ini. Lihat repositori PCL GitHub untuk melihat cara mengompilasinya dari sumber.

sudo apt-get install libvtk6-dev libvtk6-qt-dev libvtk6-java libvtk6-jni

sudo apt-get install libopencv-dev cmake libopenni2-dev libsqlite3-dev

Sekarang mari kita clone rtab map standalone package git repository ke folder home kita dan membangunnya. Saya menggunakan rilis terbaru (0,18.0).

git clone

cd rtabmap/build

buatlah..

buat -j2

sudo make install

sudo ldconfig rtabmap

Sekarang ketika kita telah mengkompilasi RTAB MAP mandiri, kita dapat melanjutkan ke langkah terakhir - mengkompilasi dan menginstal pembungkus ROS untuk RTAB MAP, rtabmap_ros.

Langkah 4: Menginstal Rtabmap_ros

Menginstal Rtabmap_ros
Menginstal Rtabmap_ros

Jika Anda sudah sejauh itu, Anda mungkin sudah mengetahui latihannya sekarang:) Klon repositori rtabmap_ros ke folder src ruang kerja catkin Anda. (Jalankan perintah selanjutnya dari folder src ruang kerja catkin Anda!)

git clone

Kami juga membutuhkan paket ROS ini, yang rtabmap_ros bergantung pada:

git clone

git clone

git clone

git clone

git clone

Sebelum Anda memulai kompilasi, Anda dapat memastikan bahwa Anda tidak kehilangan dependensi apa pun dengan perintah berikut:

rosdep install --from-paths src --ignore-src

Instal lebih banyak dependensi dari ap-get (ini tidak akan mengganggu penautan, tetapi akan menimbulkan kesalahan selama kompilasi)

sudo apt-get install libsdl-image1.2-dev

Kemudian pindah ke folder ruang kerja catkin Anda dan mulai kompilasi:

cd..

catkin_make -j2

Semoga Anda tidak meletakkan minuman kompilasi favorit Anda terlalu jauh. Setelah kompilasi selesai, kami siap melakukan pemetaan!

Langkah 5: Tampilkan Waktu

Waktu pertunjukan
Waktu pertunjukan
Waktu pertunjukan
Waktu pertunjukan

Lakukan trik hacky dengan menambahkan sesuatu seperti WiFi atau dongle Bluetooth ke port USB - Saya menggunakan 2 port USB 2.0, satu untuk Kinect, yang lain untuk dongle WiFi.

Pada Raspberry Pi lakukan (Ubah alamat IP ke alamat IP Raspberry Pi Anda!): Terminal pertama:

ekspor ROS_MASTER_URI=https://192.168.0.108:11311

ekspor ROS_IP=192.168.0.108

roslaunch freenect_launch freenect.launch depth_registration:=true data_skip:=2

terminal ke-2:

roslaunch rtabmap_ros rgbd_mapping.launch rtabmap_args:="--delete_db_on_start --Vis/MaxFeatures 500 --Mem/ImagePreDecimation 2 --Mem/ImagePostDecimation 2 --Kp/DetectorStrategy 6 --OdomF2M/MaxSizeDecimation 1000 --Odom"/:=salah

Anda akan melihat output seperti pada Screenshot 1. "Menghentikan perangkat RGB dan aliran Depth flush." menunjukkan bahwa Kinect sudah siap, tetapi belum ada yang berlangganan topiknya. Di terminal kedua Anda akan melihat pesan tentang kualitas odom. Jika Anda memindahkan Kinect terlalu cepat, kualitas odom akan menjadi 0 dan Anda harus pindah ke lokasi sebelumnya atau mulai dari database yang bersih.

Di komputer desktop Anda dengan ROS Melodic dan paket rtab_map diinstal (saya sarankan Anda menggunakan komputer Ubuntu untuk itu, karena paket pra-bangun tersedia untuk arsitektur AMD64) lakukan:

ekspor ROS_MASTER_URI=https://192.168.0.108:11311

ekspor ROS_IP=[ip-desktop-komputer-anda]

rviz

Tambahkan tampilan MapGraph dan MapCloud ke rviz dan pilih topik terkait yang berasal dari rtab_map. Nah, ini dia, rasa manis kemenangan! Silakan dan lakukan pemetaan:)

Langkah 6: Referensi

Saat menulis artikel ini, ada sejumlah sumber yang saya konsultasikan, sebagian besar forum dan masalah GitHub. Aku akan meninggalkan mereka di sini.

github.com/OpenKinect/libfreenect/issues/338

www.reddit.com/r/robotics/comments/8d37gy/ros_with_raspberry_pi_and_xbox_360_kinect_question/

github.com/ros-drivers/freenect_stack/issues/48

official-rtab-map-forum.67519.x6.nabble.com/RGB-D-SLAM-example-on-ROS-and-Raspberry-Pi-3-td1250.html

github.com/OpenKinect/libfreenect/issues/524

Tambahkan saya di LinkedIn jika Anda memiliki pertanyaan dan berlangganan saluran YouTube saya untuk mendapatkan pemberitahuan tentang lebih banyak proyek menarik yang melibatkan pembelajaran mesin dan robotika.

Direkomendasikan: