Kazalo:

RGB-D SLAM s Kinectom na Raspberry Pi 4 [Buster] ROS Melodično: 6 korakov
RGB-D SLAM s Kinectom na Raspberry Pi 4 [Buster] ROS Melodično: 6 korakov

Video: RGB-D SLAM s Kinectom na Raspberry Pi 4 [Buster] ROS Melodično: 6 korakov

Video: RGB-D SLAM s Kinectom na Raspberry Pi 4 [Buster] ROS Melodično: 6 korakov
Video: RGB-D SLAM с Kinect на Raspberry Pi 4 ROS Melodic 2024, November
Anonim
Image
Image

Lani sem napisal članek o gradnji in namestitvi ROS Melodic na novi (takratni) Raspberry Pi z operacijskim sistemom Debian Buster. Članek je bil deležen velike pozornosti tako na Instructables kot na drugih platformah. Zelo sem vesel, da sem toliko ljudem pomagal uspešno namestiti ROS na Raspberry Pi. V priloženem videoposnetku sem na kratko pokazal tudi globinsko sliko iz Kinect 360. Kasneje so me na LinkedInu kontaktirali številni ljudje in me vprašali, kako mi je uspelo uporabljati Kinect z Raspberry Pi. Bil sem nekoliko presenečen nad vprašanjem, saj mi je postopek priprave Kinecta takrat trajal približno 3-4 ure in se mi ni zdel zelo zapleten. Datoteke.bash_history sem delil z vsemi ljudmi, ki so me spraševali o tem vprašanju, in aprila sem končno našel čas, da napišem članek o tem, kako namestiti gonilnike Kinect in izvesti RGB-D SLAM z RTAB-MAP ROS. Teden neprespanih noči po začetku pisanja članka zdaj razumem, zakaj mi je toliko ljudi postavilo to vprašanje:)

Začel bom s kratko razlago o tem, kateri pristopi so delovali in kateri ne. Nato bom razložil, kako namestiti gonilnike Kinect za uporabo z ROS Melodic in na koncu, kako nastaviti vaš stroj za RGB-D SLAM z RTAB-MAP ROS.

Korak: Kaj je delovalo in kaj ne

Za Kinect je na voljo nekaj gonilnikov na Raspberry Pi - dva od njih podpira ROS.

Gonilniki OpenNI - paket openni_camera za ROS

gonilniki libfreenect - paket freenect_stack za ROS

Če pogledate njihova ustrezna skladišča GitHub, lahko ugotovite, da je bil gonilnik OpenNI nazadnje posodobljen pred leti in je v praksi že dolgo EOL. ibfreekinect pa se pravočasno posodablja. Enako za njihove ustrezne pakete ROS je bil freenect_stack izdan za melodijo ROS, medtem ko je njegov zadnji distributer openni_camera navedel podporo za Fuerte …

Možno je sestaviti in namestiti gonilnik OpenNI in paket openni_camera na Raspberry Pi za ROS Melodic, čeprav zame ni delovalo. Če želite to narediti, sledite tem navodilom, v korakih 1, 2, 3 na 2. in 3. koraku odstranite zastavico "-mfloat-abi = softfp" iz datoteke Platform/Linux/Build/Common/Platform. ARM (glede na nasvet o tem Vprašanje Github). Nato klonirajte paket openni_camera v svoj delovni prostor catkin in prevedite z catkin_make. Pri meni pa ni delovalo, pri napaki pri ustvarjanju generatorja globine ni uspelo. Razlog: vmesnik USB ni podprt!

Uporaba libfreenect in freenect_stack je na koncu prinesla uspeh, vendar je bilo treba rešiti kar nekaj težav, rešitev pa je bila nekoliko hecna, čeprav je delovala zelo stabilno (1 ura + neprekinjeno delovanje).

2. korak: Namestitev gonilnikov Freenect in Freenect_stack

Namestitev gonilnikov Freenect in Freenect_stack
Namestitev gonilnikov Freenect in Freenect_stack

Predvidevam, da uporabljate mojo sliko ROS Melodic Desktop iz tega članka. Če želite namestitev opraviti v drugem okolju, na primer ros_comm image ali v Ubuntu za Raspberry Pi, se prepričajte, da imate dovolj znanja o sistemu ROS za reševanje težav, ki bi lahko nastale zaradi te razlike.

Začnimo z izgradnjo gonilnikov libfreenect iz vira, saj je vnaprej zgrajena različica skladišča apt-get preveč zastarela.

sudo apt-get posodobitev

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

git clone

cd libfreenect

mkdir build && cd build

cmake -L..

narediti

sudo make install

Upajmo, da bo postopek gradnje potekal brezhibno in poln zelenih prijaznih sporočil. Ko namestite gonilnik libfreenect, morate še namestiti paket freenect_stack za ROS. Od drugih paketov je odvisno, kar nekaj jih bomo morali klonirati in zgraditi z catkin_make vse skupaj. Preden začnete, se prepričajte, da je vaš mačji delovni prostor pravilno nastavljen in nabavljen!

Iz mape src v delovnem prostoru catkin:

git clone

git clone

git clone

git clone

git clone

git clone

Joj, to je bilo veliko kloniranja.

POSLEDNJE UREJANJE: Kot je poudaril eden od mojih bralcev, je treba shrambo vision_opencv nastaviti na melodično vejo. Za ta cd v src/vision_opencv in izvedite

git checkout melodično

Nato se vrnite v mapo delovnega prostora catkin. Če želite preveriti, ali smo odvisni od vseh nameščenih paketov, izvedite ta ukaz:

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

Če ste uspešno klonirali vse potrebne pakete, bo zahteval prenos libfreekinect z apt-get. Odgovorite ne, saj smo ga že namestili iz vira.

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

catkin_make -j2

Čas čaja;) ali karkoli je vaša najljubša pijača.

Ko je postopek kompilacije končan, lahko poskusite zagnati sklad kinect in preveriti, ali pravilno oddaja globino in barvne slike. Raspberry Pi uporabljam brez glave, zato moram na namiznem računalniku zagnati RVIZ.

Na Raspberry Pi do (spremenite naslov IP v naslov IP vašega Raspberry Pi!):

izvozi ROS_MASTER_URI = https://192.168.0.108: 11311

izvoz ROS_IP = 192.168.0.108

roslaunch freenect_launch freenect.launch globina_registracije: = res

Videli boste izhod kot na posnetku zaslona 1. "Zaustavitev naprave RGB in izpiranje toka globine." označuje, da je Kinect pripravljen, vendar na njegove teme še ni naročenih nič.

Na namiznem računalniku z nameščenim sistemom ROS Melodic naredite naslednje:

izvozi ROS_MASTER_URI = https://192.168.0.108: 11311

izvoz ROS_IP = [vaš namizni računalnik-ip] rviz

Zdaj bi morali biti v RVIZ -u vidni tokovi slik RGB in Depth, kot na zgornjem posnetku zaslona 2, vendar ne hkrati.

V redu, tukaj se začnejo hacky stvari. Tri dni sem preizkušal različne gonilnike in pristope in nič ni delovalo - takoj, ko sem poskusil dostopati do dveh tokov hkrati, bi Kinect začel izteči, kot lahko vidite na posnetku zaslona 3. Poskusil sem vse: boljše napajanje, starejše zaveze libfreenect in freenect_stack, ustavitev usb_autosuspend, vbrizgavanje belila v vrata USB (v redu, ne zadnje! ne počnite, to je šala in ne sme predstavljati tehničnega nasveta:)). Potem sem v eni od Githubovih številk videl račun osebe, ki je rekla, da je njihov Kinect nestabilen, dokler niso »naložili vodila USB« s povezovanjem ključa WiFi. To sem poskusil in uspelo je. Po eni strani sem vesel, da je uspelo. Po drugi strani pa bi to moral nekdo res popraviti. No, medtem ko smo to (nekako) popravili, pojdimo na naslednji korak.

3. korak: Namestitev samostojne RTAB MAP

Namestitev samostojnega RTAB MAP -a
Namestitev samostojnega RTAB MAP -a

Najprej moramo namestiti kup odvisnosti:

Kljub temu, da je za PCL na voljo vnaprej izdelan paket armhf, ga bomo morali zaradi te težave sestaviti iz vira. Posvetujte se s skladiščem PCL GitHub in preverite, kako ga sestavite iz vira.

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

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

Zdaj pa klonirajmo rtab zemljevid samostojnega repozitorija git v našo domačo mapo in ga zgradimo. Uporabil sem zadnjo izdajo (0.18.0).

git clone

cd rtabmap/build

cmake..

naredi -j2

sudo make install

sudo ldconfig rtabmap

Ko smo sestavili samostojno RTAB MAP, lahko preidemo na zadnji korak - sestavljanje in namestitev ovojnine ROS za RTAB MAP, rtabmap_ros.

4. korak: Namestitev Rtabmap_ros

Namestitev Rtabmap_ros
Namestitev Rtabmap_ros

Če ste prišli tako daleč, verjetno že poznate vajo:) Klonirajte skladišče rtabmap_ros v mapo src v delovnem prostoru catkin. (Izvedite naslednji ukaz iz mape src v delovnem prostoru catkin!)

git clone

Potrebovali bomo tudi te pakete ROS, da je rtabmap_ros odvisen od:

git clone

git clone

git clone

git clone

git clone

Preden začnete s sestavljanjem, se lahko prepričate, da ne manjka nobenih odvisnosti z naslednjim ukazom:

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

Namestite več odvisnosti iz aplikacije ap-get (te ne bodo prekinile povezovanja, ampak bodo pri sestavi napake)

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

Nato se pomaknite v mapo delovnega prostora catkin in začnite sestavljati:

cd..

catkin_make -j2

Upam, da svoje najljubše kompilacijske pijače niste dali nikamor predaleč. Ko je kompilacija končana, smo pripravljeni na kartiranje!

5. korak: Pokaži čas

Čas za predstavo
Čas za predstavo
Čas za predstavo
Čas za predstavo

Naredite ta hec trik z dodajanjem nečesa, kot je WiFi ali Bluetooth ključ v vrata USB - uporabljal sem 2 vhoda USB 2.0, enega za Kinect, drugega za WiFi dongle.

Na Raspberry Pi do (spremenite naslov IP v naslov IP vašega Raspberry Pi!): 1. terminal:

izvozi ROS_MASTER_URI = https://192.168.0.108: 11311

izvoz ROS_IP = 192.168.0.108

roslaunch freenect_launch freenect.launch globina_registracije: = resnični podatki_skip: = 2

2. 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 --OdomF2Med: = napačno

Videli boste izhod kot na posnetku zaslona 1. "Ustavljanje naprave RGB in izpiranje toka globine." označuje, da je Kinect pripravljen, vendar na njegove teme še ni naročenih. V drugem terminalu bi morali videti sporočila o kakovosti odom. Če premaknete Kinect prehitro, bo kakovost odom na 0 in morali se boste premakniti na prejšnjo lokacijo ali začeti s čisto bazo podatkov.

Na namiznem računalniku z nameščenim paketom ROS Melodic in rtab_map (priporočam, da za to uporabite računalnik Ubuntu, saj so za arhitekturo amd64 na voljo vnaprej izdelani paketi):

izvozi ROS_MASTER_URI = https://192.168.0.108: 11311

izvoz ROS_IP = [vaš namizni računalnik-ip]

rviz

Dodajte zaslone MapGraph in MapCloud v rviz in izberite ustrezne teme, ki prihajajo iz rtab_map. No, to je to, sladek okus zmage! Kar naredite kartiranje:)

6. korak: Reference

Med pisanjem tega članka sem se posvetoval s številnimi viri, predvsem forumi in vprašanji GitHub. Pustim jih tukaj.

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

Če imate kakršna koli vprašanja, me dodajte na LinkedIn in se naročite na moj YouTube kanal, da boste obveščeni o zanimivejših projektih, ki vključujejo strojno učenje in robotiko.

Priporočena: