Obsah:

RGB-D SLAM s Kinectom na Raspberry Pi 4 [Buster] ROS Melodic: 6 krokov
RGB-D SLAM s Kinectom na Raspberry Pi 4 [Buster] ROS Melodic: 6 krokov

Video: RGB-D SLAM s Kinectom na Raspberry Pi 4 [Buster] ROS Melodic: 6 krokov

Video: RGB-D SLAM s Kinectom na Raspberry Pi 4 [Buster] ROS Melodic: 6 krokov
Video: RGB-D SLAM с Kinect на Raspberry Pi 4 ROS Melodic 2024, Júl
Anonim
Image
Image

Minulý rok som napísal článok o stavaní a inštalácii ROS Melodic na nový (v tom čase) Raspberry Pi s operačným systémom Debian Buster. Tento článok získal veľkú pozornosť tu na stránkach Instructables a na iných platformách. Som veľmi rád, že som pomohol toľkým ľuďom úspešne nainštalovať ROS na Raspberry Pi. V sprievodnom videu som tiež stručne demonštroval získanie hĺbkového obrazu z Kinect 360. Neskôr ma veľa ľudí kontaktovalo na LinkedIn a pýtalo sa ma, ako som dokázal používať Kinect s Raspberry Pi. Táto otázka ma trochu prekvapila, pretože proces prípravy Kinectu mi v tom čase trval asi 3-4 hodiny a nezdal sa mi nijako zložitý. Zdieľal som svoje súbory.bash_history so všetkými ľuďmi, ktorí sa ma na tento problém pýtali, a v apríli som si konečne našiel čas na napísanie článku o inštalácii ovládačov Kinect a vykonávaní RGB-D SLAM s RTAB-MAP ROS. Týždeň bezsenných nocí po tom, ako som začal písať článok, už chápem, prečo mi túto otázku položilo toľko ľudí:)

Začnem stručným vysvetlením, aké prístupy fungovali a ktoré nie. Potom vysvetlím, ako nainštalovať ovládače Kinect na použitie s ROS Melodic a nakoniec ako nastaviť počítač na RGB-D SLAM s RTAB-MAP ROS.

Krok 1: Čo fungovalo a čo nie

Existuje niekoľko ovládačov pre Kinect na Raspberry Pi - z nich dva podporuje ROS.

Ovládače OpenNI - balík openni_camera pre ROS

ovládače libfreenect - balík freenect_stack pre ROS

Ak sa pozriete na ich príslušné úložiská GitHub, zistíte, že ovládač OpenNI bol naposledy aktualizovaný pred rokmi a v praxi je EOL už dlho. Na druhej strane ibfreekinect sa včas aktualizuje. Rovnako ako pre ich príslušné balíky ROS, freenect_stack bol vydaný pre melodiku ROS, zatiaľ čo posledné distro openni_camera uvádza podporu pre Fuerte…

Na ROS Melodic je možné skompilovať a nainštalovať ovládač OpenNI a balík openni_camera na Raspberry Pi, aj keď mi to nefungovalo. Aby ste to urobili, postupujte podľa tohto sprievodcu, kroky 1, 2, 3, v krokoch 2 a 3, odstráňte zo súboru Platform/Linux/Build/Common/Platform. ARM príznak „-mfloat-abi = softfp“(podľa tejto rady Problém s Githubom). Potom naklonujte balík openni_camera do pracovného priestoru catkin a skompilovajte ho pomocou catkin_make. Mne to však nefungovalo, chyba bola pri vytváraní generátora hĺbky, ktorý zlyhal. Dôvod: Rozhranie USB nie je podporované!

Použitie libfreenect a freenect_stack prinieslo nakoniec úspech, ale bolo potrebné vyriešiť niekoľko problémov a riešenie bolo trochu hacknuté, aj keď fungovalo veľmi stabilne (1 hodina + pokračujúca prevádzka).

Krok 2: Inštalácia ovládačov Freenect a programu Freenect_stack

Inštalácia ovládačov Freenect a balíka Freenect_stack
Inštalácia ovládačov Freenect a balíka Freenect_stack

Budem predpokladať, že používate môj obrázok ROS Melodic Desktop z tohto článku. Ak chcete vykonať inštaláciu v inom prostredí, napríklad ros_comm image alebo v Ubuntu pre Raspberry Pi, uistite sa, že máte dostatočné znalosti o ROS na riešenie problémov, ktoré môžu z tohto rozdielu vzniknúť.

Začnime vytvorením ovládačov libfreenect zo zdroja, pretože vopred vytvorená verzia úložiska apt-get je príliš zastaraná.

sudo apt-get aktualizácia

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

klon git

cd libfreenect

mkdir build && cd build

cmake -L..

urobiť

sudo vykonať inštaláciu

Dúfajme, že proces zostavenia bude bezproblémový a bude obsahovať zelené správy. Po nainštalovaní ovládača libfreenect je potrebné nainštalovať balík freenect_stack pre ROS. Existuje niekoľko ďalších balíkov, od ktorých závisí, budeme ich musieť naklonovať a vytvoriť spolu s catkin_make. Predtým, ako začnete, sa ubezpečte, že je váš pracovný priestor pre maškrty správne nastavený a pochádza z neho!

Z priečinka src pracovného priestoru src:

klon git

klon git

klon git

klon git

klon git

klon git

Hej, to bolo veľa klonovania.

NESKORŠIA ÚPRAVA: Ako zdôraznil jeden z mojich čitateľov, úložisko vision_opencv je potrebné nastaviť na melodickú vetvu. Za to CD na src/vision_opencv a spustite

git pokladňa melodická

Potom sa vráťte do priečinka pracovného priestoru Catkin. Ak chcete skontrolovať, či sme závislé na všetkých zavedených balíkoch, spustite tento príkaz:

rosdep nainštalovať-z-ciest src --ignore-src

Ak ste úspešne naklonovali všetky potrebné balíky, požiada o stiahnutie libfreekinect pomocou apt-get. Odpovedzte nie, pretože sme ho už nainštalovali zo zdroja.

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

catkin_make -j2

Čas na čaj;) alebo čokoľvek, čo je váš obľúbený nápoj.

Po dokončení procesu kompilácie môžete skúsiť spustiť zásobník kinect a skontrolovať, či správne dodáva obrázky s hĺbkou a farbami. Používam Raspberry Pi bez hlavy, takže musím spustiť RVIZ na svojom stolnom počítači.

Na Raspberry Pi do (Zmeňte IP adresu na IP adresu vášho Raspberry Pi!):

export ROS_MASTER_URI = https://192.168.0.108: 11311

export ROS_IP = 192.168.0.108

roslaunch freenect_launch freenect.launch depth_registration: = true

Uvidíte výstup ako na snímke obrazovky 1. „Zastavenie zarovnávania zariadenia RGB a hĺbkového prúdu zariadenia“. naznačuje, že Kinect je pripravený, ale k jeho témam sa ešte nič neprihlásilo.

Na stolnom počítači s nainštalovaným ROS Melodic postupujte takto:

export ROS_MASTER_URI = https://192.168.0.108: 11311

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

Teraz by ste mali byť schopní vidieť RGB a hĺbkové obrazové toky v RVIZ ako na Screenshot 2 vyššie … ale nie súčasne.

Dobre, tu sa začínajú hacknuté veci. Strávil som 3 dni skúšaním rôznych ovládačov a prístupov a nič nefungovalo - hneď ako by som sa pokúsil pristupovať k dvom prúdom súčasne, Kinect začne vypršať časový limit, ako môžete vidieť na Screenshot 3. Skúsil som všetko: lepšie napájanie, staršie verzie libfreenect a freenect_stack, zastavenie usb_autosuspend, vstreknutie bielidla do portov USB (dobre, nie posledné! Nerobte to, je to vtip a nemalo by ísť o technickú radu:)). Potom som v jednom z problémov Githubu videl príbeh osoby, ktorá tvrdila, že ich Kinect je nestabilný, kým „nenačítali USB zbernicu“pripojením WiFi donglu. Skúsil som to a fungovalo to. Na jednej strane som rád, že to fungovalo. Na druhej strane, niekto by to mal skutočne napraviť. Medzitým, čo sme to (akosi) vyriešili, prejdeme k ďalšiemu kroku.

Krok 3: Inštalácia samostatnej mapy RTAB

Inštalácia samostatnej mapy RTAB
Inštalácia samostatnej mapy RTAB

Najprv musíme nainštalovať veľa závislostí:

Napriek tomu, že pre PCL je k dispozícii vopred pripravený balík armhf, kvôli tomuto problému ho budeme musieť skompilovať zo zdroja. Obráťte sa na úložisko PCL GitHub a zistite, ako ho zostaviť zo zdroja.

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

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

Teraz naklonujeme rtab map samostatný úložisko balíkov git do nášho domovského priečinka a vytvoríme ho. Použil som najnovšie vydanie (0.18.0).

klon git

cd rtabmap/build

cmake..

urobiť -j2

sudo vykonať inštaláciu

sudo ldconfig rtabmap

Teraz, keď sme zostavili samostatnú RTAB MAP, môžeme prejsť na posledný krok - kompiláciu a inštaláciu wrapperu ROS pre RTAB MAP, rtabmap_ros.

Krok 4: Inštalácia Rtabmap_ros

Inštalácia Rtabmap_ros
Inštalácia Rtabmap_ros

Ak ste sa dostali tak ďaleko, pravdepodobne už poznáte tento nácvik:) Klonujte úložisko rtabmap_ros do svojho priečinka catkin workspace src. (Vykonajte nasledujúci príkaz z vášho priečinka catkin workspace src!)

klon git

Budeme potrebovať aj tieto balíky ROS, od ktorých rtabmap_ros závisí:

klon git

klon git

klon git

klon git

klon git

Pred spustením kompilácie sa môžete ubezpečiť, že vám nechýbajú žiadne závislosti, pomocou nasledujúceho príkazu:

rosdep install --z-ciest src --ignore-src

Nainštalujte viac závislostí od ap-get (tieto nebudú prerušovať prepojenie, ale počas kompilácie spôsobia chybu)

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

Potom sa presuňte do priečinka pracovného priestoru Catkin a začnite zostavovať:

cd..

catkin_make -j2

Dúfam, že ste svoj obľúbený kompilačný nápoj nedali nikam príliš ďaleko. Po dokončení kompilácie sme pripravení vykonať mapovanie!

Krok 5: Zobraziť čas

Zobraziť čas
Zobraziť čas
Zobraziť čas
Zobraziť čas

Vykonajte tento trik s pridaním niečoho ako WiFi alebo Bluetooth dongle do USB portu - používal som 2 porty USB 2.0, jeden pre Kinect, druhý pre WiFi dongle.

Na Raspberry Pi do (Zmeňte IP adresu na IP adresu vášho Raspberry Pi!): 1. terminál:

export ROS_MASTER_URI = https://192.168.0.108: 11311

export ROS_IP = 192.168.0.108

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

2. terminál:

roslaunch rtabmap_ros rgbd_mapping.launch rtabmap_args: = -delete_db_on_start --Vis/MaxFeatures 500 --Mem/ImagePreDecimation 2 --Mem/ImagePostDecimation 2 --Kp/DetectorStrategy 6 --OdomFciMation 2-MaxSize: = nepravda

Uvidíte výstup ako na snímke obrazovky 1. „Zastavenie zarovnávania zariadenia RGB a hĺbkového prúdu zariadenia“. znamená, že Kinect je pripravený, ale k jeho témam sa ešte nič neprihlásilo. V druhom termináli by ste mali vidieť správy o kvalite odom. Ak pohybujete Kinectom príliš rýchlo, kvalita odom prejde na 0 a budete sa musieť presunúť na predchádzajúce miesto alebo začať z čistej databázy.

Na stolnom počítači s nainštalovaným balíkom ROS Melodic a rtab_map (na to odporúčam použiť počítač Ubuntu, pretože pre architektúru amd64 sú k dispozícii vopred pripravené balíky):

export ROS_MASTER_URI = https://192.168.0.108: 11311

export ROS_IP = [váš-stolný-počítač-ip]

rviz

Pridajte do rviz displeje MapGraph a MapCloud a vyberte zodpovedajúce témy pochádzajúce z rtab_map. Tak a je to, sladká chuť víťazstva! Pokračujte a urobte nejaké mapovanie:)

Krok 6: Referencie

Pri písaní tohto článku som konzultoval niekoľko zdrojov, väčšinou fóra a problémy s GitHub. Nechám ich 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

V prípade akýchkoľvek otázok si ma pridajte na LinkedIn a prihláste sa na odber môjho kanála YouTube, aby ste boli informovaní o zaujímavejších projektoch zahŕňajúcich strojové učenie a robotiku.

Odporúča: