Sisukord:

RGB-D SLAM koos Kinectiga Raspberry Pi 4-l [Buster] ROS-meloodiline: 6 sammu
RGB-D SLAM koos Kinectiga Raspberry Pi 4-l [Buster] ROS-meloodiline: 6 sammu

Video: RGB-D SLAM koos Kinectiga Raspberry Pi 4-l [Buster] ROS-meloodiline: 6 sammu

Video: RGB-D SLAM koos Kinectiga Raspberry Pi 4-l [Buster] ROS-meloodiline: 6 sammu
Video: KudanSLAM: RGB-D SLAM 2024, Juuli
Anonim
Image
Image

Eelmisel aastal kirjutasin artikli ROS Melodicu ehitamisest ja installimisest Debian Buster OS -iga uuele (sel ajal) Raspberry Pi -le. Artikkel on saanud palju tähelepanu nii siin Instructablesis kui ka muudel platvormidel. Mul on väga hea meel, et aitasin nii paljudel inimestel ROS -i Raspberry Pi -le edukalt installida. Juuresolevas videos demonstreerisin lühidalt ka Kinect 360 sügavuspildi saamist. Hiljem on paljud inimesed minuga LinkedInis ühendust võtnud ja küsinud, kuidas mul õnnestus Kinecti koos Raspberry Pi -ga kasutada. Olin küsimuse üle üllatunud, kuna Kinecti ettevalmistamise protsess võttis mul toona aega umbes 3-4 tundi ega tundunud eriti keeruline. Jagasin oma.bash_history faile kõigi inimestega, kes minult selle teema kohta pärisid, ja leidsin aprillis lõpuks aja, et kirjutada artikkel, kuidas installida Kinecti draivereid ja teostada RGB-D SLAM koos RTAB-MAP ROS-iga. Nädal aega magamata öid pärast artikli kirjutamise alustamist saan nüüd aru, miks nii paljud inimesed selle küsimuse esitasid mulle:)

Alustan lühikese selgitusega selle kohta, millised lähenemisviisid toimisid ja millised mitte. Seejärel selgitan, kuidas installida Kinecti draivereid kasutamiseks koos ROS Melodicuga ja lõpuks, kuidas seadistada oma masin RTAB-MAP ROS-iga RGB-D SLAM-i jaoks.

Samm: mis toimis ja mis mitte

Raspberry Pi jaoks on Kinectile saadaval mõned draiverid - neist kahte toetab ROS.

OpenNI draiverid - openni_camera pakett ROS -i jaoks

libfreenect draiverid - pakett freenect_stack ROS -i jaoks

Kui vaatate nende vastavaid GitHubi hoidlaid, leiate, et OpenNI draiverit on viimati uuendatud aastaid tagasi ja praktikas on see pikka aega EOL. Teisest küljest uuendatakse ibfreekinecti õigeaegselt. Sama nende vastavate ROS -pakettide puhul ilmus freenect_stack ROS melodicu jaoks, samas kui tema viimane distributsioon openni_camera on loendanud Fuerte toe…

ROS Melodicu jaoks on võimalik Raspberry Pi jaoks koostada ja installida OpenNI draiver ja openni_camera pakett, kuigi see minu jaoks ei töötanud. Selleks järgige käesolevat juhendit, eemaldage 2. ja 3. toimingu sammud 1, 2, 3 faililt -mfloat-abi = softfp faililt Platform/Linux/Build/Common/Platform. ARM (selle nõuande järgi Githubi probleem). Seejärel kloonige pakett openni_camera oma kodukoha tööruumi ja kompileerige see kataloogiga catkin_make. Minu jaoks see siiski ei töötanud, viga oli sügavusgeneraatori loomisel. Põhjus: USB -liidest ei toetata!

Libfreenecti ja freenect_stacki kasutamine andis lõpuks edu, kuid lahendada oli üsna palju probleeme ja lahendus oli natuke hägune, ehkki töötas väga stabiilselt (1 tund + jätkuv töö).

2. samm: Freenecti draiverite ja Freenect_stack installimine

Freenecti draiverite ja Freenect_stack installimine
Freenecti draiverite ja Freenect_stack installimine

Eeldan, et kasutate minu ROS Melodic Desktopi pilti sellest artiklist. Kui soovite installida muusse keskkonda, näiteks ros_comm image või Ubuntu for Raspberry Pi, veenduge, et teil on piisavalt teadmisi ROS -i kohta, et lahendada sellest erinevusest tulenevaid probleeme.

Alustame libfreenecti draiverite ehitamisest allikast, kuna apt-get hoidla eelvalmis versioon on liiga vananenud.

sudo apt-get update

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

git kloon

cd libfreenect

mkdir build && cd build

cmake -L..

tegema

sudo make install

Loodetavasti on koostamisprotsess sündmusteta ja täis rohelisi sõbralikke sõnumeid. Pärast libfreenect draiveri installimist tuleb järgmisena installida ROS -i jaoks pakett freenect_stack. Sõltub veel paljudest muudest pakettidest. Peame need kloonima ja koos catkin_make'iga ehitama. Enne alustamist veenduge, et teie kassi tööruum on õigesti seadistatud ja hangitud!

Catkini tööruumi src kaustast tehke järgmist.

git kloon

git kloon

git kloon

git kloon

git kloon

git kloon

Oh, see oli palju kloonimist.

HILJEM EDIT: Nagu üks mu lugeja juhtis tähelepanu, tuleb visiooni_opencv hoidla seadistada meloodilisele harule. Selle cd jaoks src/vision_opencv ja käivitage

git checkout meloodiline

Seejärel minge tagasi oma catkini tööruumi kausta. Selle käsu täitmiseks kontrollige, kas oleme sõltuvused kõigi pakettide kohta:

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

Kui olete kõik vajalikud paketid edukalt klooninud, palub see libfreekinect alla laadida apt-get abil. Vastake ei, kuna oleme selle juba allikast installinud.

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

catkin_make -j2

Teeaeg;) või mis iganes su lemmikjook on.

Pärast kompileerimisprotsessi lõppu võite proovida käivitada kinecti virna ja kontrollida, kas see väljastab sügavuse ja värvipildid õigesti. Ma kasutan Raspberry Pi peata, seega pean RVIZ -i oma lauaarvutis käivitama.

Raspberry Pi puhul (muutke oma Raspberry Pi IP -aadress IP -aadressiks!):

eksport ROS_MASTER_URI = https://192.168.0.108: 11311

eksport ROS_IP = 192.168.0.108

roslaunch freenect_launch freenect.launch sügavusregistreerimine: = tõsi

Näete väljundit nagu ekraanipildil 1. "Seadme RGB peatamine ja sügavusvoo loputamine." näitab, et Kinect on valmis, kuid selle teema jaoks pole veel midagi tellitud.

Tehke oma lauaarvutis, kuhu on installitud ROS Melodic, järgmist.

eksport ROS_MASTER_URI = https://192.168.0.108: 11311

eksport ROS_IP = [teie-lauaarvuti-ip] rviz

Nüüd peaksite RVIZ -is nägema RGB ja sügavuse pildivooge nagu ülaltoodud ekraanipildil 2 … kuid mitte samal ajal.

Okei, siit algab häkkiv värk. Proovisin 3 päeva erinevaid draivereid ja lähenemisviise ning miski ei töötanud - niipea kui proovisin ühele ja teisele voole juurde pääseda, hakkas Kinect aeguma, nagu näete ekraanipildil 3. Proovisin kõike: paremat toiteallikat, libfreenecti vanemaid kohustusi ja freenect_stack, usb_autosuspend peatamine, valgendi süstimine USB -portidesse (okei, mitte viimane! ärge tehke seda, see on nali ja see ei tohiks olla tehniline nõuanne:)). Siis nägin ühes Githubi numbris kontot inimesest, kes ütles, et nende Kinect on ebastabiilne, kuni nad "laadisid USB -bussi", ühendades WiFi -dongli. Ma proovisin seda ja see töötas. Ühest küljest on mul hea meel, et see töötas. Teisest küljest peaks keegi selle tõesti parandama. Olles vahepeal selle (omamoodi) parandanud, liigume järgmise sammu juurde.

3. samm: eraldiseisva RTAB -kaardi installimine

Autonoomse RTAB -kaardi installimine
Autonoomse RTAB -kaardi installimine

Esiteks peame installima hulga sõltuvusi:

Hoolimata sellest, et PCL -i jaoks on saadaval eelehitatud armhf -pakett, peame selle probleemi tõttu selle lähtekohast kompileerima. Vaadake PCL GitHubi hoidlast, et näha, kuidas seda allikast kompileerida.

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

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

Nüüd kloonime rtab map iseseisev pakett git hoidla oma kodukataloogi ja ehitame selle üles. Kasutasin viimast versiooni (0.18.0).

git kloon

cd rtabmap/build

cmake..

teha -j2

sudo make install

sudo ldconfig rtabmap

Nüüd, kui oleme koostanud eraldiseisva RTAB MAP -i, saame liikuda viimase etapi juurde - RTAB MAP -i, rtabmap_ros -i jaoks ROS -ümbrise koostamine ja installimine.

Samm 4: Rtabmap_ros installimine

Rtabmap_ros installimine
Rtabmap_ros installimine

Kui olete nii kaugele jõudnud, siis teate ilmselt juba praegu seda harjutust:) Kloonige rtabmap_ros hoidla oma catkini tööruumi src kausta. (Täida järgmine käsk catkin workspace src kaustast!)

git kloon

Meil on vaja ka neid ROS -pakette, millest rtabmap_ros sõltub:

git kloon

git kloon

git kloon

git kloon

git kloon

Enne kompileerimise alustamist saate järgmise käsuga veenduda, et teil pole ühtegi sõltuvust.

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

Installige ap-getist rohkem sõltuvusi (need ei katkesta linkimist, kuid annavad kompileerimise ajal vea)

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

Seejärel liikuge oma catkini tööruumi kausta ja alustage kompileerimist:

cd..

catkin_make -j2

Loodetavasti ei pannud oma lemmik kompileerimisjooki kuhugi liiga kaugele. Pärast kompileerimise lõpetamist oleme valmis kaardistama!

Samm: näidake aega

Näita aega
Näita aega
Näita aega
Näita aega

Tehke see hämmastav trikk, lisades USB -porti midagi WiFi või Bluetooth -dongli sarnast - ma kasutasin 2 USB 2.0 porti, üks Kinecti jaoks, teine WiFi -dongle jaoks.

Raspberry Pi puhul (muutke oma Raspberry Pi IP -aadress IP -aadressiks!): 1. terminal:

eksport ROS_MASTER_URI = https://192.168.0.108: 11311

eksport ROS_IP = 192.168.0.108

roslaunch freenect_launch freenect.launch sügavusregistreerimine: = 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 --OdomF2M/2: = vale

Näete väljundit nagu ekraanipildil 1. "Seadme RGB peatamine ja sügavusvoo loputamine." näitab, et Kinect on valmis, kuid selle teemadel pole veel midagi tellitud. Teises terminalis peaksite nägema sõnumeid odomi kvaliteedi kohta. Kui liigutate Kinecti liiga kiiresti, läheb odomi kvaliteet 0 -le ja peate liikuma eelmisesse asukohta või alustama puhtast andmebaasist.

Lauaarvutisse, kuhu on installitud ROS Melodic ja rtab_map pakett (soovitan selleks kasutada Ubuntu arvutit, kuna amd64 arhitektuuri jaoks on saadaval eelvalmis paketid):

eksport ROS_MASTER_URI = https://192.168.0.108: 11311

eksport ROS_IP = [teie-lauaarvuti-ip]

rviz

Lisage rvizile MapGraphi ja MapCloudi kuvarid ning valige vastavad teemad, mis tulevad saidilt rtab_map. Noh, see on see, magus võidu maitse! Mine ja kaardista:)

6. samm: viited

Seda artiklit kirjutades konsulteerisin paljude ressurssidega, peamiselt foorumite ja GitHubi probleemidega. Jätan nad siia.

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

Kui teil on küsimusi, lisage mind LinkedIni ja tellige minu YouTube'i kanal, et saada märguandeid huvitavamate masinõppe ja robootikaga seotud projektide kohta.

Soovitan: