Përmbajtje:

RGB-D SLAM Me Kinect në Raspberry Pi 4 [Buster] ROS Melodic: 6 hapa
RGB-D SLAM Me Kinect në Raspberry Pi 4 [Buster] ROS Melodic: 6 hapa

Video: RGB-D SLAM Me Kinect në Raspberry Pi 4 [Buster] ROS Melodic: 6 hapa

Video: RGB-D SLAM Me Kinect në Raspberry Pi 4 [Buster] ROS Melodic: 6 hapa
Video: RGB-D SLAM с Kinect на Raspberry Pi 4 ROS Melodic 2024, Korrik
Anonim
Image
Image

Vitin e kaluar shkrova një artikull në lidhje me ndërtimin dhe instalimin e ROS Melodic në Raspberry Pi të ri (në atë kohë) me OS Debian Buster. Artikulli ka marrë shumë vëmendje si këtu në Instructables ashtu edhe në platforma të tjera. Jam shumë i lumtur që kam ndihmuar kaq shumë njerëz që të instalojnë me sukses ROS në Raspberry Pi. Në videon shoqëruese unë gjithashtu demonstrova shkurtimisht marrjen e imazhit të thellë nga Kinect 360. Më vonë shumë njerëz më kanë kontaktuar në LinkedIn dhe më kanë pyetur se si kam arritur të përdor Kinect me Raspberry Pi. Unë u befasova disi nga pyetja, pasi procesi i përgatitjes së Kinect në atë kohë më mori rreth 3-4 orë dhe nuk dukej jashtëzakonisht i komplikuar. Unë i ndava skedarët e mi.bash_history me të gjithë njerëzit që më pyetën për këtë çështje dhe në prill më në fund gjeta kohën për të shkruar një artikull se si të instaloni drejtuesit e Kinect dhe të kryeni RGB-D SLAM me RTAB-MAP ROS. Java e netëve pa gjumë pasi fillova të shkruaj artikullin tani e kuptoj pse kaq shumë njerëz më bënë këtë pyetje:)

Do të filloj me një shpjegim të shkurtër se cilat qasje funksionuan dhe cilat jo. Pastaj do të shpjegoj se si të instaloni drejtuesit e Kinect për përdorim me ROS Melodic dhe më në fund si të vendosni makinën tuaj për RGB-D SLAM me RTAB-MAP ROS.

Hapi 1: Çfarë funksionoi dhe çfarë jo

Ka disa drejtues në dispozicion për Kinect në Raspberry Pi - prej tyre dy mbështeten nga ROS.

Drejtuesit OpenNI - paketa openni_camera për ROS

drejtuesit libfreenect - paketa freenect_stack për ROS

Nëse shikoni në depot e tyre përkatëse GitHub, mund të gjeni se drejtuesi i OpenNI është përditësuar për herë të fundit vite më parë dhe në praktikë është EOL për një kohë të gjatë. ibfreekinect nga ana tjetër po përditësohet me kohë. E njëjta gjë për paketat e tyre përkatëse ROS, freenect_stack u lëshua për melodikën ROS, ndërsa distroja e tij e fundit openni_camera ka listuar mbështetjen për Fuerte…

Isshtë e mundur të përpiloni dhe instaloni shoferin OpenNI dhe paketën openni_camera në Raspberry Pi për ROS Melodic, megjithëse nuk funksionoi për mua. Për ta bërë këtë ndiqni këtë udhëzues, hapat 1, 2, 3, në hapin 2 dhe 3 hiqni flamurin "-mfloat-abi = softfp" nga skedari Platform/Linux/Build/Common/Platform. ARM (sipas këshillës për këtë Çështja Github). Pastaj klononi paketën openni_camera në hapësirën tuaj të punës catkin dhe përpilojeni me catkin_make. Sidoqoftë, nuk funksionoi për mua, gabimi në krijimin e gjeneratorit të thellësisë dështoi. Arsyeja: Ndërfaqja USB nuk mbështetet!

Përdorimi i libfreenect dhe freenect_stack dha sukses në fund, por kishte mjaft probleme për t'u zgjidhur dhe zgjidhja ishte pak e pacipë, megjithëse punonte shumë e qëndrueshme (1 orë + operacion i vazhdueshëm).

Hapi 2: Instalimi i Shoferëve Freenect dhe Freenect_stack

Instalimi i Shoferëve Freenect dhe Freenect_stack
Instalimi i Shoferëve Freenect dhe Freenect_stack

Unë do të supozoj se ju përdorni imazhin tim ROS Melodic Desktop nga ky artikull. Nëse doni të bëni instalim në mjedise të ndryshme, për shembull imazhin ros_comm ose në Ubuntu për Raspberry Pi, sigurohuni që keni njohuri të mjaftueshme për ROS për të zgjidhur problemet që mund të dalin nga ai ndryshim.

Le të fillojmë duke ndërtuar drejtues libfreenect nga burimi, pasi versioni i para-ndërtuar i depove apt-get është shumë i vjetëruar.

përditësim sudo apt-get

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

git klon

cd libfreenect

mkdir build && cd build

cmake -L..

bëj

sudo make install

Shpresojmë që procesi i ndërtimit të jetë pa probleme dhe plot mesazhe miqësore të gjelbra. Pasi të keni instaluar drejtuesin libfreenect, gjëja tjetër që duhet bërë është të instaloni paketën freenect_stack për ROS. Ka mjaft pako të tjera nga të cilat varet, do të na duhet t'i klonojmë dhe t'i ndërtojmë me catkin_make të gjitha së bashku. Para se të filloni, sigurohuni që hapësira juaj e punës catkin të jetë e rregulluar dhe buruar siç duhet!

Nga dosja juaj catkin src workspace:

git klon

git klon

git klon

git klon

git klon

git klon

Oh, kjo ishte shumë klonim.

REDITIMI I VON: Siç u vu në dukje nga një prej lexuesve të mi, depoja e vision_opencv duhet të vendoset në degën melodike. Për atë cd në src/vision_opencv dhe ekzekutoni

git checkout melodike

Pastaj kthehuni te dosja juaj e hapësirës së punës catkin. Për të kontrolluar nëse varësitë për të gjitha paketat në vend ekzekutojmë këtë komandë:

rosdep install-nga-paths src --ignore-src

Nëse keni klonuar me sukses të gjitha paketat e nevojshme, do t'ju kërkojë të shkarkoni libfreekinect me apt-get. Përgjigju jo, pasi e kemi instaluar tashmë nga burimi.

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

bëj catkin -j2

Koha e çajit;) ose cilado qoftë pija juaj e preferuar.

Pasi të ketë përfunduar procesi i përpilimit, mund të provoni të filloni kinect stack dhe të kontrolloni nëse nxjerr thellësinë dhe ngjyrat siç duhet. Unë përdor Raspberry Pi pa kokë, kështu që më duhet të ekzekutoj RVIZ në kompjuterin tim desktop.

Në Raspberry Pi bëni (Ndryshoni adresën IP në adresën IP të Raspberry Pi tuaj!):

eksport ROS_MASTER_URI = https://192.168.0.108: 11311

eksport ROS_IP = 192.168.0.108

roslaunch freenect_launch freenect.rezantimi i thellësisë_regjistrimit: = e vërtetë

Do të shihni daljen si në Pamjen e Ekranit 1. "Ndalimi i rrjedhjes së pajisjes RGB dhe Depth." tregon se Kinect është gati, por asgjë nuk është regjistruar ende në temat e tij.

Në kompjuterin tuaj desktop me ROS Melodic të instaluar bëni:

eksport ROS_MASTER_URI = https://192.168.0.108: 11311

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

Tani duhet të jeni në gjendje të shihni rrymat e imazheve RGB dhe Thellësia në RVIZ si në Pamjen e Ekranit 2 më lart … por jo në të njëjtën kohë.

Mirë, këtu fillojnë gjërat e pavërteta. Kam kaluar 3 ditë duke provuar drejtues dhe qasje të ndryshme dhe asgjë nuk ka funksionuar - sapo do të provoja të hyja në dy rryma njëkohësisht, Kinect do të fillonte të skadonte kohën siç mund ta shihni në Pamjen e Ekranit 3. Provova gjithçka: furnizim më të mirë me energji elektrike, angazhime më të vjetra të libfreenect dhe freenect_stack, ndalimi i usb_autosuspend, injektimi i zbardhuesit në portet USB (në rregull, jo i fundit! mos e bëni, është një shaka dhe nuk duhet të përbëjë një këshillë teknike:)). Pastaj në një nga çështjet e Github pashë një tregim të një personi që tha se Kinect i tyre ishte i paqëndrueshëm, derisa ata "ngarkuan autobusin USB" duke lidhur dongle WiFi. E provova dhe funksionoi. Nga njëra anë, jam i kënaqur që funksionoi. Nga ana tjetër, dikush me të vërtetë duhet ta rregullojë atë. Epo, ndërkohë (duke e rregulluar) atë, le të kalojmë në hapin tjetër.

Hapi 3: Instalimi i Hartës së Pavarur RTAB

Instalimi i Hartës së Pavarur RTAB
Instalimi i Hartës së Pavarur RTAB

Së pari ne kemi një mori varësish për t'u instaluar:

Pavarësisht se ekziston një paketë e paracaktuar armhf në dispozicion për PCL, ne do të duhet ta përpilojmë atë nga burimi për shkak të kësaj çështjeje. Konsultohuni me depon PCL GitHub për të parë se si ta përpiloni atë nga burimi.

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

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

Tani le të klonojmë magazinën e paketave të pavarura rtab të git në dosjen tonë në shtëpi dhe ta ndërtojmë atë. Kam përdorur lëshimin e fundit (0.18.0).

git klon

cd rtabmap/build

cmake..

bëj -j2

sudo make install

sudo ldconfig rtabmap

Tani kur kemi përpiluar RTAB MAP të pavarur, mund të kalojmë në hapin e fundit - përpilimin dhe instalimin e mbështjellësit ROS për RTAB MAP, rtabmap_ros.

Hapi 4: Instalimi i Rtabmap_ros

Instalimi i Rtabmap_ros
Instalimi i Rtabmap_ros

Nëse keni arritur aq larg, me siguri e dini stërvitjen tani:) Klononi depon rtabmap_ros në dosjen tuaj catkin src të hapësirës së punës. (Ekzekutoni komandën tjetër nga dosja juaj catkin src e punës!)

git klon

Ne gjithashtu do të kemi nevojë për këto pako ROS, që rtabmap_ros varet nga:

git klon

git klon

git klon

git klon

git klon

Para se të filloni përpilimin, mund të siguroheni që nuk ju mungojnë varësitë me komandën e mëposhtme:

rosdep install-nga-paths src --ignore-src

Instaloni më shumë varësi nga ap-get (këto nuk do të ndërpresin lidhjen, por do të hedhin një gabim gjatë përpilimit)

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

Pastaj kaloni në dosjen tuaj të hapësirës së punës catkin dhe filloni të përpiloni:

cd..

bëj catkin -j2

Shpresoj se nuk e keni vendosur pijen tuaj të preferuar të përpilimit askund shumë larg. Pasi të ketë përfunduar përpilimi, ne jemi gati për të bërë hartëzimin!

Hapi 5: Trego kohën

Koha e shfaqjes
Koha e shfaqjes
Koha e shfaqjes
Koha e shfaqjes

Bëni atë mashtrim hakues duke shtuar diçka si WiFi ose dongle Bluetooth në një port USB - unë po përdorja 2 porte USB 2.0, njëra për Kinect, tjetra për dongle WiFi.

Në Raspberry Pi bëni (Ndryshoni adresën IP në adresën IP të Raspberry Pi!): Terminali i parë:

eksport ROS_MASTER_URI = https://192.168.0.108: 11311

eksport ROS_IP = 192.168.0.108

roslaunch freenect_launch freenect.regimi i thellësisë së nisjes: = të dhënat e vërteta_skip: = 2

Terminali i 2 -të:

roslaunch rtabmap_ros rgbd_mapping.launch rtabmap_args: = "-delete_db_on_start --Vis/MaxFeatures 500 --Mem/ImagePreDecimation 2 --Mem/ImagePostDecimation 2 --Kp/DetectorStrategy 6 --Odomrt2Odom/2" ImageSize: = e rreme

Do të shihni daljen si në Pamjen e Ekranit 1. "Ndalimi i rrjedhjes së pajisjes RGB dhe Depth." tregon se Kinect është gati, por asgjë nuk është e regjistruar në temat e tij. Në terminalin e dytë duhet të shihni mesazhe në lidhje me cilësinë e aromës. Nëse lëvizni Kinect shumë shpejt, cilësia e odomit do të shkojë në 0 dhe do t'ju duhet të lëvizni në një vendndodhje të mëparshme ose të filloni nga baza e të dhënave të pastër.

Në kompjuterin tuaj desktop me paketën ROS Melodic dhe rtab_map (ju rekomandoj të përdorni kompjuterin Ubuntu për këtë, pasi paketat e para-ndërtuara janë në dispozicion për arkitekturën amd64) bëni:

eksport ROS_MASTER_URI = https://192.168.0.108: 11311

eksporto ROS_IP = [desktopi-kompjuteri-ip juaj]

rviz

Shtoni ekranet MapGraph dhe MapCloud te rviz dhe zgjidhni temat përkatëse që vijnë nga rtab_map. Epo, kjo është ajo, shija e ëmbël e fitores! Shkoni përpara dhe bëni disa harta:)

Hapi 6: Referencat

Ndërsa shkruaja këtë artikull kishte një numër burimesh që i konsultova, kryesisht forume dhe çështje GitHub. Unë do t'i lë ata këtu.

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

Më shtoni në LinkedIn nëse keni ndonjë pyetje dhe regjistrohuni në kanalin tim në YouTube për t'u njoftuar për projekte më interesante që përfshijnë mësimin e makinerisë dhe robotikën.

Recommended: