Kazalo:
- Korak: Kaj je delovalo in kaj ne
- 2. korak: Namestitev gonilnikov Freenect in Freenect_stack
- 3. korak: Namestitev samostojne RTAB MAP
- 4. korak: Namestitev Rtabmap_ros
- 5. korak: Pokaži čas
- 6. korak: Reference
Video: RGB-D SLAM s Kinectom na Raspberry Pi 4 [Buster] ROS Melodično: 6 korakov
2024 Avtor: John Day | [email protected]. Nazadnje spremenjeno: 2024-01-30 12:03
Lani sem napisal članek o gradnji in namestitvi ROS Melodic na novi (takratni) Raspberry Pi z operacijskim sistemom Debian Buster. Članek je bil deležen velike pozornosti tako na Instructables kot na drugih platformah. Zelo sem vesel, da sem toliko ljudem pomagal uspešno namestiti ROS na Raspberry Pi. V priloženem videoposnetku sem na kratko pokazal tudi globinsko sliko iz Kinect 360. Kasneje so me na LinkedInu kontaktirali številni ljudje in me vprašali, kako mi je uspelo uporabljati Kinect z Raspberry Pi. Bil sem nekoliko presenečen nad vprašanjem, saj mi je postopek priprave Kinecta takrat trajal približno 3-4 ure in se mi ni zdel zelo zapleten. Datoteke.bash_history sem delil z vsemi ljudmi, ki so me spraševali o tem vprašanju, in aprila sem končno našel čas, da napišem članek o tem, kako namestiti gonilnike Kinect in izvesti RGB-D SLAM z RTAB-MAP ROS. Teden neprespanih noči po začetku pisanja članka zdaj razumem, zakaj mi je toliko ljudi postavilo to vprašanje:)
Začel bom s kratko razlago o tem, kateri pristopi so delovali in kateri ne. Nato bom razložil, kako namestiti gonilnike Kinect za uporabo z ROS Melodic in na koncu, kako nastaviti vaš stroj za RGB-D SLAM z RTAB-MAP ROS.
Korak: Kaj je delovalo in kaj ne
Za Kinect je na voljo nekaj gonilnikov na Raspberry Pi - dva od njih podpira ROS.
Gonilniki OpenNI - paket openni_camera za ROS
gonilniki libfreenect - paket freenect_stack za ROS
Če pogledate njihova ustrezna skladišča GitHub, lahko ugotovite, da je bil gonilnik OpenNI nazadnje posodobljen pred leti in je v praksi že dolgo EOL. ibfreekinect pa se pravočasno posodablja. Enako za njihove ustrezne pakete ROS je bil freenect_stack izdan za melodijo ROS, medtem ko je njegov zadnji distributer openni_camera navedel podporo za Fuerte …
Možno je sestaviti in namestiti gonilnik OpenNI in paket openni_camera na Raspberry Pi za ROS Melodic, čeprav zame ni delovalo. Če želite to narediti, sledite tem navodilom, v korakih 1, 2, 3 na 2. in 3. koraku odstranite zastavico "-mfloat-abi = softfp" iz datoteke Platform/Linux/Build/Common/Platform. ARM (glede na nasvet o tem Vprašanje Github). Nato klonirajte paket openni_camera v svoj delovni prostor catkin in prevedite z catkin_make. Pri meni pa ni delovalo, pri napaki pri ustvarjanju generatorja globine ni uspelo. Razlog: vmesnik USB ni podprt!
Uporaba libfreenect in freenect_stack je na koncu prinesla uspeh, vendar je bilo treba rešiti kar nekaj težav, rešitev pa je bila nekoliko hecna, čeprav je delovala zelo stabilno (1 ura + neprekinjeno delovanje).
2. korak: Namestitev gonilnikov Freenect in Freenect_stack
Predvidevam, da uporabljate mojo sliko ROS Melodic Desktop iz tega članka. Če želite namestitev opraviti v drugem okolju, na primer ros_comm image ali v Ubuntu za Raspberry Pi, se prepričajte, da imate dovolj znanja o sistemu ROS za reševanje težav, ki bi lahko nastale zaradi te razlike.
Začnimo z izgradnjo gonilnikov libfreenect iz vira, saj je vnaprej zgrajena različica skladišča apt-get preveč zastarela.
sudo apt-get posodobitev
sudo apt-get install libusb-1.0-0-dev
git clone
cd libfreenect
mkdir build && cd build
cmake -L..
narediti
sudo make install
Upajmo, da bo postopek gradnje potekal brezhibno in poln zelenih prijaznih sporočil. Ko namestite gonilnik libfreenect, morate še namestiti paket freenect_stack za ROS. Od drugih paketov je odvisno, kar nekaj jih bomo morali klonirati in zgraditi z catkin_make vse skupaj. Preden začnete, se prepričajte, da je vaš mačji delovni prostor pravilno nastavljen in nabavljen!
Iz mape src v delovnem prostoru catkin:
git clone
git clone
git clone
git clone
git clone
git clone
Joj, to je bilo veliko kloniranja.
POSLEDNJE UREJANJE: Kot je poudaril eden od mojih bralcev, je treba shrambo vision_opencv nastaviti na melodično vejo. Za ta cd v src/vision_opencv in izvedite
git checkout melodično
Nato se vrnite v mapo delovnega prostora catkin. Če želite preveriti, ali smo odvisni od vseh nameščenih paketov, izvedite ta ukaz:
rosdep install --from-paths src --ignore-src
Če ste uspešno klonirali vse potrebne pakete, bo zahteval prenos libfreekinect z apt-get. Odgovorite ne, saj smo ga že namestili iz vira.
sudo apt-get install libbullet-dev libharfbuzz-dev libgtk2.0-dev libgtk-3-dev
catkin_make -j2
Čas čaja;) ali karkoli je vaša najljubša pijača.
Ko je postopek kompilacije končan, lahko poskusite zagnati sklad kinect in preveriti, ali pravilno oddaja globino in barvne slike. Raspberry Pi uporabljam brez glave, zato moram na namiznem računalniku zagnati RVIZ.
Na Raspberry Pi do (spremenite naslov IP v naslov IP vašega Raspberry Pi!):
izvozi ROS_MASTER_URI = https://192.168.0.108: 11311
izvoz ROS_IP = 192.168.0.108
roslaunch freenect_launch freenect.launch globina_registracije: = res
Videli boste izhod kot na posnetku zaslona 1. "Zaustavitev naprave RGB in izpiranje toka globine." označuje, da je Kinect pripravljen, vendar na njegove teme še ni naročenih nič.
Na namiznem računalniku z nameščenim sistemom ROS Melodic naredite naslednje:
izvozi ROS_MASTER_URI = https://192.168.0.108: 11311
izvoz ROS_IP = [vaš namizni računalnik-ip] rviz
Zdaj bi morali biti v RVIZ -u vidni tokovi slik RGB in Depth, kot na zgornjem posnetku zaslona 2, vendar ne hkrati.
V redu, tukaj se začnejo hacky stvari. Tri dni sem preizkušal različne gonilnike in pristope in nič ni delovalo - takoj, ko sem poskusil dostopati do dveh tokov hkrati, bi Kinect začel izteči, kot lahko vidite na posnetku zaslona 3. Poskusil sem vse: boljše napajanje, starejše zaveze libfreenect in freenect_stack, ustavitev usb_autosuspend, vbrizgavanje belila v vrata USB (v redu, ne zadnje! ne počnite, to je šala in ne sme predstavljati tehničnega nasveta:)). Potem sem v eni od Githubovih številk videl račun osebe, ki je rekla, da je njihov Kinect nestabilen, dokler niso »naložili vodila USB« s povezovanjem ključa WiFi. To sem poskusil in uspelo je. Po eni strani sem vesel, da je uspelo. Po drugi strani pa bi to moral nekdo res popraviti. No, medtem ko smo to (nekako) popravili, pojdimo na naslednji korak.
3. korak: Namestitev samostojne RTAB MAP
Najprej moramo namestiti kup odvisnosti:
Kljub temu, da je za PCL na voljo vnaprej izdelan paket armhf, ga bomo morali zaradi te težave sestaviti iz vira. Posvetujte se s skladiščem PCL GitHub in preverite, kako ga sestavite iz vira.
sudo apt-get install libvtk6-dev libvtk6-qt-dev libvtk6-java libvtk6-jni
sudo apt-get install libopencv-dev cmake libopenni2-dev libsqlite3-dev
Zdaj pa klonirajmo rtab zemljevid samostojnega repozitorija git v našo domačo mapo in ga zgradimo. Uporabil sem zadnjo izdajo (0.18.0).
git clone
cd rtabmap/build
cmake..
naredi -j2
sudo make install
sudo ldconfig rtabmap
Ko smo sestavili samostojno RTAB MAP, lahko preidemo na zadnji korak - sestavljanje in namestitev ovojnine ROS za RTAB MAP, rtabmap_ros.
4. korak: Namestitev Rtabmap_ros
Če ste prišli tako daleč, verjetno že poznate vajo:) Klonirajte skladišče rtabmap_ros v mapo src v delovnem prostoru catkin. (Izvedite naslednji ukaz iz mape src v delovnem prostoru catkin!)
git clone
Potrebovali bomo tudi te pakete ROS, da je rtabmap_ros odvisen od:
git clone
git clone
git clone
git clone
git clone
Preden začnete s sestavljanjem, se lahko prepričate, da ne manjka nobenih odvisnosti z naslednjim ukazom:
rosdep install --from-paths src --ignore-src
Namestite več odvisnosti iz aplikacije ap-get (te ne bodo prekinile povezovanja, ampak bodo pri sestavi napake)
sudo apt-get install libsdl-image1.2-dev
Nato se pomaknite v mapo delovnega prostora catkin in začnite sestavljati:
cd..
catkin_make -j2
Upam, da svoje najljubše kompilacijske pijače niste dali nikamor predaleč. Ko je kompilacija končana, smo pripravljeni na kartiranje!
5. korak: Pokaži čas
Naredite ta hec trik z dodajanjem nečesa, kot je WiFi ali Bluetooth ključ v vrata USB - uporabljal sem 2 vhoda USB 2.0, enega za Kinect, drugega za WiFi dongle.
Na Raspberry Pi do (spremenite naslov IP v naslov IP vašega Raspberry Pi!): 1. terminal:
izvozi ROS_MASTER_URI = https://192.168.0.108: 11311
izvoz ROS_IP = 192.168.0.108
roslaunch freenect_launch freenect.launch globina_registracije: = resnični podatki_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 --OdomF2Med: = napačno
Videli boste izhod kot na posnetku zaslona 1. "Ustavljanje naprave RGB in izpiranje toka globine." označuje, da je Kinect pripravljen, vendar na njegove teme še ni naročenih. V drugem terminalu bi morali videti sporočila o kakovosti odom. Če premaknete Kinect prehitro, bo kakovost odom na 0 in morali se boste premakniti na prejšnjo lokacijo ali začeti s čisto bazo podatkov.
Na namiznem računalniku z nameščenim paketom ROS Melodic in rtab_map (priporočam, da za to uporabite računalnik Ubuntu, saj so za arhitekturo amd64 na voljo vnaprej izdelani paketi):
izvozi ROS_MASTER_URI = https://192.168.0.108: 11311
izvoz ROS_IP = [vaš namizni računalnik-ip]
rviz
Dodajte zaslone MapGraph in MapCloud v rviz in izberite ustrezne teme, ki prihajajo iz rtab_map. No, to je to, sladek okus zmage! Kar naredite kartiranje:)
6. korak: Reference
Med pisanjem tega članka sem se posvetoval s številnimi viri, predvsem forumi in vprašanji GitHub. Pustim jih tukaj.
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
Če imate kakršna koli vprašanja, me dodajte na LinkedIn in se naročite na moj YouTube kanal, da boste obveščeni o zanimivejših projektih, ki vključujejo strojno učenje in robotiko.
Priporočena:
Manekenska glava z lokacijo zvoka s Kinectom: 9 korakov (s slikami)
Zvočno lokalizirana manekenska glava s Kinectom: Spoznajte Margaret, preskusno lutko za sistem spremljanja utrujenosti voznika. Pred kratkim se je umaknila s svojih dolžnosti in našla pot v naš pisarniški prostor, od takrat pa je opozorila tiste, ki menijo, da je "grozljiva". V interesu pravičnosti sem
ROS Melodic na Raspberry Pi 4 [Debian Buster] + RPLIDAR A1M8: 6 korakov
ROS Melodic na Raspberry Pi 4 [Debian Buster] + RPLIDAR A1M8: Ta članek bo zajemal postopek namestitve ROS Melodic Morenia na Raspberry Pi 4 z najnovejšim Debian Busterjem in kako uporabljati RPLIDAR A1M8 z našo namestitvijo. Ker je bil Debian Buster uradno izdan pred nekaj tedni (trenutno
Namestite ROS Kinetic, TurtleBot3, Raspicam na Raspberry Pi 4b: 5 korakov
Namestite ROS Kinetic, TurtleBot3, Raspicam na Raspberry Pi 4b: TurtleBot3 Burger prihaja z Raspberry Pi 3 B/B+ in ne podpira nove (od 9./2019) Raspberry Pi 4b. Sledite spodnjim korakom, da bo TurtleBot3 deloval na Raspberry Pi 4b, vključno z izgradnjo ROS Kinetic iz virov na Raspberry Pi 4b Raspbian
Prvi koraki z ROS Melodic na Raspberry Pi 4 Model B: 7 korakov
Začetek uporabe ROS Melodic na Raspberry Pi 4 Model B: Robotski operacijski sistem (ROS) je niz programskih knjižnic in orodij, ki se uporabljajo za izdelavo robotskih sistemov in aplikacij. Trenutna različica dolgoročnih storitev ROS je Melodic Morenia. ROS Melodic je združljiv samo z Ubuntu 18.04 Bionic Beaver
Roomblock: platforma za učenje navigacije ROS z Roombo, Raspberry Pi in RPLIDAR: 9 korakov (s slikami)
Roomblock: platforma za učenje navigacije ROS z Roombo, Raspberry Pi in RPLIDAR: Kaj je to? &Quot; Roomblock " je robotska platforma, sestavljena iz Roombe, Raspberry Pi 2, laserskega senzorja (RPLIDAR) in mobilne baterije. Montažni okvir lahko izdelajo 3D tiskalniki. Navigacijski sistem ROS omogoča izdelavo zemljevida sob in uporabo i