Mi agente de IA conoce las leyes de la física mejor que yo. Al trabajar en la simulación de mi robot DIY, me explica cómo calcula el motor de físicas la fricción entre la rueda y el suelo, y calcula a partir de qué inclinación el robot se quedaría atascado en una rampa hipotética en el cuarto de mi hija.
Pero la simulación física es «headless»: solo existe como números y datos. Así que le pedí al agente que renderizara un vídeo de la simulación: el robot recorre el salón y, de paso, choca contra el osito de peluche de mi hija y lo derriba:
Quien haya tenido alguna vez un osito de peluche en las manos lo sabe enseguida: así no cae ningún osito. Lo que más me molesta es que un leve empujón en el pie lo tumba por completo de golpe.
Desde el punto de vista físico, probablemente el cálculo sea correcto. Lo que pasa es que en la simulación el osito es un cuerpo rígido hecho de unas pocas formas geométricas básicas. El agente simplemente no sabe dónde y cómo se puede simplificar, ni qué es lo que realmente importa en un osito de peluche real. Y tampoco se da cuenta al mirar el resultado.
Para ser justos: este escenario en concreto no tiene ninguna repercusión en el diseño del robot. Y una simulación más realista no aportaría ningún valor aquí. Pero eso también es solo una suposición.
Detalles técnicos
Para quien quiera saber más: así se hizo el vídeo.
| Área | Implementación |
|---|---|
| Física | MuJoCo, robot construido a partir de los datos CAD, ciclo de control de 20 ms |
| Control | Núcleo de firmware del robot, el mismo código que corre en el microcontrolador |
| Osito | 15 cm, 80 g (estimado), un cuerpo rígido formado por un elipsoide, una esfera y dos cápsulas |
| Secuencia | Posición inicial y momento del choque elegidos, todo lo demás simulado |
| Renderizado | Blender 4.2 Cycles en la CPU, 960 × 540, 8 muestras + reducción de ruido |
| Tiempo de render | aprox. 17 s por fotograma, proceso nocturno de 22:25 a 3:21 |
Así es como ve el osito el motor de físicas:
<body name="teddy"><freejoint/>
<geom name="teddy_rumpf" type="ellipsoid" size=".038 .042 .05" mass=".045"/>
<geom name="teddy_kopf" type="sphere" size=".034" mass=".02"/>
<geom name="teddy_bein_l" type="capsule" size=".016" mass=".0075"/>
<geom name="teddy_bein_r" type="capsule" size=".016" mass=".0075"/>
</body>
Un único cuerpo que puede moverse libremente como un todo. La cabeza y las piernas están rígidamente unidas al torso: nada cede, nada es blando. Los brazos solo existen en la imagen renderizada; para la física, no existen.



