Home/ Work/IJS · KUKA Robot Control
Research · 2021 · IJS collaboration

IJS · KUKA Robot Control

An Angular research platform for Institut Jožef Stefan — a browser-based control and monitoring interface for a KUKA industrial robot arm, built over a purpose-designed REST DataProxy API.

Role Developer (research collaboration)
Year 2021
Institution Institut Jožef Stefan, Ljubljana
Domain Robotics · Research · Automation
Stack Angular 12 · TypeScript · REST · Swagger
Deploy prd.dp.ijs.si (IJS internal network + OpenVPN)
API services
4 / 4
ADM · PRG · DMS · AUTH
Connection modes
3
Ethernet · Serial · Socket
Program abstraction
3-tier
Program → Routine → Statement
Robot sim integration
KukaSim
preview before execution

Overview

This was not a typical client project — it was a research collaboration. Institut Jožef Stefan is Slovenia’s largest and most respected research institution, and their automation and robotics group needed a web-based interface for controlling and monitoring a KUKA industrial robot arm. I built the frontend side of that system in 2021.

The platform is called DataProxy — a REST API layer sitting between the browser and the robot controller (KUKA KRC), exposed at IJS’s internal domain over HTTPS. The Swagger-generated TypeScript client divided cleanly into four service domains: ADM (device management and sensor telemetry), PRG (robot programming), DMS (document and connection-scheme storage), and AUTH (JWT session management). I wrote the Angular 12 application on top of that surface.

The robot’s position is tracked as e6pos — KUKA’s native six-axis coordinate type (X, Y, Z, A, B, C). Programs compose into a three-tier hierarchy: Programs contain ordered Routines, which contain ordered Statements — individual KRL instructions. Researchers build sequences in the UI, then either export the raw .src/.dat files or pipe the program through KukaSim for visual simulation before live execution.

Architecture

~/ijs-kuka/architecture/system-map.svg
01 — RESEARCHER UI (Angular 12 · TypeScript)Dashboardexperiments · samplesProgram Builderroutines · statements · KRLDevice Paneltelemetry · notificationsCamera FeedsAXIS devices · zoom ctrlProjects / DocsDMS · connection schemesDataProxy APIREST · HTTPS · JWT auth · Swagger-generated TS clientADM — devices · telemetryPRG — programs · routinesDMS · AUTH03 — ROBOT CONTROLLER & SIMULATIONKUKA KRCrobot controller · KRL runtimee6pos (X Y Z A B C)KukaSimsimulation · program previewvalidate before live runLab Devicessensors · cameras · instrumentsEthernet · Serial · SocketIJS NetworkOpenVPN · prd.dp.ijs.siHTTPS :844404 — PHYSICAL ROBOT ARMend-effectorKUKA industrial arm6-DOF · KRC controllersensor feedback loopdevice variable values → ApexCharts time-series · threshold notifications

Reading the diagram: Five UI modules (dashboard, program builder, device panel, cameras, documents) communicate exclusively through the DataProxy REST API — a JWT-authenticated middleware running on IJS infrastructure. The PRG service translates the three-tier program model (Program → Routine → Statement) into KRL and dispatches it to either KukaSim for simulation or the live KUKA KRC controller. The ADM service handles sensor telemetry and device variable readings that flow back up to the browser as ApexCharts time-series. All traffic runs over the IJS internal network via OpenVPN + HTTPS.

03 What I delivered · challenges solved

Six things shipped,
three hard ones solved.

Key contributions

  • Built the Angular 12 frontend for IJS researchers to control and monitor a KUKA industrial robot arm.
  • Integrated a Swagger-generated TypeScript client (DataProxy API) across four service domains: device administration, robot programming, document management, and authentication.
  • Implemented a structured robot program builder — composing programs from reusable routines and atomic KRL statements, with direct download of .src/.dat files.
  • Wired the KukaSim simulation pipeline so researchers could preview and validate programs before sending them to the physical arm.
  • Built device management views with multi-protocol support (Ethernet REST, Serial, Socket) and real-time variable monitoring via ApexCharts time-series graphs.
  • Added a camera feed panel (AXIS device type) with zoom control, enabling live visual feedback during experiments.
  • Integrated a notifications system with configurable threshold triggers tied to device-type variables — giving researchers alerts on abnormal sensor readings.

Challenges solved

  • Bridging the gap between a web-browser UI and a robot controller that speaks its own execution model — routines, statements, executors — required a faithful TypeScript domain model.
  • The platform had to work over IJS's internal VPN (OpenVPN + custom hosts entry), adding a layer of network constraint that shaped the proxy architecture.
  • Designing the program builder so non-programmers (researchers, not roboticists) could compose KRL programs from reusable statement blocks without touching raw KRL syntax.
The hardest design decision was where to draw the abstraction boundary — low enough that the robot does exactly what the researcher intends, high enough that they never have to read KRL.
Davor Majc, Developer / IJS–KUKA
04 Tech stack

What's under the hood.

AngularTypeScriptRxJSAngular MaterialApexChartsRESTSwaggerKUKA KRLKukaSimOpenVPNHTTPS
Let's talk

¿Listo para arreglar, construir
o escalar?

30 minutos, conmigo personalmente. Leo tu sistema como un archivo de logs y te digo qué haría primero. Sin presentaciones, sin embudo de ventas.

Davor Majc, fundador, Numen

What you get on call
→ un diagnóstico de una página
→ 2–3 formas de solución, ordenadas por impacto
→ coste aproximado + plazo para cada una
→ sí/no — ¿soy la elección adecuada?
+386 40 828 474 · Blejska Dobrava, SI