IJS · Control del robot KUKA
Una plataforma de investigación Angular para el Institut Jožef Stefan — una interfaz de control y monitorización basada en navegador para un brazo robótico industrial KUKA, construida sobre una API REST DataProxy diseñada a medida.
Resumen
Este no fue un proyecto típico con un cliente — fue una colaboración de investigación. El Institut Jožef Stefan es la mayor y más respetada institución de investigación de Eslovenia, y su grupo de automatización y robótica necesitaba una interfaz web para controlar y monitorizar un brazo robótico industrial KUKA. Yo construí la parte frontend de ese sistema en 2021.
La plataforma se llama DataProxy — una capa REST API que se sitúa entre el navegador y el controlador del robot (KUKA KRC), expuesta en el dominio interno de IJS sobre HTTPS. El cliente TypeScript generado por Swagger se dividía limpiamente en cuatro dominios de servicio: ADM (gestión de dispositivos y telemetría de sensores), PRG (programación del robot), DMS (almacenamiento de documentos y esquemas de conexión) y AUTH (gestión de sesiones JWT). Escribí la aplicación Angular 12 sobre esa superficie.
La posición del robot se rastrea como e6pos — el tipo de coordenadas nativo de seis ejes de KUKA (X, Y, Z, A, B, C). Los programas se componen en una jerarquía de tres niveles: los Programas contienen Rutinas ordenadas, que contienen Sentencias ordenadas — instrucciones KRL individuales. Los investigadores construyen secuencias en la UI y luego exportan los archivos .src/.dat en crudo o pasan el programa por KukaSim para una simulación visual antes de la ejecución en vivo.
Arquitectura
Lectura del diagrama: Cinco módulos de UI (panel, constructor de programas, panel de dispositivos, cámaras, documentos) se comunican exclusivamente a través de la API REST DataProxy — un middleware autenticado con JWT que corre en la infraestructura de IJS. El servicio PRG traduce el modelo de programa de tres niveles (Programa → Rutina → Sentencia) a KRL y lo despacha bien a KukaSim para simulación, bien al controlador KUKA KRC en vivo. El servicio ADM gestiona la telemetría de sensores y las lecturas de variables de dispositivo que fluyen de vuelta al navegador como series temporales de ApexCharts. Todo el tráfico va por la red interna de IJS a través de OpenVPN + HTTPS.
La decisión de diseño más difícil fue dónde trazar el límite de la abstracción — lo bastante bajo para que el robot haga exactamente lo que el investigador pretende, lo bastante alto para que nunca tenga que leer KRL.
Seis cosas entregadas,
tres difíciles resueltas.
Contribuciones clave
- Construí el frontend en Angular 12 para que los investigadores de IJS pudieran controlar y monitorizar un brazo robótico industrial KUKA.
- Integré un cliente TypeScript generado por Swagger (DataProxy API) en cuatro dominios de servicio: administración de dispositivos, programación del robot, gestión de documentos y autenticación.
- Implementé un constructor estructurado de programas de robot — componiendo programas a partir de rutinas reutilizables y sentencias KRL atómicas, con descarga directa de los archivos
.src/.dat. - Conecté el flujo de simulación de KukaSim para que los investigadores pudieran previsualizar y validar programas antes de enviarlos al brazo físico.
- Construí vistas de gestión de dispositivos con soporte multiprotocolo (Ethernet REST, Serial, Socket) y monitorización de variables en tiempo real mediante gráficos temporales de ApexCharts.
- Añadí un panel de cámara (tipo de dispositivo AXIS) con control de zoom, permitiendo retroalimentación visual en vivo durante los experimentos.
- Integré un sistema de notificaciones con disparadores de umbral configurables vinculados a variables de tipos de dispositivo — proporcionando a los investigadores alertas sobre lecturas anómalas de sensores.
Desafíos resueltos
- Cerrar la brecha entre una UI de navegador web y un controlador de robot que habla su propio modelo de ejecución — rutinas, sentencias, ejecutores — requería un modelo de dominio fiel en TypeScript.
- La plataforma debía funcionar sobre la VPN interna de IJS (OpenVPN + entrada personalizada en hosts), añadiendo una capa de restricción de red que moldeó la arquitectura del proxy.
- Diseñar el constructor de programas para que no programadores (investigadores, no roboticistas) pudieran componer programas KRL a partir de bloques de sentencias reutilizables sin tocar la sintaxis KRL en crudo.
Qué hay bajo el capó.
¿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