En un mesón del Moonlighter FabLab de Miami, un robot de plástico blanco fabricado durante el primer mandato de Reagan mira fijo un notebook. Es un Tomy Omnibot de 1984, de unos 60 centímetros de alto, con ruedas tipo oruga, una bandeja para servir y el domo de plástico ahumado que cualquiera que creció viendo Perdidos en el espacio reconoce al tiro como "robot". En uno de sus brazos va montado un pequeño compañero impreso en 3D con un solo ojo cian encendido. El ojo parpadea.

En un monitor junto al mesón, un rectángulo verde flota sobre el notebook, con la etiqueta "laptop 73%". El Omnibot se inclina hacia adelante sobre sus ruedas motrices. El rectángulo se corre unos píxeles a la derecha y el ojo lo sigue. Desde un parlante Bluetooth escondido en el pecho del Omnibot, una voz sintetizada anuncia "Lo encontré". El notebook es del autor del proyecto, que le pidió al robot que lo buscara desde el otro lado de la sala. El robot lo hizo sin que nadie le dijera dónde mirar.

Una promesa de 1984

Fotografía de Mario Cruz

Cuando Tomy lanzó el Omnibot en 1984, lo vendió como el robot doméstico del futuro. Se movía a control remoto, reproducía casetes, grababa y repetía mensajes y, al menos en los comerciales, te traía una lata de bebida en su bandeja incorporada. Costaba cerca de 600 dólares de la época, unos 1.800 dólares de hoy, y se vendieron varios cientos de miles. La mayoría no sobrevivió a las décadas. Las pilas alcalinas se sulfataron y se comieron la electrónica, y las ruedas de goma se resecaron hasta deshacerse. El sueño del robot mayordomo se fue apagando junto con el hardware.

Este ejemplar llegó como donación al espacio maker, en una caja con otras piezas y con la placa salpicada de la costra blanca y cristalina que todo restaurador de electrónica antigua aprende a reconocer de inmediato, el ácido de las pilas. El control remoto estaba igual. Varias pistas de la placa principal estaban comidas de lado a lado. Hicieron falta horas de alcohol isopropílico, cepillo de dientes y cautín para devolverle la vida a una lógica de 40 años.

Cuando por fin volvió la energía, los motores zumbaron y el Omnibot hizo su primer recorrido en probablemente treinta años. Diez segundos después, las ruedas de goma se desintegraron en el suelo. Según el autor, fue el momento más feliz de su semana.

La carcasa de plástico estaba sorprendentemente bien. Las décadas sin uso solo habían castigado lo que se movía.

La restauración que no paraba de crecer

El plan original era simple. Arreglar las pilas, imprimir ruedas nuevas, limpiar el mecanismo del casete y darlo por terminado. Pero todo proyecto de restauración tiene un momento en que el alcance se duplica sin que nadie lo note. Acá llegó al estudiar el casete original y cómo el robot interpretaba como órdenes de motor las frecuencias de audio grabadas en la cinta. 1.614 Hz significaba avanzar. 2.208 Hz era girar a la izquierda. 1.422 Hz era un número mágico que activaba un relé interno para mandar el audio del casete al parlante del robot. Era un lenguaje de órdenes completo, codificado en ondas sinusoidales.

Eso significaba que, en principio, el robot se podía manejar desde cualquier lugar donde sonara un parlante, incluso por Bluetooth.

El Omnibot restaurado sobre el mesón del FabLab

El autor puso un adaptador de casete Bluetooth en la casetera y escribió un script para Raspberry Pi que sintetizaba los tonos al vuelo y los transmitía. El Omnibot cruzó la cocina obedeciendo al notebook. Después grabó un "Hola, soy Omnibot" con voz sintetizada y reverberante a través de esa misma ruta de audio, y por un rato fue como si 1984 nunca hubiera terminado.

Ese habría sido un buen final. Pero había una cámara IA de 70 dólares sobrando, y la pregunta de qué pasaría si se la dejaba manejar.

Así es Ring-O

Ring-O, el compañero impreso en 3D montado sobre el Omnibot

Para la parte física, el autor llamó a Placitech, un maker de Miami especializado en el lado mecánico de proyectos como este. Necesitaba una carcasa que alojara una Raspberry Pi 5, una cámara, un ventilador, una pantalla OLED diminuta y una batería, y que quedara bien montada sobre el Omnibot sin desfigurarlo. Lo que volvió fue un pequeño robot compañero que Placitech bautizó Ring-O. Tiene el cuerpo redondo, brazos cortos y un solo ojo luminoso que se parece un poco a un timbre Ring cruzado con WALL-E.

Ring-O no se mueve por su cuenta. Ve, procesa y habla, y el Omnibot sigue encargándose de rodar. En la práctica, Ring-O cambia la forma en que la gente lee la máquina. Hoy, quien se acerca ya no mira el visor viejo del Omnibot. Mira la pupila de Ring-O, que lo sigue.

Placitech hizo las soldaduras y la carcasa, y el autor hizo el software. Lo que no sabía, hasta que la unidad volvió armada, era que su software estaba mal.

El LLM que siempre decía "derecha"

A la izquierda, Placitech. A la derecha, Mario Cruz.

La primera arquitectura era muy de 2026. Un ciclo le pasaba las detecciones de la cámara a un modelo de lenguaje grande en la nube, que razonaba sobre la escena y devolvía una lista de órdenes. La cámara IA no era el problema. Corría YOLO, una red neuronal entrenada para reconocer 80 objetos cotidianos, directamente en su propio silicio a unos 30 cuadros por segundo, sin tocar la CPU de la Pi. Las detecciones, como person 87% y chair 72%, llegaban como metadatos estructurados.

Esas detecciones se enviaban a Groq, un servicio que sirve modelos de lenguaje de la familia Llama con una velocidad envidiable. El prompt decía, en esencia, "Esto es lo que ve el robot. Esta es la misión. ¿Qué debería hacer ahora?". No funcionó, ni un poco.

Sin importar dónde estuviera la persona en el cuadro, al centro, a la izquierda o pegada al borde derecho, la respuesta del modelo era siempre {"commands": ["right"]}. Probaron el modelo chico y el modelo grande, con la misma respuesta. El robot giraba en su lugar. Cada decisión tomaba unos quince segundos, y cuando por fin decidía girar a la derecha, la persona ya solía estar detrás de él.

El autor borró doscientas líneas de ingeniería de prompts y las reemplazó por unas cincuenta líneas de aritmética de colegio:

  • Si el píxel central de la persona está a la izquierda del centro del cuadro, girar a la izquierda.
  • Si está centrado, avanzar.
  • Si está a la derecha, girar a la derecha.
  • Si la persona ocupa más del 60% del cuadro, detenerse, porque ya está lo bastante cerca.

Instantáneo y correcto, cada vez.

Según el autor, los LLM son estupendos con el lenguaje y pésimos para concluir que "331 es mayor que 224 y menor que 416, por lo tanto la salida es avanzar". Para eso está la matemática.

El código del LLM se quedó en el repositorio, porque sirve para otra tarea. Convierte la lista de etiquetas detectadas en una frase hablada cuando un visitante pregunta "¿Qué ves?". Para manejar en tiempo real, las reglas simples resultaron más rápidas, más baratas y además funcionaban.

La guerra de los recuadros

La segunda gran aventura de depuración fue más acotada y mucho más satisfactoria. Ring-O detectaba objetos, pero los recuadros verdes que debían dibujarse a su alrededor en el video en vivo no aparecían. O aparecían en lugares imposibles, flotando sobre la cabeza de una persona en vez de sobre el teclado.

El sistema de coordenadas del modelo era un laberinto de pequeñas mentiras. Los metadatos de parámetros intrínsecos decían que los recuadros no venían normalizados, pero en esta variante de YOLO con posprocesamiento llegaban ya normalizados. Dividirlos otra vez daba valores como 0,001, que se dibujaban como rectángulos invisibles. La función oficial de Python para pasar las coordenadas del modelo a la pantalla devolvía cosas como width: 0, height: 148,800. La opción de intercambio de ejes invertía la X y la Y de cada recuadro. Y nada de eso compensaba que la cámara capturaba a 640×480 mientras el modelo esperaba 640×640, lo que significaba que el procesador de imagen agregaba en silencio franjas de 80 píxeles arriba y abajo que cada cálculo posterior tenía que tener en cuenta.

El arreglo fue un poco de matemática:

  • Mirar los valores reales y, si son mayores que 2, normalizarlos.
  • Saltarse el intercambio de ejes de la biblioteca.
  • Compensar el relleno de las franjas.
  • Acotar todo a los bordes del cuadro.

Fueron diez líneas de código. Los recuadros verdes empezaron a seguir los objetos con precisión. El recuadro del teclado quedó sobre el teclado y el de la persona, sobre la persona.

Cómo decide Ring-O

La cámara (IMX500) corre YOLO11 en el propio chip y entrega detecciones del tipo "person 73% at x:223".

Lo que ve un niño

El primer panel de control, con registros en tiempo real y paneles de detecciones en JSON, era para el autor. El segundo fue para niños.

La ruta /kids del servidor web local del robot abre una especie de arcade de neón, con líneas de barrido de monitor CRT, una grilla synthwave animada y la tipografía pixelada Press Start 2P, que cualquiera nacido después de 1990 reconoce al tiro como "modo juego". Tiene botones 3D grandes con bordes de colores (Buscar zapato, Buscar humano, Buscar pelota y Bailar), cada uno con un emoji lo bastante grande para un niño de cinco años que todavía no lee, y un botón rojo de PARAR del tamaño de un puño.

Con Buscar zapato el robot empieza a buscar zapatos. Con Bailar lanza una coreografía de 20 pasos grabada de antemano como una secuencia de giros y movimientos. Con ¿Qué ves? Ring-O usa el LLM para describir la sala en voz alta por su parlante, en menos de diez palabras y con algo que suena vagamente a un niño chico confundido.

La aplicación estrella, según el autor, resultó ser la búsqueda de zapatos. El robot los encuentra. Es como jugar a las escondidas, solo que uno de los jugadores tiene una red neuronal y una cara impresa en 3D.

Personalidad por diseño

El ojo de Ring-O es una pantalla OLED a color de 128×128 píxeles, del tamaño de una huella digital. No cumple ninguna función en la navegación. Corre en su propio hilo y tiene una sola tarea, que la máquina parezca viva.

El ojo se dilata y sonríe cuando detecta a una persona. Se abre de sorpresa cuando aparece un gato o un perro. Mira a la izquierda cuando el robot gira a la izquierda. Parpadea cada tres a siete segundos. Tras treinta segundos sin actividad, los párpados se cierran despacio y se queda dormido. Cuando el autor toca al Omnibot para despertarlo, el ojo se abre con una animación completa, no con un simple cambio de estado, y lo mira directo.

Es la función menos práctica de todo el sistema, y la que más cambia la experiencia. La gente no reacciona ante una plataforma con ruedas y una cámara encima. Reacciona ante algo que parece devolverle la mirada. Sin el ojo, Ring-O es un paquete de sensores. Con él, la gente trata al robot como a un personaje.

Hacer que aguante un sábado

Que el robot funcione una vez es un tipo de ingeniería. Que siga funcionando ocho horas en la Maker Faire Miami, mientras desconocidos aprietan botones y niños lo apuntan a perros que no cooperan, es otro.

El panel de control ahora corre como un servicio de systemd con reinicio automático. Una prueba previa al arranque verifica cada importación, cada cuadro de cámara y cada ruta de audio antes de que el servidor web llegue a partir. Un endpoint de salud devuelve HTTP 503 con motivos estructurados cuando algún subsistema falla, ya sea una cámara congelada, un Bluetooth caído o el hilo del ojo trabado. El estado del Bluetooth se consulta en segundo plano para que la interfaz nunca se bloquee. Y como los niños van a apretar botones sin parar, el robot ahora encola las órdenes y le responde a la interfaz "ocupado, intenta de nuevo" cuando no puede aceptar una nueva, en vez de descartarla en silencio.

Nada de esto es glamoroso. Todo eso marca la diferencia entre una demo de mesón y un robot que sigue funcionando a las 5 de la tarde del segundo día de un festival abierto al público.

Cuarenta años tarde

El folleto de Tomy de 1984 prometía un robot doméstico que aprendería tu horario, reconocería tu voz y te traería un trago. La máquina de 600 dólares de la era Reagan no podía cumplir nada de eso, porque la tecnología no estaba lista.