Schunk grippery & prvá demo aplikácia

schunk_grippers_title v predchádajúcom článku sme si popísali kroky potrebné pre úspešnú integráciu gripperov s motomanom SDA10F, vrátane montáže, prípravy rozvádzača, kabeláže, úpravy modelu a ukázali sme si ako prerobiť  moveit_config package tak, aby v ňom boli zahrnuté aj pridané efektory. Google Summer of Code spolu s TRADR summer school a ďalšími povinosťami na približne tri týždne spomalili pokračujúci vývoj ale začiatkom septembra sme si opäť na Motomana našli čas, prepracovali driver, dokončili kalibráciu polohy gripperov voči ramenám robota a pustili sme sa do programovania prvej demo aplikácie:

Driver Update

Prvá verzia driverov, ktorú sme vyvinuli pre ovládanie PG70 a EZN64 síce umožňovala základné ovládanie gripperov po sériovej linke, resp. USB cez ROS services ale nebola prispôsobená pre kontinuálne uploadovanie reálneho stavu grippera do modelu robota. Vždy keď sme chceli zistiť aktuálny stav, bolo potrebné volať service get_position, ktorý po komunikačnej linke zaslal požiadavku do grippera na vyčítanie aktuálneho stavu. Kým sa však reálna poloha vrátila naspäť, spracovala a odoslala na joint_states trvalo to príliš dlho a vo výsledku grippery v modeli namiesto plynulého pohybu skákali medzi koncovými polohami.

Riešenie tohto problému poskytol priamo komunikačný protokol Schunk Motion. V rámci bežnej komunikácie s gripperom totiž umožňuje naparametrovať automatické posielanie aktuálneho stavu grippera do riadiaceho systému v časovom intervale definovanom užívateľom. V našom prípade sme pre obidva grippery nastavili updatovanie hodnôt 20-krát za sekundu a v driveroch doplnili callbacky, ktoré nielenže tieto hodnoty vyčítavajú ale okamžite ich posielajú aj na joint_states, čím je zabezpečená promptná aktualizácia modelu obidvoch gripperov.

IMG_3603

Kalibrácia gripperov

Pridať akékoľvek grippery do Xacro modelu tak, aby sa model a realita na milimeter zhodovali sa väčšinou na prvý pokus nepodarí. Dôvodov býva viacero a väčšinou sa o ne postarajú prepojovacie príruby, ich vzájomné spoje, prípadne drobné rozdiely medzi modelom robota a skutočnosťou.

V praxi sa nepresnosti sa veľmi rýchlo ukážu pri prepojení s reálnym robotom najmä v polohách, v ktorých sa gripper približuje inej časti robota. V našom prípade, ak sme chceli v demo aplikácii vykonávať prechytávanie cylindrov z jedného grippera do druhého, bola presonsť kalibrácie kritická, keďže už pri malých odchýlkach hrozili vzájomné zrážky efektorov.

Postup kalibrácie, ktorý sa nám v tomto prípade osvedčil spočíval v ručnom navedení ramena s gripperom až na dotyk s inou časťou robota a doladení rozmerov a polohy grippera voči koncovému linku ramena tak, aby sme identický stav dotyku dosiahli aj v modeli. Týmto spôsobom je následne vhodné preveriť viacero bodov a viacero polôh obidvoch ramien.

IMG_3562

Demo aplikácia

Kým sa dostaneme ku samotnému bin-pickingu, chvíľu to ešte potrvá, každopádne naprogramovať jednoduchú aplikáciu, v ktorej vyniknú nové grippery je výhodné nielen pre účely predvádzania robota návštevám na ústave ale najmä pre získanie skúseností s tým ako sa efektory pri reálnej manipulácii s cylindrami správajú. V našom prípade sme sa rozhodli pre jednoduchú slučku, počas ktorej si efektory opakovane prechytávajú cylinder medzi sebou:

Ako vidieť, integrácia Schunk gripperov dopadla úspešne, rozvádzač je hotový, drivere funkčné, grippery oživené, nakalibrované a kabeláž je vedená vnútrom ramien. Túto etapu máme teda úspešne za sebou a môžeme sa pustiť do ďalšej fázy vývoja, ktorá už bude spojená s rozpoznávaním cylindrov a určovaním ich polohy a orientácie v prepravke.

František Ďurovský