Orodha ya maudhui:

RGB-D SLAM Pamoja na Kinect kwenye Raspberry Pi 4 [Buster] ROS Melodic: Hatua 6
RGB-D SLAM Pamoja na Kinect kwenye Raspberry Pi 4 [Buster] ROS Melodic: Hatua 6

Video: RGB-D SLAM Pamoja na Kinect kwenye Raspberry Pi 4 [Buster] ROS Melodic: Hatua 6

Video: RGB-D SLAM Pamoja na Kinect kwenye Raspberry Pi 4 [Buster] ROS Melodic: Hatua 6
Video: Mirror - Justin timberlake ( Covered by Mathé Wise ) 2024, Novemba
Anonim
Image
Image

Mwaka jana niliandika nakala juu ya kujenga na kusanikisha ROS Melodic kwenye mpya (wakati huo) Raspberry Pi na Debian Buster OS. Nakala hiyo imepokea umakini mwingi hapa kwenye Maagizo na kwenye majukwaa mengine. Nimefurahi sana kwamba niliwasaidia watu wengi kufanikiwa kusanikisha ROS kwenye Raspberry Pi. Katika video iliyoandamana pia nilionyesha kwa kifupi kupata picha ya kina kutoka Kinect 360. Baadaye watu wengi wamewasiliana nami kwenye LinkedIn na kuniuliza ni jinsi gani nilifanikiwa kutumia Kinect na Raspberry Pi. Nilishangaa swali hilo, kwani mchakato wa kumtengeneza Kinect wakati huo ulinichukua kama masaa 3-4 na haikuonekana kuwa ngumu sana. Nilishiriki faili zangu za.bash_historia na watu wote wakiniuliza juu ya suala hilo na mnamo Aprili mwishowe nikapata wakati wa kuandika nakala juu ya jinsi ya kusanikisha madereva ya Kinect na kufanya RGB-D SLAM na RTAB-MAP ROS. Wiki ya kukosa usingizi baada ya kuanza kuandika nakala hiyo sasa ninaelewa ni kwanini watu wengi waliniuliza swali hili:)

Nitaanza na maelezo mafupi juu ya njia gani zilifanya kazi na ambayo haikufanya kazi. Kisha nitaelezea jinsi ya kusanikisha madereva ya Kinect utumie na ROS Melodic na mwishowe jinsi ya kuweka mashine yako kwa RGB-D SLAM na RTAB-MAP ROS.

Hatua ya 1: Kilichofanya kazi na kisichofanya kazi

Kuna madereva machache yanayopatikana kwa Kinect kwenye Raspberry Pi - kati yao mbili zinaungwa mkono na ROS.

Madereva ya OpenNI - openni_camera package ya ROS

madereva ya uhuru - mfuko wa freenect_stack wa ROS

Ukiangalia hazina zao za GitHub, unaweza kupata kwamba dereva wa OpenNI amesasishwa mwisho miaka iliyopita na kwa mazoezi ni EOL kwa muda mrefu. ibfreekinect kwa upande mwingine inasasishwa kwa wakati unaofaa. Sawa kwa vifurushi vyao vya ROS, freenect_stack ilitolewa kwa wimbo wa ROS, wakati mwisho distro openni_camera imeorodhesha msaada wa Fuerte…

Inawezekana kukusanya na kusanikisha dereva wa OpenNI na kifurushi cha kamera ya openni_camera kwenye Raspberry Pi ya ROS Melodic, ingawa haikunifanyia kazi. Ili kufanya hivyo fuata mwongozo huu, hatua 1, 2, 3, kwenye hatua ya 2 na 3 ondoa bendera ya "-mfloat-abi = softfp" kutoka kwa Jukwaa / Linux / Jenga / Kawaida / Jukwaa. Faili ya ARM (kwa ushauri juu ya hii Suala la Github). Kisha unganisha kifurushi cha openni_camera kwenye nafasi yako ya kazi ya paka na ujumuishe na catkin_make. Haikunifanyia kazi, kosa lilikuwa kuunda jenereta ya kina imeshindwa. Sababu: Muunganisho wa USB hauhimiliwi!

Kutumia libfreenect na freenect_stack ilitoa mafanikio mwishowe, lakini kulikuwa na shida chache kusuluhisha na suluhisho lilikuwa la ujanja kidogo, ingawa lilikuwa kazi thabiti (saa 1 + na operesheni endelevu).

Hatua ya 2: Kusanikisha Madereva ya Freenect na Freenect_stack

Kufunga Madereva ya Freenect na Freenect_stack
Kufunga Madereva ya Freenect na Freenect_stack

Nitafikiria kuwa unatumia picha yangu ya ROS Melodic Desktop kutoka kwa nakala hii. Ikiwa unataka kufanya usakinishaji katika mazingira tofauti, kwa mfano ros_comm picha au kwenye Ubuntu kwa Raspberry Pi, hakikisha kuwa una maarifa ya kutosha juu ya ROS kusuluhisha shida ambazo zinaweza kutokea kutokana na tofauti hiyo.

Wacha tuanze kwa kujenga madereva ya uhuru kutoka kwa chanzo, kwani toleo linalopatikana la kumbukumbu tayari limepitwa na wakati.

Sudo apt-pata sasisho

Sudo apt-get kufunga libusb-1.0-0-dev

clone ya git

uhuru wa cd

mkdir kujenga && cd kujenga

cmake -L..

fanya

Sudo kufanya kufunga

Tunatumahi kuwa mchakato wa ujenzi hautakuwa na usawa na umejaa ujumbe wa kijani kibichi. Baada ya kusanikisha dereva wa libfreenect, sthing inayofuata kufanya ni kusanikisha kifurushi cha freenect_stack cha ROS. Kuna vifurushi vingine kadhaa inategemea, itabidi tuviunganishe na kujenga na catkin_make zote pamoja. Kabla ya kuanza, hakikisha nafasi yako ya kazi ya paka imewekwa vizuri na imetolewa!

Kutoka kwenye folda yako ya nafasi ya kazi ya src:

clone ya git

clone ya git

clone ya git

clone ya git

clone ya git

clone ya git

Whooh, hiyo ilikuwa cloning nyingi.

MABADILIKO YA BADO Kwa cd hiyo kwa src / vision_opencv na kutekeleza

git Checkout melodic

Kisha rudi kwenye folda yako ya nafasi ya kazi ya paka. Kuangalia ikiwa tunategemea vifurushi vyote mahali kutekeleza amri hii:

usanikishaji wa rosdep - kutoka kwa njia za src --ignore-src

Ikiwa umefanikiwa kuunda vifurushi vyote muhimu itaomba kupakua libfreekinect na apt-get. Jibu hapana, kwa kuwa tayari tumeiweka kutoka chanzo.

Sudo apt-get kufunga libbullet-dev libharfbuzz-dev libgtk2.0-dev libgtk-3-dev

paka_kufanya -j2

Wakati wa chai;) au chochote kinywaji unachopenda zaidi ni.

Baada ya mchakato wa mkusanyiko kumaliza unaweza kujaribu kuzindua stack ya kinect na kuangalia ikiwa inatoa picha za kina na rangi vizuri. Ninatumia Raspberry Pi bila kichwa, kwa hivyo ninahitaji kutumia RVIZ kwenye kompyuta yangu ya eneo-kazi.

Kwenye Raspberry Pi do (Badilisha anwani ya IP kuwa anwani ya IP ya Raspberry Pi yako!):

kuuza nje ROS_MASTER_URI = https://192.168.0.108: 11311

kuuza nje ROS_IP = 192.168.0.108

zindua freenect_zindua freenect. uzinduzi wa usajili_wa usajili: = kweli

Utaona matokeo kama kwenye Picha ya 1 ya skrini. "Kuzuia kifaa RGB na kina cha mtiririko wa maji." inaonyesha kuwa Kinect yuko tayari, lakini hakuna chochote kilichosajiliwa kwa mada zake bado.

Kwenye kompyuta yako ya mezani na ROS Melodic imewekwa fanya:

kuuza nje ROS_MASTER_URI = https://192.168.0.108: 11311

kuuza nje ROS_IP = [yako-desktop-kompyuta-ip] rviz

Sasa unapaswa kuona mito ya picha ya RGB na Kina katika RVIZ kama kwenye Picha ya 2 hapo juu… lakini sio wakati huo huo.

Sawa, hapa ndipo mambo ya ujanja yanaanza. Nilitumia siku 3 kujaribu madereva na njia tofauti na hakuna kitu kilichofanya kazi - mara tu ningejaribu kupata mito miwili wakati huo huo Kinect angeanza kuweka wakati kama unavyoweza kuona kwenye Picha ya Tatu. Nilijaribu kila kitu: usambazaji bora wa umeme, ahadi za zamani za uhuru na freenect_stack, kusimamisha usb_autosuspend, kuingiza bleach kwa bandari za USB (sawa, sio ya mwisho! usifanye, ni utani na haipaswi kuunda ushauri wa kiufundi:)). Halafu katika moja ya maswala ya Github niliona akaunti ya mtu ambaye alisema Kinect wao alikuwa thabiti, hadi "walipakia basi la USB" kwa kuunganisha dongle ya WiFi. Nilijaribu hiyo na ilifanya kazi. Kwa upande mmoja, ninafurahi kuwa ilifanya kazi. Kwa upande mwingine, mtu kweli anapaswa kurekebisha hiyo. Kweli, wakati huo huo tukiwa na (aina ya) iliyosanidi hiyo, wacha tuendelee na hatua inayofuata.

Hatua ya 3: Kuweka Standalone RTAB MAP

Kuweka Standalone RTAB MAP
Kuweka Standalone RTAB MAP

Kwanza tuna rundo la utegemezi kusanikishwa:

Licha ya kuwa kuna kifurushi cha mkono kilichojengwa tayari kwa PCL, tutahitaji kukusanya kutoka kwa chanzo kwa sababu ya suala hili. Wasiliana na hazina ya PCL GitHub ili uone jinsi ya kuiunda kutoka chanzo.

Sudo apt-get kufunga libvtk6-dev libvtk6-qt-dev libvtk6-java libvtk6-jni

Sudo apt-get kufunga libopencv-dev cmake libopenni2-dev libsqlite3-dev

Sasa wacha tuambatanishe rtab ramani ya kifurushi cha kibinafsi cha git kwenye folda yetu ya nyumbani na tuijenge. Nilitumia kutolewa kwa hivi karibuni (0.18.0).

clone ya git

cd rtabmap / kujenga

cmake..

fanya -j2

Sudo kufanya kufunga

Sudo ldconfig rtabmap

Sasa wakati tumeandaa MAP ya kawaida ya RTAB, tunaweza kuhamia hatua ya mwisho - kukusanya na kusanikisha kifuniko cha ROS kwa Ramani ya RTAB, rtabmap_ros.

Hatua ya 4: Kusanikisha Rtabmap_ros

Kufunga Rtabmap_ros
Kufunga Rtabmap_ros

Ikiwa umefika mbali, labda unajua kuchimba visima kwa sasa:) Clone rtabmap_ros repository kwenye folda yako ya nafasi ya kazi ya src. (Fanya amri ifuatayo kutoka kwako folda ya nafasi ya kazi ya catkin src!)

clone ya git

Tutahitaji vifurushi hivi vya ROS pia, kwamba rtabmap_ros inategemea:

clone ya git

clone ya git

clone ya git

clone ya git

clone ya git

Kabla ya kuanza mkusanyiko unaweza kuhakikisha kuwa hukosi utegemezi wowote na amri ifuatayo:

usanikishaji wa rosdep - kutoka kwa njia za src --ignore-src

Sakinisha utegemezi zaidi kutoka kwa ap-kupata (haya hayatakatisha unganisho, lakini yatatupa kosa wakati wa mkusanyiko)

Sudo apt-get kufunga libsdl-picha1.2-dev

Kisha nenda kwenye folda yako ya nafasi ya kazi ya paka na uanze kukusanya:

cd..

paka_kufanya -j2

Natumahi hukuweka kinywaji chako unachopenda cha mkusanyiko mahali popote mbali. Baada ya kukamilika kwa mkusanyiko tuko tayari kufanya ramani!

Hatua ya 5: Onyesha Wakati

Onyesha Wakati
Onyesha Wakati
Onyesha Wakati
Onyesha Wakati

Fanya ujanja huo wa ujanja na kuongeza kitu kama WiFi au dongle ya Bluetooth kwenye bandari ya USB - nilikuwa nikitumia bandari 2 za USB 2.0, moja kwa Kinect, nyingine kwa dongle ya WiFi.

Kwenye Raspberry Pi do (Badilisha anwani ya IP kuwa anwani ya IP ya Raspberry Pi yako!): 1 terminal:

kuuza nje ROS_MASTER_URI = https://192.168.0.108: 11311

kuuza nje ROS_IP = 192.168.0.108

zindua freenect_zindua freenect. uzinduzi usajili_sajili: = data_kip ya kweli: = 2

Kituo cha 2:

kuzindua rtabmap_ros rgbd_mapping.zindua rtabmap_args: = - kufuta_db_on_start --Vis / MaxFeature 500 - Mem / ImagePreDecimation 2Mem / ImagePostDecimation 2 --Kp / DetectorStrikipedia 6 --OdomF2M / MaxSizeRizm 1000 --Odom: = uongo

Utaona matokeo kama kwenye Picha ya 1 ya skrini. "Kuzuia kifaa RGB na kina cha mtiririko wa maji." inaonyesha kuwa Kinect yuko tayari, lakini hakuna kilichosajiliwa kwa mada zake bado. Katika kituo cha pili unapaswa kuona ujumbe juu ya ubora wa odom. Ikiwa unahamisha Kinect haraka sana, ubora wa odom utaenda kwa 0 na utahitaji kuhamia mahali hapo awali au kuanza kutoka hifadhidata safi.

Kwenye kompyuta yako ya mezani na ROS Melodic na kifurushi cha rtab_map kimewekwa (Ninapendekeza utumie kompyuta ya Ubuntu kwa hiyo, kwani vifurushi vilivyojengwa hapo awali vinapatikana kwa usanifu wa amd64) fanya:

kuuza nje ROS_MASTER_URI = https://192.168.0.108: 11311

kuuza nje ROS_IP = [yako-desktop-kompyuta-ip]

rviz

Ongeza MapGraph na maonyesho ya MapCloud kwa rviz na uchague mada zinazofanana zinazotoka rtab_map. Kweli, ndio hii, ladha tamu ya ushindi! Endelea na ufanye ramani:)

Hatua ya 6: Marejeleo

Wakati wa kuandika nakala hii kulikuwa na rasilimali kadhaa nilizozungumza, haswa vikao na maswala ya GitHub. Nitawaacha hapa.

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

Niongeze kwenye LinkedIn ikiwa una maswali yoyote na ujiandikishe kwenye kituo changu cha YouTube ili upate arifa kuhusu miradi ya kufurahisha zaidi inayojumuisha ujifunzaji wa mashine na roboti.

Ilipendekeza: