Motoman SDA10F vs. advanced pick&place

heap_01Hromady alebo „bin picking“ aplikácie sú „formulou 1“ v súčasnej priemyselnej robotike a aj na rôznych veľtrhoch vidieť, že sa tomuto odvetviu momentálne venuje veľké množstvo systémových integrátorov. Hromady sú zaujímavé najmä z dôvodu, že pre manipuláciu s nimi je potrebné zvládnuť celý pipeline od kalibrácie senzora, nástroja, cez spracovanie pointcloudu až po riadenie manipulátora mimoriadne presne. V kombinácii s veľkou variabilitou objektov v rôznych aplikáciách a zároveň ich často nestabilnou polohou v zásobníku dostávame celkom zaujímavý task, ktorý je oprávnene výzvou pre mnohých vývojárov. Ani my nie sme výnimkou a v tomto článku sa pokúsime aplikovať skúsenosti získané na predchádzajúcom príklade pri manipulácii s našou prvou jednoduchou „hromadou“.

Úloha je podobná ako pri prvom pick&place  –  premiestniť objekty zo stola do modrého zásobníka. V tomto prípade však objekty nie sú uložené horizontálne ale sú vysypané „na hromade“ ako vidieť aj na pointcloude na obrázku nižšie.

advanced_pick_place_01

Kým v prípade prvého pick&place sme mali objekty odseparované a na ich vyhľadanie stačil jednoduchý euclidovský clustering, teraz stojíme pred náročnejšou úlohou  – Ako vo vyfiltrovanom pointcloude hromady nájsť jednotlivé objekty?

Pri riešení tohto problému sa už oplatí poobzerať aj po vedeckých článkoch aspoň pre inšpiráciu ako to robia iní, každopádne „Point Cloud 3D object recognition and pose estimation“ je otvorený problém, o ktorom sa napísalo a napíše ešte veľa článkov. Nebudeme zachádzať do podrobností, v skratke máte pre nájdenie objektu v pointcloude dve možnosti:

  • 3D object Recognition
  • Geometric primitives

Ak máte komplikovanejší objekt, prípadne si chcete vyskúšať priamy 3D object recognition, zaujímavý algoritmus nájdete aj na tutoriálovej stránke PCL knižnice.

V našom prípade vďaka tomu, že máme objekty pravidelných tvarov, bude ale jednoduchšie, ak sa pokúsime priamo vyhľadať jednotlivé roviny – doslova rozoberieme pointcloud na geometrické útvary – tzv. geometric primitives. V PCL knižnici sa na tento typ segemntácie používa region growing segmentation algoritmus, ktorý vykonáva clustering bodov na základe orientácie ich normál. Ako vyzerá výstup tohto algoritmu je názorne vidieť aj na obrázku nižšie.

advanced_pick_place_04

Výsledok Region Growing Segmentácie pointcloudu

Region Growing Segmentation má dve hlavné výhody: pracujeme priamo s plochou daného objektu a vieme okamžite vypočítať jej ťažisko, ktoré je zároveň bodom dotyku (toto vo všeobecnosti neplatí pre priamy 3D object recognition) a po druhé v kombinácii s výpočtom normálového vektora o ktorom sme písali minule, sme schopní identifikovať orientáciu (roll, pitch) danej roviny, čím dostávame všetky potrebné parametre pre uchopenie objektu prísavkou. Ťažiská nájdených objektov a normálový vektor plochy s najväčšou „z“ súradnicou sú po spracovaní cloudu pre ilustráciu vyznačené aj v simulácií:

advanced_pick_place_02

Tým, že sa objekty v hromade prekrývajú a často sa v dôsledku manipulácie so susedným objektom posúvajú je vhodné po odstránení objektu preskenovať hromadu nanovo. Máloktoré bin picking aplikácie fungujú so 100% spoľahlivosťou a aj v priemyselných aplikáciách sa občas stane, že robot si „hrabne naprázdno“ viď napríklad toto video od Fanucu. Vo vedeckých článkoch sa pri bin picking aplikáciách uvádza „successfull rate“, pričom hodnoty sa v závislosti od zložitosti objektu pohybujú v rozmedzí 75 – 95%.  V našom prípade s využiím Kinectu spoľahlivosť dosahovala okolo 80% pričom väčšina failov bola spôsobená buď „zliatím“ dvoch objektov v cloude do jedného alebo polohou, ktorú rameno aj napriek správnemu rozpoznaniu nedokázalo dosiahnuť. Jeden z úspešnejších pokusov je zachytený na nasledujúcom videu:

Advanced pick&place video

Samozrejme, ide o prvú jednoduchú aplikáciu a je na nej ešte čo vylepšovať. V ďalšom vývoji preto plánujeme kompletne prerobiť existujúce pracovisko a prispôsobiť ho výhradne pre účely „bin picking“ aplikácií. Inšpiráciou je nám zatiaľ toto exhibičné video, uvidíme ako ďaleko sa nám podarí dostať a najmä akú presnosť pri novom usporiadaní komponentov systému dosiahnuť.

František Ďurovský