Sisällysluettelo:

RGB-D SLAM Kinectin kanssa Raspberry Pi 4: llä [Buster] ROS Melodic: 6 vaihetta
RGB-D SLAM Kinectin kanssa Raspberry Pi 4: llä [Buster] ROS Melodic: 6 vaihetta

Video: RGB-D SLAM Kinectin kanssa Raspberry Pi 4: llä [Buster] ROS Melodic: 6 vaihetta

Video: RGB-D SLAM Kinectin kanssa Raspberry Pi 4: llä [Buster] ROS Melodic: 6 vaihetta
Video: Джинсы с низкой посадкой — ГОРЯЧАЯ новинка ВОЗВРАЩЕНИЯ! | Актуальные темы! 2024, Marraskuu
Anonim
Image
Image

Viime vuonna kirjoitin artikkelin ROS Melodicin rakentamisesta ja asentamisesta uuteen (tuolloin) Raspberry Pi -laitteeseen, jossa on Debian Buster OS. Artikkeli on saanut paljon huomiota sekä täällä Instructablesissa että muilla alustoilla. Olen erittäin iloinen siitä, että olen auttanut niin monia ihmisiä asentamaan ROS onnistuneesti Raspberry Pi: hen. Oheisessa videossa esittelin lyhyesti myös syvyyskuvan saamisen Kinect 360: stä. Myöhemmin monet ihmiset ovat ottaneet minuun yhteyttä LinkedInissä ja kysyneet, miten onnistuin käyttämään Kinectiä Raspberry Pi: n kanssa. Olin tavallaan yllättynyt kysymyksestä, koska Kinectin valmistusprosessi kesti tuolloin noin 3-4 tuntia eikä vaikuttanut kovin monimutkaiselta. Jaoin.bash_history-tiedostoni kaikkien ihmisten kanssa, jotka kysyivät minua asiasta, ja löysin huhtikuussa vihdoin ajan kirjoittaa artikkelin Kinect-ajureiden asentamisesta ja RGB-D SLAM -muistin suorittamisesta RTAB-MAP ROS -laitteella. Viikko unettomia öitä artikkelin kirjoittamisen jälkeen ymmärrän nyt, miksi niin monet ihmiset kysyivät minulta tämän kysymyksen:)

Aloitan lyhyellä selityksellä siitä, mitkä lähestymistavat toimivat ja mitkä eivät. Sitten selitän, kuinka Kinect-ajurit asennetaan käytettäväksi ROS Melodicin kanssa ja lopuksi miten koneesi asetetaan RGB-D SLAM -laitteeseen RTAB-MAP ROS -laitteella.

Vaihe 1: Mikä toimi ja mikä ei

Raspberry Pi -laitteelle on saatavilla muutamia ajureita - joista kaksi on ROS: n tukemia.

OpenNI -ajurit - openni_camera -paketti ROS: lle

libfreenect -ajurit - freenect_stack -paketti ROS: lle

Jos tarkastelet niiden vastaavia GitHub -arkistoja, huomaat, että OpenNI -ajuri on viimeksi päivitetty vuosia sitten ja käytännössä se on EOL pitkään. Toisaalta ibfreekinect päivitetään ajoissa. Sama heidän vastaaville ROS -paketeilleen, freenect_stack julkaistiin ROS melodicille, kun taas viimeisin distro openni_camera on listannut tuen Fuerte…

On mahdollista koota ja asentaa OpenNI -ajuri ja openni_camera -paketti Raspberry Pi for ROS Melodicille, vaikka se ei toiminut minulle. Voit tehdä tämän noudattamalla tätä opasta vaiheiden 1, 2, 3 vaiheissa 2 ja 3 poistamalla "-mfloat-abi = softfp" -lipun Platform/Linux/Build/Common/Platform. ARM-tiedostosta (tämän ohjeen mukaan Github -ongelma). Kloonaa sitten openni_camera -paketti kissasi työtilaan ja käännä se catkin_make -ohjelmalla. Se ei kuitenkaan toiminut minulle, virhe syvyysgeneraattorin luomisessa epäonnistui. Syy: USB -liitäntää ei tueta!

Libfreenectin ja freenect_stackin käyttö tuotti lopulta menestyksen, mutta ratkaistavia ongelmia oli melko vähän ja ratkaisu oli hieman hämmentävä, vaikka se toimi erittäin vakaasti (1 tunti + jatkuva toiminta).

Vaihe 2: Asenna Freenect -ohjaimet ja Freenect_stack

Freenect -ohjainten ja Freenect_stack -ohjelmiston asentaminen
Freenect -ohjainten ja Freenect_stack -ohjelmiston asentaminen

Oletan, että käytät tämän artikkelin ROS Melodic Desktop -kuviani. Jos haluat tehdä asennuksen eri ympäristössä, esimerkiksi ros_comm image tai Ubuntu for Raspberry Pi, varmista, että sinulla on riittävästi tietoa ROS: sta ongelmien ratkaisemiseksi.

Aloitetaan rakentamalla libfreenect-ohjaimet lähteestä, koska apt-get-arkiston esivalmistettu versio on liian vanhentunut.

sudo apt-get päivitys

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

git -klooni

cd libfreenect

mkdir rakentaa && cd rakentaa

cmake -L..

tehdä

sudo tehdä asennus

Toivottavasti rakentamisprosessi on tapahtumaton ja täynnä vihreitä ystävällisiä viestejä. Kun olet asentanut libfreenect -ohjaimen, seuraava askel on asentaa freenect_stack -paketti ROS: lle. On olemassa muutamia muita paketteja, joista se riippuu, meidän on kloonattava ne ja rakennettava yhdessä catkin_make kanssa. Ennen kuin aloitat, varmista, että kissasi työtila on oikein asennettu ja hankittu!

Catkin -työtilan src -kansiostasi:

git-klooni

git-klooni

git-klooni

git-klooni

git-klooni

git -klooni

Huh, se oli paljon kloonausta.

LATER EDIT: Kuten eräs lukijoistani huomautti, vision_opencv -arkisto on asetettava melodiseen haaraan. Sillä cd src/vision_opencv ja suorittaa

git checkout melodinen

Palaa sitten catkin -työtilan kansioon. Voit tarkistaa, onko riippuvuuksia kaikista paikalla olevista paketeista suorittamalla tämä komento:

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

Jos olet kloonannut kaikki tarvittavat paketit, se pyytää libfreekinectin lataamista apt-get -ohjelmalla. Vastaa ei, koska olemme jo asentaneet sen lähteestä.

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

catkin_make -j2

Teehetki;) tai mikä tahansa lempijuomasi on.

Kun kääntäminen on valmis, voit yrittää käynnistää kinect -pinoa ja tarkistaa, tulostaako se syvyys- ja värikuvat oikein. Käytän Raspberry Pi: tä ilman päätä, joten minun on suoritettava RVIZ pöytätietokoneellani.

Raspberry Pi do (Vaihda Raspberry Pi: n IP -osoite IP -osoitteeksi!):

vie ROS_MASTER_URI = https://192.168.0.108: 11311

vienti ROS_IP = 192.168.0.108

roslaunch freenect_launch freenect.launch deep_registration: = totta

Näet tuloksen kuten kuvakaappauksessa 1. "Pysäytyslaite RGB ja syvyysvirtaus." osoittaa, että Kinect on valmis, mutta mitään ei ole vielä tilattu sen aiheisiin.

Tee pöytätietokoneellasi, johon on asennettu ROS Melodic, seuraavasti:

vie ROS_MASTER_URI = https://192.168.0.108: 11311

viedä ROS_IP = [työpöytätietokoneesi-ip] rviz

Nyt sinun pitäisi pystyä näkemään RGB- ja Syvyyskuvavirrat RVIZ: ssä kuten yllä olevassa kuvakaappauksessa 2 … mutta ei samaan aikaan.

Okei, tästä alkaa paska juttu. Kokeilin kolme päivää eri ajureita ja lähestymistapoja, mutta mikään ei toiminut - heti kun yritin käyttää kahta suoratoistoa samanaikaisesti, Kinect aloitti aikakatkaisun, kuten voit nähdä kuvakaappauksessa 3. Yritin kaikkea: parempaa virtalähdettä, vanhempia libfreenect -sitoumuksia ja freenect_stack, usb_autosuspendin pysäyttäminen, valkaisuaineen ruiskuttaminen USB -portteihin (okei, ei viimeinen! älä tee sitä, se on vitsi eikä se saisi olla tekninen neuvo:)). Sitten eräässä Githubin numerossa näin tilin henkilöstä, joka sanoi heidän Kinectin olevan epävakaa, kunnes he "ladasivat USB -väylän" yhdistämällä WiFi -donglen. Kokeilin sitä ja se toimi. Toisaalta olen iloinen, että se toimi. Toisaalta jonkun pitäisi todella korjata se. Sillä välin kun olet (tavallaan) korjannut tämän, siirrymme seuraavaan vaiheeseen.

Vaihe 3: Erillisen RTAB -kartan asennus

Erillisen RTAB -kartan asentaminen
Erillisen RTAB -kartan asentaminen

Ensin on asennettava joukko riippuvuuksia:

Huolimatta PCL: lle saatavilla olevasta valmiista armhf -paketista, meidän on koottava se lähteestä tämän ongelman vuoksi. Katso PCL GitHub -varastoista, miten voit kääntää sen lähteestä.

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

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

Kloonataan nyt rtab map standalone package git -varasto kotikansioon ja rakennetaan se. Käytin uusinta versiota (0.18.0).

git -klooni

cd rtabmap/build

cmake..

tee -j2

sudo tehdä asennus

sudo ldconfig rtabmap

Kun olemme koonneet itsenäisen RTAB MAPin, voimme siirtyä viimeiseen vaiheeseen - RTAB MAP: n, rtabmap_rosin, ROS -kääreen kokoamiseen ja asentamiseen.

Vaihe 4: Asenna Rtabmap_ros

Asennetaan Rtabmap_ros
Asennetaan Rtabmap_ros

Jos olet päässyt niin pitkälle, tiedät todennäköisesti poran jo nyt:) Kloonaa rtabmap_ros -arkisto catkin -työtilan src -kansioon. (Suorita seuraava komento catkin workspace src -kansiosta!)

git -klooni

Tarvitsemme myös nämä ROS -paketit, joista rtabmap_ros riippuu:

git-klooni

git-klooni

git-klooni

git -klooni

git-klooni

Ennen kuin aloitat kääntämisen, voit varmistaa, että et menetä riippuvuuksia seuraavalla komennolla:

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

Asenna lisää riippuvuuksia ap-getistä (ne eivät keskeytä linkitystä, mutta heittävät virheen kääntämisen aikana)

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

Siirry sitten catkin -työtilan kansioon ja aloita kääntäminen:

cd..

catkin_make -j2

Toivottavasti et laittanut suosikki kokoelmajuomaasi mihinkään liian pitkälle. Kun kokoelma on valmis, olemme valmiita kartoittamaan!

Vaihe 5: Näytä aika

Esitysaika
Esitysaika
Esitysaika
Esitysaika

Tee tämä hämmentävä temppu lisäämällä jotain, kuten WiFi tai Bluetooth -dongle USB -porttiin - käytin 2 USB 2.0 -porttia, yksi Kinectille ja toinen WiFi -dongleille.

Raspberry Pi do (Vaihda Raspberry Pi: n IP -osoite IP -osoitteeksi!): 1. pääte:

vie ROS_MASTER_URI = https://192.168.0.108: 11311

vienti ROS_IP = 192.168.0.108

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

2. terminaali:

Roslaunch rtabmap_ros rgbd_mapping.: = väärä

Näet tuloksen kuten kuvakaappauksessa 1. "Laitteen RGB -pysäytys ja Depth stream flush". osoittaa, että Kinect on valmis, mutta mitään ei ole vielä tilattu sen aiheisiin. Jos siirrät Kinectiä liian nopeasti, odomin laatu on 0 ja sinun on siirryttävä edelliseen sijaintiin tai aloitettava puhtaasta tietokannasta.

Pöytätietokoneellesi, johon on asennettu ROS Melodic- ja rtab_map-paketti (suosittelen käyttämään Ubuntu-tietokonetta, koska valmiit paketit ovat saatavilla amd64-arkkitehtuurille):

vie ROS_MASTER_URI = https://192.168.0.108: 11311

viedä ROS_IP = [pöytätietokoneesi-ip]

rviz

Lisää MapGraph- ja MapCloud -näytöt rviziin ja valitse vastaavat aiheet rtab_mapista. Tässä se on, voiton makea maku! Mene eteenpäin ja tee kartoitus:)

Vaihe 6: Viitteet

Tätä artikkelia kirjoittaessani kuuntelin useita resursseja, lähinnä foorumeita ja GitHub -ongelmia. Jätän heidät tähän.

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

Lisää minut LinkedIniin, jos sinulla on kysyttävää, ja tilaa YouTube -kanavani, niin saat ilmoituksen mielenkiintoisimmista koneoppimista ja robotiikkaa koskevista projekteista.

Suositeltava: