İçindekiler:

Raspberry Pi 4'te Kinect ile RGB-D SLAM [Buster] ROS Melodik: 6 Adım
Raspberry Pi 4'te Kinect ile RGB-D SLAM [Buster] ROS Melodik: 6 Adım

Video: Raspberry Pi 4'te Kinect ile RGB-D SLAM [Buster] ROS Melodik: 6 Adım

Video: Raspberry Pi 4'te Kinect ile RGB-D SLAM [Buster] ROS Melodik: 6 Adım
Video: Вышла новая версия Raspberry Pi 4 2024, Aralık
Anonim
Image
Image

Geçen yıl, Debian Buster OS ile yeni (o zamanlar) Raspberry Pi üzerinde ROS Melodic oluşturma ve yükleme hakkında bir makale yazdım. Makale, hem Instructables'ta hem de diğer platformlarda çok ilgi gördü. Raspberry Pi'ye ROS'u başarılı bir şekilde kurmak için bu kadar çok kişiye yardım ettiğim için çok mutluyum. Ekli videoda ayrıca Kinect 360'tan derinlik görüntüsü almayı da kısaca gösterdim. Daha sonra çok sayıda kişi benimle LinkedIn üzerinden iletişime geçti ve Kinect'i Raspberry Pi ile nasıl kullandığımı sordu. Soruya biraz şaşırdım çünkü o sırada Kinect'i hazırlama süreci yaklaşık 3-4 saatimi aldı ve çok karmaşık görünmüyordu..bash_history dosyalarımı bana sorunla ilgili soru soran herkesle paylaştım ve Nisan ayında nihayet Kinect sürücülerinin nasıl kurulacağı ve RTAB-MAP ROS ile RGB-D SLAM'ın nasıl yapılacağı hakkında bir makale yazacak zamanı buldum. Haftası uykusuz geceler makaleyi yazmaya başladıktan sonra neden bu kadar çok kişinin bana bu soruyu sorduğunu şimdi anlıyorum:)

Hangi yaklaşımların işe yarayıp hangilerinin yaramadığına dair kısa bir açıklamayla başlayacağım. Ardından ROS Melodic ile kullanmak için Kinect sürücülerini nasıl kuracağınızı ve son olarak makinenizi RTAB-MAP ROS ile RGB-D SLAM için nasıl kuracağınızı açıklayacağım.

Adım 1: Neler Çalıştı ve Neler Yaramadı

Raspberry Pi'de Kinect için kullanılabilen birkaç sürücü var - bunlardan ikisi ROS tarafından destekleniyor.

OpenNI sürücüleri - ROS için openni_camera paketi

libfreenect sürücüleri - ROS için freenect_stack paketi

İlgili GitHub depolarına bakarsanız, OpenNI sürücüsünün en son yıllar önce güncellendiğini ve pratikte uzun süredir EOL olduğunu görebilirsiniz. ibfreekinect ise zamanında güncellenmektedir. İlgili ROS paketleri için aynı, freenect_stack ROS melodik için yayınlandı, openni_camera'nın listelediği en son dağıtım ise Fuerte için destek listeledi…

Raspberry Pi for ROS Melodic üzerinde OpenNI sürücüsünü ve openni_camera paketini derlemek ve kurmak benim için işe yaramasa da mümkün. Bunu yapmak için bu kılavuzu izleyin, 2. ve 3. adımdaki 1, 2, 3 numaralı adımlar "-mfloat-abi=softfp" işaretini Platform/Linux/Build/Common/Platform. ARM dosyasından kaldırın (bu konudaki tavsiyeye göre). Github sorunu). Ardından openni_camera paketini catkin çalışma alanınıza kopyalayın ve catkin_make ile derleyin. Yine de benim için işe yaramadı, hata derinlik üreteci oluşturma başarısız oldu. Sebep: USB arayüzü desteklenmiyor!

libfreenect ve freenect_stack kullanmak sonunda başarı sağladı, ancak çözülmesi gereken birkaç sorun vardı ve çözüm çok kararlı çalışmasına rağmen (1 saat + sürekli çalışma) biraz zor oldu.

Adım 2: Freenect Sürücülerini ve Freenect_stack'i Yükleme

Freenect Sürücülerini ve Freenect_stack'i Yükleme
Freenect Sürücülerini ve Freenect_stack'i Yükleme

Bu makaledeki ROS Melodik Masaüstü resmimi kullandığınızı varsayacağım. Raspberry Pi için Ubuntu'da veya ros_comm image gibi farklı ortamlarda kurulum yapmak istiyorsanız, bu farktan doğabilecek sorunları çözmek için ROS hakkında yeterli bilgiye sahip olduğunuzdan emin olun.

Apt-get deposunun önceden oluşturulmuş sürümü çok eski olduğundan, kaynaktan libfreenect sürücüleri oluşturarak başlayalım.

sudo apt-get güncellemesi

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

git klonu

cd libfreenect

mkdir derlemesi && cd derlemesi

cmake -L..

Yapmak

sudo kurulum yap

Umarım yapım süreci sorunsuz ve çevre dostu mesajlarla dolu olur. libfreenect sürücüsünü kurduktan sonra yapılacak iş ROS için freenect_stack paketini kurmaktır. Bağlı olduğu birkaç paket daha var, onları klonlamamız ve hep birlikte catkin_make ile oluşturmamız gerekecek. Başlamadan önce, catkin çalışma alanınızın doğru bir şekilde kurulduğundan ve kaynaklı olduğundan emin olun!

catkin çalışma alanı src klasörünüzden:

git klonu

git klonu

git klonu

git klonu

git klon

git klonu

Whooh, çok fazla klonlama oldu.

DAHA SONRA DÜZENLEME: Okurlarımdan birinin belirttiği gibi, vision_opencv deposunun melodik dal olarak ayarlanması gerekiyor. Bu cd için src/vision_opencv'ye ve yürütmeye

git ödeme melodisi

Ardından catkin çalışma alanı klasörünüze geri dönün. Tüm paketler için bağımlılıkların yerinde olup olmadığını kontrol etmek için şu komutu yürütün:

rosdep kurulumu --from-paths src --ignore-src

Gerekli tüm paketleri başarıyla klonladıysanız, apt-get ile libfreekinect'i indirmeyi isteyecektir. Hayır, çünkü onu zaten kaynaktan yükledik.

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

catkin_make -j2

Çay saati;) ya da en sevdiğiniz içecek ne ise.

Derleme işlemi tamamlandıktan sonra, kinect yığınını başlatmayı ve derinlik ve renkli görüntülerin düzgün şekilde çıktısını alıp almadığını kontrol etmeyi deneyebilirsiniz. Raspberry Pi'yi başsız kullanıyorum, bu yüzden masaüstü bilgisayarımda RVIZ'i çalıştırmam gerekiyor.

Raspberry Pi'de (IP adresini Raspberry Pi'nizin IP adresine değiştirin!):

dışa aktar ROS_MASTER_URI=https://192.168.0.108:11311

ROS_IP'yi dışa aktar=192.168.0.108

roslaunch freenect_launch freenect.launch deep_registration:=true

Çıktıyı Ekran Görüntüsü 1'deki gibi göreceksiniz. "Aygıt RGB ve Derinlik akışı aynı anda durduruluyor." Kinect'in hazır olduğunu ancak konularına henüz abone olunmadığını belirtir.

ROS Melodic'in kurulu olduğu masaüstü bilgisayarınızda şunları yapın:

dışa aktar ROS_MASTER_URI=https://192.168.0.108:11311

ROS_IP'yi dışa aktar=[masaüstü-bilgisayar-ip] rviz

Şimdi yukarıdaki Ekran Görüntüsü 2'deki gibi RVIZ'de RGB ve Derinlik görüntü akışlarını görebilmelisiniz… ama aynı anda değil.

Tamam, işte tam burada saçma şeyler başlıyor. 3 gün boyunca farklı sürücüleri ve yaklaşımları denedim ve hiçbir şey işe yaramadı - iki akışa aynı anda erişmeyi denediğim anda Kinect, Ekran Görüntüsü 3'te görebileceğiniz gibi zaman aşımına uğradı. Her şeyi denedim: daha iyi güç kaynağı, daha eski libfreenect taahhütleri ve freenect_stack, usb_autosuspend'i durdurma, USB portlarına çamaşır suyu enjekte etme (tamam, sonuncusu değil! Yapmayın, şakadır ve teknik bir tavsiye teşkil etmemelidir:)). Sonra Github'ın sorunlarından birinde, Kinect'lerinin WiFi dongle'ı bağlayarak "USB veri yolunu yükleyene" kadar kararsız olduğunu söyleyen bir kişinin hesabını gördüm. Bunu denedim ve işe yaradı. Bir yandan işe yaramasına sevindim. Öte yandan, birinin bunu gerçekten düzeltmesi gerekiyor. Pekala, bu arada (bir nevi) bunu düzelttikten sonra bir sonraki adıma geçelim.

3. Adım: Bağımsız RTAB MAP'nin Kurulması

Bağımsız RTAB MAP'yi Yükleme
Bağımsız RTAB MAP'yi Yükleme

İlk önce kurulacak bir sürü bağımlılığımız var:

PCL için önceden oluşturulmuş bir armhf paketi olmasına rağmen, bu sorun nedeniyle onu kaynaktan derlememiz gerekecek. Kaynaktan nasıl derleneceğini görmek için PCL GitHub deposuna danışın.

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

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

Şimdi rtab map bağımsız paketi git deposunu ana klasörümüze klonlayalım ve oluşturalım. En son sürümü (0.18.0) kullandım.

git klonu

cd rtabmap/derleme

cmake..

-j2 yap

sudo kurulum yap

sudo ldconfig rtabmap

Şimdi bağımsız RTAB MAP'yi derlediğimizde, son adıma geçebiliriz - RTAB MAP için ROS sarmalayıcısını derlemek ve kurmak, rtabmap_ros.

Adım 4: Rtabmap_ros'u Kurma

Rtabmap_ros'u yükleme
Rtabmap_ros'u yükleme

O kadar ileri gittiyseniz, muhtemelen alıştırmayı biliyorsunuzdur:) rtabmap_ros deposunu catkin çalışma alanı src klasörünüze klonlayın. (Bir sonraki komutu catkin workspace src klasöründen yürütün!)

git klonu

Rtabmap_ros'un bağlı olduğu bu ROS paketlerine de ihtiyacımız olacak:

git klonu

git klonu

git klonu

git klonu

git klonu

Derlemeye başlamadan önce, aşağıdaki komutla herhangi bir bağımlılığı kaçırmadığınızdan emin olabilirsiniz:

rosdep kurulumu --from-paths src --ignore-src

ap-get'ten daha fazla bağımlılık yükleyin (bunlar bağlantıyı kesmez, ancak derleme sırasında bir hata verir)

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

Ardından catkin çalışma alanı klasörünüze gidin ve derlemeye başlayın:

cd..

catkin_make -j2

Umarım favori derleme içkinizi fazla uzağa koymamışsınızdır. Derleme tamamlandıktan sonra haritalamayı yapmaya hazırız!

Adım 5: Zamanı Göster

Gösteri zamanı
Gösteri zamanı
Gösteri zamanı
Gösteri zamanı

Bir USB bağlantı noktasına WiFi veya Bluetooth dongle gibi bir şey ekleyerek bu hileli numarayı yapın - Biri Kinect için diğeri WiFi dongle için 2 USB 2.0 bağlantı noktası kullanıyordum.

Raspberry Pi'de (IP adresini Raspberry Pi'nizin IP adresine değiştirin!): 1. terminal:

dışa aktar ROS_MASTER_URI=https://192.168.0.108:11311

ROS_IP'yi dışa aktar=192.168.0.108

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

2. terminal:

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/MaxFeatures":=yanlış

Çıktıyı Ekran Görüntüsü 1'deki gibi göreceksiniz. "Aygıt RGB ve Derinlik akışı aynı anda durduruluyor." Kinect'in hazır olduğunu ancak konularına henüz abone olunmadığını belirtir. İkinci terminalde odom kalitesi ile ilgili mesajlar görüyor olmalısınız. Kinect'i çok hızlı hareket ettirirseniz, odom kalitesi 0'a gider ve önceki bir konuma geçmeniz veya temiz veritabanından başlamanız gerekir.

ROS Melodic ve rtab_map paketinin kurulu olduğu masaüstü bilgisayarınızda (amd64 mimarisi için önceden oluşturulmuş paketler mevcut olduğundan bunun için Ubuntu bilgisayar kullanmanızı öneririm) şunları yapın:

dışa aktar ROS_MASTER_URI=https://192.168.0.108:11311

ROS_IP'yi dışa aktar=[masaüstü-bilgisayar-ip'iniz]

rviz

MapGraph ve MapCloud ekranlarını rviz'e ekleyin ve rtab_map'ten gelen ilgili konuları seçin. İşte bu, zaferin tatlı tadı! Devam edin ve biraz haritalama yapın:)

Adım 6: Referanslar

Bu makaleyi yazarken, çoğunlukla forumlar ve GitHub sorunları olmak üzere başvurduğum bir dizi kaynak vardı. Onları burada bırakacağım.

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

Herhangi bir sorunuz varsa beni LinkedIn'de ekleyin ve makine öğrenimi ve robotik içeren daha ilginç projelerden haberdar olmak için YouTube kanalıma abone olun.

Önerilen: