Sommario:
- Passaggio 1: cosa ha funzionato e cosa no
- Passaggio 2: installazione dei driver Freenect e Freenect_stack
- Passaggio 3: installazione di RTAB MAP autonomo
- Passaggio 4: installazione di Rtabmap_ros
- Passaggio 5: mostra l'ora
- Passaggio 6: riferimenti
Video: RGB-D SLAM con Kinect su Raspberry Pi 4 [Buster] ROS Melodic: 6 passaggi
2024 Autore: John Day | [email protected]. Ultima modifica: 2024-01-30 10:01
L'anno scorso ho scritto un articolo sulla creazione e l'installazione di ROS Melodic sul nuovo (a quel tempo) Raspberry Pi con il sistema operativo Debian Buster. L'articolo ha ricevuto molta attenzione sia qui su Instructables che su altre piattaforme. Sono molto contento di aver aiutato così tante persone a installare con successo ROS su Raspberry Pi. Nel video di accompagnamento ho anche dimostrato brevemente come ottenere un'immagine di profondità da Kinect 360. Successivamente numerose persone mi hanno contattato su LinkedIn e mi hanno chiesto come sono riuscito a utilizzare Kinect con Raspberry Pi. Sono rimasto un po' sorpreso dalla domanda, dal momento che il processo per preparare Kinect in quel momento mi ha richiesto circa 3-4 ore e non sembrava estremamente complicato. Ho condiviso i miei file.bash_history con tutte le persone che mi hanno chiesto informazioni sul problema e ad aprile ho finalmente trovato il tempo per scrivere un articolo su come installare i driver Kinect ed eseguire RGB-D SLAM con RTAB-MAP ROS. Settimana di notti insonni dopo aver iniziato a scrivere l'articolo ora capisco perché così tante persone mi hanno fatto questa domanda:)
Inizierò con una breve spiegazione su quali approcci hanno funzionato e quali no. Poi spiegherò come installare i driver Kinect per l'uso con ROS Melodic e infine come configurare la tua macchina per RGB-D SLAM con RTAB-MAP ROS.
Passaggio 1: cosa ha funzionato e cosa no
Ci sono alcuni driver disponibili per Kinect su Raspberry Pi - di questi due sono supportati da ROS.
Driver OpenNI - pacchetto openni_camera per ROS
driver libfreenect - pacchetto freenect_stack per ROS
Se guardi i loro rispettivi repository GitHub, puoi scoprire che il driver OpenNI è stato aggiornato l'ultima volta anni fa e in pratica è EOL da molto tempo. ibfreekinect d'altra parte viene aggiornato tempestivamente. Lo stesso per i rispettivi pacchetti ROS, freenect_stack è stato rilasciato per ROS melodic, mentre l'ultima distro per cui openni_camera ha elencato il supporto è Fuerte…
È possibile compilare e installare il driver OpenNI e il pacchetto openni_camera su Raspberry Pi per ROS Melodic, anche se non ha funzionato per me. Per farlo, segui questa guida, passaggi 1, 2, 3, passaggi 2 e 3, rimuovi il flag "-mfloat-abi=softfp" dal file Platform/Linux/Build/Common/Platform. ARM (per consiglio su questo problema Github). Quindi clona il pacchetto openni_camera nel tuo spazio di lavoro catkin e compila con catkin_make. Tuttavia, non ha funzionato per me, l'errore stava creando un generatore di profondità non riuscito. Motivo: l'interfaccia USB non è supportata!
L'uso di libfreenect e freenect_stack ha avuto successo alla fine, ma c'erano alcuni problemi da risolvere e la soluzione era un po' complicata, sebbene funzionasse in modo molto stabile (1 ora + funzionamento continuato).
Passaggio 2: installazione dei driver Freenect e Freenect_stack
Presumo che tu usi la mia immagine di ROS Melodic Desktop da questo articolo. Se vuoi eseguire l'installazione in un ambiente diverso, ad esempio ros_comm image o in Ubuntu per Raspberry Pi, assicurati di avere una conoscenza sufficiente di ROS per risolvere i problemi che potrebbero derivare da tale differenza.
Iniziamo compilando i driver libfreenect dai sorgenti, poiché la versione precompilata del repository apt-get è troppo obsoleta.
sudo apt-get update
sudo apt-get install libusb-1.0-0-dev
git clone
cd libfreenect
mkdir build && build cd
cmake -L..
fare
sudo make install
Si spera che il processo di costruzione sia tranquillo e pieno di messaggi ecologici. Dopo aver installato il driver libfreenect, la prossima cosa da fare è installare il pacchetto freenect_stack per ROS. Ci sono molti altri pacchetti da cui dipende, dovremo clonarli e costruire con catkin_make tutti insieme. Prima di iniziare, assicurati che il tuo spazio di lavoro Catkin sia configurato e acquistato correttamente!
Dalla cartella src dell'area di lavoro Catkin:
git clone
git clone
git clone
git clone
git clone
git clone
Whooh, era un sacco di clonazione.
EDIT DOPO: Come è stato sottolineato da uno dei miei lettori, il repository vision_opencv deve essere impostato sul ramo melodico. Per quel cd su src/vision_opencv ed esegui
git checkout melodic
Quindi torna alla cartella dell'area di lavoro di Catkin. Per verificare se abbiamo dipendenze per tutti i pacchetti in atto, eseguiamo questo comando:
rosdep install --from-paths src --ignore-src
Se hai clonato con successo tutti i pacchetti necessari, verrà richiesto di scaricare libfreekinect con apt-get. Rispondi no, poiché l'abbiamo già installato dalla fonte.
sudo apt-get install libbullet-dev libharfbuzz-dev libgtk2.0-dev libgtk-3-dev
catkin_make -j2
L'ora del tè;) o qualunque sia la tua bevanda preferita.
Dopo che il processo di compilazione è terminato, puoi provare a lanciare lo stack kinect e controllare se emette correttamente le immagini di profondità e colore. Uso Raspberry Pi senza testa, quindi ho bisogno di eseguire RVIZ sul mio computer desktop.
Su Raspberry Pi fai (cambia l'indirizzo IP con l'indirizzo IP del tuo Raspberry Pi!):
esporta ROS_MASTER_URI=https://192.168.0.108:11311
esporta ROS_IP=192.168.0.108
roslaunch freenect_launch freenect.launch depth_registration:=true
Vedrai l'output come nella schermata 1. "Arresto dispositivo RGB e flusso di profondità flush". indica che Kinect è pronto, ma non è ancora stato sottoscritto nulla ai suoi argomenti.
Sul tuo computer desktop con ROS Melodic installato fai:
esporta ROS_MASTER_URI=https://192.168.0.108:11311
export ROS_IP=[your-desktop-computer-ip] rviz
Ora dovresti essere in grado di vedere i flussi di immagini RGB e Depth in RVIZ come nella schermata 2 sopra… ma non allo stesso tempo.
Ok, qui è dove iniziano le cose hacky. Ho passato 3 giorni a provare diversi driver e approcci e niente ha funzionato: non appena provavo ad accedere a due flussi contemporaneamente, il Kinect iniziava a scadere come puoi vedere nella schermata 3. Ho provato di tutto: migliore alimentazione, commit più vecchi di libfreenect e freenect_stack, fermando usb_autosuspend, iniettando candeggina alle porte USB (ok, non l'ultima! non farlo, è uno scherzo e non dovrebbe costituire un consiglio tecnico:)). Quindi in uno dei problemi di Github ho visto un account di una persona che ha affermato che il proprio Kinect era instabile, fino a quando non ha "caricato il bus USB" collegando il dongle WiFi. L'ho provato e ha funzionato. Da un lato, sono contento che abbia funzionato. D'altra parte, qualcuno dovrebbe davvero aggiustarlo. Bene, nel frattempo dopo aver (più o meno) risolto il problema, passiamo al passaggio successivo.
Passaggio 3: installazione di RTAB MAP autonomo
Per prima cosa abbiamo un mucchio di dipendenze da installare:
Nonostante sia disponibile un pacchetto armhf precompilato per PCL, sarà necessario compilarlo dai sorgenti a causa di questo problema. Consultare il repository GitHub di PCL per vedere come compilarlo dal sorgente.
sudo apt-get install libvtk6-dev libvtk6-qt-dev libvtk6-java libvtk6-jni
sudo apt-get install libopencv-dev cmake libopenni2-dev libsqlite3-dev
Ora cloniamo rtab mappa il repository git del pacchetto standalone nella nostra cartella home e costruiamolo. Ho usato l'ultima versione (0.18.0).
git clone
cd rtabmap/build
cmq..
make -j2
sudo make install
sudo ldconfig rtabmap
Ora che abbiamo compilato RTAB MAP autonomo, possiamo passare all'ultimo passaggio: compilare e installare il wrapper ROS per RTAB MAP, rtabmap_ros.
Passaggio 4: installazione di Rtabmap_ros
Se sei arrivato così lontano, probabilmente conosci il trapano ormai:) Clona il repository rtabmap_ros nella cartella src del tuo spazio di lavoro catkin. (Esegui il comando successivo dalla cartella src dell'area di lavoro catkin!)
git clone
Avremo bisogno anche di questi pacchetti ROS, da cui rtabmap_ros dipende:
git clone
git clone
git clone
git clone
git clone
Prima di iniziare la compilazione puoi assicurarti di non perdere alcuna dipendenza con il seguente comando:
rosdep install --from-paths src --ignore-src
Installa più dipendenze da ap-get (queste non interromperanno il collegamento, ma genereranno un errore durante la compilazione)
sudo apt-get install libsdl-image1.2-dev
Quindi spostati nella cartella dell'area di lavoro di Catkin e inizia a compilare:
cd..
catkin_make -j2
Spero che tu non abbia esagerato con la tua compilation preferita. Dopo che la compilazione è terminata, siamo pronti per eseguire la mappatura!
Passaggio 5: mostra l'ora
Fai quel trucco stravagante aggiungendo qualcosa come WiFi o dongle Bluetooth a una porta USB: stavo usando 2 porte USB 2.0, una per Kinect, l'altra per il dongle WiFi.
Su Raspberry Pi fai (cambia l'indirizzo IP con l'indirizzo IP del tuo Raspberry Pi!): 1 ° terminale:
esporta ROS_MASTER_URI=https://192.168.0.108:11311
esporta ROS_IP=192.168.0.108
roslaunch freenect_launch freenect.launch depth_registration:=true data_skip:=2
2° 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 Decimation 1000 --Odom 2":=falso
Vedrai l'output come nella schermata 1. "Arresto del dispositivo RGB e flusso di profondità flush". indica che Kinect è pronto, ma non è ancora iscritto ai suoi argomenti. Nel secondo terminale dovresti vedere messaggi sulla qualità di odom. Se sposti Kinect troppo velocemente, la qualità di odom andrà a 0 e dovrai spostarti in una posizione precedente o iniziare da un database pulito.
Sul tuo computer desktop con ROS Melodic e il pacchetto rtab_map installati (ti consiglio di usare un computer Ubuntu per questo, poiché i pacchetti precompilati sono disponibili per l'architettura amd64) fai:
esporta ROS_MASTER_URI=https://192.168.0.108:11311
export ROS_IP=[your-desktop-computer-ip]
rviz
Aggiungi i display MapGraph e MapCloud a rviz e scegli gli argomenti corrispondenti provenienti da rtab_map. Bene, questo è tutto, dolce gusto della vittoria! Vai avanti e fai un po 'di mappatura:)
Passaggio 6: riferimenti
Durante la scrittura di questo articolo ho consultato una serie di risorse, principalmente forum e problemi con GitHub. Li lascio qui.
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
Aggiungimi su LinkedIn se hai domande e iscriviti al mio canale YouTube per ricevere notifiche su progetti più interessanti che coinvolgono l'apprendimento automatico e la robotica.
Consigliato:
Testa di manichino con localizzazione del suono con Kinect: 9 passaggi (con immagini)
Testa di manichino con localizzazione del suono con Kinect: ecco Margaret, un manichino di prova per un sistema di monitoraggio della fatica del conducente. Di recente si è ritirata dai suoi doveri e ha trovato la sua strada per il nostro ufficio, e da allora ha attirato l'attenzione di coloro che pensano che sia "inquietante". Nell'interesse della giustizia, ho
ROS Melodic su Raspberry Pi 4 [Debian Buster] + RPLIDAR A1M8: 6 passaggi
ROS Melodic su Raspberry Pi 4 [Debian Buster] + RPLIDAR A1M8: questo articolo tratterà il processo di installazione di ROS Melodic Morenia su Raspberry Pi 4 con l'ultimo Debian Buster e come utilizzare RPLIDAR A1M8 con la nostra installazione. Dato che Debian Buster è stato rilasciato ufficialmente solo poche settimane fa (al momento
Iniziare con ROS Melodic su Raspberry Pi 4 Modello B: 7 passaggi
Introduzione a ROS Melodic su Raspberry Pi 4 Modello B: Il Robot Operating System (ROS) è un insieme di librerie software e strumenti utilizzati per creare sistemi e applicazioni robotici. L'attuale versione di servizio a lungo termine di ROS è Melodic Morenia. ROS Melodic è compatibile solo con Ubuntu 18.04 Bionic Beaver
Installazione di Raspbian Buster su Raspberry Pi 3 - Iniziare con Raspbian Buster con Raspberry Pi 3b / 3b+: 4 passaggi
Installazione di Raspbian Buster su Raspberry Pi 3 | Introduzione a Raspbian Buster Con Raspberry Pi 3b / 3b+: Ciao ragazzi, recentemente l'organizzazione Raspberry Pi ha lanciato il nuovo sistema operativo Raspbian chiamato Raspbian Buster. È una nuova versione di Raspbian per Raspberry pi. Quindi oggi in questo tutorial impareremo come installare il sistema operativo Raspbian Buster sul tuo Raspberry pi 3
Roomblock: una piattaforma per l'apprendimento della navigazione ROS con Roomba, Raspberry Pi e RPLIDAR: 9 passaggi (con immagini)
Roomblock: una piattaforma per l'apprendimento della navigazione ROS con Roomba, Raspberry Pi e RPLIDAR: cos'è questo?"Roomblock" è una piattaforma robotica composta da un Roomba, un Raspberry Pi 2, un sensore laser (RPLIDAR) e una batteria mobile. Il telaio di montaggio può essere realizzato con stampanti 3D. Il sistema di navigazione ROS consente di creare una mappa delle stanze e utilizzare i