Motoman SDA10F & Octomapping

octomapV oblasti mapovania priestoru bol v poslednom období dosiahnutý veľký pokrok a v súčasnosti sú mapovacie aplikácie v robotike mimoriadne populárne. Hlavná zásluha partí Arminovi Hornungovi z Univerzity vo Freiburgu, hlavnému vývojárovi známeho frameworku Octomap.  S octomapami sme dosť intenzívne pracovali v rámci quadro challengu v EuRoC, kde bol celý jeden task zameraný na túto problematiku. Mapovanie je síce spájané najmä so servisnou robotikou ale nedalo nám nevyskúšať si jeho možnosti v kombinácii s priemyselným robotom.

Principiálne je octomapa 3D mriežka s vopred definovaným rozlíšením (v našom prípade 0.1m), v ktorej má každá bunka priestoru priradenú jedinú booleovskú hodnotu true/false. True ak je obsadená a false ak obsadená nie je.  Aby ste vedeli generovať mapu priestoru potrebujete dva zdroje dát. Prvým je pointcloud a druhým transformácia medzi počiatkom súradnicovej sústavy a aktuálnou polohou 3D senzora. Octomap na základe vstupných dát s využitím probabilistického (pravdepodobnostného) princípu zabezpečí priradenie true hodnôt obsadeným bunkám v mriežke. Farebné rozlíšenie buniek súvisí iba s ich polohou vzhľadom na os „z“.

V najjednoduchšom prípade sa dá octomapovanie použiť so statickým snímačom ale skutočná funkcionalita frameworku sa ukáže, až keď začnete doslova „skenovať“ svoje okolie z viacerých uhlov a pozícií. Aby sme to dosiahli aj v prípade Motomana SDA10F, Kinect sme umiestnili na efektor pravého ramena, doplnili xacro model robota a pomocou MoveIt knižnice sme naprogramovali jednoduchú sekvenciu pohybov, ktorá zabezpečila „zosnímanie“ celého okolia robota. Controller robota streamuje do ROS aktuálnu polohu ramena s frekvenciou 110Hz, čiže počas celej doby pohybu mal systém spoľahlvé dáta o polohe senzora a o zvyšok práce sa už postaral Octomap:

František Ďurovský