Experiencia · Sistemas para robots
Software para robots: la capa que decide el movimiento, el módulo de visión y el de audición. Hoy tenemos verificación offline y simulación — no tenemos nada que controle un motor real.
Escribimos cinemática, verificación de trayectoria y simulación física reproducible, con gates que bloquean cuando falta la prueba. Para visión tenemos un prototipo con cámara fija, no en un robot. Para audio en el robot no tenemos nada construido, y la página lo dice en lugar de tomar prestadas pruebas de la telefonía. No trabajamos con ROS.
Oferta, con condicionesHe ejecutado hoy todo lo que se puede ejecutar. La capa de control existe y es seria, pero está offline: un módulo propio de cinemática para un brazo con seis ejes, que resolvió 8.400 de 8.400 puntos de trayectoria, y un validador de física en MuJoCo 3.10.0 con 34 pruebas aprobadas, más 14 pruebas en la parte de visualización. Ambos declaran en su propio código que no tienen transporte al hardware y no pueden comandar un robot real. A la vista tenemos un prototipo propio — detección y seguimiento de personas en una cámara IP fija — con un solo commit y con el directorio de pruebas vacío. En audio en el robot tenemos cero: todo lo que hay en el disco es voz de call-center o biblioteca externa de telefonía, y la única obra acústica propia terminó con un resultado negativo, escrito en la aplicación. ROS: cero instalado, cero escrito. La regla exige un mínimo de dos implementaciones propias para «he hecho»; en control las tengo, pero ninguna alcanza el hardware, y las otras dos capas del servicio están por debajo del umbral. Así que: oferta con condiciones, con los límites dibujados.
El software de un robot tiene tres capas que se rompen de forma distinta: lo que ve y oye, lo que decide, y lo que envía a los motores. En las dos primeras tenemos trabajos propios con pruebas que se ejecutan. En la tercera — el puente hacia hardware — no tenemos nada, y ese es el límite del servicio, no un detalle de implementación. Dos de nuestros códigos lo dicen en su propio encabezado, en inglés, precisamente para que no puedan leerse mal: el módulo de cinemática no tiene transporte hacia hardware y no puede controlar un robot real.
Lo que existe en la parte de movimiento es verificación antes del movimiento. Un módulo propio calcula la cinemática directa, el jacobiano y la cinemática inversa para un brazo de seis ejes, con una reserva impuesta frente a los límites de cada eje, y se usó para verificar una trayectoria completa: 8.400 puntos solicitados, 8.400 resueltos, con la velocidad máxima por eje quedando por debajo del 8% del límite de catálogo. Por separado, un validador de física se ejecuta en MuJoCo 3.10.0 en procesador, con paso de cálculo de un milisegundo, en seis escenarios, cada uno dos veces, con la misma semilla — y las dos ejecuciones dan huellas idénticas. El determinismo no es una afirmación, es una comparación de sumas de control.
Lo que existe en la parte de visión es menos, y es honesto decir cuánto. Un prototipo propio hace detección y seguimiento de personas en flujos de cámara IP, con un pequeño detector de la familia YOLO, un rastreador multiobjeto, estimación de postura para cinco estados y control de giro-inclinación-zoom de la cámara. Tiene un solo commit y el directorio de pruebas está vacío. Y la diferencia entre esto y la visión de un robot es real, no formal: la cámara de un robot se mueve con él, la escena está cerca, la exposición cambia en cada paso y el presupuesto de latencia es otro, porque la imagen tiene que llegar a una decisión de movimiento, no a una pantalla. No tenemos cámara de profundidad, no tenemos calibración de cámara, no tenemos odometría visual.
En la parte de audio para robots no tenemos nada construido, y no vamos a tomar prestadas pruebas de otro lado. Tenemos trabajos reales de voz para telefonía y para asistentes conversacionales, pero un micrófono en un robot tiene otros problemas: el ruido propio de la máquina, ventiladores y servomotores que arrancan justo cuando el robot se mueve, la dirección desde la que llega la voz, el eco en la habitación y la distancia variable. El único trabajo acústico propio que tenemos terminó con un resultado negativo, escrito en la aplicación, y lo publicamos como tal — porque un resultado negativo medido es más útil que una promesa.