Actuar
Bob escucha y responde en la máquina. Cada turno — lo que oyó y lo que dijo — queda registrado como un paso del episodio.
Bob es mi laboratorio vivo de RL y ROS: un asistente local que aprende hoy de correcciones humanas y un robot que aprenderá a percibir, mapear y navegar. Cada hito se publica con la evidencia — o la falla — que le dio derecho a existir.
Esperando noticias de la casa.
Que el mapa signifique algo. La puerta del lidar ya está pagada — /scan publica
en el robot desde el 18 de agosto. Desde el 19 de agosto la puerta de la odometría también está pagada:
las ruedas reportan 64 veces por segundo y el robot ya manejó sus primeros metros. Lo que no está pagado
es el número — ningún circuito recorrido ha vuelto a su inicio con el error medido en centímetros.
La odometría de ruedas ya le llega al mapeador a 64 Hz — los encoders transmiten un paquete cada 15 ms — y el robot ya mapeó en movimiento: comandados 45.8°, medidos 45.3°. Lo que falta es la afirmación misma: recorrer un circuito, volver al inicio y publicar la diferencia en centímetros. Un mapa que nadie ha comprobado contra un regreso todavía no es un resultado de localización.
/scan está en vivo1.080 casillas por vuelta, 987 con distancia, 360.0° a 0.334°, hasta 9.34 m.
Los barridos llegan a 22. La base gira unos 53° entre dos muestras de odometría, y trazar una recta por ahí es exactamente como se embarra un mapa al girar.
Una meta manejada, detrás de un parachoques que pueda detenerlo por hardware.
Un mapa hecho con el escáner quieto prueba el escáner, no el mapeo.
El nodo suplente quedó borrado. La base transmite encoders cada 15 ms; /odom publica a 64 Hz. Escáner, montaje y mapeador sin cambios.
Recorrer un circuito de un piso y medir dónde caen la pared del inicio y la del final.
Los dos. Un mapa que se ve bien en una captura no es una medición.
Registrar la tasa de odometría, la de giro y la divergencia, y decir cuál estaba mal.
La navegación sigue cerrada hasta que un parachoques pueda detener el robot por hardware.
Modelo, firmware y salud respondieron correctamente.
El bloqueo nunca fue el jumper. El archivo de lanzamiento pedía un modo de barrido que este firmware no tiene, así que el tópico existía y jamás publicaba. En modo Boost el mismo sensor pasó de 720 puntos al 47.5 por ciento a 1.080 al 91.4.
El mapeador corrió y se guardó un mapa — 7.6 × 9.65 m a 5 cm. Probó el stack, no la localización.
El nodo suplente quedó borrado: los encoders transmiten cada 15 ms, /odom publica a 64 Hz. Comandados 45.8°, medidos 45.3. 80 m² de un piso mapeados en movimiento; cuatro rosbags guardan las corridas.
El proyecto cruza cuatro campos. Las pestañas separan qué aporta cada uno, qué funciona ahora y qué evidencia sigue faltando.
La corrección humana se vuelve señal de recompensa, después ejemplo confirmado y luego un cambio candidato de política. Hoy existen las capas de datos y evaluación; la optimización de política no ha corrido.
32 propuestas esperan a una persona.
Un bandit de seis dimensiones y 9–22 episodios por hora no justifican gradiente de política.
Una corrida terminada debe mejorar el benchmark sin regresiones retenidas.
ROS es el sistema nervioso: los sensores publican observaciones, los marcos dicen dónde ocurrieron y la navegación convierte una decisión en comando limitado.
/scan está publicando987 distancias por vuelta a 22 barridos/s, desde el 18 de agosto. Cuatro rosbags desde el 20 de agosto — las corridas ya sobreviven a su sesión.
El mapeador corre sobre odometría real de ruedas a 64 Hz. El error de cierre sin medir es la puerta actual.
La navegación espera detrás de localización y un parachoques físico.
Razonar no es una afirmación de personalidad. Es la ruta observable desde una pregunta, por contexto y verificaciones, hasta una respuesta o acción calificable.
Memoria y estado sensorial entran sin volcar el corpus completo.
El código decide hechos medibles; el modelo propone o critica.
Herramienta, contexto y conclusión equivocadas se cuentan por separado.
Bob se vuelve útil eligiendo y operando herramientas: voz, búsqueda, visión y finalmente ROS. Inteligencia significa completar una tarea limitada con una traza reproducible.
No ejecutar visión para una pregunta que solo necesita memoria.
La llamada ocurre solo cuando entradas y hardware son reales.
Salida, latencia y resultado quedan en el episodio.
Verde significa que el artefacto existe. Ámbar significa que hay hardware o código, pero no prueba.
Entradas y puntuación existen antes de optimizar.
Solo filas confirmadas entran a política.
El contador se mueve solo al terminar.
Publica en el robot desde el 18 de agosto; 91.4 por ciento de las casillas traen distancia.
Cuatro rosbags escritas el 20 de agosto — 34 minutos, 420,422 mensajes de /scan, /odom, /tf, /cmd_vel y /bumper. El mapeador se puede reajustar contra una corrida en vez de volver a manejar la casa.
Los mapas ya salen de corridas reales sobre odometría de ruedas — 80 m² de un piso a 5 cm. Ningún circuito ha vuelto a su inicio con la diferencia medida; esa es la condición de paso.
El robot ya percibe y todavía no se mueve con su propio mapa. Cada componente conserva la limitación que importa — y el interruptor de parachoques, la única pieza que podría detenerlo por hardware, sigue sin conectar.
/scanSalud OK, firmware 1.25. El motor se pasa de vueltas: 21.9 vueltas/s contra un nominal de 10.
Se pasó del escritorio al robot. Útil a distancia, ciega junto al parachoques.
Escáner, cámara, mapeador y consola en una sola placa de 4 GB, con carga cerca de 4.4.
Un nodo publica la transformada identidad a propósito. Hasta que reporten las ruedas, ningún mapa sobrevive un giro.
El registro de entrenamiento del cuerpo, con las mismas reglas que el carril de conversación: cada corrida es una fila, los fracasos se publican junto a los logros, y la calificación solo aparece cuando un humano la confirma.
| FECHA | CONDUCTOR | DIST | GOLPES | RESULTADO | NOTA |
|---|---|---|---|---|---|
| 2026-08-20 21:12 | explore+bump-memory | 14.00 m | 20 | Biggest map yet: 87.5 m2, incl. a 3.3 m ten-goal ZERO-BUMP round - but kept re-electing the same wall corner until boxed | — |
| 2026-08-20 13:55 | beacon-route | 1.50 m | 9 | aborted - operator requested shutdown for updates | — |
| 2026-08-20 13:40 | beacon-route | 1.30 m | 1 | FALSE ARRIVAL - phantom blue: kitchen LED reflection hue 134-140 | — |
| 2026-08-20 13:25 | sweep | 0.00 m | 0 | KITCHEN CONFIRMED: oven 4.9m + microwave 2.7m; waypoint banked | — |
| 2026-08-20 13:05 | beacon-route | 0.70 m | 16 | couch/fridge route failed - started inside pocket | — |
| 2026-08-20 12:55 | explore+camfusion | 2.60 m | 117 | jailed by own glove keep-out disc at reset area | — |
| 2026-08-20 11:52 | patrol+explore | 12.70 m | 20 | wedged in reset pocket; extraction into wall alcove | — |
Una fila sin nota es una fila honesta: el guion significa que ningún humano ha juzgado esa corrida. Cada episodio tiene su grabación completa de sensores en el robot; aquí se publica la bitácora, nunca la casa.
Bob escucha y responde en la máquina. Cada turno — lo que oyó y lo que dijo — queda registrado como un paso del episodio.
Una respuesta se califica +1 o −1 con una etiqueta de falla, y esa calificación es la señal de recompensa — sin escalas de puntuación y sin trabajadores anónimos. El número de abajo lo entró un operador sobre un rezago; la cola que espera a una persona es más grande que él.
Cada respuesta mala queda ligada a lo que se debía haber dicho. Mala → mejor se vuelve un par de preferencia.
Los pares y las calificaciones quedan guardados para la próxima actualización de la política. Todavía no se ha entrenado nada — la etiqueta sigue en ámbar hasta que una corrida los use de verdad.
La etapa cuatro dice guardado porque está guardado: las calificaciones y los pares se están acumulando y ninguna corrida los ha usado todavía. Cuando la primera lo haga, esa etiqueta cambia — y esta página lo va a mostrar igual que muestra todo lo demás.
Entrenando desde enero de 2026. Los resultados son internos y varían; lo que es público es el trabajo mismo, y cada punto de abajo está funcionando, no planeado.
Aquí no hay una gráfica de una línea que sube. Once calificaciones no hacen una curva, y un gráfico que sube un escalón y después se cae es el retrato de una muestra pequeña, no del progreso. Cuando haya suficiente señal para graficarlo con honestidad, se grafica.
Diez de las primeras once calificaciones fueron fallas — la calificación empezó con la fila de errores ya conocidos. Se publica tal cual, porque una curva de aprendizaje que empieza arriba no es una curva de aprendizaje.
Corregido el 14 de agosto de 2026. Esta fila decía “calificados a mano”. No lo fueron: las once se escribieron desde una cuenta de operador en una sola pasada de veintitrés milisegundos sobre un rezago de transcripciones, no se teclearon una por una en la consola. La consola está hecha para personas y casi no se ha usado — el último ingreso de cualquier tipo fue el 31 de julio. Mientras tanto, las calificaciones que sí salieron de conversaciones reales son la fila de abajo, y ninguna se ha revisado nunca. El número no estaba inflado, pero se describió como algo que no era, y esta página no tiene derecho a hacer eso.
Cada calificación trae un motivo, no solo un signo. La etiqueta es lo que hace contable una falla — y lo que le dice a la corrida nocturna contra cuál comportamiento escribir una regla.
823 respuestas por 0.019 dólares de electricidad, calculados con potencia medida y no con una ficha técnica. La comparación tasa el mismo volumen de tokens a precios de API frontera — no afirma igualdad de capacidad: un modelo sobre un escritorio no es un modelo frontera. La comparación sí es equivalente para esta carga, en este edificio y sin que los datos salgan.
/scan de ROS: 1.080 casillas por vuelta, 987 de ellas con una distancia, 360.0° completos a 0.334°, y el retorno más lejano a 9.34 m en un cuarto para un sensor calificado a 12. Primera luz el 18 de agosto de 2026. El número del que no estamos orgullosos se publica igual: gira a 21.9 vueltas/s contra un nominal de 10, porque la línea de velocidad del motor está atada a un riel de 5 V en vez de manejarse con lógica de 3.3 V.18 de agosto de 2026. Este párrafo antes negaba dos cosas: que algo de esto fuera LiDAR de barrido, y que algo de esto fuera profundidad estéreo. Las dos negaciones ya se gastaron — el escáner publica distancias, la cámara estéreo publica profundidad, y las cifras de arriba se leyeron de los dos. Lo que sigue negado es lo que más importa: esto no tiene un mapa en el que pueda confiar. El mapeador corre y la odometría ya es real — 64 Hz desde los encoders de las ruedas, desde el 19 de agosto — y cuatro rosbags guardan las corridas que construyeron el mapa. Lo que nunca ha pasado es la comprobación: un circuito recorrido que vuelva a su inicio con el error publicado en centímetros. El mapeo y la navegación siguen cerrados hasta que pase.
Bob no es una sola computadora, y desde agosto tampoco son dos. Una máquina con GPU al lado del cuarto oye y recuerda; una máquina de escritorio pequeña hace todo el pensar; y una placa única sobre el robot lleva el escáner y la cámara y corre sus drivers ella misma. La regla entre las dos primeras no cambió: si nadie más usa la tarjeta gráfica, Bob puede usarla. En el momento en que un trabajo real la necesita, mueve ojos y cerebro a la otra máquina y deja libre el recurso. La tercera no se negocia igual — datos de distancia que tienen que cruzar el wifi antes de que alguien les crea son datos a los que nadie debería creerles.
El oír, la identidad de quien habla y la búsqueda corren en la GPU, al lado del cuarto: un arreglo de micrófonos, transcripción y una voz de vuelta.
Un modelo pequeño atiende cada turno normal. Uno más grande se despierta solo cuando alguien pide profundidad — y al hacerlo saca al pequeño, porque los dos no caben al tiempo.
Una placa única sobre el robot corre el escáner, la cámara estéreo, el mapeador y su propia consola — en cuatro gigabytes, porque todo lo que hace es percibir y no pensar.
Esa regla estuvo semanas en el código y la forma de medirla la rompía en silencio. Preguntaba si la tarjeta estaba llena — y los propios modelos de Bob la llenaban, así que para Bob parecía ocupada y mandaba sus ojos a la máquina más lenta todo el día. Ahora pregunta si hay alguien más usándola, que es lo que la regla siempre quiso decir.
Nada en este ciclo es una simulación. La recompensa viene de la gente que le habla, la confirmación viene de una persona, y la actualización pasa a las tres y media de la mañana en una máquina dentro de una casa.
Lo que la persona dice después califica la respuesta anterior. Una corrección es un negativo; seguir la conversación no lo es. A nadie se le pide calificar de uno a cinco, porque nadie hace eso con honestidad por mucho tiempo.
La calificación automática es una propuesta con su propio estado. Solo se vuelve dato de entrenamiento cuando un humano la confirma — y ahora mismo hay 32 propuestas sin confirmar, porque nadie ha abierto la consola desde el 31 de julio. La compuerta funciona. El problema es la cola que se le acumuló detrás.
Cuando dos entrenadores se dividen sobre la misma respuesta, eso se debe mostrar como una diferencia y no suavizarse en un promedio. Nunca ha pasado. Solo ha habido un calificador, así que las filas que más dicen son filas que todavía no existen.
De noche, las recompensas confirmadas se destilan en reglas de comportamiento que cargan con él al otro día. Cada versión se guarda, para que un entrenador pueda ver que su calificación movió una regla.
Su carácter es un documento que escribió una persona; la política es lo que destiló la calificación. La política carga de última, así que en una contradicción gana ella. La consola ahora nombra esos pares en vez de dejar que pase a oscuras.
Encontrado el 14 de agosto, publicado el mismo día. La destilación nocturna no lee las calificaciones confirmadas — lee el flujo crudo de recompensas, con filas sin confirmar y todo. El 8 de agosto una palabra de activación mal detectada abrió una ventana de escucha que una transmisión de fútbol en vivo mantuvo abierta siete minutos, y la narración se transcribió como si fuera una persona reaccionándole a Bob. Dos de esas filas puntuaron positivo. Así que el conteo de reglas de la franja de arriba se destiló de una bolsa que es más o menos tres cuartas partes calificaciones de máquina sin confirmar, algunas de las cuales son un televisor. El arreglo es una verificación de voz que se instaló hace semanas y nunca se conectó a nada. Hasta que se conecte, ese número es la cifra menos confiable de esta página, y se etiqueta como tal en vez de quitarse en silencio.
Lo que esta página no le va a mostrar: las reglas mismas, las transcripciones de donde salieron, ni nada que él haya recordado sobre la gente que vive con él. La forma del aprendizaje es la parte interesante y es pública. Lo que aprendió sobre una familia no lo es.
Este es un plan de estudio construido alrededor de una máquina real, no una afirmación de que el plan ya está completo. La disciplina viene de mi trabajo en producción: construir el oráculo, fijar el benchmark, instrumentar la corrida y volver reproducible la falla. Lo nuevo es optimizar políticas y usar ROS para convertir una decisión en movimiento.
Verificadores deterministas, inyección de fallas con semilla, evaluación retenida, servicio de modelos en producción y un pipeline repetible para ajustar, evaluar, fusionar y servir. Sé hacer falsable un resultado y encontrar el error del arnés que hace misterioso al modelo.
Búsqueda de políticas más allá del ajuste supervisado; mensajes, marcos y relojes de ROS; arranque de sensores; SLAM; navegación; y la distancia entre una política que puntúa bien en un entorno congelado y una que se mueve con seguridad en un cuarto. No he hecho RLHF ni entrenamiento con gradiente de política. Esa es la brecha que este laboratorio busca cerrar.
trial_eval.py ya evalúa registros de mapas congelados. La
primera lección es fijar entradas, semilla y puntuación antes de ajustar
nada, para que una mejor puntuación signifique una mejor política y no
una prueba que se movió.
El controlador actual es un bandit de seis dimensiones, con unos 9–22 episodios supervisados por hora. A ese ritmo, la búsqueda de caja negra se puede probar en cientos de evaluaciones; el gradiente de política exigiría evidencia que este montaje todavía no puede producir.
ROS publica /scan: 987 distancias por vuelta, 22 veces por
segundo. Media puerta sigue debiéndose — no se ha escrito ninguna
rosbag, así que el flujo está vivo y no se conserva nada.
El mapeo pasa cuando un circuito manejado vuelve al inicio y el error de cierre se reporta en centímetros. Hoy el mapeador corre sobre odometría real de ruedas a 64 Hz y el robot ya manejó sus primeros metros; el circuito y su error siguen pendientes. Correr los paquetes no es el experimento.
El orden importa: benchmark antes de optimizar, observación antes de mapear, localización antes de autonomía. Un interruptor de parachoques añadirá una señal real de seguridad; un televisor dentro de la imagen no se vuelve un entorno de entrenamiento solo porque el robot puede leerlo.
El bloqueo nunca fue el cableado. El archivo de lanzamiento pedía un modo de barrido que este firmware no ofrece, así que el tópico existía y nunca publicaba — que se ve exactamente igual que un sensor muerto. En modo Boost el mismo escáner pasó de 720 puntos con 47.5 por ciento válidos a 1.080 con 91.4. Una línea de configuración valió más que todos los arreglos de hardware intentados antes.
Dos sensores monocromos separados 7.5 cm, con la disparidad calculada en silicio dedicado dentro de la propia cámara. Precisa a cerca del uno por ciento a seis metros — e incapaz de ver nada a menos de 450 mm, que es la altura de un parachoques. Ese número es la razón por la que el lidar no sobra. Ahora viaja sobre el robot al lado del escáner, que es el arreglo que convierte el punto ciego en un problema del escáner y no de la cámara.
La placa que llegó es una Pi 5 de 4 GB, no la de 8 GB con la que se compró, y eso importa porque el mapeador y la detección de objetos de la cámara tienen que compartirla. Los cuatro procesos corren hoy con unos 760 MB y carga 4.4. El cómputo debe ir a bordo porque el mapeo quiere el barrido y la odometría de ruedas en un mismo reloj.
Un mástil de sensores, una cuna para el lidar, una jaula de protección y un soporte de cámara, modelados a las medidas reales de los sensores e impresos aquí. Una misma rosca de trípode lleva la misma pieza por mesa, base y robot, que es la única razón por la que tres etapas no necesitan tres soportes.
Los primeros mapas construidos por un robot en movimiento llegaron el 19 de agosto: 80.2 m² de un piso a 5 cm por celda, sobre odometría de ruedas a 64 Hz. Comandados 45.8°, los encoders midieron 45.3. Eso prueba que el robot puede mapear mientras se mueve; no prueba que el mapa esté bien. El número que va a contar es si un circuito completo a un piso deja la pared del inicio y la del final en el mismo lugar.
El resumen honesto del robot es que ya tiene buenos ojos y el principio de una memoria. Ha manejado decenas de metros, ha encontrado a una persona y ha leído un logo en una televisión — y después falló tres veces seguidas en llegar a la cocina, porque se dirigía hacia lo que se veía despejado y no tenía mapa de por dónde ya había pasado. Desde el 19 de agosto construye el mapa en movimiento: los reportes de rueda de dos por segundo que lo impedían ya no existen, reemplazados por un flujo de encoders a 64 por segundo. El número que sigue pendiente es el error de cierre de un circuito recorrido — esa medición es todo el experimento actual.
La consola pone ROS junto al aprendizaje por refuerzo a propósito. La lección es el puente: cómo una corrección se vuelve datos, cómo los datos se vuelven una política candidata y cómo se evalúa la candidata antes de permitirle mover hardware. Construyo ese puente en público porque esa es precisamente la parte que vine a aprender.
La mayor parte de la velocidad no se compró. Se encontró.
Los ojos volvieron a la tarjeta gráfica libre, y al modelo se le dijo que está mirando a una persona y no a un objeto que alguien sostiene.
La imagen solo llega al modelo de visión cuando la pregunta es sobre ver. La mayoría de los turnos no lo son, y ahora no cuestan nada.
Solo su carácter llenaba el 86 por ciento de la ventana anterior y dejaba casi nada para la conversación misma.
Los calificadores castigaban frases que había cortado una configuración, no que Bob se hubiera quedado sin qué decir.
Cuando le decían mal el nombre de su propio hardware, el modelo viejo le daba la razón y lo escribía en su memoria. El nuevo dice que no, y explica por qué.
La mirada fue el caso interesante. El modelo razonaba en círculos buscando un objeto que no estaba en la imagen, no devolvía nada y había que preguntarle otra vez — o sea que el costo se duplicaba por una frase del prompt, no por el hardware.
Lo que no está resuelto: todavía relee todo su carácter antes de escribir una palabra, y en un turno normal eso es casi toda la espera. Sacar la respuesta frase por frase bajaría la primera palabra de unos treinta segundos a menos de diez sin cambiar un solo modelo. Está escrito, no está construido, y esta página lo va a decir hasta que lo esté.
Una persona, una casa y un sistema que lleva entrenándose desde enero de 2026. Esta página decía dos. Se creó una segunda cuenta de entrenador el 31 de julio y nunca se ha entrado a ella, así que el segundo nombre se quitó en vez de quedarse en una página que se dedica a contar cosas.
Dirige el proyecto, y es todo el proyecto: escribe el código, cablea el hardware, califica las respuestas y decide en qué se le permite convertirse al sistema.
La consola se construyó para más de una persona, y toda la maquinaria de desacuerdo detrás de ella nunca ha corrido porque una segunda persona nunca la ha usado. El puesto es real, la cuenta existe y está vacía.
No es la empresa ni el producto — es el resultado. Así se ve un sistema que se deja corregir cuando quienes lo corrigen son los que viven con él.
Esta página cambia a medida que cambia el trabajo, y el trabajo no está terminado. Lo siguiente que estamos construyendo es lo que lo hace responder mientras todavía está pensando, en vez de después. Luego, el mismo ciclo apuntado al movimiento.
Si quiere verlo pasar en vez de leerlo después, pida una demostración — o una cuenta en la consola de entrenamiento y califíquelo usted mismo.
Sobre el método, en corto: entrenamos en GPUs propias, con una mezcla de modelos de código abierto y comerciales. No publicamos cuáles, porque los modelos son la parte reemplazable. Los resultados son internos y varían. Lo que vale la pena mostrar es el ciclo, y eso está en esta página.
Una división de CareCompile. Aprendizaje por refuerzo y robótica, entrenados en hardware propio, en el lugar donde funciona.