Tartalomjegyzék:

RGB-D SLAM Kinect-el a Raspberry Pi 4-en [Buster] ROS Melodic: 6 lépés
RGB-D SLAM Kinect-el a Raspberry Pi 4-en [Buster] ROS Melodic: 6 lépés

Videó: RGB-D SLAM Kinect-el a Raspberry Pi 4-en [Buster] ROS Melodic: 6 lépés

Videó: RGB-D SLAM Kinect-el a Raspberry Pi 4-en [Buster] ROS Melodic: 6 lépés
Videó: ROS on raspberry pi 4 displaying kinect depth data 2024, Július
Anonim
Image
Image

Tavaly írtam egy cikket a ROS Melodic felépítéséről és telepítéséről az új (akkoriban) Raspberry Pi -re Debian Buster OS -sel. A cikk nagy figyelmet kapott mind itt az Instructables -en, mind más platformokon. Nagyon örülök, hogy sok embernek segítettem a ROS sikeres telepítésében a Raspberry Pi -n. A kísérő videóban röviden bemutattam a Kinect 360 mélységképének megszerzését is. Később számos ember felvette velem a kapcsolatot a LinkedIn -en, és megkérdezte, hogyan sikerült a Kinectet használni a Raspberry Pi -vel. Kicsit meglepődtem a kérdésen, mivel a Kinect elkészítésének folyamata ekkor körülbelül 3-4 órát vett igénybe, és nem tűnt rendkívül bonyolultnak. Megosztottam a.bash_history fájljaimat azokkal az emberekkel, akik érdeklődtek a kérdésem iránt, és áprilisban végre találtam időt arra, hogy írjak egy cikket a Kinect illesztőprogramok telepítéséről és az RGB-D SLAM RTAB-MAP ROS használatával történő végrehajtásáról. Az álmatlan éjszakák hete, miután elkezdtem írni a cikket, most már értem, hogy miért tették fel ezt a kérdést sokan?:)

Röviden elmagyarázom, hogy milyen megközelítések működtek és melyek nem. Ezután elmagyarázom, hogyan kell telepíteni a Kinect illesztőprogramokat a ROS Melodic-hoz, és végül hogyan állíthatom be a gépet az RTA-MAP ROS-mal rendelkező RGB-D SLAM-ra.

Lépés: Mi működött és mi nem

A Kinect Raspberry Pi -n néhány illesztőprogram áll rendelkezésre - közülük kettőt a ROS támogat.

OpenNI illesztőprogramok - openni_camera csomag ROS -hoz

libfreenect illesztőprogramok - freenect_stack csomag ROS -hoz

Ha megnézi a megfelelő GitHub -tárolókat, megállapíthatja, hogy az OpenNI illesztőprogramja utoljára évekkel ezelőtt frissült, és a gyakorlatban hosszú ideig EOL. Az ibfreekinect viszont időben frissül. Ugyanez vonatkozik a megfelelő ROS csomagokra, a freenect_stack megjelent a ROS melodic számára, míg az utolsó disztribúció az openni_camera felsorolta a Fuerte támogatását…

Lehetőség van az OpenNI illesztőprogram és az openni_camera csomag fordítására és telepítésére a Raspberry Pi -n a ROS Melodic számára, bár nekem nem működött. Ennek érdekében kövesse ezt az útmutatót, az 1., 2., 3. lépés 2. és 3. lépésében távolítsa el a "-mfloat-abi = softfp" jelzőt a Platform/Linux/Build/Common/Platform. ARM fájlból (az ezzel kapcsolatos tanácsok szerint) Github probléma). Ezután klónozza az openni_camera csomagot a macska munkaterületére, és fordítsa le a catkin_make segítségével. Nekem azonban nem működött, a hiba a mélységgenerátor létrehozása volt. Ok: Az USB interfész nem támogatott!

A libfreenect és a freenect_stack használata végül sikert hozott, de jó néhány problémát meg kellett oldani, és a megoldás kissé vagány volt, bár nagyon stabil volt (1 óra + folyamatos működés).

2. lépés: A Freenect illesztőprogramok és a Freenect_stack telepítése

A Freenect illesztőprogramok és a Freenect_stack telepítése
A Freenect illesztőprogramok és a Freenect_stack telepítése

Feltételezem, hogy a cikkből származó ROS Melodic Desktop képemet használja. Ha a telepítést más környezetben, például a ros_comm image vagy az Ubuntu for Raspberry Pi alkalmazásban kívánja elvégezni, győződjön meg arról, hogy elegendő ismerete van a ROS -ról az eltérésből adódó problémák megoldásához.

Kezdjük a libfreenect illesztőprogramok forrásból való építésével, mivel az apt-get lerakat előre elkészített verziója túl elavult.

sudo apt-get update

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

git klón

cd libfreenect

mkdir build && cd build

cmake -L..

készíteni

sudo make install

Remélhetőleg az építési folyamat eseménytelen lesz, és tele lesz zöldbarát üzenetekkel. A libfreenect illesztőprogram telepítése után a következő lépés a freenect_stack csomag telepítése a ROS számára. Sok más csomag is függ tőle, klónoznunk kell őket, és együtt kell építenünk a catkin_make segítségével. Mielőtt elkezdené, győződjön meg arról, hogy a macska munkaterülete megfelelően van beállítva és beszerzett!

A catkin munkaterület src mappájából:

git klón

git klón

git klón

git klón

git klón

git klón

Hú, ez sok klónozás volt.

KÉSŐBB SZERKESZTÉS: Amint azt egyik olvasóm rámutatott, a vision_opencv tárházat dallamos ágra kell állítani. Ehhez a cd -hez az src/vision_opencv fájlt kell végrehajtani

git checkout dallamos

Ezután térjen vissza a macska munkaterület mappájához. Ha ellenőrizni szeretné, hogy függőségek vagyunk -e a helyén lévő összes csomaghoz, hajtsa végre ezt a parancsot:

rosdep install --from-paths src --ignore-src

Ha sikeresen klónozta az összes szükséges csomagot, akkor a libfreekinect letöltését fogja kérni az apt-get segítségével. Válaszoljon nem, mivel már telepítettük a forrásból.

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

catkin_make -j2

Teaidő;) vagy bármi a kedvenc italod.

A fordítási folyamat befejezése után megpróbálhatja elindítani a kinect veremét, és ellenőrizni, hogy megfelelően adja ki a mélység és a színes képeket. A Raspberry Pi -t fej nélkül használom, ezért futtatnom kell az RVIZ -t asztali számítógépemen.

A Raspberry Pi do rendszeren (Módosítsa a Raspberry Pi IP -címét IP -címére!):

export ROS_MASTER_URI = https://192.168.0.108: 11311

export ROS_IP = 192.168.0.108

roslaunch freenect_launch freenect.launch deep_registration: = igaz

Látni fogja a kimenetet, mint az 1. képernyőképen. "Az eszköz RGB leállítása és a mélységáram öblítése." azt jelzi, hogy a Kinect készen áll, de még nincs előfizetve a témáihoz.

Asztali számítógépén, amelyen telepítve van a ROS Melodic, tegye a következőket:

export ROS_MASTER_URI = https://192.168.0.108: 11311

export ROS_IP = [a-asztali-számítógép-ip] rviz

Most már látnia kell az RGB és a mélység képfolyamokat az RVIZ -ben, mint a fenti 2. képernyőképen … de nem egyszerre.

Oké, itt kezdődnek a hacky dolgok. Három napot töltöttem különböző illesztőprogramok és megközelítések kipróbálásával, de semmi sem működött - amint két adatfolyamhoz próbálok hozzáférni egyszerre, a Kinect időzítése elkezdődik, amint az a 3. képernyőképen látható. Mindent megpróbáltam: jobb áramellátást, régebbi libfreenect -elkötelezettségeket és freenect_stack, az usb_autosuspend leállítása, fehérítő fecskendezése az USB -portokba (oké, nem az utolsó! ne tegye, ez vicc, és nem minősül technikai tanácsnak:)). Aztán a Github egyik számában láttam egy olyan személy beszámolóját, aki azt mondta, hogy a Kinectjük instabil, amíg a WiFi dongle csatlakoztatásával nem "töltötték fel az USB buszt". Kipróbáltam, és működött. Egyrészt örülök, hogy sikerült. Másrészt valakinek tényleg meg kellene oldania ezt. Nos, miközben ezt (valahogy) kijavítottuk, térjünk át a következő lépésre.

3. lépés: Az önálló RTAB MAP telepítése

Önálló RTAB MAP telepítése
Önálló RTAB MAP telepítése

Először telepítenünk kell egy csomó függőséget:

Annak ellenére, hogy a PCL számára előre elkészített armhf csomag áll rendelkezésre, a probléma miatt forrásból kell lefordítanunk. Tekintse meg a PCL GitHub lerakatát, hogy megtudja, hogyan fordíthatja le a forrásból.

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

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

Most klónozzuk az rtab map önálló csomag git adattárát a saját mappánkba, és építsük fel. A legújabb kiadást használtam (0.18.0).

git klón

cd rtabmap/build

cmake..

hogy -j2

sudo make install

sudo ldconfig rtabmap

Most, amikor összeállítottuk az önálló RTAB TÉRKÉPET, áttérhetünk az utolsó lépésre - az RTAB MAP, az rtabmap_ros ROS csomagolóanyagának összeállítására és telepítésére.

4. lépés: Az Rtabmap_ros telepítése

Az Rtabmap_ros telepítése
Az Rtabmap_ros telepítése

Ha idáig eljutott, akkor valószínűleg már ismeri a fúrót:) Klónozza az rtabmap_ros adattárat a catkin munkaterület src mappájába. (Végezze el a következő parancsot a catkin workspace src mappájából!)

git klón

Szükségünk lesz ezekre a ROS csomagokra is, az rtabmap_ros függ:

git klón

git klón

git klón

git klón

git klón

Mielőtt elkezdené a fordítást, a következő paranccsal győződjön meg arról, hogy nem hiányzik egyetlen függőség sem:

rosdep install --from-paths src --ignore-src

Telepítsen több függőséget az ap-getből (ezek nem szakítják meg a linkelést, de hibát okoznak a fordítás során)

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

Ezután lépjen a catkin munkaterület mappájába, és kezdje el a fordítást:

cd..

catkin_make -j2

Remélem, nem tette túl messzire kedvenc összeállítási italát. Miután elkészült az összeállítás, készen állunk a feltérképezésre!

5. lépés: Mutasd az időt

Idő megjelenítése
Idő megjelenítése
Idő megjelenítése
Idő megjelenítése

Végezze el ezt a furcsa trükköt, és adjon hozzá valamit, például WiFi -t vagy Bluetooth -kulcsot az USB -porthoz - 2 USB 2.0 -portot használtam, az egyik a Kinect, a másik a WiFi -kulcshoz.

A Raspberry Pi do rendszeren (Változtassa meg az IP -címet a Raspberry Pi IP -címére!): 1. terminál:

export ROS_MASTER_URI = https://192.168.0.108: 11311

export ROS_IP = 192.168.0.108

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

2. terminál:

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/2: = hamis

Látni fogja a kimenetet, mint az 1. képernyőképen. "Az eszköz RGB leállítása és a mélységáram öblítése." azt jelzi, hogy a Kinect készen áll, de még nincs előfizetve a témákra. A második terminálon üzeneteket kell látnia az odom minőségéről. Ha túl gyorsan mozgatja a Kinect -et, az odom minősége 0 -ra változik, és egy előző helyre kell költöznie, vagy a tiszta adatbázisból kell kiindulnia.

Az asztali számítógépén, amelyen telepítve van a ROS Melodic és az rtab_map csomag (javaslom, hogy ehhez Ubuntu számítógépet használjon, mivel az amd64 architektúrához rendelkezésre állnak előre elkészített csomagok):

export ROS_MASTER_URI = https://192.168.0.108: 11311

export ROS_IP = [a-asztali-számítógép-ip]

rviz

Adja hozzá a MapGraph és a MapCloud kijelzőket az rvizhez, és válassza ki a megfelelő témákat az rtab_map -ból. Nos, ez az, a győzelem édes íze! Gyerünk és csinálj egy térképet:)

6. lépés: Hivatkozások

A cikk írása során számos forrást tanulmányoztam, főleg fórumokat és GitHub -problémákat. Itt hagyom őket.

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

Ha bármilyen kérdése van, vegyen fel engem a LinkedIn -en, és iratkozzon fel YouTube -csatornámra, hogy értesítést kapjak a gépi tanulást és a robotikát érintő érdekesebb projektekről.

Ajánlott: