INHOUDSOPGAWE:

RGB-D SLAM Met Kinect op Raspberry Pi 4 [Buster] ROS Melodic: 6 stappe
RGB-D SLAM Met Kinect op Raspberry Pi 4 [Buster] ROS Melodic: 6 stappe

Video: RGB-D SLAM Met Kinect op Raspberry Pi 4 [Buster] ROS Melodic: 6 stappe

Video: RGB-D SLAM Met Kinect op Raspberry Pi 4 [Buster] ROS Melodic: 6 stappe
Video: Testing the Xbox360 Kinect on a Raspberry Pi 3 2024, November
Anonim
Image
Image

Verlede jaar het ek 'n artikel geskryf oor die bou en installering van ROS Melodic op nuwe (destyds) Raspberry Pi met Debian Buster OS. Die artikel het baie aandag geniet, sowel op Instructables as op ander platforms. Ek is baie bly dat ek soveel mense gehelp het om ROS suksesvol op Raspberry Pi te installeer. In die meegaande video het ek ook kortliks gedemonstreer hoe ek dieptebeeld kry van Kinect 360. Later het talle mense my op LinkedIn gekontak en my gevra hoe ek dit reggekry het om Kinect met Raspberry Pi te gebruik. Ek was nogal verbaas oor die vraag, aangesien die proses om Kinect op daardie tydstip gereed te kry, my ongeveer 3-4 uur geneem het en nie baie ingewikkeld gelyk het nie. Ek het my.bash_history-lêers gedeel met al die mense wat my gevra het oor die kwessie en uiteindelik in April tyd gekry om 'n artikel te skryf oor hoe om Kinect-bestuurders te installeer en RGB-D SLAM met RTAB-MAP ROS uit te voer. Week van slapelose nagte nadat ek die artikel begin skryf het, ek verstaan nou hoekom soveel mense my hierdie vraag gevra het:)

Ek sal begin met 'n kort verduideliking oor watter benaderings wel gewerk het en watter nie. Dan sal ek verduidelik hoe u Kinect-bestuurders installeer vir gebruik met ROS Melodic en uiteindelik hoe u u masjien vir RGB-D SLAM met RTAB-MAP ROS kan instel.

Stap 1: wat gewerk het en wat nie

Daar is 'n paar bestuurders beskikbaar vir Kinect op Raspberry Pi - uit hulle word twee ondersteun deur ROS.

OpenNI -bestuurders - openni_camera -pakket vir ROS

libfreenect -bestuurders - freenect_stack -pakket vir ROS

As u na hul onderskeie GitHub -bewaarplekke kyk, kan u sien dat OpenNI -bestuurder jare gelede laas opgedateer is en in die praktyk lank lank EOL is. ibfreekinect aan die ander kant word betyds bygewerk. Dieselfde geld vir hul onderskeie ROS -pakkette, freenect_stack is vrygestel vir ROS melodies, terwyl die laaste distro openni_camera wat Fuerte ondersteun het, gelys word …

Dit is moontlik om OpenNI -bestuurder en openni_camera -pakket op te stel en te installeer op Raspberry Pi vir ROS Melodic, hoewel dit nie vir my gewerk het nie. Om dit te kan doen, volg hierdie gids, stap 1, 2, 3, op stap 2 en 3, verwyder die "-mfloat-abi = softfp" vlag van Platform/Linux/Build/Common/Platform. ARM lêer (volgens advies hieroor Github -uitgawe). Kloon dan die pakket openni_camera na u catkin -werkruimte en stel dit saam met catkin_make. Dit het egter nie vir my gewerk nie, die fout was dat die diepte -kragopwekker misluk het. Rede: USB -koppelvlak word nie ondersteun nie!

Die gebruik van libfreenect en freenect_stack het uiteindelik sukses opgelewer, maar daar was 'n hele paar probleme om op te los en die oplossing was 'n bietjie hacky, hoewel dit baie stabiel werk (1 uur + voortgesette werking).

Stap 2: Installeer Freenect -bestuurders en Freenect_stack

Die installering van Freenect -bestuurders en Freenect_stack
Die installering van Freenect -bestuurders en Freenect_stack

Ek neem aan dat u my ROS Melodic Desktop -beeld uit hierdie artikel gebruik. As u in 'n ander omgewing wil installeer, byvoorbeeld ros_comm -beeld of in Ubuntu vir Raspberry Pi, moet u genoeg kennis oor ROS hê om probleme op te los wat uit hierdie verskil kan ontstaan.

Kom ons begin deur libfreenect-bestuurders uit die bron te bou, aangesien die voorafgeboude weergawe apt-get repository te verouderd is.

sudo apt-get update

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

git -kloon

cd libfreenect

mkdir build && cd build

cmake -L..

maak

sudo maak installeer

Hopelik sal die bouproses sonder probleme en vol groen vriendelike boodskappe wees. Nadat u die libfreenect -bestuurder geïnstalleer het, is die volgende stap om die freenect_stack -pakket vir ROS te installeer. Daar is 'n hele paar ander pakkette waarvan dit afhang, ons moet dit kloon en saam met catkin_make bou. Voordat u begin, moet u seker maak dat u werkplek korrek opgestel en verkry is!

Uit u catkin -werkruimte src -lêergids:

git-kloon

git-kloon

git-kloon

git-kloon

git-kloon

git -kloon

Sjoe, dit was baie kloning.

LATER REDIGERING: Soos een van my lesers daarop gewys het, moet vision_opencv -bewaarplek op 'n melodiese tak ingestel word. Vir die cd na src/vision_opencv en voer dit uit

git checkout melodies

Gaan dan terug na u catkin -werkruimtemap. Om te kyk of ons afhanklikes vir alle pakkette in plek is, voer hierdie opdrag uit:

rosdep installeer-van-paths src --ignore-src

As u al die nodige pakkette suksesvol gekloon het, sal dit versoek om libfreekinect af te laai met apt-get. Antwoord nee, aangesien ons dit reeds vanaf die bron geïnstalleer het.

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

catkin_make -j2

Teetyd;) of wat ook al u gunsteling drankie is.

Nadat die opstelproses voltooi is, kan u probeer om kinect -stapel te begin en te kyk of dit diepte- en kleurbeelde behoorlik lewer. Ek gebruik Raspberry Pi sonder kop, so ek moet RVIZ op my rekenaar gebruik.

Doen dit op Raspberry Pi (Verander die IP -adres in die IP -adres van u Raspberry Pi!):

voer ROS_MASTER_URI = https://192.168.0.108: 11311 uit

uitvoer ROS_IP = 192.168.0.108

roslaunch freenect_launch freenect.launch depth_registration: = waar

U sal die uitset sien soos in skermkiekie 1. "Stop toestel RGB en diepte stroom spoel." dui aan dat Kinect gereed is, maar niks is nog op die onderwerpe ingeteken nie.

Op u tafelrekenaar met ROS Melodic geïnstalleer, doen:

voer ROS_MASTER_URI = https://192.168.0.108: 11311 uit

uitvoer ROS_IP = [jou-lessenaar-rekenaar-ip] rviz

U behoort nou RGB- en dieptebeeldstrome in RVIZ te kan sien, soos in skermkiekie 2 hierbo … maar nie terselfdertyd nie.

Goed, dit is waar hacky goed begin. Ek het drie dae probeer om verskillende bestuurders en benaderings te probeer, en niks werk nie - sodra ek toegang tot twee strome gelyktydig sou probeer, sou die Kinect begin tydsberekening kry, soos u in skermkiekie 3 kan sien. freenect_stack, stop usb_autosuspend, spuit bleikmiddel aan USB -poorte (oké, nie die laaste nie! moenie dit doen nie, dit is 'n grap en behoort nie 'n tegniese advies te wees nie:)). Toe sien ek in een van Github se uitgawes 'n verslag van 'n persoon wat gesê het dat hul Kinect onstabiel was totdat hulle 'die USB -bus laai' deur 'n WiFi -dongle aan te sluit. Ek het dit probeer en dit het gewerk. Aan die een kant is ek bly dat dit gewerk het. Aan die ander kant behoort iemand dit reg te stel. Wel, terwyl ons dit (soort van) reggemaak het, gaan ons verder met die volgende stap.

Stap 3: Installeer selfstandige RTAB MAP

Installeer die selfstandige RTAB MAP
Installeer die selfstandige RTAB MAP

Eerstens moet ons 'n klomp afhanklikhede installeer:

Alhoewel daar 'n voorafgeboude armhf -pakket vir PCL beskikbaar is, moet ons dit uit die bron opstel weens hierdie probleem. Raadpleeg die PCL GitHub -bewaarplek om te sien hoe u dit uit die bron kan opstel.

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

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

Laat ons nou die selfstandige pakket git repository van rtab -kaart na ons tuismap kloon en dit bou. Ek het die nuutste weergawe (0.18.0) gebruik.

git -kloon

cd rtabmap/build

maak..

maak -j2

sudo maak installeer

sudo ldconfig rtabmap

As ons nou selfstandige RTAB MAP saamgestel het, kan ons na die laaste stap gaan - die opstel en installering van ROS -wrapper vir RTAB MAP, rtabmap_ros.

Stap 4: Installeer Rtabmap_ros

Die installering van Rtabmap_ros
Die installering van Rtabmap_ros

As u so ver gekom het, ken u waarskynlik nou al die oefening:) Kloon die rtabmap_ros -bewaarplek na u Catkin -werkruimte src -lêergids. (Voer die volgende opdrag uit u Catkin -werkruimte src -lêergids uit!)

git -kloon

Ons benodig ook hierdie ROS -pakkette, waarvan rtabmap_ros afhang:

git-kloon

git-kloon

git-kloon

git -kloon

git-kloon

Voordat u begin met die opstel, kan u seker maak dat u geen afhanklikes mis met die volgende opdrag nie:

rosdep installeer-van-paths src --ignore-src

Installeer meer afhanklikhede van ap-get (dit sal die koppeling nie onderbreek nie, maar 'n fout tydens die opstel)

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

Gaan dan na u catkin -werkruimte -lêergids en begin saamstel:

cd..

catkin_make -j2

Hoop nie u gunsteling versamelingsdrankie het te ver gekom nie. Nadat die opstel klaar is, is ons gereed om die kartering te doen!

Stap 5: Wys tyd

Wys tyd
Wys tyd
Wys tyd
Wys tyd

Doen die snaakse truuk deur iets soos WiFi of Bluetooth -dongle by 'n USB -poort te voeg - ek gebruik 2 USB 2.0 -poorte, een vir Kinect, die ander vir WiFi -dongle.

Op Raspberry Pi doen (Verander die IP -adres na IP -adres van jou Raspberry Pi!): 1ste terminale:

voer ROS_MASTER_URI = https://192.168.0.108: 11311 uit

uitvoer ROS_IP = 192.168.0.108

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

2de terminale:

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/MaxSize 1000: = vals

U sal die uitset sien soos in skermkiekie 1. "Stop RGB -toestel en diepte stroom spoel." dui aan dat Kinect gereed is, maar niks is nog ingeskryf vir die onderwerpe daarvan nie. In die tweede terminaal moet u boodskappe sien oor die kwaliteit van die odom. As u Kinect te vinnig beweeg, sal die kwaliteit van die odom na 0 gaan, en u moet na 'n vorige plek gaan of vanaf 'n skoon databasis begin.

Op u tafelrekenaar met ROS Melodic en rtab_map pakket geïnstalleer (ek raai u aan om 'n Ubuntu-rekenaar daarvoor te gebruik, aangesien voorafgeboude pakkette beskikbaar is vir amd64-argitektuur):

voer ROS_MASTER_URI = https://192.168.0.108: 11311 uit

uitvoer ROS_IP = [jou-lessenaar-rekenaar-ip]

rviz

Voeg MapGraph- en MapCloud -skerms by rviz en kies die ooreenstemmende onderwerpe uit rtab_map. Wel, dit is dit, soet smaak van oorwinning! Gaan voort en maak 'n paar kartering:)

Stap 6: Verwysings

Tydens die skryf van hierdie artikel was daar 'n aantal bronne wat ek geraadpleeg het, meestal forums en GitHub -kwessies. Ek sal hulle hier los.

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

Voeg my by LinkedIn as u enige vrae het en teken in op my YouTube -kanaal om in kennis gestel te word van meer interessante projekte rakende masjienleer en robotika.

Aanbeveel: