Sadržaj:

RGB-D SLAM s Kinect-om na Raspberry Pi 4 [Buster] ROS Melodija: 6 koraka
RGB-D SLAM s Kinect-om na Raspberry Pi 4 [Buster] ROS Melodija: 6 koraka

Video: RGB-D SLAM s Kinect-om na Raspberry Pi 4 [Buster] ROS Melodija: 6 koraka

Video: RGB-D SLAM s Kinect-om na Raspberry Pi 4 [Buster] ROS Melodija: 6 koraka
Video: RGB-D SLAM With Kinect on Raspberry Pi 4 ROS Melodic 2024, Juli
Anonim
Image
Image

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

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

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

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

OpenNI upravljački programi - openni_camera paket za ROS

drajveri 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 godinama i da je u praksi EOL već duže vrijeme. ibfreekinect se s druge strane blagovremeno 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 kompajlirati 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, koraci 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 sa catkin_make. Meni to ipak nije uspjelo, greška je u stvaranju generatora dubine nije uspio. Razlog: USB sučelje nije podržano!

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

Korak 2: Instaliranje Freenect upravljačkih programa i Freenect_stack

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

Pretpostavit ću da koristite moju ROS Melodic Desktop sliku 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 mogu nastati iz te razlike.

Počnimo s izgradnjom libfreenect upravljačkih programa iz izvora, jer je unaprijed izgrađena verzija apt-get spremišta previše zastarjela.

sudo apt-get update

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

git clone

cd libfreenect

mkdir build && cd build

cmake -L..

napraviti

sudo make install

Nadajmo 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 mape src catkin workspace:

git clone

git clone

git clone

git clone

git clone

git clone

Vau, to je bilo mnogo kloniranja.

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

git checkout melodic

Zatim se vratite u mapu radnog prostora Catkin. Da biste provjerili imamo li zavisnosti za sve postavljene pakete, 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

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

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

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

izvoz ROS_MASTER_URI = https://192.168.0.108: 11311

izvoz ROS_IP = 192.168.0.108

roslaunch freenect_launch freenect.launch depth_registration: = istina

Vidjet ćete izlaz kao na slici 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 računaru sa instaliranim ROS Melodic -om uradite sledeće:

izvoz ROS_MASTER_URI = https://192.168.0.108: 11311

izvoz ROS_IP = [vaš-desktop-računar-ip] rviz

Sada biste trebali moći vidjeti RGB i Depth stream slike u RVIZ -u kao na Screenshot 2 gore … ali ne u isto vrijeme.

U redu, ovdje počinju hacky stvari. Proveo 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 Screenshot 3. Pokušao sam sve: bolje napajanje, starije urezivanja libfreenect -a i freenect_stack, zaustavljanje usb_autosuspend, ubrizgavanje izbjeljivača na USB portove (u redu, ne zadnji! nemojte to raditi, to je šala i ne bi trebao predstavljati tehnički savjet:)). Zatim sam u jednom od izdanja Githuba vidio račun osobe koja je rekla da je njihov Kinect nestabilan, sve dok nisu "učitali USB sabirnicu" povezivanjem WiFi ključa. Probao sam to i upalilo je. S jedne strane, drago mi je da je uspjelo. S druge strane, neko bi to zaista 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 je za PCL dostupan unaprijed izgrađen armhf paket, morat ćemo ga kompajlirati iz izvora zbog ovog problema. Konsultujte PCL GitHub spremište 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 mapu samostalnog paketa git spremišta u našu matičnu mapu i izgraditi ga. Koristio sam najnovije izdanje (0.18.0).

git clone

cd rtabmap/build

cmake..

make -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 tako daleko, vjerovatno ste dosad već znali vježbu:) Klonirajte spremište rtabmap_ros u svoju mapu catkin workspace src. (Izvršite sljedeću naredbu iz vaše mačke catkin workspace src!)

git clone

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

git clone

git clone

git clone

git clone

git clone

Prije nego započnete kompilaciju, možete se uvjeriti da ne propuštate nikakve zavisnosti pomoću sljedeće naredbe:

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

Instalirajte više ovisnosti iz aplikacije ap-get (one neće prekinuti povezivanje, ali će izazvati greš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 niste nigdje predaleko stavili svoje omiljeno kompilacijsko piće. Nakon što je kompilacija gotova, spremni smo za mapiranje!

Korak 5: Prikažite vrijeme

Pokazi vrijeme
Pokazi vrijeme
Pokazi vrijeme
Pokazi vrijeme

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

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: = false

Vidjet ćete izlaz kao na slici 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 prethodnu lokaciju ili početi iz čiste baze podataka.

Na vašem računaru sa instaliranim paketom ROS Melodic i rtab_map (preporučujem da za to koristite Ubuntu računar, jer su unapred izgrađeni paketi dostupni za amd64 arhitekturu):

izvoz ROS_MASTER_URI = https://192.168.0.108: 11311

izvoz ROS_IP = [vaš-desktop-računar-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

Dok sam pisao ovaj članak, konsultovao sam brojne resurse, uglavnom forume i GitHub pitanja. Ostaviću ih ovde.

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čuje se: