La ficha técnica de un humanoide dice lo que el fabricante quiere mostrar; el archivo de simulación dice lo que el cuerpo es. En esta clase instalas MuJoCo, descargas solo los humanoides de MuJoCo Menagerie y abres el Unitree G1, leyendo del propio archivo cuántas coordenadas, velocidades y motores tiene.
1Qué hay en un MJCF: cuerpos, articulaciones, actuadores, sensores y poses guardadas
2El banco de trabajo en ~/fth: venv, MuJoCo 3.16.0 y Menagerie fijado en un commit
3MjModel (el cuerpo) y MjData (el estado)
4Por qué el G1 tiene nq=36, nv=35 y nu=29
Objetivo: instalar MuJoCo 3.16 y Menagerie y abrir el Unitree G1, leyendo nq, nv y nu del propio archivo MJCF.
01 · Del archivo al paso de simulación
Haz clic en cada bloque.
Haz clic en cada bloque del diagrama para ver qué hace.
La ficha del fabricante y el archivo pueden diferir: la clase 8 enseña a anotar la diferencia.
02 · Los tres números que vas a leer en todo humanoide
Haz clic en cada uno.
1. nq = 36
La base del humanoide no está fija al suelo: es una articulación libre con 7 números (x, y, z y un cuaternión de 4 para la orientación).
Sumando las 29 articulaciones articuladas, da 36. Es el tamaño de qpos.
2. nv = 35
La base libre tiene 6 velocidades (3 lineales y 3 angulares), una menos que las 7 posiciones, porque el cuaternión tiene 4 números para 3 rotaciones.
6 + 29 = 35. Es el tamaño de qvel y de qacc.
3. nu = 29
Un actuador por articulación articulada. La base no tiene motor: el robot solo se mueve empujando el suelo con los pies.
En la versión con manos (scene_with_hands.xml) el número sube a 43. El G1 que se vende tiene de 23 a 43 grados de libertad según la versión; el Menagerie trae la de 29.
Regla prácticaHumanoide con base libre: nq = nu + 7 y nv = nu + 6, cuando cada articulación tiene un motor.
03 · Montar el banco de trabajo (una vez)
Venv propio, MuJoCo fijado en 3.16.0 y el Menagerie fijado en el commit probado. El sparse-checkout descarga solo 4 humanoides (cerca de 150 MB) en lugar del repositorio completo.
Dos líneas y ningún error. Si la versión de MuJoCo es otra, los números de las próximas clases pueden cambiar en la última cifra: fija la versión.
ERRO: não achei unitree_g1/scene.xml (nem em /tmp/sem-menagerie/mujoco_menagerie). Rode a preparação da aula 2.
saída: 1
Los scripts buscan el Menagerie en ~/fth/mujoco_menagerie (o donde apunte la variable FTH). ¿Lo ejecutaste desde otra carpeta o lo clonaste en otro lugar? Ajusta la FTH o mueve la carpeta.
04 · Abrir el G1 y los otros humanoides
El abrir.py solo lee el modelo e imprime su tamaño. El fragmento del g1.xml muestra de dónde salen los números.
F=${FTH:-$HOME/fth}; cd $F/anatomia && . $F/.venv/bin/activate
for r in unitree_h1 robotis_op3 booster_t1; do
echo "$r: $(python3 kit/abrir.py $r/scene.xml | sed -n 2p)"
done
Fragmento de mujoco_menagerie/unitree_g1/g1.xml (commit 62ab00f)
modelo: g1_29dof_rev_1_0 scene · arquivo unitree_g1/scene.xml
nq=36 nv=35 nu=29
juntas: 30 (1 base flutuante + 29 articuladas) · corpos: 30 · sensores: 4
massa total do modelo: 33.3 kg · passo de simulação: 2 ms
poses salvas (keyframes): stand
altura da base na pose inicial: 0.79 m
saída: 0
33,3 kg en el modelo contra cerca de 35 kg en la ficha de Unitree: el archivo de simulación es una aproximación del robot real.
H1 con 19 motores, OP3 con 20 (robot pequeño de 3,1 kg), Booster T1 con 23. Todos siguen nq = nu + 7.
05 · Lo que se usa a escala (mostrado)
Para entrenar policies con miles de robots en paralelo, los mismos modelos corren en GPU NVIDIA. No es requisito de este curso: el curso 1 de la formación lo usa.
Mostrado · mjlab, GPU NVIDIA (no ejecutado aquí)
# github.com/mujocolab/mjlab — API de Isaac Lab sobre MuJoCo Warp
uv run train Mjlab-Velocity-Flat-Unitree-G1 --env.scene.num-envs 4096
06 · Práctica
Banco de trabajo listo y primer modelo abierto.
E1 · Montar el banco de trabajo
10 min
Ejecuta el bloque "preparar ~/fth". Si falta python3.12, instálalo con el gestor de tu sistema (el curso fue probado con Python 3.12.3).
Listo cuando: la salida muestra menagerie 62ab00f (2026-10-15) y mujoco 3.16.0.
E2 · Abrir el G1
3 min
Ejecuta el bloque "abrir el G1" y explica, con tus propias palabras, de dónde sale cada número de la segunda línea.
MjModel es constante durante la simulación; MjData guarda el estado. Confundir los dos es la causa de muchos bugs en scripts de robótica.
No es esa
MjModel es constante durante la simulación; MjData guarda el estado. Confundir los dos es la causa de muchos bugs en scripts de robótica.Repasar: Del archivo al paso de simulación
Pregunta 3 de 4
abrir.py dice 33,3 kg; Unitree dice cerca de 35 kg. ¿Qué haces?
Correcto
La masa, la inercia y la fricción del modelo son aproximadas. Medir y anotar la diferencia es el comienzo de la identificación de sistemas (curso 2 de la formación).
No es esa
La masa, la inercia y la fricción del modelo son aproximadas. Medir y anotar la diferencia es el comienzo de la identificación de sistemas (curso 2 de la formación).Repasar: Montar el banco de trabajo (una vez)
Pregunta 4 de 4
¿Por qué fijar MuJoCo en 3.16.0 y Menagerie en un commit?
Correcto
MuJoCo sale casi cada dos semanas y Menagerie recibe commits todo el tiempo. Fijar la versión es lo que hace reproducible el "listo cuando".
No es esa
MuJoCo sale casi cada dos semanas y Menagerie recibe commits todo el tiempo. Fijar la versión es lo que hace reproducible el "listo cuando".Repasar: Montar el banco de trabajo (una vez)
Prueba concluida
Acertaste {a} de {n}. Si aciertas todas, la clase se marca como concluida.
Elige una alternativa. La explicación aparece después de tu intento.
08 · En tres frases
ArchivoEl MJCF describe cuerpo, articulaciones, actuadores, sensores y poses.
NúmerosBase libre: nq = nu + 7 y nv = nu + 6.
Banco de trabajo~/fth con MuJoCo 3.16.0 y Menagerie 62ab00f, fijados.