Inhoudsopgave:
- Stap 1: Wat werkte en wat niet?
- Stap 2: Freenect-stuurprogramma's en Freenect_stack installeren
- Stap 3: Standalone RTAB MAP installeren
- Stap 4: Rtabmap_ros installeren
- Stap 5: Toon tijd
- Stap 6: Referenties
Video: RGB-D SLAM met Kinect op Raspberry Pi 4 [Buster] ROS Melodic - Ajarnpa
2024 Auteur: John Day | [email protected]. Laatst gewijzigd: 2024-01-30 11:15
Vorig jaar schreef ik een artikel over het bouwen en installeren van ROS Melodic op nieuwe (toenmalige) Raspberry Pi met Debian Buster OS. Het artikel heeft veel aandacht gekregen, zowel hier op Instructables als op andere platforms. Ik ben erg blij dat ik zoveel mensen heb geholpen om ROS met succes op Raspberry Pi te installeren. In de begeleidende video heb ik ook kort gedemonstreerd hoe ik een dieptebeeld krijg van Kinect 360. Later hebben talloze mensen contact met me opgenomen op LinkedIn en me gevraagd hoe ik Kinect met Raspberry Pi heb kunnen gebruiken. Ik was een beetje verbaasd over de vraag, aangezien het proces om Kinect op dat moment gereed te maken ongeveer 3-4 uur kostte en niet extreem ingewikkeld leek. Ik deelde mijn.bash_history-bestanden met alle mensen die me informeerden over het probleem en vond in april eindelijk de tijd om een artikel te schrijven over het installeren van Kinect-stuurprogramma's en het uitvoeren van RGB-D SLAM met RTAB-MAP ROS. Week van slapeloze nachten na het schrijven van het artikel begrijp ik nu waarom zoveel mensen me deze vraag stelden:)
Ik zal beginnen met een korte uitleg over welke benaderingen wel en niet werkten. Daarna zal ik uitleggen hoe je Kinect-stuurprogramma's installeert voor gebruik met ROS Melodic en tot slot hoe je je machine instelt voor RGB-D SLAM met RTAB-MAP ROS.
Stap 1: Wat werkte en wat niet?
Er zijn een paar stuurprogramma's beschikbaar voor Kinect op Raspberry Pi - waarvan er twee worden ondersteund door ROS.
OpenNI-stuurprogramma's - openni_camera-pakket voor ROS
libfreenect-stuurprogramma's - freenect_stack-pakket voor ROS
Als je naar hun respectievelijke GitHub-repositories kijkt, kun je zien dat het OpenNI-stuurprogramma jaren geleden voor het laatst is bijgewerkt en in de praktijk EOL voor een lange tijd is. ibfreekinect daarentegen wordt tijdig bijgewerkt. Hetzelfde geldt voor hun respectievelijke ROS-pakketten, freenect_stack werd uitgebracht voor ROS melodic, terwijl de nieuwste distro waar openni_camera ondersteuning voor heeft vermeld Fuerte is …
Het is mogelijk om het OpenNI-stuurprogramma en het openni_camera-pakket op Raspberry Pi voor ROS Melodic te compileren en te installeren, hoewel het bij mij niet werkte. Om dat te doen volgt u deze handleiding, stappen 1, 2, 3, in stap 2 en 3 verwijder de "-mfloat-abi=softfp" vlag uit Platform/Linux/Build/Common/Platform. ARM bestand (volgens advies hierover Github-probleem). Kloon vervolgens het openni_camera-pakket naar uw catkin-werkruimte en compileer met catkin_make. Het werkte echter niet voor mij, de fout was dat het maken van de dieptegenerator mislukte. Reden: USB-interface wordt niet ondersteund!
Het gebruik van libfreenect en freenect_stack leverde uiteindelijk succes op, maar er waren nogal wat problemen om op te lossen en de oplossing was een beetje hacky, zij het zeer stabiel werkend (1 uur + continue werking).
Stap 2: Freenect-stuurprogramma's en Freenect_stack installeren
Ik neem aan dat je mijn ROS Melodic Desktop-afbeelding uit dit artikel gebruikt. Als je de installatie in een andere omgeving wilt doen, bijvoorbeeld ros_comm image of in Ubuntu voor Raspberry Pi, zorg er dan voor dat je voldoende kennis over ROS hebt om problemen op te lossen die uit dat verschil kunnen voortvloeien.
Laten we beginnen met het bouwen van libfreenect-stuurprogramma's vanaf de bron, aangezien de vooraf gebouwde versie van apt-get repository te verouderd is.
sudo apt-get update
sudo apt-get install libusb-1.0-0-dev
git clone
cd libfreenect
mkdir build && cd build
cmake -L..
maken
sudo make install
Hopelijk verloopt het bouwproces rustig en vol groene vriendelijke berichten. Nadat u het libfreenect-stuurprogramma hebt geïnstalleerd, is het volgende dat u moet doen het freenect_stack-pakket voor ROS installeren. Er zijn nogal wat andere pakketten waarvan het afhankelijk is, we zullen ze moeten klonen en samen met catkin_make moeten bouwen. Voordat je begint, zorg ervoor dat je kattenwerkruimte goed is ingesteld en afkomstig is!
Vanuit je catkin workspace src map:
git clone
git clone
git kloon
git clone
git clone
git kloon
Whooh, dat was veel klonen.
LATER BEWERKEN: Zoals een van mijn lezers opmerkte, moet de repository van vision_opencv worden ingesteld op melodic branch. Voor die cd naar src/vision_opencv en uitvoeren
git kassa melodieus
Ga dan terug naar je catkin-werkruimtemap. Voer deze opdracht uit om te controleren of we afhankelijkheden voor alle aanwezige pakketten hebben:
rosdep install --from-paths src --ignore-src
Als je met succes alle benodigde pakketten hebt gekloond, zal het vragen om libfreekinect te downloaden met apt-get. Antwoord nee, omdat we het al vanaf de bron hebben geïnstalleerd.
sudo apt-get install libbullet-dev libharfbuzz-dev libgtk2.0-dev libgtk-3-dev
catkin_make -j2
Tea time;) of wat je favoriete drankje ook is.
Nadat het compilatieproces is voltooid, kunt u proberen de kinect-stack te starten en te controleren of de diepte- en kleurenafbeeldingen correct worden uitgevoerd. Ik gebruik Raspberry Pi zonder hoofd, dus ik moet RVIZ op mijn desktopcomputer uitvoeren.
Op Raspberry Pi doen (verander het IP-adres in het IP-adres van uw Raspberry Pi!):
export ROS_MASTER_URI=https://192.168.0.108:11311
export ROS_IP=192.168.0.108
roslaunch freenect_launch freenect.launch depth_registration:=true
U ziet de uitvoer zoals in Screenshot 1. "Stop apparaat RGB en Depth stream flush." geeft aan dat Kinect klaar is, maar er is nog niets geabonneerd op de onderwerpen.
Op uw desktopcomputer waarop ROS Melodic is geïnstalleerd, doet u het volgende:
export ROS_MASTER_URI=https://192.168.0.108:11311
export ROS_IP=[uw-desktop-computer-ip] rviz
Nu zou je RGB- en Depth-beeldstreams in RVIZ moeten kunnen zien zoals in Screenshot 2 hierboven … maar niet tegelijkertijd.
Oké, hier beginnen hacky-dingen. Ik heb 3 dagen verschillende stuurprogramma's en benaderingen geprobeerd en niets werkte - zodra ik probeerde toegang te krijgen tot twee streams tegelijk, begon de Kinect een time-out te krijgen, zoals je kunt zien in Screenshot 3. Ik heb alles geprobeerd: betere voeding, oudere commits van libfreenect en freenect_stack, usb_autosuspend stoppen, bleekmiddel in de USB-poorten injecteren (oké, niet de laatste! niet doen, het is een grap en zou geen technisch advies moeten zijn:)). Toen zag ik in een van Github's uitgaven een account van een persoon die zei dat hun Kinect onstabiel was, totdat ze "de USB-bus laadden" door een wifi-dongle aan te sluiten. Dat heb ik geprobeerd en het werkte. Aan de ene kant ben ik blij dat het gelukt is. Aan de andere kant, iemand zou dat echt moeten oplossen. Welnu, terwijl we dat (soort van) hebben opgelost, gaan we verder met de volgende stap.
Stap 3: Standalone RTAB MAP installeren
Eerst moeten we een aantal afhankelijkheden installeren:
Ondanks dat er een vooraf gebouwd armhf-pakket beschikbaar is voor PCL, moeten we dit vanwege dit probleem vanaf de broncode compileren. Raadpleeg PCL GitHub-repository om te zien hoe u het vanaf de bron kunt compileren.
sudo apt-get install libvtk6-dev libvtk6-qt-dev libvtk6-java libvtk6-jni
sudo apt-get install libopencv-dev cmake libopenni2-dev libsqlite3-dev
Laten we nu rtab map standalone pakket git repository klonen naar onze thuismap en het bouwen. Ik heb de nieuwste versie (0.18.0) gebruikt.
git kloon
cd rtabmap/build
cmake..
maak -j2
sudo make install
sudo ldconfig rtabmap
Als we nu de standalone RTAB MAP hebben gecompileerd, kunnen we naar de laatste stap gaan - het compileren en installeren van ROS-wrapper voor RTAB MAP, rtabmap_ros.
Stap 4: Rtabmap_ros installeren
Als je zo ver bent gekomen, ken je de oefening nu waarschijnlijk wel:) Kloon de rtabmap_ros-repository naar je catkin workspace src-map. (Voer het volgende commando uit vanuit je catkin workspace src map!)
git kloon
We hebben deze ROS-pakketten ook nodig, waarvan rtabmap_ros afhankelijk is:
git clone
git clone
git clone
git clone
git clone
Voordat u begint met compileren, kunt u ervoor zorgen dat u geen afhankelijkheden mist met de volgende opdracht:
rosdep install --from-paths src --ignore-src
Installeer meer afhankelijkheden van ap-get (deze zullen de koppeling niet onderbreken, maar geven een foutmelding tijdens het compileren)
sudo apt-get install libsdl-image1.2-dev
Ga dan naar je catkin-werkruimtemap en begin met compileren:
cd..
catkin_make -j2
Ik hoop dat je je favoriete compilatiedrankje niet te ver hebt neergezet. Nadat de compilatie is voltooid, zijn we klaar om de mapping te doen!
Stap 5: Toon tijd
Doe die hacky-truc door iets als WiFi of Bluetooth-dongle toe te voegen aan een USB-poort - ik gebruikte 2 USB 2.0-poorten, één voor Kinect, de andere voor WiFi-dongle.
Op Raspberry Pi doe (verander het IP-adres in het IP-adres van uw Raspberry Pi!):1e terminal:
export ROS_MASTER_URI=https://192.168.0.108:11311
export ROS_IP=192.168.0.108
roslaunch freenect_launch freenect.launch depth_registration:=true data_skip:=2
2e aansluitpunt:
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 --Odom 2/:=false
U ziet de uitvoer zoals in Screenshot 1. "Stop apparaat RGB en Depth stream flush." geeft aan dat Kinect klaar is, maar er is nog niets geabonneerd op de onderwerpen. In de tweede terminal zou je berichten over odom-kwaliteit moeten zien. Als u Kinect te snel verplaatst, gaat de odom-kwaliteit naar 0 en moet u naar een vorige locatie gaan of vanuit een schone database beginnen.
Op uw desktopcomputer met ROS Melodic en het rtab_map-pakket geïnstalleerd (ik raad u aan daarvoor een Ubuntu-computer te gebruiken, aangezien er vooraf gebouwde pakketten beschikbaar zijn voor amd64-architectuur):
export ROS_MASTER_URI=https://192.168.0.108:11311
export ROS_IP=[uw-desktop-computer-ip]
rviz
Voeg MapGraph- en MapCloud-schermen toe aan rviz en kies de corresponderende onderwerpen uit rtab_map. Nou, dit is het, zoete smaak van de overwinning! Ga je gang en maak wat kaarten:)
Stap 6: Referenties
Tijdens het schrijven van dit artikel heb ik een aantal bronnen geraadpleegd, voornamelijk forums en GitHub-problemen. Ik laat ze hier.
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 me toe op LinkedIn als je vragen hebt en abonneer je op mijn YouTube-kanaal om op de hoogte te blijven van meer interessante projecten op het gebied van machine learning en robotica.
Aanbevolen:
ROS installeren: 6 stappen
Hoe ROS te installeren: In deze tutorial leer je hoe je ROS installeert. Robot Operating System (ROS) is open-source robotica-middleware en je zult het gebruiken om je Arduino te besturen. Als je meer wilt weten, bezoek dan: http://wiki.ros.org/ROS/Introduction
WiFi-gestuurde eenhoornpet? Met RGB-verlichting: 5 stappen (met afbeeldingen)
WiFi-gestuurde eenhoornpet? Met RGB-verlichting: Hallo allemaal. Mijn kleintje stootte me een tijdje aan over interessante draagbare DIY's met betrekking tot de eenhoorns. Dus ik heb mijn hoofd gekrabd en besloten om iets ongewoons en met een zeer laag budget te creëren. Voor dit project is geen app nodig om door te gaan
Zie Geluidsgolven met gekleurd licht (RGB LED): 10 stappen (met afbeeldingen)
Zie Geluidsgolven met gekleurd licht (RGB LED): Hier kunt u geluidsgolven zien en de interferentiepatronen observeren die door twee of meer transducers worden gemaakt, aangezien de afstand ertussen varieert. (Links, interferentiepatroon met twee microfoons met 40.000 cycli per seconde; rechtsboven, enkele microfoon
Draadloze afstandsbediening met 2,4 GHz NRF24L01-module met Arduino - Nrf24l01 4-kanaals / 6-kanaals zenderontvanger voor quadcopter - RC Helikopter - RC-vliegtuig met Arduino: 5 stappen (met afbeeldingen)
Draadloze afstandsbediening met 2,4 GHz NRF24L01-module met Arduino | Nrf24l01 4-kanaals / 6-kanaals zenderontvanger voor quadcopter | RC Helikopter | Rc-vliegtuig met Arduino: een Rc-auto besturen | Quadcopter | Drone | RC vliegtuig | RC-boot, we hebben altijd een ontvanger en zender nodig, stel dat we voor RC QUADCOPTER een 6-kanaals zender en ontvanger nodig hebben en dat type TX en RX is te duur, dus we gaan er een maken op onze
Een Kinect aansluiten: 8 stappen
Een Kinect aansluiten: Kinect van Microsoft is een veelzijdig multimedia-invoerapparaat dat als 3D-scanner kan worden gebruikt. Oorspronkelijk werd het gelanceerd als een uitbreiding op de Xbox-gameconsole. We beschrijven hoe je een Kinect aansluit op je Windows-pc. Nintendo's Wii-spelconsole i