Sadržaj:

RGB-D SLAM s Kinectom na Raspberry Pi 4 [Buster] ROS melodija: 6 koraka
RGB-D SLAM s Kinectom na Raspberry Pi 4 [Buster] ROS melodija: 6 koraka
Anonim
Image
Image

Prošle sam godine napisao članak o izgradnji i instaliranju ROS Melodica na novom (u to vrijeme) Raspberry Pi -u s Debian Buster OS -om. Članak je dobio veliku pozornost i ovdje na Instructables -u i na drugim platformama. Jako mi je drago što sam pomogao toliko ljudi da uspješno instaliraju ROS na Raspberry Pi. U popratnom videu također sam ukratko pokazao dobivanje dubinske slike iz Kinect 360. Kasnije su mi se brojni ljudi obratili na LinkedInu i pitali me kako sam uspio koristiti Kinect s Raspberry Pi. Bio sam pomalo iznenađen pitanjem, budući da mi je proces pripreme Kinecta u to vrijeme trajao oko 3-4 sata i nije mi se činio iznimno kompliciranim. Podijelio sam svoje.bash_history datoteke sa svim ljudima koji su me pitali o tom problemu i u travnju sam konačno našao vrijeme za pisanje članka o tome kako instalirati upravljačke programe Kinect i izvesti RGB-D SLAM s RTAB-MAP ROS-om. Tjedan neprospavanih noći nakon početka pisanja članka sada razumijem zašto mi je toliko ljudi postavilo ovo pitanje:)

Počet ću s kratkim objašnjenjem koji su pristupi djelovali, a koji nisu. Zatim ću objasniti kako instalirati upravljačke programe Kinect za upotrebu s ROS Melodic-om i na kraju kako postaviti svoj stroj za RGB-D SLAM s RTAB-MAP ROS-om.

Korak 1: Što je radilo, a što nije

Na raspolaganju je nekoliko upravljačkih programa za Kinect na Raspberry Pi - dva od njih podržava ROS.

OpenNI upravljački programi - paket openni_camera za ROS

upravljački programi libfreenect - paket freenect_stack za ROS

Ako pogledate njihova odgovarajuća spremišta GitHub, možete otkriti da je OpenNI upravljački program posljednji put ažuriran prije mnogo godina i da je u praksi EOL već duže vrijeme. S druge strane, ibfreekinect se pravovremeno ažurira. Isto kao i za njihove odgovarajuće ROS pakete, freenect_stack je objavljen za ROS melodiku, dok je najnoviji distro openni_camera naveo podršku za Fuerte …

Moguće je sastaviti i instalirati OpenNI upravljački program i paket openni_camera na Raspberry Pi za ROS Melodic, iako mi to nije uspjelo. Da biste to učinili, slijedite ove upute, u koracima 1, 2, 3, na koracima 2 i 3 uklonite zastavicu "-mfloat-abi = softfp" iz datoteke Platform/Linux/Build/Common/Platform. ARM (prema savjetima o ovome Pitanje Github -a). Zatim klonirajte openni_camera paket u svoj catkin radni prostor i kompajlirajte s catkin_make. Meni to ipak nije uspjelo, greška je bila u tome što je kreiranje generatora dubine otkazalo. Razlog: USB sučelje nije podržano!

Korištenje libfreenect -a i freenect_stack na kraju je donijelo uspjeh, ali bilo je dosta problema za rješavanje i rješenje je bilo pomalo sjeckano, iako je radilo vrlo stabilno (1 sat + kontinuirani rad).

Korak 2: Instaliranje upravljačkih programa Freenect i Freenect_stack

Instaliranje Freenect upravljačkih programa i Freenect_stack
Instaliranje Freenect upravljačkih programa i Freenect_stack

Pretpostavit ću da koristite moju sliku ROS Melodic Desktop iz ovog članka. Ako želite instalirati u drugom okruženju, na primjer ros_comm image ili u Ubuntu za Raspberry Pi, pobrinite se da imate dovoljno znanja o ROS -u za rješavanje problema koji bi mogli nastati iz te razlike.

Počnimo s izgradnjom upravljačkih programa libfreenect od izvora, budući da je unaprijed izgrađena verzija apt-get spremišta previše zastarjela.

sudo apt-get ažuriranje

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

git klon

cd libfreenect

mkdir build && cd build

cmake -L..

napraviti

sudo make install

Nadamo se da će proces izgradnje biti besprijekoran i pun zelenih prijateljskih poruka. Nakon što ste instalirali libfreenect upravljački program, sljedeće što trebate učiniti je instalirati freenect_stack paket za ROS. Postoji dosta drugih paketa o kojima ovisi, morat ćemo ih klonirati i izgraditi sa catkin_make sve zajedno. Prije nego počnete, provjerite je li vaš radni prostor za mačke pravilno postavljen i nabavljen!

Iz vaše mape catkin workspace src:

git klon

git klon

git klon

git klon

git klon

git klon

Opa, to je bilo puno kloniranja.

KASNIJE UREĐIVANJE: Kao što je istaknuo jedan od mojih čitatelja, spremište vision_opencv potrebno je postaviti na melodijsku granu. Za taj cd na src/vision_opencv i izvršite

git checkout melodičan

Zatim se vratite u mapu radnog prostora Catkin. Da biste provjerili imamo li ovisnosti o svim postavljenim paketima, izvedite ovu naredbu:

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

Ako ste uspješno klonirali sve potrebne pakete, zatražit će preuzimanje libfreekinect s apt-get. Odgovorite ne jer smo ga već instalirali od izvora.

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

catkin_make -j2

Vrijeme za čaj;) ili bilo koje drugo vaše omiljeno piće.

Nakon što je proces kompilacije završen, možete pokušati pokrenuti kinect stog i provjeriti ispisuje li dubinu i slike u boji ispravno. Koristim Raspberry Pi bez glave, pa moram pokrenuti RVIZ na stolnom računalu.

Na Raspberry Pi do -u (Promijenite IP adresu u IP adresu vašeg Raspberry Pi -a!):

izvoz ROS_MASTER_URI = https://192.168.0.108: 11311

izvoz ROS_IP = 192.168.0.108

roslaunch freenect_launch freenect.launch depth_registration: = true

Vidjet ćete izlaz kao na snimci zaslona 1. "Zaustavljanje RGB uređaja i ispiranje dubinskog toka." označava da je Kinect spreman, ali još ništa nije pretplaćeno na njegove teme.

Na svom stolnom računalu s instaliranim ROS Melodicom učinite sljedeće:

izvoz ROS_MASTER_URI = https://192.168.0.108: 11311

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

Sada biste trebali moći vidjeti RGB i Dubinske slikovne tokove u RVIZ -u kao na Screenshotu 2 gore … ali ne u isto vrijeme.

U redu, ovdje počinju hacky stvari. Potrošio sam 3 dana isprobavajući različite upravljačke programe i pristupe i ništa nije uspjelo - čim bih pokušao pristupiti dva streama istovremeno, Kinect bi počeo isteći, kao što možete vidjeti na snimci zaslona 3. Pokušao sam sve: bolje napajanje, starije urezivanja libfreenect -a i freenect_stack, zaustavljanje usb_autosuspend, ubrizgavanje izbjeljivača u USB priključke (u redu, ne zadnji! nemojte to raditi, to je šala i ne bi trebao predstavljati tehnički savjet:)). Zatim sam u jednom od Githubovih brojeva vidio račun osobe koja je rekla da je njihov Kinect nestabilan, sve dok nisu "učitali USB sabirnicu" povezivanjem WiFi dongla. Probao sam to i upalilo je. S jedne strane, drago mi je da je uspjelo. S druge strane, netko bi to stvarno trebao popraviti. Pa, u međuvremenu smo to (nekako) popravili, idemo na sljedeći korak.

Korak 3: Instaliranje samostalne RTAB MAP -e

Instaliranje samostalne RTAB MAP -e
Instaliranje samostalne RTAB MAP -e

Prvo moramo instalirati hrpu ovisnosti:

Unatoč tome što postoji unaprijed izgrađen armhf paket dostupan za PCL, morat ćemo ga sastaviti iz izvora zbog ovog problema. Posavjetujte se s PCL GitHub spremištem da vidite kako ga kompajlirati iz izvora.

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

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

Ajmo sada klonirati rtab map samostalno pakiranje git spremišta u našu matičnu mapu i izgraditi ga. Koristio sam najnovije izdanje (0.18.0).

git klon

cd rtabmap/build

cmake..

napraviti -j2

sudo make install

sudo ldconfig rtabmap

Sada kada smo sastavili samostalni RTAB MAP, možemo prijeći na posljednji korak - sastavljanje i instaliranje ROS omota za RTAB MAP, rtabmap_ros.

Korak 4: Instaliranje Rtabmap_ros

Instaliranje Rtabmap_ros
Instaliranje Rtabmap_ros

Ako ste stigli toliko daleko, vjerojatno ste dosad već poznavali vježbu:) Klonirajte spremište rtabmap_ros u svoju mapu src radnog prostora catkin. (Izvedite sljedeću naredbu iz mape catkin workspace src!)

git clone

Trebat će nam i ovi ROS paketi, o tome da rtabmap_ros ovisi o:

git klon

git klon

git klon

git clone

git clone

Prije nego započnete kompilaciju, možete se uvjeriti da ne propuštate nikakve ovisnosti sa sljedećom naredbom:

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

Instalirajte više ovisnosti iz aplikacije ap-get (one neće prekinuti povezivanje, ali će izazvati pogrešku tijekom kompilacije)

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

Zatim prijeđite u mapu radnog prostora Catkin i počnite sastavljati:

cd..

catkin_make -j2

Nadam se da svoje omiljeno kompilacijsko piće niste nigdje predaleko stavili. Nakon što je kompilacija gotova, spremni smo za mapiranje!

Korak 5: Pokaži vrijeme

Vrijeme prikazivanja
Vrijeme prikazivanja
Vrijeme prikazivanja
Vrijeme prikazivanja

Učinite taj hakerski trik dodavanjem nečega poput WiFi ili Bluetooth ključa na USB priključak - koristio sam 2 USB 2.0 priključka, jedan za Kinect, drugi za WiFi ključ.

Na Raspberry Pi do (Promijenite IP adresu u IP adresu vašeg Raspberry Pi!): 1. terminal:

izvoz ROS_MASTER_URI = https://192.168.0.108: 11311

izvoz ROS_IP = 192.168.0.108

roslaunch freenect_launch freenect.launch depth_registration: = true data_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 --OdomF2Mode: = lažno

Vidjet ćete izlaz kao na snimci zaslona 1. "Zaustavljanje RGB uređaja i ispiranje dubinskog toka." označava da je Kinect spreman, ali još ništa nije pretplaćeno na njegove teme. Na drugom terminalu trebali biste vidjeti poruke o kvaliteti odoma. Ako premještate Kinect prebrzo, kvaliteta odoma će ići na 0 i morat ćete se premjestiti na prethodno mjesto ili početi iz čiste baze podataka.

Na vašem stolnom računalu s instaliranim paketom ROS Melodic i rtab_map (preporučujem da za to koristite računalo Ubuntu, budući da su unaprijed izgrađeni paketi dostupni za arhitekturu amd64) učinite sljedeće:

izvoz ROS_MASTER_URI = https://192.168.0.108: 11311

izvoz ROS_IP = [vaše-stolno-računalo-ip]

rviz

Dodajte prikaze MapGraph i MapCloud u rviz i odaberite odgovarajuće teme koje dolaze s rtab_map. Pa, to je to, slatki okus pobjede! Samo naprijed i napravi malo mapiranje:)

Korak 6: Reference

Tijekom pisanja ovog članka konzultirao sam brojne resurse, uglavnom forume i pitanja GitHub -a. Ostavit ću ih ovdje.

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

Dodajte me na LinkedIn ako imate pitanja i pretplatite se na moj YouTube kanal kako biste primali obavijesti o zanimljivijim projektima koji uključuju strojno učenje i robotiku.

Preporučeni: