Isi kandungan:

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

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

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

Tahun lalu saya menulis artikel mengenai membina dan memasang ROS Melodic pada Raspberry Pi baru (pada masa itu) dengan Debian Buster OS. Artikel ini telah mendapat banyak perhatian di sini di Instructables dan di platform lain. Saya sangat gembira kerana berjaya menolong banyak orang untuk berjaya memasang ROS pada Raspberry Pi. Dalam video yang disertakan, saya juga secara ringkas menunjukkan mendapatkan gambar mendalam dari Kinect 360. Kemudian banyak orang telah menghubungi saya di LinkedIn dan bertanya kepada saya bagaimana saya dapat menggunakan Kinect dengan Raspberry Pi. Saya agak terkejut dengan soalan itu, kerana proses menyiapkan Kinect pada masa itu memerlukan saya sekitar 3-4 jam dan nampaknya tidak terlalu rumit. Saya berkongsi fail.bash_history saya dengan semua orang yang bertanya mengenai masalah ini dan pada bulan April akhirnya saya meluangkan masa untuk menulis artikel mengenai cara memasang pemacu Kinect dan melakukan RGB-D SLAM dengan RTAB-MAP ROS. Minggu tanpa tidur setelah mula menulis artikel Saya sekarang faham mengapa begitu banyak orang mengajukan soalan ini kepada saya:)

Saya akan mulakan dengan penjelasan ringkas mengenai pendekatan apa yang berhasil dan yang tidak. Kemudian saya akan menerangkan cara memasang pemacu Kinect untuk digunakan dengan ROS Melodic dan akhirnya bagaimana cara memasang mesin anda untuk RGB-D SLAM dengan RTAB-MAP ROS.

Langkah 1: Apa yang Berfungsi dan Apa yang Tidak

Terdapat beberapa pemacu yang tersedia untuk Kinect di Raspberry Pi - dua daripadanya disokong oleh ROS.

Pemacu OpenNI - pakej openni_camera untuk ROS

pemacu libfreenect - pakej freenect_stack untuk ROS

Sekiranya anda melihat repositori GitHub masing-masing, anda dapat mengetahui bahawa pemacu OpenNI telah dikemas kini beberapa tahun yang lalu dan dalam praktiknya adalah EOL sejak sekian lama. ibfreekinect sebaliknya dikemas kini tepat pada masanya. Sama dengan pakej ROS masing-masing, freenect_stack dilancarkan untuk melodi ROS, sementara dia openni_camera distro terakhir telah menyenaraikan sokongan adalah Fuerte…

Adalah mungkin untuk menyusun dan memasang pakej OpenNI driver dan openni_camera pada Raspberry Pi untuk ROS Melodic, walaupun ia tidak berfungsi untuk saya. Untuk mengikuti panduan ini, langkah 1, 2, 3, pada langkah 2 dan 3 keluarkan bendera "-mfloat-abi = softfp" dari fail Platform / Linux / Build / Common / Platform. ARM (mengikut nasihat mengenai perkara ini Isu Github). Kemudian pakej clone openni_camera ke ruang kerja catkin anda dan susun dengan catkin_make. Ia tidak berfungsi untuk saya, namun ralat membuat penghasil kedalaman gagal. Sebab: Antara muka USB tidak disokong!

Menggunakan libfreenect dan freenect_stack menghasilkan kejayaan pada akhirnya, tetapi ada beberapa masalah yang harus diselesaikan dan penyelesaiannya agak sukar, walaupun bekerja sangat stabil (1 jam + operasi berterusan).

Langkah 2: Memasang Freenect Drivers dan Freenect_stack

Memasang Pemacu Freenect dan Freenect_stack
Memasang Pemacu Freenect dan Freenect_stack

Saya akan menganggap bahawa anda menggunakan gambar ROS Melodic Desktop saya dari artikel ini. Sekiranya anda ingin melakukan pemasangan di persekitaran yang berbeza, misalnya gambar ros_comm atau di Ubuntu untuk Raspberry Pi, pastikan anda mempunyai pengetahuan yang cukup mengenai ROS untuk menyelesaikan masalah yang mungkin timbul dari perbezaan tersebut.

Mari mulakan dengan membina pemacu libfreenect dari sumber, kerana versi pra-dibina repositori apt-get terlalu ketinggalan zaman.

sudo apt-get kemas kini

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

klon git

cd libfreenect

mkdir build && cd build

cmake-L..

membuat

sudo buat pasang

Semoga proses membina tidak lancar dan penuh dengan mesej mesra hijau. Setelah anda memasang pemacu libfreenect, langkah seterusnya yang perlu dilakukan ialah memasang pakej freenect_stack untuk ROS. Terdapat beberapa pakej lain yang bergantung kepada kita, kita harus mengklonnya dan membina dengan catkin_make bersama-sama. Sebelum memulakan, pastikan ruang kerja catkin anda disiapkan dan bersumber dengan betul!

Dari folder src ruang kerja catkin anda:

git klon

git klon

git klon

git klon

git klon

klon git

Whooh, itu banyak pengklonan.

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

git checkout melodi

Kemudian kembali ke folder ruang kerja catkin anda. Untuk memeriksa apakah kita bergantung pada semua pakej yang ada, jalankan arahan ini:

pemasangan rosdep --dari-jalan src --ignore-src

Sekiranya anda berjaya mengklon semua pakej yang diperlukan, ia akan meminta untuk memuat turun libfreekinect dengan apt-get. Jawab tidak, kerana kami sudah memasangnya dari sumber.

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

catkin_make -j2

Waktu minum teh;) atau apa sahaja minuman kegemaran anda.

Setelah proses penyusunan selesai, anda boleh mencuba melancarkan tumpukan kinect dan memeriksa apakah ia mengeluarkan gambar kedalaman dan warna dengan betul. Saya menggunakan Raspberry Pi tanpa kepala, jadi saya perlu menjalankan RVIZ di komputer desktop saya.

Pada Raspberry Pi lakukan (Tukar alamat IP ke alamat IP Raspberry Pi anda!):

eksport ROS_MASTER_URI = https://192.168.0.108: 11311

eksport ROS_IP = 192.168.0.108

roslaunch freenect_launch freenect.launch kedalaman_registrasi: = benar

Anda akan melihat output seperti dalam Tangkapan Skrin 1. "Menghentikan RGB peranti dan aliran aliran Kedalaman." menunjukkan bahawa Kinect sudah siap, tetapi belum ada yang melanggan topiknya.

Pada komputer desktop anda dengan ROS Melodic dipasang lakukan:

eksport ROS_MASTER_URI = https://192.168.0.108: 11311

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

Sekarang anda seharusnya dapat melihat aliran gambar RGB dan Kedalaman dalam RVIZ seperti dalam Tangkapan Skrin 2 di atas … tetapi tidak pada masa yang sama.

Baiklah, di sinilah bermulanya perkara yang menggodam. Saya menghabiskan 3 hari untuk mencuba pemacu dan pendekatan yang berbeza dan tidak ada yang berjaya - sebaik sahaja saya cuba mengakses dua aliran secara serentak, Kinect akan mula habis seperti yang anda lihat dalam Tangkapan Skrin 3. Saya mencuba segalanya: bekalan kuasa yang lebih baik, komitmen libfreenect yang lebih lama dan freenect_stack, menghentikan usb_autosuspend, menyuntikkan peluntur ke port USB (baiklah, bukan yang terakhir! jangan lakukan itu, itu adalah jenaka dan tidak boleh menjadi nasihat teknikal:)). Kemudian dalam salah satu masalah Github saya melihat akaun seseorang yang mengatakan bahawa Kinect mereka tidak stabil, sehingga mereka "memuat bas USB" dengan menyambungkan dongle WiFi. Saya mencubanya dan berjaya. Di satu pihak, saya gembira kerana ia berjaya. Sebaliknya, seseorang benar-benar harus memperbaikinya. Nah, sementara itu (semacam) memperbaikinya, mari kita beralih ke langkah seterusnya.

Langkah 3: Memasang PET RTAB Berdiri

Memasang PET RTAB Berdiri
Memasang PET RTAB Berdiri

Mula-mula kita mempunyai banyak pergantungan yang akan dipasang:

Walaupun terdapat pakej armhf prebuilt yang tersedia untuk PCL, kami perlu menyusunnya dari sumber kerana masalah ini. Rujuk repositori PCL GitHub untuk melihat bagaimana menyusunnya 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 klon rtab peta pakej mandiri git repositori ke folder rumah kami dan bina. Saya menggunakan keluaran terbaru (0.18.0).

git klon

cd rtabmap / bina

cmake..

buat -j2

sudo buat pasang

sudo ldconfig rtabmap

Sekarang apabila kita telah menyusun RTAB MAP mandiri, kita dapat beralih ke langkah terakhir - menyusun dan memasang pembungkus ROS untuk RTAB MAP, rtabmap_ros.

Langkah 4: Memasang Rtabmap_ros

Memasang Rtabmap_ros
Memasang Rtabmap_ros

Sekiranya anda berjaya sejauh ini, anda mungkin sudah mengetahui latihannya sekarang:) Klon repositori rtabmap_ros ke folder src ruang kerja catkin anda. (Jalankan arahan seterusnya dari folder src ruang kerja catkin anda!)

git klon

Kami juga memerlukan pakej ROS ini, rtabmap_ros bergantung pada:

git klon

git klon

git klon

git klon

klon git

Sebelum memulakan penyusunan, anda boleh memastikan bahawa anda tidak kehilangan sebarang kebergantungan dengan arahan berikut:

pemasangan rosdep --dari-jalan src --ignore-src

Pasang lebih banyak pergantungan dari ap-get (ini tidak akan mengganggu pautan, tetapi akan menimbulkan ralat semasa penyusunan)

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

Kemudian pindah ke folder ruang kerja catkin anda dan mula menyusun:

cd..

catkin_make -j2

Harap anda tidak meletakkan minuman kompilasi kegemaran anda di tempat yang terlalu jauh. Setelah penyusunan selesai kami siap melakukan pemetaan!

Langkah 5: Tunjukkan Masa

Masa pertunjukan
Masa pertunjukan
Masa pertunjukan
Masa pertunjukan

Lakukan tipu muslihat itu dengan menambahkan sesuatu seperti WiFi atau Bluetooth dongle ke port USB - Saya menggunakan 2 port USB 2.0, satu untuk Kinect, satu lagi untuk WiFi dongle.

Pada Raspberry Pi lakukan (Tukar alamat IP ke alamat IP Raspberry Pi anda!): Terminal pertama:

eksport ROS_MASTER_URI = https://192.168.0.108: 11311

eksport ROS_IP = 192.168.0.108

roslaunch freenect_launch freenect.launch kedalaman_registrasi: = data benar_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 --Mp / ImagePostDecimation 2 --Kp / DetectorStrategi 6 --OdomF2M / MaxSizeDimat - ImageSmm: = palsu

Anda akan melihat output seperti dalam Tangkapan Skrin 1. "Menghentikan RGB peranti dan aliran aliran Kedalaman." menunjukkan bahawa Kinect sudah siap, tetapi belum ada yang melanggan topiknya. Di terminal kedua anda semestinya akan melihat mesej mengenai kualiti odom. Sekiranya anda memindahkan Kinect terlalu cepat, kualiti odom akan mencapai 0 dan anda perlu berpindah ke lokasi sebelumnya atau bermula dari pangkalan data bersih.

Pada komputer desktop anda dengan pakej ROS Melodic dan rtab_map dipasang (saya cadangkan anda menggunakan komputer Ubuntu untuk itu, kerana pakej pra-binaan tersedia untuk seni bina amd64) lakukan:

eksport ROS_MASTER_URI = https://192.168.0.108: 11311

eksport ROS_IP = [desktop-komputer-ip anda]

rviz

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

Langkah 6: Rujukan

Semasa menulis artikel ini terdapat sejumlah sumber yang saya rujuk, kebanyakannya forum dan masalah GitHub. Saya akan tinggalkan 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-contoh-on-ROS-dan-Raspberry-Pi-3-td1250.html

github.com/OpenKinect/libfreenect/issues/524

Tambahkan saya di LinkedIn jika anda mempunyai sebarang pertanyaan dan melanggan saluran YouTube saya untuk mendapat maklumat mengenai projek yang lebih menarik yang melibatkan pembelajaran mesin dan robotik.

Disyorkan: