Egyedi projektek RoboDK-ban – API programozás
Számos projekt követeli meg tőlünk, hogy elszakadjunk bizonyos szoftverek, már jól megszokott eszközeitől, hogy elképzelésünket átültethessük a valóságba. Nincs ez másképp a robotok használatakor sem.
Bár az offline programozás és a szimulációs megoldások lehetőséget adnak, hogy könnyedén alkossunk meg teljesen egyedülálló programokat és hogy azokat hatékonyan teszteljük vagy debugoljuk, így is előfordulhat, hogy a problémánkra a szoftver teljes eszköztárának kihasználásával sem találunk megoldást. Ilyenkor mondhatni a felhasználói felület képezi azt a szűk keresztmetszetet, ami kevesebb lehetőséget biztosít, mint amire a szoftver valójában képes lenne. Ilyenkor az alkalmazások API rendszeréhez kell nyúlnunk, ami által rugalmasan módosítható és bővíthető a lehetőségek sora.
API – Application Programming Interface
A RoboDK API-n, vagyis Application Programming Interface-n keresztül a fejlesztők olyan függvénykönyvtárakat, modulokat adnak a felhasználók kezébe, mely különböző parancsokat és eljárásokat tartalmaznak. Ezek lehetővé tesznek teljesen új fajta interakciókat a szimulátorral. Mindemellett gyártótól függetlenül, az általunk preferált programnyelven programozhatunk bármely robotot. Az API-ban tárolt funkciók közt természetesen jelen vannak a program kezelőfelületéről elérhető “tool”-ok, de sokkal több minden is. Az API segítségével tehát a programozó sokkal közelebb kerülhet a szoftver UI-ja mögött megbújó lehetőségekhez és az applikáció forráskódjához, így egy programozástechnikai értelemben alacsonyabb szinten (a forráskódtól kevésbé elvonatkoztatva) aknázhatjuk ki a benne rejlő potenciált.
A RoboDK fejlesztői által ajánlott programnyelv az API használatára a Python. Bár az API használatához elengedhetetlen a programozói tudás, a python egyszerűsége miatt egy széles körben használt, magas szintű programnyelv, amellyel sok esetben, más nyelvekhez képest kevesebb sorral is ki tudunk fejezni utasításokat.
De milyen „újfajta interakciókra” gondolhatunk?
A Python és az API hasznosságának szemléltetésére egy érdekes példát szeretnék bemutatni. A megírt program funkciói között szerepel némi képfeldolgozás, egy robot és az átláthatóság kedvéért egy egyszerű GUI, azaz grafikus felhasználói felület. A program le tud egyszerűsíteni bármilyen képet, majd azt egy robottal megfesteni.
Az API használata lehetővé teszi, hogy különböző scriptek vagy modulok (a RoboDK-tól függetlenül működő programok) is elérjék a robot-programunkat. Ezen példán keresztül jól szemléltethető, ahogy egy Pythonban írt felhasználói felület egy gombnyomással tud megnyitni egy RoboDK munkaállomást, majd meghívni annak egy alprogramját. Ebből következik, hogy az API-n keresztül más programok kommunikálni tudnak a szimulációs szoftverrel.
A korábban elindított alprogram továbbá számos szubrutinért felelős a festés megvalósításánál. Minden objektumot, amit a RoboDK szimulációs környezetében elhelyeztünk, lehet az 3D objektum, target, robot, szerszám, koordináta rendszer vagy bármely más, Station-fában látható elem, “RDK-Item” adattípusként importálhatunk a Python vagy C++ scriptünkbe. Ezek után képesek vagyunk minden további interakciót a RoboDK-val például Python programnyelven keresztül végezni. Jelen esetben először beolvassuk a kirajzolandó képpontokat az átalakított képünkről, majd sorbarendezzük a színeket, végül pedig több tíz- esetleg százezer különböző mozgást végeztetünk el a robottal annak függvényében, hogy épp milyen felbontású képről beszélünk. Természetesen ezen funkciók nem megvalósíthatóak a RoboDK felhasználói felületén elérhető opciók használatával.
Olyan projekteknél tehát, amik túlmutatnak az szoftver felhasználói felületén elérhető eszközök képességeinek határán, ott az API-val és különböző programnyelvekkel kell bővítenünk mozgásterünket, hogy elképzelésünket realizálni tudjuk. Ezen függőség azonban visszafelé is igaz, hiszen a RoboDK, mint szimulációs szoftver képes a Python forráskódunkat G-kóddá, tehát a robot processzora által használt kóddá alakítani.
Azon felhasználók figyelmébe, akik ezelőtt is rendszeresen alkalmazták a RoboDK API-t pedig ajánlom az 5.4-es verzióval megújult dokumentációt, a nemrég megjelent frissítés ugyanis jelentős változásokat eszközölt a modulok használatában.
https://robodk.com/doc/en/PythonAPI/robodk.html
https://robodk.com/doc/en/RoboDK-API.html
Ha további olvasnivalóra vágyik a RoboDK, képfeldolgozás vagy robotika témákban, tekintse meg korábbi blog-bejegyzéseinket:
https://blog.eplm.hu/mibol-lesz-a-cserebogar-mernok/
https://blog.eplm.hu/pick-place-folyamatok-a-robodk-ban/
https://blog.eplm.hu/mire-jo-es-hogyan-mukodik-az-offline-robot-programozas-olp/
https://blog.eplm.hu/gepesitett-erzekszervek-kepfeldolgozas-ahogyan-mi-latjuk/
Ha pedig a RoboDK felkeltette érdeklődését látogasson el az alábbi linkre: https://enterprisegroup.hu/plm/kiegeszito-megoldasok/robodk