Satura rādītājs:

RGB-D SLAM ar Kinect uz Raspberry Pi 4 [Buster] ROS melodisks: 6 soļi
RGB-D SLAM ar Kinect uz Raspberry Pi 4 [Buster] ROS melodisks: 6 soļi

Video: RGB-D SLAM ar Kinect uz Raspberry Pi 4 [Buster] ROS melodisks: 6 soļi

Video: RGB-D SLAM ar Kinect uz Raspberry Pi 4 [Buster] ROS melodisks: 6 soļi
Video: ORB-SLAM2 Implementation on Raspberry Pi 4 2024, Novembris
Anonim
Image
Image

Pagājušajā gadā es uzrakstīju rakstu par ROS Melodic izveidi un instalēšanu jaunajā (tajā laikā) Raspberry Pi ar Debian Buster OS. Raksts ir saņēmis lielu uzmanību gan šeit Instructables, gan citās platformās. Esmu ļoti priecīgs, ka palīdzēju tik daudziem cilvēkiem veiksmīgi instalēt ROS Raspberry Pi. Pievienotajā videoklipā es arī īsumā demonstrēju dziļuma attēla iegūšanu no Kinect 360. Vēlāk daudzi cilvēki ir sazinājušies ar mani vietnē LinkedIn un jautājuši, kā man izdevās izmantot Kinect ar Raspberry Pi. Es biju pārsteigts par šo jautājumu, jo Kinect sagatavošanas process tajā laikā aizņēma apmēram 3-4 stundas un nešķita ārkārtīgi sarežģīts. Es koplietoju savus.bash_history failus ar visiem cilvēkiem, kuri man jautāja par šo problēmu, un aprīlī beidzot atradu laiku, lai uzrakstītu rakstu par to, kā instalēt Kinect draiverus un veikt RGB-D SLAM ar RTAB-MAP ROS. Nedēļas bezmiega naktis pēc raksta rakstīšanas es tagad saprotu, kāpēc tik daudzi cilvēki man uzdeva šo jautājumu:)

Sākšu ar īsu skaidrojumu par to, kādas pieejas strādāja un kuras ne. Tad es paskaidrošu, kā instalēt Kinect draiverus lietošanai kopā ar ROS Melodic, un visbeidzot, kā iestatīt savu mašīnu RGB-D SLAM ar RTAB-MAP ROS.

1. darbība. Kas strādāja un kas ne

Kinect uz Raspberry Pi ir pieejami daži draiveri - no tiem divus atbalsta ROS.

OpenNI draiveri - openni_camera pakotne ROS

libfreenect draiveri - freenect_stack pakotne ROS

Aplūkojot to attiecīgās GitHub krātuves, jūs varat uzzināt, ka OpenNI draiveris pēdējo reizi ir atjaunināts pirms gadiem un praksē jau ilgu laiku ir EOL. Savukārt ibfreekinect tiek savlaicīgi atjaunināts. Tāpat kā to attiecīgajām ROS pakotnēm, freenect_stack tika izlaists ROS melodic, bet pēdējais distro openni_camera ir uzskaitījis atbalstu Fuerte…

Raspberry Pi for ROS Melodic ir iespējams apkopot un instalēt OpenNI draivera un openni_camera paketi, lai gan man tas nedarbojās. Lai to izdarītu, ievērojiet šo rokasgrāmatu, 1., 2., 3. darbība 2. un 3. darbībā noņemiet karogu "-mfloat-abi = softfp" no faila Platform/Linux/Build/Common/Platform. ARM (pēc padoma par šo Github problēma). Pēc tam klonējiet openni_camera paketi savā kaķu darbvietā un apkopojiet ar catkin_make. Tomēr tas man nedarbojās, kļūda radīja dziļuma ģeneratora izveidi. Iemesls: USB interfeiss netiek atbalstīts!

Izmantojot libfreenect un freenect_stack, galu galā tika gūti panākumi, taču bija jāatrisina diezgan daudz problēmu, un risinājums bija nedaudz viltīgs, lai gan tas darbojās ļoti stabili (1 stunda + turpināta darbība).

2. darbība: instalējiet Freenect draiverus un Freenect_stack

Freenect draiveru un Freenect_stack instalēšana
Freenect draiveru un Freenect_stack instalēšana

Es pieņemu, ka jūs izmantojat manu ROS Melodic Desktop attēlu no šī raksta. Ja vēlaties instalēt citā vidē, piemēram, ros_comm image vai Ubuntu for Raspberry Pi, pārliecinieties, vai jums ir pietiekami daudz zināšanu par ROS, lai atrisinātu problēmas, kas varētu rasties šīs atšķirības dēļ.

Sāksim, veidojot libfreenect draiverus no avota, jo apt-get repozitorija iepriekš izveidotā versija ir pārāk novecojusi.

sudo apt-get update

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

git klons

cd libfreenect

mkdir build && cd build

cmake -L..

veidot

sudo veikt instalēšanu

Cerams, ka veidošanas process būs bez notikumiem un pilns ar videi draudzīgiem ziņojumiem. Pēc libfreenect draivera instalēšanas nākamais, kas jādara, ir instalēt freenect_stack pakotni ROS. Ir daudz citu pakotņu, no kurām tas ir atkarīgs, mums tās būs jāklonē un jāveido kopā ar catkin_make. Pirms sākat, pārliecinieties, ka jūsu kaķa darba vieta ir pareizi iestatīta un iegūta!

No jūsu catkin darbvietas src mapes:

git klons

git klons

git klons

git klons

git klons

git klons

Oho, tas bija daudz klonēšanas.

Vēlākā rediģēšana: Kā to norādīja viens no maniem lasītājiem, vision_opencv krātuvei jābūt iestatītai uz melodisku zaru. Par to cd uz src/vision_opencv un izpildīt

git izrakstīšanās melodiska

Pēc tam atgriezieties savā catkin darbvietas mapē. Lai pārbaudītu, vai mēs esam atkarīgi no visām pakotnēm, izpildiet šo komandu:

rosdep instalēt-no-paths src --ignore-src

Ja esat veiksmīgi klonējis visas nepieciešamās paketes, tas pieprasīs lejupielādēt libfreekinect ar apt-get. Atbildiet nē, jo mēs to jau esam instalējuši no avota.

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

catkin_make -j2

Tējas laiks;) vai kāds ir tavs mīļākais dzēriens.

Kad apkopošanas process ir pabeigts, varat mēģināt palaist kinect steku un pārbaudīt, vai tas pareizi izvada dziļuma un krāsu attēlus. Es izmantoju Raspberry Pi bez galvas, tāpēc man ir jāpalaiž RVIZ savā galddatorā.

Veicot Raspberry Pi do (nomainiet IP adresi uz Raspberry Pi IP adresi!):

eksportēt ROS_MASTER_URI = https://192.168.0.108: 11311

eksportēt ROS_IP = 192.168.0.108

roslaunch freenect_launch freenect.launch deep_registration: = taisnība

Jūs redzēsit izvadi, kā parādīts 1. ekrānuzņēmumā. "Ierīces apturēšana RGB un dziļuma plūsma." norāda, ka Kinect ir gatavs, taču nekas vēl nav abonēts tā tēmās.

Galddatorā, kurā ir instalēta ROS Melodic, rīkojieties šādi:

eksportēt ROS_MASTER_URI = https://192.168.0.108: 11311

eksportēt ROS_IP = [tavs galddators-ip] rviz

Tagad jums vajadzētu būt iespējai redzēt RGB un dziļuma attēlu straumes RVIZ tāpat kā 2. ekrānuzņēmumā iepriekš … bet ne vienlaikus.

Labi, šeit sākas nejaukas lietas. Es pavadīju 3 dienas, izmēģinot dažādus draiverus un pieejas, un nekas nedarbojās - tiklīdz es mēģinātu piekļūt divām straumēm vienlaicīgi, Kinect sāksies laiks, kā redzams 3. ekrānuzņēmumā. Es izmēģināju visu: labāku barošanas avotu, vecākas libfreenect saistības un freenect_stack, apturot usb_autosuspend, injicējot balinātāju USB portos (labi, ne pēdējais! nedariet to, tas ir joks un tas nedrīkst būt tehnisks padoms:)). Tad vienā no Github numuriem es redzēju kādas personas kontu, kurš teica, ka viņu Kinect ir nestabils, līdz viņi "ielādēja USB kopni", pievienojot WiFi dongle. Es to izmēģināju, un tas strādāja. No vienas puses, es priecājos, ka tas izdevās. No otras puses, kādam tas tiešām ir jālabo. Pa to laiku (kaut kā) to labojot, pāriesim pie nākamā soļa.

3. darbība: atsevišķas RTAB kartes instalēšana

Atsevišķas RTAB MAP instalēšana
Atsevišķas RTAB MAP instalēšana

Vispirms mums ir jāinstalē virkne atkarību:

Neskatoties uz to, ka PCL ir pieejama iepriekš izveidota armhf pakotne, šīs problēmas dēļ mums tā būs jāapkopo no avota. Konsultējieties ar PCL GitHub repozitoriju, lai uzzinātu, kā to apkopot no avota.

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

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

Tagad klonēsim rtab kartes savrupās paketes git repozitoriju mūsu mājas mapē un izveidosim to. Es izmantoju jaunāko versiju (0.18.0).

git klons

cd rtabmap/build

cmake..

padarīt -j2

sudo veikt instalēšanu

sudo ldconfig rtabmap

Tagad, kad esam apkopojuši atsevišķu RTAB MAP, mēs varam pāriet uz pēdējo soli - ROS iesaiņojuma apkopošanu un instalēšanu RTAB MAP, rtabmap_ros.

4. darbība: Rtabmap_ros instalēšana

Rtabmap_ros instalēšana
Rtabmap_ros instalēšana

Ja esat tik tālu, jūs, iespējams, jau zināt šo urbjmašīnu:) Klonējiet rtabmap_ros repozitoriju savā catkin darbvietas src mapē. (Izpildiet nākamo komandu no catkin workspace src mapes!)

git klons

Mums būs vajadzīgas arī šīs ROS paketes, kuras rtabmap_ros ir atkarīgas no:

git klons

git klons

git klons

git klons

git klons

Pirms sākat apkopošanu, varat pārliecināties, ka nepalaidāt garām nevienu atkarību, izmantojot šādu komandu:

rosdep instalēt-no-paths src --ignore-src

Instalējiet vairāk atkarību no ap-get (tie nepārtrauks saistīšanu, bet apkopošanas laikā radīs kļūdu)

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

Pēc tam pārejiet uz savu catkin darbvietas mapi un sāciet apkopot:

cd..

catkin_make -j2

Ceru, ka savu iecienīto kompilācijas dzērienu nekur neesat ievietojis pārāk tālu. Pēc apkopošanas esam gatavi veikt kartēšanu!

5. darbība: parādiet laiku

Laiks izrādei
Laiks izrādei
Laiks izrādei
Laiks izrādei

Veiciet šo viltīgo triku, pievienojot USB portam kaut ko līdzīgu WiFi vai Bluetooth dongle - es izmantoju 2 USB 2.0 portus, vienu Kinect, otru WiFi dongle.

Raspberry Pi do (nomainiet IP adresi uz Raspberry Pi IP adresi!): 1. terminālis:

eksportēt ROS_MASTER_URI = https://192.168.0.108: 11311

eksportēt ROS_IP = 192.168.0.108

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

2. terminālis:

roslaunch rtabmap_ros rgbd_mapping.: = nepatiess

Jūs redzēsit izvadi, kā parādīts 1. ekrānuzņēmumā. "Ierīces apturēšana RGB un dziļuma plūsma." norāda, ka Kinect ir gatavs, taču nekas vēl nav abonēts tā tēmās. Otrajā terminālī jums vajadzētu redzēt ziņojumus par odom kvalitāti. Ja pārvietosit Kinect pārāk ātri, odoma kvalitāte būs 0, un jums būs jāpārvietojas uz iepriekšējo atrašanās vietu vai jāsāk no tīras datu bāzes.

Galddatorā, kurā ir instalēta ROS Melodic un rtab_map pakotne (šim nolūkam iesaku izmantot Ubuntu datoru, jo amd64 arhitektūrai ir pieejamas iepriekš izveidotas paketes):

eksportēt ROS_MASTER_URI = https://192.168.0.108: 11311

eksportēt ROS_IP = [tavs galddators-ip]

rviz

Pievienojiet MapGraph un MapCloud displejus rviz un izvēlieties atbilstošās tēmas, kas nāk no rtab_map. Tā tas ir, salda uzvaras garša! Iet uz priekšu un veiciet kartēšanu:)

6. darbība: atsauces

Rakstot šo rakstu, es konsultēju vairākus resursus, galvenokārt forumus un GitHub problēmas. Es viņus atstāšu šeit.

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

Pievienojiet mani LinkedIn, ja jums ir kādi jautājumi, un abonējiet manu YouTube kanālu, lai saņemtu paziņojumu par interesantākiem projektiem, kas saistīti ar mašīnmācīšanos un robotiku.

Ieteicams: