İçindekiler:
- Adım 1: Neler Çalıştı ve Neler Yaramadı
- Adım 2: Freenect Sürücülerini ve Freenect_stack'i Yükleme
- 3. Adım: Bağımsız RTAB MAP'nin Kurulması
- Adım 4: Rtabmap_ros'u Kurma
- Adım 5: Zamanı Göster
- Adım 6: Referanslar
Video: Raspberry Pi 4'te Kinect ile RGB-D SLAM [Buster] ROS Melodik: 6 Adım
2024 Yazar: John Day | [email protected]. Son düzenleme: 2024-01-30 13:17
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
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ı
İ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
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
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:
Raspberry Pi 4'te ROS Melodic[Debian Buster] + RPLIDAR A1M8: 6 Adım
Raspberry Pi 4'te ROS Melodic[Debian Buster] + RPLIDAR A1M8: Bu makale, en son Debian Buster'ı çalıştıran Raspberry Pi 4'te ROS Melodic Morenia'nın kurulum sürecini ve kurulumumuzla birlikte RPLIDAR A1M8'in nasıl kullanılacağını ele alacaktır. Debian Buster sadece birkaç hafta önce resmi olarak piyasaya sürüldüğünden (şu an itibariyle
Melodik Ses: 4 Adım
Melodik Ses: La concept de cet enstrüman est assez particulière et peu commune mais très simple à yararlanıcı. Et pour ce faire, bir bien fait reours au devre intéeacute;eacute; O ui! C'est le coeur même de Melodic Voice qu
ESP32 ile PWM - Arduino IDE ile ESP 32'de PWM ile LED Karartma: 6 Adım
ESP32 ile PWM | Arduino IDE ile ESP 32'de PWM ile LED Karartma: Bu talimatta Arduino IDE & PWM temel olarak herhangi bir MCU'dan analog çıkış üretmek için kullanılır ve bu analog çıkış 0V ile 3.3V (esp32 durumunda) arasında herhangi bir şey olabilir & itibaren
Raspbian Buster'ı Raspberry Pi 3'e Yükleme - Raspberry Pi 3b / 3b+ ile Raspbian Buster'a Başlarken: 4 Adım
Raspbian Buster'ı Raspberry Pi 3'e Yükleme | Raspbian Buster ile Raspberry Pi 3b / 3b+ ile Başlarken: Merhaba arkadaşlar, yakın zamanda Raspberry pi organizasyonu Raspbian Buster olarak adlandırılan yeni Raspbian OS'yi piyasaya sürdü. Raspberry pi'ler için Raspbian'ın yeni bir sürümüdür. Bu yüzden bugün bu talimatta Raspbian Buster OS'yi Raspberry pi 3'ünüze nasıl kuracağınızı öğreneceğiz
Roomblock: Roomba, Raspberry Pi ve RPLIDAR ile ROS Navigasyonunu Öğrenmek İçin Bir Platform: 9 Adım (Resimlerle)
Roomblock: Roomba, Raspberry Pi ve RPLIDAR ile ROS Navigasyonunu Öğrenmek İçin Bir Platform: Bu nedir?"Roomblock" Roomba, Raspberry Pi 2, lazer sensör (RPLIDAR) ve mobil pilden oluşan bir robot platformudur. Montaj çerçevesi 3D yazıcılar tarafından yapılabilir. ROS navigasyon sistemi, odaların bir haritasını çıkarmayı ve i