Taula de continguts:

RGB-D SLAM Amb Kinect a Raspberry Pi 4 [Buster] ROS Melòdic: 6 passos
RGB-D SLAM Amb Kinect a Raspberry Pi 4 [Buster] ROS Melòdic: 6 passos

Vídeo: RGB-D SLAM Amb Kinect a Raspberry Pi 4 [Buster] ROS Melòdic: 6 passos

Vídeo: RGB-D SLAM Amb Kinect a Raspberry Pi 4 [Buster] ROS Melòdic: 6 passos
Vídeo: First tests of Kinnect 2024, De novembre
Anonim
Image
Image

L’any passat vaig escriure un article sobre la construcció i instal·lació de ROS Melodic al nou (en aquell moment) Raspberry Pi amb el sistema operatiu Debian Buster. L’article ha rebut molta atenció tant a Instructables com a altres plataformes. Estic molt content d’haver ajudat tanta gent a instal·lar ROS amb èxit a Raspberry Pi. Al vídeo que l’acompanya també vaig demostrar breument que obtenia una imatge de profunditat de Kinect 360. Més tard, moltes persones s’han posat en contacte amb mi a LinkedIn i m’han preguntat com he aconseguit utilitzar Kinect amb Raspberry Pi. Em va sorprendre una mica la pregunta, ja que el procés de preparació de Kinect en aquell moment em va portar unes 3-4 hores i no semblava extremadament complicat. Vaig compartir els meus fitxers.bash_history amb tota la gent que em preguntava sobre el problema i finalment a l’abril vaig trobar el moment d’escriure un article sobre com instal·lar els controladors de Kinect i realitzar RGB-D SLAM amb RTAB-MAP ROS. Setmana de nits sense dormir després de començar a escriure l'article ara entenc per què tanta gent em va fer aquesta pregunta:)

Començaré amb una breu explicació sobre quins enfocaments van funcionar i quins no. A continuació, explicaré com instal·lar els controladors de Kinect per utilitzar-los amb ROS Melodic i, finalment, com configurar la vostra màquina per a RGB-D SLAM amb RTAB-MAP ROS.

Pas 1: què ha funcionat i què no

Hi ha alguns controladors disponibles per a Kinect a Raspberry Pi; d’ells dos són compatibles amb ROS.

Controladors OpenNI: paquet openni_camera per ROS

controladors libfreenect: paquet freenect_stack per ROS

Si mireu els seus respectius repositoris de GitHub, podeu trobar que el controlador OpenNI s’ha actualitzat per última vegada fa anys i que a la pràctica és EOL durant molt de temps. Per altra banda, ibfreekinect s’està actualitzant a temps. El mateix per als seus respectius paquets ROS, freenect_stack es va llançar per a ROS melodic, mentre que la darrera distribució openni_camera ha inclòs el suport de Fuerte …

És possible compilar i instal·lar el controlador OpenNI i el paquet openni_camera a Raspberry Pi per ROS Melodic, tot i que no va funcionar per a mi. Per fer-ho, seguiu aquesta guia, passos 1, 2, 3, als passos 2 i 3, traieu el senyalador "-mfloat-abi = softfp" del fitxer Platform / Linux / Build / Common / Platform. ARM (per consell sobre això Número Github). A continuació, cloneu el paquet openni_camera al vostre espai de treball catkin i compileu-lo amb catkin_make. Tanmateix, no em va funcionar, l'error en crear el generador de profunditat va fallar. Motiu: la interfície USB no és compatible.

L’ús de libfreenect i freenect_stack va donar èxit al final, però hi havia força problemes per resoldre i la solució era una mica complicada, tot i que funcionava molt estable (1 hora + funcionament continuat).

Pas 2: Instal·lació de controladors Freenect i Freenect_stack

Instal·lació de controladors Freenect i Freenect_stack
Instal·lació de controladors Freenect i Freenect_stack

Suposo que utilitzeu la meva imatge d’escriptori melòdic ROS d’aquest article. Si voleu fer la instal·lació en entorns diferents, per exemple, la imatge ros_comm o a Ubuntu per a Raspberry Pi, assegureu-vos que teniu prou coneixement sobre ROS per resoldre els problemes que puguin derivar-se d’aquesta diferència.

Comencem creant controladors de libfreenect des de la font, ja que la versió pre-construïda del dipòsit apt-get és massa obsoleta.

sudo apt-get update

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

git clone

cd libfreenect

mkdir build && cd build

cmake -L..

fer

sudo make install

Tant de bo que el procés de compilació no tingui cap incident i estigui ple de missatges ecològics. Després d’instal·lar el controlador libfreenect, el següent que cal fer és instal·lar el paquet freenect_stack per a ROS. Hi ha molts altres paquets dels quals depèn, els haurem de clonar i construir amb catkin_make tots junts. Abans de començar, assegureu-vos que l’espai de treball de la vostra empresa de gatets estigui ben configurat i obtingut.

Des de la carpeta src de catkin workspace:

git clone

git clone

git clone

git clone

git clone

git clone

Vaja, va ser molta clonació.

EDICIÓ POSTERIOR: Tal com va assenyalar un dels meus lectors, cal que el repositori vision_opencv estigui configurat en branca melòdica. Per a aquest cd a src / vision_opencv i executar-lo

git checkout melòdic

A continuació, torneu a la carpeta de l'espai de treball Catkin. Per comprovar si tenim dependències per a tots els paquets al lloc, executem aquesta ordre:

rosdep install --from-routes src --ignore-src

Si heu clonat amb èxit tots els paquets necessaris, us sol·licitarà descarregar libfreekinect amb apt-get. Responeu que no, ja que ja l’hem instal·lat des de la font.

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

fer_petrell -j2

Hora del te;) o el que sigui la vostra beguda preferida.

Un cop finalitzat el procés de recopilació, podeu provar d'iniciar la pila kinect i comprovar si emet correctament les imatges de profunditat i color. Faig servir Raspberry Pi sense cap, de manera que he d’executar RVIZ a l’ordinador de sobretaula.

A Raspberry Pi (canvieu l'adreça IP a l'adreça IP del vostre Raspberry Pi!):

exportació ROS_MASTER_URI = https://192.168.0.108: 11311

exportació ROS_IP = 192.168.0.108

roslaunch freenect_launch freenect.launch depth_registration: = true

Veureu la sortida com es mostra a la captura de pantalla 1. "Aturar el RGB del dispositiu i el flux de profunditat". indica que Kinect està a punt, però encara no hi ha res subscrit als seus temes.

A l'ordinador d'escriptori amb ROS Melodic instal·lat, feu el següent:

exportació ROS_MASTER_URI = https://192.168.0.108: 11311

export ROS_IP = [your-desktop-computer-ip] rviz

Ara hauríeu de poder veure fluxos d’imatges RGB i Profunditat a RVIZ com a la captura de pantalla 2 anterior … però no al mateix temps.

D’acord, aquí és on comencen les coses pirates. Vaig passar 3 dies provant diferents controladors i enfocaments i res no funcionava; tan bon punt provaria d’accedir a dos fluxos simultàniament, el Kinect començaria a expirar, tal com es pot veure a la captura de pantalla 3. Ho vaig provar tot: millor alimentació, compromisos antics de libfreenect i freenect_stack, aturar usb_autosuspend, injectar lleixiu als ports USB (està bé, no és l'últim! no ho feu, és una broma i no hauria de constituir un consell tècnic:)). Després, en un dels números de Github, vaig veure un relat d’una persona que deia que el seu Kinect era inestable, fins que va "carregar el bus USB" connectant el dongle WiFi. Ho vaig intentar i va funcionar. D’una banda, m’alegro que hagi funcionat. D'altra banda, algú hauria de solucionar-ho realment. Bé, mentrestant tenint (una mica) solucionat això, passem al següent pas.

Pas 3: Instal·lació de RTAB MAP autònom

Instal·lació de RTAB MAP autònom
Instal·lació de RTAB MAP autònom

En primer lloc, hem d’instal·lar un munt de dependències:

Tot i que hi ha un paquet armhf predefinit disponible per a PCL, haurem de compilar-lo des de l'origen a causa d'aquest problema. Consulteu el repositori PCL GitHub per veure com es compila des de la font.

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

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

Ara clonem el repositori git de paquets autònoms del mapa rtab a la nostra carpeta inicial i el construïm. He utilitzat la versió més recent (0.18.0).

git clone

cd rtabmap / build

cmake..

fer -j2

sudo make install

sudo ldconfig rtabmap

Ara, quan hem compilat RTAB MAP autònom, podem passar a l'últim pas: compilar i instal·lar l'embolcall ROS per a RTAB MAP, rtabmap_ros.

Pas 4: Instal·lació de Rtabmap_ros

Instal·lació de Rtabmap_ros
Instal·lació de Rtabmap_ros

Si heu arribat tan lluny, probablement ja coneixeu el trepant:) Cloneu el dipòsit rtabmap_ros a la carpeta src de catkin workspace src. (Executeu l'ordre següent des de la carpeta catkin workspace src!)

git clone

També necessitarem aquests paquets ROS, que rtabmap_ros depèn de:

git clone

git clone

git clone

git clone

git clone

Abans de començar la compilació, podeu assegurar-vos que no falteu cap dependència amb l'ordre següent:

rosdep install --from-routes src --ignore-src

Instal·leu més dependències des d'ap-get (aquestes no interrompran l'enllaç, però generaran un error durant la compilació)

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

A continuació, moveu-vos a la carpeta de l'espai de treball Catkin i comenceu a compilar:

cd..

fer_petrell -j2

Espero que no hagis deixat massa lluny la teva beguda recopilatòria preferida. Un cop acabada la compilació, ja estem preparats per fer el mapatge.

Pas 5: mostra l'hora

Mostra l'hora
Mostra l'hora
Mostra l'hora
Mostra l'hora

Feu aquest truc piratejat afegint alguna cosa com el dongle WiFi o Bluetooth a un port USB: jo feia servir 2 ports USB 2.0, un per a Kinect i l’altre per a un dongle WiFi.

A Raspberry Pi (Canvieu l'adreça IP a l'adreça IP del vostre Raspberry Pi!): Primer terminal:

exportació ROS_MASTER_URI = https://192.168.0.108: 11311

exportació ROS_IP = 192.168.0.108

roslaunch freenect_launch freenect.launch depth_registration: = true data_skip: = 2

2n 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 - MaxSize 1000 -: = fals

Veureu la sortida com es mostra a la captura de pantalla 1. "Aturar el RGB del dispositiu i el flux de profunditat". indica que Kinect està a punt, però encara no hi ha res subscrit als seus temes. Al segon terminal hauríeu de veure missatges sobre la qualitat de l’odom. Si moveu Kinect massa ràpidament, la qualitat de l’odom passarà a 0 i haurà de moure’s a una ubicació anterior o començar des d’una base de dades neta.

A l'ordinador d'escriptori amb el paquet ROS Melodic i rtab_map instal·lats (us recomano que utilitzeu l'ordinador Ubuntu, ja que els paquets pre-construïts estan disponibles per a l'arquitectura amd64) feu el següent:

exportació ROS_MASTER_URI = https://192.168.0.108: 11311

exportació ROS_IP = [el vostre-desktop-computer-ip]

rviz

Afegiu pantalles MapGraph i MapCloud a rviz i trieu els temes corresponents provinents de rtab_map. Bé, això és tot, dolç sabor de la victòria! Endavant i feu una mica de mapatge:)

Pas 6: referències

Mentre escrivia aquest article, vaig consultar diversos recursos, principalment fòrums i problemes de GitHub. Els deixaré aquí.

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

Afegiu-me a LinkedIn si teniu cap pregunta i subscriviu-vos al meu canal de YouTube per rebre notificacions sobre projectes més interessants relacionats amb l'aprenentatge automàtic i la robòtica.

Recomanat: