Mündəricat:

Raspberry Pi 4-də Kinect ilə RGB-D SLAM [Buster] ROS Melodik: 6 addım
Raspberry Pi 4-də Kinect ilə RGB-D SLAM [Buster] ROS Melodik: 6 addım

Video: Raspberry Pi 4-də Kinect ilə RGB-D SLAM [Buster] ROS Melodik: 6 addım

Video: Raspberry Pi 4-də Kinect ilə RGB-D SLAM [Buster] ROS Melodik: 6 addım
Video: Веб-программирование – информатика для руководителей бизнеса 2016 2024, Noyabr
Anonim
Image
Image

Keçən il Debian Buster OS ilə yeni (o dövrdə) Raspberry Pi üzərində ROS Melodic qurmaq və quraşdırmaq haqqında bir məqalə yazdım. Məqalə həm Instructables -da, həm də digər platformalarda çox diqqət çəkdi. Çox adamın Raspberry Pi -də ROS -u uğurla quraşdırmasına kömək etdiyimə görə çox şadam. Əlavə olunan videoda Kinect 360 -dan dərinlik görüntüsü əldə etməyi də qısaca nümayiş etdirdim. Sonradan çox adam LinkedIn -də mənimlə əlaqə saxladı və Kinect -dən Raspberry Pi ilə necə istifadə etdiyimi soruşdu. Kinectin hazırlanması prosesi təxminən 3-4 saat çəkdiyindən və son dərəcə mürəkkəb görünmədiyindən bu suala təəccübləndim. Mən.bash_history sənədlərimi mövzu ilə maraqlanan bütün insanlarla paylaşdım və nəhayət Kinect sürücülərinin necə qurulacağına və RTAB-MAP ROS ilə RGB-D SLAM-ın yerinə yetirilməsinə dair bir məqalə yazmağa vaxt tapdım. Məqaləni yazmağa başladıqdan sonra yuxusuz gecələr həftəsi bu qədər insanın niyə bu sualı mənə verdiyini indi başa düşürəm:)

Hansı yanaşmaların işlədiyini və hansının işləmədiyini qısa izahla başlayacağam. Sonra ROS Melodic ilə istifadə üçün Kinect sürücülərinin necə qurulacağını və nəhayət RTAB-MAP ROS ilə RGB-D SLAM üçün maşınınızın necə qurulacağını izah edəcəyəm.

Addım 1: Nə işləyib nələr etməyib

Raspberry Pi -də Kinect üçün bir neçə sürücü var - bunlardan ikisi ROS tərəfindən dəstəklənir.

OpenNI sürücüləri - ROS üçün openni_camera paketi

libfreenect sürücüləri - ROS üçün freenect_stack paketi

Müvafiq GitHub depolarına baxsanız, OpenNI sürücüsünün sonuncu dəfə illər əvvəl yeniləndiyini və praktikada uzun müddət EOL olduğunu görə bilərsiniz. ibfreekinect digər tərəfdən vaxtında yenilənir. Müvafiq ROS paketləri üçün, freenect_stack ROS melodikası üçün buraxıldı, openni_cameranın dəstəyi siyahıya aldığı ən son dağılım isə Fuerte …

Mənim üçün işləməsə də, OpenNI sürücüsünü və openni_camera paketini Raspberry Pi -də ROS Melodic üçün tərtib edib quraşdırmaq mümkündür. Bunu etmək üçün bu təlimatı izləyin, addımlar 1, 2, 3, addım 2 və 3-də "-mfloat-abi = softfp" bayrağını Platform/Linux/Build/Common/Platform. ARM faylından silin (bu barədə verilən məsləhətlərə görə) Github məsələsi). Sonra openni_camera paketini catkin iş sahənizə klonlayın və catkin_make ilə tərtib edin. Mənim üçün işləməsə də, dərinlik generatoru yaratmaq xətası uğursuz oldu. Səbəb: USB interfeysi dəstəklənmir!

Libfreenect və freenect_stack -in istifadəsi sonda uğur qazandı, amma həll etmək üçün bir çox problem var idi və həll çox sabit işləsə də (1 saat + davam edən əməliyyat) bir az səhv idi.

Addım 2: Freenect Sürücüləri və Freenect_stack Quraşdırılması

Freenect Sürücüləri və Freenect_stack Quraşdırılması
Freenect Sürücüləri və Freenect_stack Quraşdırılması

Bu məqalədəki ROS Melodik Masaüstü şəklimdən istifadə etdiyinizi güman edirəm. Fərqli bir mühitdə, məsələn, ros_comm görüntüsündə və ya Raspberry Pi üçün Ubuntu -da quraşdırma etmək istəyirsinizsə, bu fərqdən yarana biləcək problemləri həll etmək üçün ROS haqqında kifayət qədər məlumatınız olduğundan əmin olun.

Libfreenect sürücüləri mənbədən qurmağa başlayaq, çünki apt-get repository əvvəlcədən qurulmuş versiyası çox köhnəlmişdir.

sudo apt-get yeniləməsi

sudo apt-get libusb-1.0-0-dev quraşdırın

git klonu

cd libfreenect

mkdir build && cd qurmaq

smake -L..

etmək

sudo qurun

İnşallah qurma prosesi problemsiz və yaşıl dostluq mesajları ilə dolu olacaq. Libfreenect sürücüsünü qurduqdan sonra, növbəti iş ROS üçün freenect_stack paketini qurmaqdır. Asılı olduğu bir çox başqa paket var, onları klonlaşdırmalı və hamısını birlikdə catkin_make ilə qurmalıyıq. Başlamadan əvvəl, catkin iş sahənizin düzgün qurulduğundan və qaynaqlandığından əmin olun!

Catkin iş sahənizdən src qovluğundan:

git klonu

git klonu

git klonu

git klonu

git klonu

git klonu

Vay, bu çox klonlaşdırma idi.

LATER EDIT: Oxucularımdan birinin qeyd etdiyi kimi, vision_opencv deposunu melodik bir sahəyə qurmaq lazımdır. Bunun üçün src/vision_opencv və icra edin

git checkout melodik

Sonra catkin iş qovluğuna qayıdın. Yerdə olan bütün paketlərdən asılılığımızı yoxlamaq üçün bu əmri icra edin:

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

Bütün lazımi paketləri müvəffəqiyyətlə klonladığınız təqdirdə, apt-get ilə libfreekinect yükləməyinizi xahiş edəcək. Xeyr cavabını verin, çünki artıq mənbədən quraşdırmışıq.

sudo apt-get libbullet-dev libharfbuzz-dev libgtk2.0-dev libgtk-3-dev quraşdırın

catkin_make -j2

Çay vaxtı;) və ya sevdiyiniz içki nə olursa olsun.

Kompilyasiya prosesi başa çatdıqdan sonra kinect yığınını işə salmağa və dərinliyi və rəngli şəkilləri düzgün çıxarıb çıxarmadığını yoxlamağa cəhd edə bilərsiniz. Raspberry Pi -ni başsız istifadə edirəm, buna görə də masaüstü kompüterimdə RVIZ -i işə salmalıyam.

Raspberry Pi -də (IP ünvanını Raspberry Pi -nin IP ünvanına dəyişdirin!):

ixrac ROS_MASTER_URI = https://192.168.0.108: 11311

ixrac ROS_IP = 192.168.0.108

roslaunch freenect_launch freenect.launch deep_registration: = doğru

Çıxışı Ekran Görüntüsü 1 -də olduğu kimi görəcəksiniz. "Cihazın RGB və Dərinlik axınının axmasını dayandırın." Kinect -in hazır olduğunu göstərir, lakin mövzularına hələ heç bir şey yazılmamışdır.

ROS Melodic quraşdırılmış masaüstü kompüterinizdə bunları edin:

ixrac ROS_MASTER_URI = https://192.168.0.108: 11311

ixrac ROS_IP = [masaüstünüz-kompüteriniz-ip] rviz

İndi yuxarıdakı Ekran 2 -də olduğu kimi RVIZ -də RGB və Dərinlik görüntü axınlarını görə bilməlisiniz … amma eyni zamanda deyil.

Tamam, hacky şeylərin başladığı yer budur. 3 gün fərqli sürücülər və yanaşmalar sınadım və heç bir nəticə vermədi - eyni anda iki axına daxil olmağa çalışdığım anda Kinect, Ekran Görüntüsü 3 -də gördüyünüz kimi vaxtını çıxarmağa başlayacaq. Mən hər şeyi sınadım: daha yaxşı enerji təchizatı, daha çox libfreenect və freenect_stack, usb_autosuspend'i dayandırmaq, USB portlarına ağartıcı vurmaq (tamam, sonuncu deyil! bunu etməyin, bu bir zarafatdır və texniki məsləhət olmamalıdır:)). Sonra Github -un bir sayında, WiFi dongle bağlayaraq "USB avtobusunu yükləyənə qədər" Kinect -in qeyri -sabit olduğunu söyləyən bir şəxsin hesabını gördüm. Bunu sınadım və işlədi. Bir tərəfdən, işlətdiyi üçün sevinirəm. Digər tərəfdən, kimsə bunu düzəltməlidir. Yaxşı, bu arada (bir növ) bunu düzəldərək, növbəti mərhələyə keçək.

Addım 3: Bağımsız RTAB MAP -ın quraşdırılması

Bağımsız RTAB MAP -ın quraşdırılması
Bağımsız RTAB MAP -ın quraşdırılması

Əvvəlcə quraşdırılacaq bir çox asılılıq var:

PCL üçün əvvəlcədən qurulmuş bir armhf paketi olmasına baxmayaraq, bu problem səbəbiylə onu mənbədən tərtib etməliyik. Mənbədən necə tərtib ediləcəyini görmək üçün PCL GitHub deposuna müraciət edin.

sudo apt-get libvtk6-dev libvtk6-qt-dev libvtk6-java libvtk6-jni quraşdırın

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

İndi ev qovluğumuza rtab map bağımsız paket git deposunu klonlayaq və quraq. Ən son versiyanı (0.18.0) istifadə etdim.

git klonu

cd rtabmap/qurmaq

vallah..

etmək -j2

sudo qurun

sudo ldconfig rtabmap

İndi müstəqil RTAB MAP tərtib etdikdə, son mərhələyə keçə bilərik - RTAB MAP, Rtabmap_ros üçün ROS sarmalayıcı tərtib etmək və quraşdırmaq.

Addım 4: Rtabmap_ros quraşdırın

Rtabmap_ros quraşdırılır
Rtabmap_ros quraşdırılır

Əgər o qədər uzağa getmisinizsə, yəqin ki, artıq qazmağı bilirsiniz:) rtabmap_ros deposunu catkin iş src qovluğunuza kopyalayın. (Catkin workspace src qovluğundan növbəti əmri icra edin!)

git klonu

Bu ROS paketlərinə də ehtiyacımız olacaq, rtabmap_ros asılıdır:

git klonu

git klonu

git klonu

git klonu

git klonu

Kompilyasiyaya başlamazdan əvvəl aşağıdakı əmrlə heç bir asılılıq itirmədiyinizə əmin ola bilərsiniz:

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

Ap-get-dən daha çox asılılıq qurun (bunlar əlaqəni kəsməyəcək, ancaq tərtib edərkən bir səhv atacaq)

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

Sonra catkin iş sahənizin qovluğuna keçin və tərtib etməyə başlayın:

cd..

catkin_make -j2

Ümid edirik ki, ən çox sevdiyiniz içki içkisini heç yerə qoymadınız. Kompilyasiya bitdikdən sonra xəritələməyə hazırıq!

Addım 5: Zamanı göstərin

Vaxtı Göstər
Vaxtı Göstər
Vaxtı Göstər
Vaxtı Göstər

USB portuna WiFi və ya Bluetooth dongle kimi bir şey əlavə etməklə bu hiyləgərliyi edin - biri Kinect üçün, digəri WiFi dongle üçün 2 USB 2.0 portundan istifadə edirdim.

Raspberry Pi -də (IP ünvanını Raspberry Pi -nin IP ünvanına dəyişin!): 1 -ci terminal:

ixrac ROS_MASTER_URI = https://192.168.0.108: 11311

ixrac ROS_IP = 192.168.0.108

roslaunch freenect_launch freenect.launch deep_registration: = doğru data_skip: = 2

2 -ci 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/MaxDizayn--: = yalan

Çıxışı Ekran Görüntüsü 1 -də olduğu kimi görəcəksiniz. "Cihazın RGB və Dərinlik axınının axmasını dayandırın." Kinect -in hazır olduğunu, ancaq mövzularına hələ heç bir şeyin abunə olmadığını göstərir. İkinci terminalda odom keyfiyyəti ilə bağlı mesajlar görməlisiniz. Kinect'i çox sürətli hərəkət etdirsəniz, odom keyfiyyəti 0 -a yüksələcək və əvvəlki bir yerə keçməli və ya təmiz verilənlər bazasından başlamalısınız.

ROS Melodic və rtab_map paketi quraşdırılmış masaüstü kompüterinizdə (bunun üçün Ubuntu kompüterindən istifadə etməyi məsləhət görürəm, çünki əvvəlcədən qurulmuş paketlər amd64 arxitekturası üçün mövcuddur):

ixrac ROS_MASTER_URI = https://192.168.0.108: 11311

ixrac ROS_IP = [masaüstünüz-kompüter-ip]

rviz

Rviz -ə MapGraph və MapCloud ekranlarını əlavə edin və rtab_map -dan gələn müvafiq mövzuları seçin. Budur, zəfərin şirin dadı! Davam edin və bir az da xəritələşdirin:)

Addım 6: İstinadlar

Bu yazını yazarkən məsləhətləşdiyim bir çox resurs var idi, əsasən forumlar və GitHub məsələləri. Onları burada buraxacağam.

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

Suallarınız olarsa məni LinkedIn -ə əlavə edin və YouTube kanalıma abunə olun ki, maşın öyrənmə və robototexnika ilə bağlı daha maraqlı layihələrdən xəbərdar olasınız.

Tövsiyə: