SmartRoboticSystems & Google Summer of Code 2015

gsocGoogle summer of Code je program, v rámci ktorého sa Google snaží podporovať vývoj open-souce softwaru a „nainfikovať“ touto mentalitou začínajúcich vývojárov po celom svete. V roku 2015 sa konal už 11-ty ročník a zúčastnilo sa ho 137 organizácií vrátane Open Source Robotic Foundation zastrešujúcej vývoj samotného ROS. Do GSoC sa môžu prihlásiť študenti z celého sveta, pričom ich úlohou je napísať „project proposal“ – konkrétny návrh projektu na ktorom by chceli počas leta pracovať a detailne zdvôvodniť, prečo je potrebné nimi predkladaný projekt riešiť, ako to chcú dosiahnuť a aké benefity pre mentorujúcu organizáciu realizácia takéhoto projektu prinesie. Z prijatých žiadostí si organizácie následne vyberajú návrhy, ktoré ich oslovia najviac. V roku 2015 sa celkovo riešilo 1043 projektov a participovali na ňom študenti z viac ako 100 krajín sveta aj vrátane nášho zástupcu Františka Ďurovského. Ako sa ku GSoC dostal, na akom projekte pracoval a ako prebiehal samotný vývoj, to všetko sa dozviete v nasledujúcom rozhovore:

gsoc_student

Ako ti vôbec napadlo zapojiť sa do projektu Google Summer of Code?

O GSoC sa začiatkom roka písalo aj ROS blogu a myšlienku podať projekt som nosil v hlave už približne od februára.  Aj keď som si ňou nebol úplne istý, nakoniec som to vyskúšal a „project proposal“ som na poslednú chvíľu napísal.

Vedel by si v skratke opísať podstatu projektu?

Oficiálny názov projektu bol ROS-PROFINET wrapper a cieľom bolo nájsť spôsob ako dostať dáta z ROS, čiže z Ubuntu na priemyselnú zbernicu PROFINET v čo najrýchlejšom čase a čo najspoľahlivejšie. O prepojení ROS s Profinetom sme na Katedre elektrotechniky a mechatroniky uvažovali už dlhšie a vďaka diplomovej práci Jána Svitiča, ktorému chcem aj touto cestou cp1616úprimne poďakovať, sme mali už v čase podávania projektu prvé pokusy úspešne za sebou.

Náš návrh spočíval vo využití PCI karty Siemens CP1616,  ktorá je určená pre pripojenie PG/PC na PROFINET a zároveň disponuje drivermi kompatibilnými s Linuxom. Mojím zámerom bolo teda navrhnúť a naprogramovať rozhranie, ktoré by umožnilo ROS užívateľom komunikovať po PROFINETe bez toho, aby museli do hĺbky študovať dokumentáciu ku CP1616.

Ako na tvoj návrh zareagovala OSRF?

OSRF mala tento rok pridelených na GSoC 6 slotov, z toho 2 boli určené pre ROS-Industrial. Tým, že sme prvé kontakty nadviazali už v januári v súvislosti s novým driverom pre Motomana SDA10F, pre ľudí zo SwRI nebolo moje meno úplne neznáme. Akurát som si dlho nebol istý tým, či budú ochotní isť v rámci GSoC aj do takto silne hardwarowo zameraného projektu. Nakoniec ale zavážila vhodne zvolená a načasovaná téma a skutočnosť, že Siemens je členom ROS-I konzorcia, čiže za tým boli do určitej miery aj komerčné účely.

Viac ako tri týždne po podaní projektu sa nedialo nič, až pár dní pred vyhlásením akceptovaných projektov sa mi ozval priamo Shaun Edwards – zakladateľ ROS-I s tým, že sa mu môj návrh veľmi pozdáva, že má záujem aby sa PROFINET interface vyvinul a osobne chce mentorovať tento projekt. Cez skype sme si ešte dohodli niektoré detaily a bolo to.

Hardwarovo si bol vybavený dostatočne?

CP1616-tku sme na Katedre mali k dispozícii a pôvodne sme ju skúšali v kombinácii s meničmi rady SINAMICS S120. Shaun Edwards ale do tohto projektu cez svoje kontakty zapojil aj priamo Siemens a nakoniec sme sa po konzultáciách s bratislavským oddelením rozhodli pre vývoj a základné testovanie použiť PLC S7-1200, keďže ho je možné použiť v obidvoch módoch aj ako master aj ako slave a veľmi jednoducho sa cez TIA Portal parametruje. Čiže na dobu trvania tohto projektu som mal zapožičanú zostavu s S7-1217 s  7″ Touch panelom.

IMG_0367

Vývojový panel s S7-1217 a Touch panelom KTP7

Aký prínos bude mať ROS-PROFINET projekt pre mentorujúcu organizáciu?

V posledných troch rokoch sa v rámci programu ROS-Industrial urobilo obrovské množstvo práce, pribudli drivre na nové roboty, vylepšili sa plánovače trajektóríi, popracovalo sa na kalibračnom toolboxe a mnohých ďalších veciach. Akurát stále zaostávala oblasť hardwarových interfacov a prepojenia ROS-Industrialu s klasickými priemyselnými komponentami ako sú PLC či HMI moduly. Je tu síce CanOpen a EtherCat ktoré by mali fungovať ale vzhľadom na rozsah a variabilitu v súčasnosti využívaných komunikačných rozhraní to nie je to ani zďaleka dostačujúce. Pre akékoľvek nasadenie ROS-Industrial  do priemyslu je totiž integrácia s PLC jednoducho nevyhnutná. Prepojenie ROS a PROFINETu vzhľadom na jeho rozšírenie a popularitu by tomu mohlo aspoň čiastočne napomôcť.

Vieš nám opísať ako prebiehal samotný vývoj?

Najnáročnejším bol úplný začiatok, kedy bolo potrebné dostať sa do stavu funkčného IDE – čiže vôbec nakonfigurovať systém tak aby s ním CP1616 fungovala. Skomplikoval to najmä fakt, že predchádzajúca verzia driverov nebola kompatibilná s najnovšími Linuxovskými kernelmi a bolo nutné doinštalovávať staršie jadrá aby bolo možné skompilovať driver ku CP1616. Kým som vychytal všetky chyby a dostal systém do použiteľného stavu prešli minimálne dva týždne.

Nasledovalo detailné štúdium dokumentácie, existujúceho IO Base rozhrania, rozbehávanie jednoduchých C príkladov a oživovanie základnej komunikácie.  S funkčnými príkladmi  už bolo možné prisupiť k vývoju C++ knižnice, preklopeniu existujúcej funkcionality do tried a objektov. Samozrejme celý vývoj prebiehal na Githube so Shaunovým dohľadom, ktorý ma  usmernil pri viacerých kľúčových rozhodnutiach. Tým, že išlo o dátové komunikácie, takmer každú väčšiu zmenu bolo nutné opätovne testovať a ladiť pri komunikácii s PLC. Táto fáza trvala najdlhšie – približne mesiac a pol.

Najkrajšou časťou celého projektu bol vývoj samotných wrapperov, v ktorých sa doslova prepájali dva úplne odlišné svety – svet tvrdej automatizácie na jednej strane a ROS na strane druhej.  Wrappery  v podstate zabezpečili konverziu dát prichádzajúcich z CP1616 na ROS topicy a naopak. Ich vývoj síce trval iba pár dní ale dal zmysel celému projektu.

Poslednou etapou bola tvorba Wiki stránky a dokumentácie ku packageu, kde som ti po prvýkrát vyskúšal čo všetko tento proces zahŕňa a vyžaduje.

Popritom si stihol ešte natočiť aj promo video?

Áno, PR video bolo podmienkou na ktorej Shaun trval, pri open-source vývoji je totiž dôležité aby mala komunita informáciu o projektoch na ktorých sa momentálne pracuje a aby sa nestalo, že dvaja vývojári robia paralelne to isté bez toho aby o sebe vôbec vedeli. Ako ukážkovú aplikáciu som teda pripravil ovládanie Motomana SDA10F z Touch panelu cez PLC a ROS-Industrial a natáčanie a prípravu videa som zveril do rúk profesionálnemu kameramanovi. Následne dva týždne pred koncom projektu bolo zverejnené spolu s krátkym popisom priamo na ROS-Industrial blogu.

Ako vidíš budúce využitie tvojho packageu?

PROFINET je už v súčasnosti značne rozšírený po celom svete a jeho obľúbenosť s príchodom nových 1200kových a 1500kových PLC od Siemensu naďalej rastie. Dátové prenosy až do 2880 bytov v jednom cykle sú trojnásobne vyššie ako v prípade klasického kancelárskeho Ethernetu a  možnosť ísť s časom komunikácie hlboko pod 1ms tieto výhody len a len umocňuje.

Nevýhodou je nutnosť zaobstarať si CP1616 v cene okolo 1500 Eur, čo do značnej miery vylučuje tento package z použitia laickou robotickou verejnosťou.

Ak sa ale bude jednať o väčšie projekty, či už nasadenie ROS-Industrialu ako nadradeného systému pre rôzne prototypy robotických manipulátorov alebo polohovadiel, prípadne jednoúčelové robotické bunky pre material handling, ktoré bude potrebné pripojiť ku riadiacemu PLC, verím že PROFINET si nájde svoje uplatnenie. Čas ukáže…

Linky
Wiki stránka: siemens_cp1616
Zdrojové kódy: Github