Innehållsförteckning:
- Steg 1: Vad som fungerade och vad som inte fungerade
- Steg 2: Installera Freenect -drivrutiner och Freenect_stack
- Steg 3: Installera fristående RTAB MAP
- Steg 4: Installera Rtabmap_ros
- Steg 5: Visa tid
- Steg 6: Referenser
Video: RGB-D SLAM Med Kinect på Raspberry Pi 4 [Buster] ROS Melodic: 6 steg
2024 Författare: John Day | [email protected]. Senast ändrad: 2024-01-30 12:39
Förra året skrev jag en artikel om att bygga och installera ROS Melodic på nya (då) Raspberry Pi med Debian Buster OS. Artikeln har fått mycket uppmärksamhet både här på Instructables och på andra plattformar. Jag är mycket glad att jag hjälpte så många människor att framgångsrikt installera ROS på Raspberry Pi. I den medföljande videon visade jag också kortfattat att få djupbild från Kinect 360. Senare har många människor kontaktat mig på LinkedIn och frågat mig hur jag lyckades använda Kinect med Raspberry Pi. Jag blev lite förvånad över frågan, eftersom processen med att göra Kinect redo vid den tiden tog mig cirka 3-4 timmar och verkade inte extremt komplicerat. Jag delade mina.bash_history-filer med alla som frågade mig om problemet och i april fann jag äntligen tid att skriva en artikel om hur man installerar Kinect-drivrutiner och utför RGB-D SLAM med RTAB-MAP ROS. Vecka med sömnlösa nätter efter att ha börjat skriva artikeln förstår jag nu varför så många ställde mig denna fråga:)
Jag börjar med en kort förklaring om vilka tillvägagångssätt som fungerade och vilka som inte fungerade. Sedan ska jag förklara hur du installerar Kinect-drivrutiner för användning med ROS Melodic och slutligen hur du konfigurerar din maskin för RGB-D SLAM med RTAB-MAP ROS.
Steg 1: Vad som fungerade och vad som inte fungerade
Det finns några få drivrutiner tillgängliga för Kinect på Raspberry Pi - av dem stöds två av ROS.
OpenNI -drivrutiner - openni_camera -paket för ROS
libfreenect -drivrutiner - freenect_stack -paketet för ROS
Om du tittar på deras respektive GitHub -förråd kan du upptäcka att OpenNI -drivrutinen senast har uppdaterats för flera år sedan och i praktiken är EOL under lång tid. ibfreekinect å andra sidan uppdateras i tid. Samma för deras respektive ROS -paket, freenect_stack släpptes för ROS -melodi, medan hans senaste distro openni_camera har listat stöd för är Fuerte …
Det är möjligt att kompilera och installera OpenNI -drivrutinen och openni_camera -paketet på Raspberry Pi för ROS Melodic, även om det inte fungerade för mig. För att göra det, följ den här guiden, steg 1, 2, 3, i steg 2 och 3 tar bort "-mfloat-abi = softfp" -flaggan från plattformen/Linux/Build/Common/Platform. ARM-filen (enligt råd om detta Github -fråga). Klona sedan openni_camera -paketet till din catkin -arbetsyta och kompilera med catkin_make. Det fungerade dock inte för mig, felet var att skapa djupgenerator misslyckades. Orsak: USB -gränssnitt stöds inte!
Att använda libfreenect och freenect_stack gav framgång i slutändan, men det fanns en hel del problem att lösa och lösningen var lite hackig, om än fungerade mycket stabilt (1 timme + fortsatt drift).
Steg 2: Installera Freenect -drivrutiner och Freenect_stack
Jag antar att du använder min ROS Melodic Desktop -bild från den här artikeln. Om du vill installera i en annan miljö, till exempel ros_comm image eller i Ubuntu för Raspberry Pi, se till att du har tillräckligt med kunskap om ROS för att lösa problem som kan uppstå från den skillnaden.
Låt oss börja med att bygga libfreenect-drivrutiner från källan, eftersom apt-get repository förbyggd version är för föråldrad.
sudo apt-get uppdatering
sudo apt-get install libusb-1.0-0-dev
git -klon
cd libfreenect
mkdir build && cd build
cmake -L..
göra
sudo gör installationen
Förhoppningsvis blir byggprocessen händelselös och full av gröna vänliga meddelanden. När du har installerat libfreenect -drivrutinen är nästa steg att installera freenect_stack -paketet för ROS. Det finns en hel del andra paket det beror på, vi måste klona dem och bygga med catkin_make alla tillsammans. Innan du börjar, se till att din catkin -arbetsyta är korrekt inställd och hämtad!
Från din catkin workspace src -mapp:
git-klon
git-klon
git-klon
git-klon
git-klon
git -klon
Oj, det var mycket kloning.
SENARE REDIGERA: Som det påpekades av en av mina läsare måste vision_opencv -förvaret ställas in på melodisk gren. För den cd: n till src/vision_opencv och kör
git checkout melodisk
Gå sedan tillbaka till din catkin -arbetsytemapp. För att kontrollera om vi är beroende av alla paket på plats kör vi det här kommandot:
rosdep installera-från-sökvägar src --ignore-src
Om du lyckades klona alla nödvändiga paket kommer det att begära att ladda ner libfreekinect med apt-get. Svara nej, eftersom vi redan har installerat det från källan.
sudo apt-get install libbullet-dev libharfbuzz-dev libgtk2.0-dev libgtk-3-dev
catkin_make -j2
Te tid;) eller vad din favoritdrink är.
När kompileringsprocessen är klar kan du prova att starta kinect stack och kontrollera om den ger ut djup- och färgbilder korrekt. Jag använder Raspberry Pi utan huvud, så jag måste köra RVIZ på min stationära dator.
På Raspberry Pi gör (Ändra IP -adressen till IP -adressen för din Raspberry Pi!):
exportera ROS_MASTER_URI = https://192.168.0.108: 11311
exportera ROS_IP = 192.168.0.108
roslaunch freenect_launch freenect.launch depth_registration: = true
Du kommer att se utmatning som i Skärmdump 1. "Stoppa enhetens RGB och djupströmspolning." indikerar att Kinect är klart, men inget prenumererar på dess ämnen ännu.
Gör på din stationära dator med ROS Melodic installerat:
exportera ROS_MASTER_URI = https://192.168.0.108: 11311
exportera ROS_IP = [din-stationära-dator-ip] rviz
Nu ska du kunna se RGB- och djupbildströmmar i RVIZ som i skärmdump 2 ovan … men inte samtidigt.
Okej, här börjar hackiga grejer. Jag tillbringade 3 dagar med att försöka olika drivrutiner och tillvägagångssätt och ingenting fungerade - så snart jag skulle försöka komma åt två strömmar samtidigt började Kinect ta ut tid som du kan se i skärmdump 3. Jag försökte allt: bättre strömförsörjning, äldre åtaganden av libfreenect och freenect_stack, stoppa usb_autosuspend, injicera blekmedel till USB -portar (okej, inte den sista! gör det inte, det är ett skämt och ska inte utgöra ett tekniskt råd:)). Sedan i ett av Github -frågorna såg jag ett konto om en person som sa att deras Kinect var instabil tills de "laddade USB -bussen" genom att ansluta WiFi -dongeln. Jag försökte det och det fungerade. Å ena sidan är jag glad att det fungerade. Å andra sidan borde någon verkligen fixa det. Tja, medan vi har (typ) fixat det, låt oss gå vidare till nästa steg.
Steg 3: Installera fristående RTAB MAP
Först har vi ett gäng beroenden som ska installeras:
Trots att det finns ett förbyggt armhf -paket tillgängligt för PCL måste vi kompilera det från källan på grund av det här problemet. Kontakta PCL GitHub -förvaret för att se hur du kompilerar det från källan.
sudo apt-get install libvtk6-dev libvtk6-qt-dev libvtk6-java libvtk6-jni
sudo apt-get install libopencv-dev cmake libopenni2-dev libsqlite3-dev
Låt oss nu klona rtab map fristående paket git -förvar till vår hemmapp och bygga det. Jag använde den senaste versionen (0.18.0).
git -klon
cd rtabmap/build
cmake..
gör -j2
sudo gör installationen
sudo ldconfig rtabmap
När vi nu har sammanställt fristående RTAB MAP kan vi gå vidare till det sista steget - sammanställa och installera ROS -omslag för RTAB MAP, rtabmap_ros.
Steg 4: Installera Rtabmap_ros
Om du kommit så långt känner du förmodligen till övningen nu:) Klon rtabmap_ros -förvaret till din catkin -arbetsytas src -mapp. (Utför nästa kommando från din catkin workspace src -mapp!)
git -klon
Vi behöver också dessa ROS -paket, som rtabmap_ros beror på:
git-klon
git-klon
git-klon
git -klon
git-klon
Innan du börjar kompilering kan du se till att du inte saknar några beroenden med följande kommando:
rosdep installera-från-sökvägar src --ignore-src
Installera fler beroenden från ap-get (dessa kommer inte att avbryta länkningen, utan kommer att ge ett fel under sammanställningen)
sudo apt-get install libsdl-image1.2-dev
Flytta sedan till din catkin -arbetsytemapp och börja kompilera:
CD..
catkin_make -j2
Hoppas att du inte har lagt din favorit samlingsdryck någonstans för långt. När sammanställningen är klar är vi redo att göra kartläggningen!
Steg 5: Visa tid
Gör det hackiga tricket med att lägga till något som WiFi eller Bluetooth -dongel till en USB -port - jag använde 2 USB 2.0 -portar, en för Kinect, den andra för WiFi -dongel.
På Raspberry Pi gör (Ändra IP -adressen till IP -adressen för din Raspberry Pi!): Första terminalen:
exportera ROS_MASTER_URI = https://192.168.0.108: 11311
exportera ROS_IP = 192.168.0.108
roslaunch freenect_launch freenect.launch depth_registration: = true data_skip: = 2
2: a terminalen:
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: = falskt
Du kommer att se utmatning som i Skärmdump 1. "Stoppa enhetens RGB och djupströmspolning." indikerar att Kinect är klart, men inget prenumererar på dess ämnen ännu. I den andra terminalen bör du se meddelanden om odomkvalitet. Om du flyttar Kinect för snabbt kommer odomkvaliteten att gå till 0 och du måste flytta till en tidigare plats eller börja från ren databas.
På din stationära dator med ROS Melodic och rtab_map-paketet installerat (jag rekommenderar att du använder Ubuntu-dator för det, eftersom förbyggda paket är tillgängliga för amd64-arkitektur) gör:
exportera ROS_MASTER_URI = https://192.168.0.108: 11311
exportera ROS_IP = [din-stationära-dator-ip]
rviz
Lägg till MapGraph- och MapCloud -skärmar till rviz och välj motsvarande ämnen från rtab_map. Tja, det här är det, söt smak av seger! Gör en kartläggning:)
Steg 6: Referenser
När jag skrev den här artikeln fanns det ett antal resurser jag konsulterade, mest forum och GitHub -frågor. Jag lämnar dem här.
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
Lägg till mig på LinkedIn om du har några frågor och prenumerera på min YouTube -kanal för att få besked om mer intressanta projekt som involverar maskininlärning och robotik.
Rekommenderad:
ROS Melodic på Raspberry Pi 4 [Debian Buster] + RPLIDAR A1M8: 6 steg
ROS Melodic på Raspberry Pi 4 [Debian Buster] + RPLIDAR A1M8: Denna artikel kommer att behandla processen att installera ROS Melodic Morenia på Raspberry Pi 4 som kör den senaste Debian Buster och hur man använder RPLIDAR A1M8 med vår installation. Sedan Debian Buster släpptes officiellt för bara några veckor sedan (för närvarande
Komma igång med ROS Melodic på Raspberry Pi 4 Modell B: 7 steg
Komma igång med ROS Melodic på Raspberry Pi 4 Model B: Robot Operating System (ROS) är en uppsättning programvarubibliotek och verktyg som används för att bygga robotsystem och applikationer. Den nuvarande långsiktiga serviceversionen av ROS är Melodic Morenia. ROS Melodic är endast kompatibel med Ubuntu 18.04 Bionic Beaver
Installera Raspbian Buster på Raspberry Pi 3. Komma igång med Raspbian Buster med Raspberry Pi 3b / 3b+: 4 steg
Installera Raspbian Buster på Raspberry Pi 3. Komma igång med Raspbian Buster Med Raspberry Pi 3b / 3b+: Hej killar, nyligen lanserade Raspberry pi -organisationen ny Raspbian OS kallad Raspbian Buster. Det är en ny version av Raspbian för Raspberry pi's. Så idag kommer vi att lära oss hur du installerar Raspbian Buster OS på din Raspberry pi 3 i denna instruktion
Hur man gör fjärrstyrd Spike Buster eller Switch Board med fristående Atmega328P: 6 steg (med bilder)
Hur man gör fjärrstyrd Spike Buster eller Switch Board med fristående Atmega328P: I det här projektet kommer jag att visa hur man bygger fjärrstyrd Spike Buster eller Switch Board med fristående Atmega328P. Detta projekt är byggt på ett anpassat kretskort med mycket få komponenter. Om du föredrar att titta på video har jag inbäddat samma eller
Roomblock: en plattform för inlärning av ROS -navigering med Roomba, Raspberry Pi och RPLIDAR: 9 steg (med bilder)
Roomblock: en plattform för inlärning av ROS -navigering med Roomba, Raspberry Pi och RPLIDAR: Vad är detta? &Quot; Roomblock " är en robotplattform som består av en Roomba, en Raspberry Pi 2, en lasersensor (RPLIDAR) och ett mobilbatteri. Monteringsramen kan tillverkas av 3D -skrivare. ROS -navigationssystem gör det möjligt att göra en karta över rum och använda