Sisukord:
- Samm: mis toimis ja mis mitte
- 2. samm: Freenecti draiverite ja Freenect_stack installimine
- 3. samm: eraldiseisva RTAB -kaardi installimine
- Samm 4: Rtabmap_ros installimine
- Samm: näidake aega
- 6. samm: viited
Video: RGB-D SLAM koos Kinectiga Raspberry Pi 4-l [Buster] ROS-meloodiline: 6 sammu
2024 Autor: John Day | [email protected]. Viimati modifitseeritud: 2024-01-30 08:46
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
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
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
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
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:
Heli lokaliseeriv mannekeenipea koos Kinectiga: 9 sammu (piltidega)
Heli lokaliseeriv mannekeenipea koos Kinectiga: tutvuge Margaretiga, mis on juhi väsimuse jälgimissüsteemi testimismannekeen. Ta lahkus hiljuti oma ülesannetest ja leidis tee meie kontoriruumidesse ning on sellest ajast peale juhtinud nende tähelepanu, kes arvavad, et ta on "jube". Õigluse huvides olen
ROS Melodic Raspberry Pi 4 -l [Debian Buster] + RPLIDAR A1M8: 6 sammu
ROS Melodic Raspberry Pi 4 -l [Debian Buster] + RPLIDAR A1M8: See artikkel käsitleb ROS Melodic Morenia installimist Raspberry Pi 4 -le, kus töötab uusim Debian Buster, ja kuidas kasutada RPLIDAR A1M8 meie installimisega. Kuna Debian Buster ilmus ametlikult vaid paar nädalat tagasi (hetkel
Raspberry Pi - autonoomne Mars Rover koos OpenCV objektide jälgimisega: 7 sammu (koos piltidega)
Raspberry Pi - autonoomne Mars Rover koos OpenCV objektide jälgimisega: toiteallikaks Raspberry Pi 3, avatud CV objektide tuvastamine, ultraheliandurid ja reduktoriga alalisvoolumootorid. See rover saab jälgida mis tahes objekti, mille jaoks ta on koolitatud, ja liikuda igal maastikul
Interaktiivne LED -kuppel Fadecandy, töötlemise ja Kinectiga: 24 sammu (koos piltidega)
Interaktiivne LED -kuppel koos Fadecandy, töötlemise ja Kinectiga: WhatWhen in Dome on 4,2 m geodeetiline kuppel, mis on kaetud 4378 LED -iga. Kõik LED -id on individuaalselt kaardistatud ja adresseeritavad. Neid juhib Windowsi töölaual Fadecandy ja Processing. Kinect on kinnitatud kupli ühe tugiposti külge, nii et
Roomblock: platvorm ROS -i navigeerimise õppimiseks koos Roomba, Raspberry Pi ja RPLIDARiga: 9 sammu (koos piltidega)
Roomblock: platvorm ROS -i navigeerimise õppimiseks koos Roomba, Raspberry Pi ja RPLIDARiga: mis see on? &Quot; Roomblock " on robotplatvorm, mis koosneb Roombast, Raspberry Pi 2 -st, lasersensorist (RPLIDAR) ja mobiilpatareist. Paigaldusraami saab valmistada 3D -printeritega. ROS -navigatsioonisüsteem võimaldab teha ruumide kaarti ja kasutada i