SEF Roboter & Gazebo & MoveIt

gazebo_titlePo dlhšom čase sme sa opäť vrátili k projektu SEF Robotera a jeho prepojenia s ROS. História tohto projektu siaha ešte do roku 2012, kedy pôvodné SEFko prešlo kompletnou rekonštrukciou a jeho zastaraný riadiaci systém bol nahradený frekvenčnými meničmi Siemens SINAMICS S120. V roku 2014 sme v rámci experimentovania s možnosťami ROS doplnili CAD model robota a vygenerovali MoveIt package umožňujúci riešiť inverznú kinematiku a plánovanie trajektórií. V lete 2015 pribudol ROS-PROFINET Interface vyvíjaný ako Google Summer of Code projekt, vďaka čomu dnes dokážeme komunikovať s pohonmi SINAMICS priamo z ROS. Hlavným problémom, ktorý v tejto etape projektu potrebujeme vyriešiť je nájsť spôsob ako všetky tieto komponenty prepojiť do jedného funkčného celku tak, aby sme dokázali SEFko ovládať podobne ako Motomana SDA10F priamo z Motion Planning Pluginu v RVize.

Pre podobné úlohy je v súčasnosti najschodnejšou cestou využitie packageu ros_control. ROS Control je generická verzia pôvodných controllerov robota PR2 a je reakciou na prirodzený dopyt v ROS komunite, ktorý vznikol tým, že ROS sa začal používať na riadenie rôznych typov robotov. ros_control poskytuje všetko potrebné nato aby ste dokázali podstatnú časť riadenia robota vykonávať na strane Linuxu. K detailom riadenia SEFka cez ros_control sa bližšie dostaneme v ďalšom článku, každopádne pri prvých pokusoch s implementáciou ROS regulátorov sa mimoriadne hodí simulátor Gazebo.

Gazebo je robotický simulátor, ktorý vďaka svojmu fyzikálnemu enginu umožňuje simulovať správanie celého robota či rôznych jeho podsystémov v reálnych podmienkach. Samozrejme simulácia je presná iba do tej miery do akej je presný model, ktorý jej poskytnete, no aj napriek určitým rozdielom je mimoriadne užitočným nástrojom pri robotickom vývoji. Veľmi intenzívne sa Gazebo využívalo aj pri príprave na minuloročnú súťaž humanoidných robotov Darpa Robotics Challenge. Viac videí o aktuálnych možnostiach tohto simulátora, nájdete aj na Gazebo Youtube kanáli.

Tým, že Gazebo pracuje s fyzikálnym enginom je nutné upraviť existujúci model robota tak aby poskytoval aj informáciu o hmotnostiach a momentoch zotrvačností jednotlivých článkov.  Spôsobov ako tieto parametre získať je viacero, no odporúča sa využiť Solidworks alebo podobný CAD software na ich výpočet. Vizualizáciu tažísk a momentov zotrvačností spodných linkov robota vidieť na obrázku nižšie.

Gazebo_inertia_viz

V našom prípade sme Gazebo využili najmä na experimentovanie s generickými PID regulátormi. Tým, že Gazebo je prispôsobené pre spoluprácu s ros_control, je väčšina riadiacej štruktúry robota rovnaká bez ohľadu na to, či je do systému pripojený reálny robot alebo simulátor. Rozdiel je iba v hardwarovom rozhraní, ktoré sa mení podľa toho či chceme príkazy posielať do simulátora alebo na priemyselnú zbernicu. Vďaka tejto architektúre je možné základné nastavenie a naladenie systému vykonať v simulácii. Ak potrebujete ako v našom prípade ovládať robota vážiaceho 500kg, možnosť vyskúšať si správanie regulátorov simulačne je na nezaplatenie.

Ladenie PID regulátorov v Gazebe je vďaka DynamicReconfigure pluginu mimoriadne pohodlné a jednotlivé parametre regulátorov dokážete meniť za behu programu. Cieľom je nájsť takú kombináciu parametrov, ktorá zabezpečí dosahovanie žiadanej polohy daného kĺbu bez prekmitu a s nulovou regulačnou odchýlkou. Posledným krokom je doplnenie systému o JointTrajectoryController, ktorý umožňuje riadenie skupiny viacerých pohonov tak aby v každom bode vygenerovanej trajektórie dodržiavali predpísanú polohu a rýchlosť. Po prepojení s MoveIt Config Packageom je potom možné pohyb simulovaného robota ovládať priamo z Motion Planning pluginu v RVize tak, ako vidieť na priloženom videu.

Nasledujúcim krokom bude teda vývoj Profinet HW rozhrania pre SINAMICS pohony, ktoré by malo umožniť pomocou popísanej štruktúry ovládať reálneho robota. Podrobnejšie informácie už čoskoro…

František Ďurovský