Indholdsfortegnelse:

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

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

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

Sidste år skrev jeg en artikel om at bygge og installere ROS Melodic på nye (på det tidspunkt) Raspberry Pi med Debian Buster OS. Artiklen har fået stor opmærksomhed både her på Instructables og på andre platforme. Jeg er meget glad for, at jeg hjalp så mange mennesker med at installere ROS på Raspberry Pi. I den medfølgende video demonstrerede jeg også kortvarigt at få dybdebillede fra Kinect 360. Senere har mange mennesker kontaktet mig på LinkedIn og spurgt mig, hvordan jeg formåede at bruge Kinect med Raspberry Pi. Jeg var lidt overrasket over spørgsmålet, da processen med at gøre Kinect klar på det tidspunkt tog mig cirka 3-4 timer og ikke virkede ekstremt kompliceret. Jeg delte mine.bash_history-filer med alle de mennesker, der forespurgte mig om problemet, og fandt i april endelig tid til at skrive en artikel om, hvordan man installerer Kinect-drivere og udfører RGB-D SLAM med RTAB-MAP ROS. Uge med søvnløse nætter efter at have begyndt at skrive artiklen, jeg forstår nu, hvorfor så mange mennesker stillede mig dette spørgsmål:)

Jeg vil starte med en kort forklaring om, hvilke tilgange der virkede, og hvilke der ikke fungerede. Derefter vil jeg forklare, hvordan du installerer Kinect-drivere til brug med ROS Melodic og endelig hvordan du konfigurerer din maskine til RGB-D SLAM med RTAB-MAP ROS.

Trin 1: Hvad virkede, og hvad virkede ikke

Der er et par drivere til rådighed for Kinect på Raspberry Pi - ud af dem understøttes to af ROS.

OpenNI -drivere - openni_camera -pakke til ROS

libfreenect drivere - freenect_stack pakke til ROS

Hvis du ser på deres respektive GitHub -depoter, kan du opdage, at OpenNI -driveren sidst er blevet opdateret for mange år siden og i praksis er EOL i lang tid. ibfreekinect derimod opdateres rettidigt. Samme for deres respektive ROS -pakker, freenect_stack blev frigivet til ROS melodisk, mens den sidste distro openni_camera har angivet support til Fuerte …

Det er muligt at kompilere og installere OpenNI -driver og openni_camera -pakke på Raspberry Pi til ROS Melodic, selvom det ikke fungerede for mig. For at gøre det skal du følge denne vejledning, trin 1, 2, 3, på trin 2 og 3 fjerne "-mfloat-abi = softfp" -flaget fra Platform/Linux/Build/Common/Platform. ARM-fil (pr. Råd om dette Github -problem). Klon derefter openni_camera -pakken til dit catkin -arbejdsområde, og kompilér med catkin_make. Det fungerede dog ikke for mig, fejlen var at skabe dybdegenerator mislykkedes. Årsag: USB -interface understøttes ikke!

Brug af libfreenect og freenect_stack gav succes i sidste ende, men der var en del problemer at løse, og løsningen var en smule hacky, om end den fungerede meget stabil (1 time + fortsat drift).

Trin 2: Installation af Freenect -drivere og Freenect_stack

Installation af Freenect -drivere og Freenect_stack
Installation af Freenect -drivere og Freenect_stack

Jeg går ud fra, at du bruger mit ROS Melodic Desktop -billede fra denne artikel. Hvis du vil installere i forskellige omgivelser, f.eks. Ros_comm image eller i Ubuntu til Raspberry Pi, skal du sørge for at have nok viden om ROS til at løse problemer, der kan opstå som følge af denne forskel.

Lad os starte med at opbygge libfreenect-drivere fra kilde, da apt-get repository forudbygget version er for forældet.

sudo apt-get opdatering

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

git -klon

cd libfreenect

mkdir build && cd build

cmake -L..

lave

sudo foretag installation

Forhåbentlig vil byggeprocessen være begivenhedsløs og fuld af grønne venlige beskeder. Når du har installeret libfreenect -driveren, er næste ting at gøre at installere freenect_stack -pakken til ROS. Der er en hel del andre pakker, det afhænger af, vi bliver nødt til at klone dem og bygge med catkin_make alle sammen. Inden du starter, skal du sørge for, at dit catkin -arbejdsområde er korrekt konfigureret og hentet!

Fra din catkin workspace src -mappe:

git-klon

git-klon

git-klon

git-klon

git-klon

git -klon

Uha, det var meget kloning.

SENERE REDIGERING: Som det blev påpeget af en af mine læsere, skal vision_opencv -depot sættes til melodisk gren. Til den cd til src/vision_opencv og udføre

git checkout melodisk

Gå derefter tilbage til din catkin -arbejdsområdemappe. For at kontrollere, om vi afhængigheder for alle pakker på plads, udfører denne kommando:

rosdep installer-fra-stier src --ignore-src

Hvis du har klonet alle de nødvendige pakker, vil den anmode om at downloade libfreekinect med apt-get. Svar nej, da vi allerede har installeret det fra kilden.

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

catkin_make -j2

Te tid;) eller hvad din yndlingsdrink er.

Når kompileringsprocessen er afsluttet, kan du prøve at starte kinect -stakken og kontrollere, om den sender dybde- og farvebillederne korrekt. Jeg bruger Raspberry Pi hovedløs, så jeg skal køre RVIZ på min stationære computer.

På Raspberry Pi gør (Skift IP -adressen til IP -adressen på din 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 output som i skærmbillede 1. "Standsning af enhedens RGB og dybdestrømskylning." angiver, at Kinect er klar, men intet er abonneret på dets emner endnu.

Gør på din stationære computer med ROS Melodic installeret:

eksport ROS_MASTER_URI = https://192.168.0.108: 11311

eksport ROS_IP = [din-desktop-computer-ip] rviz

Nu skulle du kunne se RGB og Dybde billedstrømme i RVIZ som i Skærmbillede 2 ovenfor … men ikke på samme tid.

Okay, her starter hacky ting. Jeg brugte 3 dage på at prøve forskellige drivere og tilgange, og intet virkede - så snart jeg ville prøve at få adgang til to streams samtidigt, ville Kinect begynde at time -out, som du kan se i skærmbillede 3. Jeg prøvede alt: bedre strømforsyning, ældre forpligtelser til libfreenect og freenect_stack, stop usb_autosuspend, injicering af blegemiddel til USB -porte (okay, ikke den sidste! gør det ikke, det er en joke og bør ikke udgøre et teknisk råd:)). Så i et af Githubs spørgsmål så jeg en beretning om en person, der sagde, at deres Kinect var ustabil, indtil de "indlæste USB -bussen" ved at tilslutte WiFi -dongle. Jeg prøvede det, og det virkede. På den ene side er jeg glad for, at det virkede. På den anden side burde nogen virkelig rette det. Nå, imens vi har (slags) fikset det, lad os gå videre til det næste trin.

Trin 3: Installation af Standalone RTAB MAP

Installation af standalone RTAB MAP
Installation af standalone RTAB MAP

Først har vi en masse afhængigheder, der skal installeres:

På trods af at der er en forudbygget armhf -pakke til rådighed til PCL, skal vi kompilere den fra kilden på grund af dette problem. Kontakt PCL GitHub -depot for at 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

Lad os nu klone rtab map standalone package git repository til vores hjemmemappe og bygge den. Jeg brugte den seneste version (0.18.0).

git -klon

cd rtabmap/build

cmake..

lav -j2

sudo foretag installation

sudo ldconfig rtabmap

Når vi nu har samlet selvstændig RTAB MAP, kan vi gå videre til det sidste trin - kompilering og installation af ROS -indpakning til RTAB MAP, rtabmap_ros.

Trin 4: Installation af Rtabmap_ros

Installation af Rtabmap_ros
Installation af Rtabmap_ros

Hvis du nåede så langt, kender du sikkert boremaskinen nu:) Klon rtabmap_ros -depotet til din catkin -arbejdsområde src -mappe. (Udfør næste kommando fra din catkin workspace src -mappe!)

git -klon

Vi får også brug for disse ROS -pakker, som rtabmap_ros afhænger af:

git-klon

git-klon

git-klon

git -klon

git-klon

Inden du starter kompilering kan du sikre dig, at du ikke mangler nogen afhængigheder med følgende kommando:

rosdep installer-fra-stier src --ignore-src

Installer flere afhængigheder fra ap-get (disse afbryder ikke forbindelsen, men udsender en fejl under kompilering)

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

Flyt derefter til din catkin -arbejdsområdemappe og begynd at kompilere:

cd..

catkin_make -j2

Håber du ikke har lagt din yndlingssamlingsdrink nogen steder for langt. Når kompileringen er færdig, er vi klar til at lave kortlægningen!

Trin 5: Vis tid

Vis tid
Vis tid
Vis tid
Vis tid

Gør det hacky trick med at tilføje noget som WiFi eller Bluetooth -dongle til en USB -port - jeg brugte 2 USB 2.0 -porte, den ene til Kinect, den anden til WiFi -dongle.

På Raspberry Pi gør (Skift IP -adressen til IP -adressen på 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 1000: = falsk

Du vil se output som i skærmbillede 1. "Standsning af enhedens RGB og dybdestrømskylning." angiver, at Kinect er klar, men der er endnu ikke noget, der abonnerer på dets emner. I anden terminal skulle du se meddelelser om odom -kvalitet. Hvis du flytter Kinect for hurtigt, vil odom -kvaliteten gå til 0, og du skal flytte til et tidligere sted eller starte fra ren database.

På din stationære computer med ROS Melodic og rtab_map-pakken installeret (jeg anbefaler, at du bruger Ubuntu-computer til det, da præbyggede pakker er tilgængelige til amd64-arkitektur) gør:

eksport ROS_MASTER_URI = https://192.168.0.108: 11311

eksport ROS_IP = [din-desktop-computer-ip]

rviz

Føj MapGraph- og MapCloud -skærme til rviz, og vælg de tilsvarende emner, der kommer fra rtab_map. Nå, det er det, søde smag af sejr! Fortsæt med at lave en kortlægning:)

Trin 6: Referencer

Mens jeg skrev denne artikel, var der en række ressourcer, jeg konsulterede, mest fora og GitHub -spørgsmål. Jeg lader 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

Tilføj mig på LinkedIn, hvis du har spørgsmål, og tilmeld dig min YouTube -kanal for at få besked om flere interessante projekter, der involverer maskinlæring og robotik.

Anbefalede: