Saltar al contenido

Gemm

Software para que robots comerciales trabajen en plantas industriales.

Rol
Teleoperación VR, panel del robot y manipulación Dex5-1
Período
Mar 2026 — hoy
Equipo
Equipo de 4 en ORT: Eitan Feldman, Martín Durán, Matías Tenenbaum y yo
Estado
En desarrollo

Stack: Python · ROS 2 · Unitree SDK · Jetson Orin NX · Meta Quest 3 / WebXR · WebRTC · TypeScript · Bun

gemm.ar ↗

Gemm convierte robots comerciales —un Unitree Go2 y un humanoide G1 EDU— en operadores de planta: que perciban, mapeen y trabajen donde una persona no debería tener que estar. Yo hago la teleoperación por realidad virtual, el panel del robot y la manipulación para las manos Dex5-1.

El problema

En una refinería hay recorridas que alguien hace una y otra vez: caminar hasta cada equipo, mirar un manómetro, anotar, a veces girar una válvula. No es trabajo complicado. Es trabajo que tiene que pasar a cualquier hora y en lugares donde estar presente ya es el riesgo.

Gemm quiere que esa recorrida la haga un robot, con una persona siempre al mando desde un lugar seguro. Empezamos por las rondas de inspección y la lectura de manómetros.

Cómo llegamos acá

Arrancó en marzo de 2026 como el proyecto de investigación de último año de TIC en ORT. El primer robot no era un humanoide: era un perro robot Unitree Go2. Y venía con una trampa: nuestro modelo no se puede programar. No trae SDK; la única forma de manejarlo es la app oficial de Unitree.

Así que hicimos que el robot creyera que le estaba hablando su app: armamos nuestro propio sistema, que se comunica con él igual que la aplicación oficial. Lo primero que hicimos con eso fue manejarlo desde la compu con un teclado.

Tres estudiantes en el patio de ORT controlando un perro robot Unitree Go2
El Go2 en el patio de ORT, en la época del teclado.

Después lo llevamos a Gemm Blocks, un editor de bloques tipo Scratch: armás el programa y el robot lo ejecuta. Yo le sumé 13 acciones nuevas y arreglé cómo se controla la velocidad. Lo mostramos en una hackathon y terminamos dando una clase en el ITBA con el Go2.

En paralelo fuimos a hablar con la industria. La idea original era que el humanoide girara válvulas durante una fuga de gas. Después de reunirnos con YPF y con Pan American Energy cambió: el valor estaba en recorrer, medir y avisar antes de que pase algo, con una persona interviniendo a distancia cuando hace falta. Lo cuento en una nota.

El robot humanoide Unitree G1 parado en el laboratorio frente a un grupo de estudiantes
Abril: Unitree vino al colegio a presentar el G1. A mitad de año llegó el nuestro.

Cuando llegó el G1 —1,30 m, 29 motores, manos— la ronda dejó de ser algo de lo que hablar y pasó a ser algo que un robot podía intentar.

Lo que hice yo

1. Teleoperación por realidad virtual

Un operador se pone un visor de realidad virtual, mueve los brazos y las manos, y el G1 los reproduce en tiempo real. Todo corre dentro del propio robot, sin una computadora al lado.

Laboratorio de ORT, 29 de septiembre, unas horas antes de presentar en el Parque de la Innovación.

Partimos de la base que da Unitree. Lo que me llevó meses fue que funcione siempre, no solo en una demo:

  • Que no dependa del wifi del lugar. El robot arma su propia red, así anda igual en el laboratorio, en un evento o en una planta.
  • Que el operador vea bien. El video llega al visor en alta definición y fluido, sin cargar al robot.
  • Que no se trabe. Encontré y arreglé las fallas que congelaban el video o dejaban al robot sin conexión.
  • Que sea fácil de usar. Se prende con un botón, hay unos segundos para ponerse el visor, y otro botón lo detiene y devuelve los brazos a su lugar.

2. El panel del robot

Una página web que corre en el robot y se abre desde cualquier celular cerca. Muestra la batería, el estado de los motores y la cámara en vivo, y deja hablarle al robot y escucharlo.

  • Voz en castellano, sin internet.
  • Control remoto desde el celular, pensado para que si se corta la conexión el robot frene solo. Todavía no lo probé con el robot caminando.
  • Alertas de batería y de temperatura de los motores, en pantalla y en voz.
  • Aviso de teleop trabada: detecta cuando el robot deja de seguir al operador. Lo estoy calibrando con sesiones reales.

3. Manipulación con las manos Dex5-1

Un módulo para que el robot agarre objetos sin romperlos, ajustando la fuerza según el material, con 137 tests. Está terminado; falta probarlo en el robot, que todavía no tiene esas manos instaladas.

La mano del robot G1 sosteniendo una pelota mientras un operador con visor de realidad virtual la controla al fondo
El G1 agarrando una pelota por teleoperación, con las manos que tiene hoy.

Lo que salió mal

Esta es la parte que más me enseñó, así que la dejo a la vista:

  • El robot se quedaba sin conexión cada cinco minutos. Pasé semanas buscando en el lugar equivocado. Cómo lo encontré.
  • La demo del Parque de la Innovación falló justo antes de subir. Las dos causas aparecieron en los días siguientes. La nota completa.
  • El LiDAR no mandaba datos. El software del fabricante no reconocía nuestro modelo de sensor; cuando logré hablarle directo, el propio sensor reportó una falla de hardware. Se fue a service.
  • La mano izquierda no responde. Es una falla física; la diagnostiqué hasta donde llega el software.
  • Mover la cintura con la cabeza: seis pruebas en vivo y nunca se movió. Lo abandoné.

Dónde está hoy

  • Teleoperación VR de brazos y manosValidado
  • Panel del robotValidado
  • Mapeo 3D y 2D en vivo (Eitan)Validado
  • Lectura de manómetrosPrototipo
  • Navegación de A a BSimulación
  • Rondas de inspección y válvulasPróximo

Uso los mismos estados que gemm.ar: algo está validado solo si lo vimos andar en el robot.

El equipo

Somos cuatro: Eitan Feldman (sistemas e IA: el bridge de datos, el mapeo y el dashboard), Martín Durán (diseño UX/UI), Matías Tenenbaum (investigación) y yo. Con el apoyo de Darío Mischener, coordinador de TIC en ORT, que consiguió los robots y el laboratorio.

Del proyecto · Notas

Siguiente casoPlatto→Un menú donde cada plato se ve en 3D y en realidad aumentada, sin instalar nada.