IJS · Krmiljenje robota KUKA
Angular raziskovalna platforma za Institut Jožef Stefan — vmesnik za krmiljenje in nadzor industrijske robotske roke KUKA v brskalniku, zgrajen nad namensko zasnovanim REST DataProxy API.
Pregled
To ni bil tipičen projekt s stranko — bilo je raziskovalno sodelovanje. Institut Jožef Stefan je največja in najuglednejša raziskovalna ustanova v Sloveniji, njihova skupina za avtomatizacijo in robotiko pa je potrebovala spletni vmesnik za krmiljenje in nadzor industrijske robotske roke KUKA. Frontend stran tega sistema sem zgradil leta 2021.
Platforma se imenuje DataProxy — REST API plast, ki sedi med brskalnikom in robotskim krmilnikom (KUKA KRC), izpostavljena na interni domeni IJS prek HTTPS. Swagger-generiran TypeScript odjemalec je bil čisto razdeljen na štiri storitvene domene: ADM (upravljanje naprav in telemetrija senzorjev), PRG (programiranje robota), DMS (shranjevanje dokumentov in povezovalnih shem) ter AUTH (upravljanje JWT sej). Angular 12 aplikacijo sem napisal nad to površino.
Položaj robota se sledi kot e6pos — KUKA-jev nativen šestosni koordinatni tip (X, Y, Z, A, B, C). Programi se sestavljajo v tronivojsko hierarhijo: Programi vsebujejo urejene Rutine, ki vsebujejo urejene Stavke — posamezne KRL ukaze. Raziskovalci sestavljajo zaporedja v UI, nato pa izvozijo surove .src/.dat datoteke ali pa program preusmerijo skozi KukaSim za vizualno simulacijo pred izvedbo v živo.
Arhitektura
Branje diagrama: Pet UI modulov (nadzorna plošča, graditelj programov, panel naprav, kamere, dokumenti) komunicira izključno skozi DataProxy REST API — vmesni sloj z JWT avtentikacijo, ki teče na infrastrukturi IJS. Storitev PRG prevede tronivojski programski model (Program → Rutina → Stavek) v KRL in ga pošlje bodisi v KukaSim za simulacijo bodisi živemu krmilniku KUKA KRC. Storitev ADM upravlja senzorsko telemetrijo in branja spremenljivk naprav, ki se vračajo navzgor v brskalnik kot časovni grafi ApexCharts. Ves promet teče prek internega omrežja IJS skozi OpenVPN + HTTPS.
Najtežja oblikovalska odločitev je bila, kje potegniti mejo abstrakcije — dovolj nizko, da robot natanko stori, kar raziskovalec namerava, dovolj visoko, da mu nikoli ni treba brati KRL.
Šest stvari dostavljenih,
tri težke rešene.
Ključni prispevki
- Razvil Angular 12 frontend za raziskovalce IJS za krmiljenje in nadzor industrijske robotske roke KUKA.
- Integriral Swagger-generiran TypeScript odjemalec (DataProxy API) skozi štiri storitvene domene: upravljanje naprav, programiranje robota, upravljanje dokumentov in avtentikacijo.
- Implementiral strukturiran graditelj robotskih programov — sestavljanje programov iz ponovno uporabnih rutin in atomarnih KRL stavkov, z neposrednim prenosom
.src/.datdatotek. - Povezal cevovod simulacije KukaSim, da so raziskovalci lahko predogledali in validirali programe, preden so jih poslali na fizično roko.
- Zgradil poglede za upravljanje naprav z večprotokolno podporo (Ethernet REST, Serial, Socket) in nadzor spremenljivk v realnem času prek časovnih grafov ApexCharts.
- Dodal panel za kamero (tip naprave AXIS) z nadzorom približanja, kar omogoča vizualno povratno informacijo v živo med poskusi.
- Integriral sistem obvestil z nastavljivimi pragovi, vezanimi na spremenljivke tipov naprav — raziskovalcem nudi opozorila ob nenavadnih meritvah senzorjev.
Rešeni izzivi
- Premostitev vrzeli med spletnim uporabniškim vmesnikom in robotskim krmilnikom, ki govori v svojem izvedbenem modelu — rutine, stavki, izvajalci — je zahtevala zvest TypeScript domenski model.
- Platforma je morala delovati prek internega VPN-ja IJS (OpenVPN + lasten vnos v hosts), kar je dodalo plast omrežnih omejitev, ki so oblikovale arhitekturo proxyja.
- Načrtovanje graditelja programov, da neprogramerji (raziskovalci, ne robotiki) lahko sestavijo KRL programe iz ponovno uporabnih stavčnih blokov, ne da bi se dotaknili surovne KRL sintakse.
Kaj poganja stvari.
Pripravljeni popraviti, zgraditi
ali skalirati?
30 minut, z mano osebno. Preberem vaš sistem kot dnevniško datoteko in povem, kaj bi naredil najprej. Brez prezentacij, brez prodajnega lijaka.
— Davor Majc, ustanovitelj, Numen