Innholdsfortegnelse:

RGB-D SLAM Med Kinect på Raspberry Pi 4 [Buster] ROS Melodic: 6 trinn
RGB-D SLAM Med Kinect på Raspberry Pi 4 [Buster] ROS Melodic: 6 trinn

Video: RGB-D SLAM Med Kinect på Raspberry Pi 4 [Buster] ROS Melodic: 6 trinn

Video: RGB-D SLAM Med Kinect på Raspberry Pi 4 [Buster] ROS Melodic: 6 trinn
Video: Creative Tools skannar och 3D-printar Andreas Lindqvist 2024, Juli
Anonim
Image
Image

I fjor skrev jeg en artikkel om å bygge og installere ROS Melodic på nye (den gang) Raspberry Pi med Debian Buster OS. Artikkelen har fått mye oppmerksomhet både her på Instructables og på andre plattformer. Jeg er veldig glad for at jeg hjalp så mange mennesker med å installere ROS på Raspberry Pi. I den medfølgende videoen demonstrerte jeg også kort et dybdebilde fra Kinect 360. Senere har mange mennesker kontaktet meg på LinkedIn og spurt meg hvordan jeg klarte å bruke Kinect med Raspberry Pi. Jeg ble litt overrasket over spørsmålet, siden prosessen med å gjøre Kinect klar på den tiden tok meg omtrent 3-4 timer og virket ikke ekstremt komplisert. Jeg delte.bash_history-filene mine med alle som spurte meg om problemet, og fant i april endelig tid til å skrive en artikkel om hvordan du installerer Kinect-drivere og utfører RGB-D SLAM med RTAB-MAP ROS. Uke med søvnløse netter etter at jeg begynte å skrive artikkelen, jeg forstår nå hvorfor så mange mennesker stilte meg dette spørsmålet:)

Jeg vil starte med en kort forklaring om hvilke tilnærminger som fungerte og hvilke som ikke fungerte. Deretter forklarer jeg hvordan du installerer Kinect-drivere for bruk med ROS Melodic og til slutt hvordan du konfigurerer maskinen din for RGB-D SLAM med RTAB-MAP ROS.

Trinn 1: Hva fungerte og hva gjorde det ikke

Det er noen få drivere tilgjengelig for Kinect på Raspberry Pi - av dem støttes to av ROS.

OpenNI -drivere - openni_camera -pakke for ROS

libfreenect -drivere - freenect_stack -pakken for ROS

Hvis du ser på deres respektive GitHub -lagre, kan du finne ut at OpenNI -driveren sist er oppdatert for mange år siden og i praksis er EOL i lang tid. ibfreekinect derimot blir oppdatert i tide. Samme for deres respektive ROS -pakker, freenect_stack ble utgitt for ROS melodisk, mens den siste distro openni_camera har listet opp støtte for er Fuerte …

Det er mulig å kompilere og installere OpenNI -driver og openni_camera -pakke på Raspberry Pi for ROS Melodic, selv om det ikke fungerte for meg. For å gjøre det, følg denne veiledningen, trinn 1, 2, 3, på trinn 2 og 3, fjern "-mfloat-abi = softfp" -flagget fra Platform/Linux/Build/Common/Platform. ARM-filen (per råd om dette Github -problem). Klon deretter pakken openni_camera til catkin -arbeidsområdet og kompiler med catkin_make. Det fungerte ikke for meg, men feilen var å lage dybdegenerator mislyktes. Årsak: USB -grensesnitt støttes ikke!

Å bruke libfreenect og freenect_stack ga suksess til slutt, men det var ganske mange problemer å løse, og løsningen var litt hacky, om enn den fungerte veldig stabil (1 time + fortsatt drift).

Trinn 2: Installere Freenect -drivere og Freenect_stack

Installere Freenect -drivere og Freenect_stack
Installere Freenect -drivere og Freenect_stack

Jeg antar at du bruker ROS Melodic Desktop -bildet mitt fra denne artikkelen. Hvis du vil installere i et annet miljø, for eksempel ros_comm image eller i Ubuntu for Raspberry Pi, må du kontrollere at du har nok kunnskap om ROS til å løse problemer som kan oppstå fra denne forskjellen.

La oss starte med å bygge libfreenect-drivere fra kilde, siden apt-get repository forhåndsbygd versjon er for utdatert.

sudo apt-get oppdatering

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

git -klon

cd libfreenect

mkdir build && cd build

cmake -L..

gjøre

sudo gjør install

Forhåpentligvis vil byggeprosessen være hendelsesløs og full av grønne vennlige meldinger. Etter at du har installert libfreenect -driveren, er neste ting å gjøre å installere freenect_stack -pakken for ROS. Det er ganske mange andre pakker det avhenger av, vi må klone dem og bygge med catkin_make alle sammen. Før du starter, må du kontrollere at catkin -arbeidsområdet er riktig konfigurert og hentet!

Fra din catkin workspace src -mappe:

git-klon

git-klon

git-klon

git-klon

git-klon

git -klon

Uff, det var mye kloning.

SENERE REDIGERING: Som det ble påpekt av en av mine lesere, må vision_opencv depot settes til melodisk gren. For den cd -en til src/vision_opencv og kjøre

git checkout melodisk

Gå deretter tilbake til catkin -arbeidsområdet -mappen. For å sjekke om vi er avhengige av alle pakkene som er på plass, utfører vi denne kommandoen:

rosdep installere-fra-stier src --ignore-src

Hvis du klonet alle nødvendige pakker, vil den be om å laste ned libfreekinect med apt-get. Svar nei, siden vi allerede har installert det fra kilden.

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

catkin_make -j2

Te tid;) eller hva din favorittdrink er.

Etter at samlingsprosessen er fullført, kan du prøve å starte kinect -stakken og sjekke om den gir dybde og fargebilder på riktig måte. Jeg bruker Raspberry Pi hodeløs, så jeg må kjøre RVIZ på min stasjonære datamaskin.

På Raspberry Pi gjør (Endre IP -adressen til IP -adressen til Raspberry Pi!):

eksport ROS_MASTER_URI = https://192.168.0.108: 11311

eksport ROS_IP = 192.168.0.108

roslaunch freenect_launch freenect.launch depth_registration: = true

Du vil se utdata som i skjermbilde 1. "Stoppe enhetens RGB og dybdestrømspyling." indikerer at Kinect er klar, men ingenting er abonnert på emnene ennå.

Gjør på den stasjonære datamaskinen med ROS Melodic installert:

eksport ROS_MASTER_URI = https://192.168.0.108: 11311

eksport ROS_IP = [din-stasjonære datamaskin-ip] rviz

Nå bør du kunne se RGB og Depth bildestrømmer i RVIZ som i skjermbilde 2 ovenfor … men ikke samtidig.

Ok, her starter hacky ting. Jeg brukte 3 dager på å prøve forskjellige drivere og tilnærminger, og ingenting fungerte - så snart jeg ville prøve å få tilgang til to strømmer samtidig, ville Kinect begynne å ta ut timene som du kan se i skjermbilde 3. Jeg prøvde alt: bedre strømforsyning, eldre forpliktelser til libfreenect og freenect_stack, stoppe usb_autosuspend, injisere blekemiddel til USB -porter (ok, ikke den siste! ikke gjør det, det er en spøk og skal ikke utgjøre et teknisk råd:)). Så i en av Githubs utgaver så jeg en beretning om en person som sa at Kinect var ustabil, helt til de "lastet USB -bussen" ved å koble til WiFi -dongle. Jeg prøvde det og det fungerte. På den ene siden er jeg glad for at det fungerte. På den annen side burde noen virkelig fikse det. Vel, i mellomtiden har vi (liksom) fikset det, la oss gå videre til neste trinn.

Trinn 3: Installere frittstående RTAB MAP

Installere frittstående RTAB MAP
Installere frittstående RTAB MAP

Først har vi en haug med avhengigheter som skal installeres:

Til tross for at det er en forhåndsbygd armhf -pakke tilgjengelig for PCL, må vi kompilere den fra kilden på grunn av dette problemet. Kontakt PCL GitHub -depotet for å se hvordan du kompilerer det fra kilde.

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

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

La oss nå klone rtab map frittstående pakke git -depot til hjemmemappen vår og bygge den. Jeg brukte den siste versjonen (0.18.0).

git -klon

cd rtabmap/build

cmake..

lage -j2

sudo gjør install

sudo ldconfig rtabmap

Når vi nå har samlet frittstående RTAB MAP, kan vi gå til det siste trinnet - å kompilere og installere ROS wrapper for RTAB MAP, rtabmap_ros.

Trinn 4: Installere Rtabmap_ros

Installerer Rtabmap_ros
Installerer Rtabmap_ros

Hvis du har kommet så langt, kjenner du sannsynligvis øvelsen nå:) Klon rtabmap_ros -depotet til mappen catkin workspace src. (Utfør neste kommando fra din catkin workspace src -mappe!)

git -klon

Vi trenger også disse ROS -pakkene, som rtabmap_ros avhenger av:

git-klon

git-klon

git-klon

git -klon

git-klon

Før du starter kompilering kan du sørge for at du ikke mangler noen avhengigheter med følgende kommando:

rosdep installere-fra-stier src --ignore-src

Installer flere avhengigheter fra ap-get (disse vil ikke avbryte koblingen, men det vil komme en feil under kompilering)

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

Flytt deretter til catkin -arbeidsområdet -mappen og begynn å kompilere:

cd..

catkin_make -j2

Håper du ikke la din favorittsamlingsdrink hvor som helst for langt. Etter at samlingen er ferdig, er vi klare til å gjøre kartleggingen!

Trinn 5: Vis tid

Vis tid
Vis tid
Vis tid
Vis tid

Gjør det hektiske trikset med å legge til noe som WiFi eller Bluetooth -dongle til en USB -port - jeg brukte 2 USB 2.0 -porter, en for Kinect, den andre for WiFi -dongle.

På Raspberry Pi gjør (Endre IP -adressen til IP -adressen til din Raspberry Pi!): 1. terminal:

eksport ROS_MASTER_URI = https://192.168.0.108: 11311

eksport ROS_IP = 192.168.0.108

roslaunch freenect_launch freenect.launch depth_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/MaxSize 1000O: = usant

Du vil se utdataene som i skjermbilde 1. "Stoppe enhetens RGB og dybdestrømspyling." indikerer at Kinect er klar, men ingenting er abonnert på emnene ennå. I den andre terminalen bør du se meldinger om odomkvalitet. Hvis du flytter Kinect for fort, vil kvaliteten på odom gå til 0, og du må flytte til et tidligere sted eller starte fra en ren database.

På din stasjonære datamaskin med ROS Melodic og rtab_map-pakken installert (jeg anbefaler at du bruker Ubuntu-datamaskinen til det, siden forhåndsbygde pakker er tilgjengelige for amd64-arkitektur) gjør:

eksport ROS_MASTER_URI = https://192.168.0.108: 11311

eksport ROS_IP = [din-stasjonære datamaskin-ip]

rviz

Legg til MapGraph og MapCloud -skjermer i rviz og velg de tilsvarende emnene som kommer fra rtab_map. Vel, dette er det, søt smak av seier! Gjør en kartlegging:)

Trinn 6: Referanser

Mens jeg skrev denne artikkelen var det en rekke ressurser jeg konsulterte, for det meste fora og GitHub -spørsmål. Jeg lar dem være her.

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

Legg meg til på LinkedIn hvis du har spørsmål, og abonner på YouTube -kanalen min for å bli varslet om flere interessante prosjekter som involverer maskinlæring og robotikk.

Anbefalt: