E1 · Tres frenos
5 minCorre el escalón en la rodilla con kd 0, 2 y 10 y anota el sobreimpulso de cada uno.
Listo cuando: la salida muestra sobressinal: 49 % (kd 0) y sobressinal: 1 % (kd 2).
Clase 2 · 16 min
Entre la política y el motor hay un controlador PD por articulación, con kp y kd elegidos en el entrenamiento. En esta clase mides la respuesta de una rodilla a un escalón con tres valores de kd, dejas al G1 de pie solo con el PD y descubres por qué los ganancias de la política, por sí solos, no sostienen al robot.
Comenzar la clase
Objetivo: medir el efecto de kp y kd en una articulación y dejar al G1 de pie solo con el PD, entendiendo por qué los ganancias de la política no bastan sin ella.
Haz clic en cada bloque. Es el lazo que corre dentro de cada una de las 29 articulaciones.
No hay término I: el PID completo con integral y ajuste clásico es tema del curso robot. En los robots de RL, quien corrige el error que sobra es la política.
El degrau_junta.py saca la articulación libre de la pelvis (el G1 queda colgado en el aire) y manda la rodilla izquierda de 0,3 a 0,8 rad con kp 100 y kd 0, 2 y 10.
F=${FTH:-$HOME/fth}; cd $F/locomocao && . $F/.venv/bin/activate
for kd in 0 2 10; do python3 kit/degrau_junta.py --kp 100 --kd $kd | tail -2; donesobressinal: 49 % · posição após 1 s: 0.78 rad (erro 0.02 rad) assentou (erro < 0.02 rad): em 992 ms sobressinal: 1 % · posição após 1 s: 0.77 rad (erro 0.03 rad) assentou (erro < 0.02 rad): não, em 1 s sobressinal: 0 % · posição após 1 s: 0.77 rad (erro 0.03 rad) assentou (erro < 0.02 rad): não, em 1 s
Dos líneas por kd (0, 2 y 10). Sin kd, la rodilla pasa 49 % del escalón y tarda casi 1 s en asentarse. Con kd 2, pasa solo 1 %. Con kd 2 o 10, la articulación se detiene a 0,03 rad del objetivo: sin término integral, el PD necesita un error para generar el torque que sostiene el peso de la pierna.
El ficar_em_pe.py pone al robot en el suelo en la pose por defecto y sostiene cada articulación durante 5 s, sin política. De pie = pelvis entre 0,70 y 0,85 m e inclinación menor de 20°.
F=${FTH:-$HOME/fth}; cd $F/locomocao && . $F/.venv/bin/activate
python3 kit/ficar_em_pe.py --kp 300 --kd 5; echo "saída: $?"F=${FTH:-$HOME/fth}; cd $F/locomocao && . $F/.venv/bin/activate
python3 kit/ficar_em_pe.py --ganhos rl_lab; echo "saída: $?"ganhos: kp = 300 · kd = 5 em todas as juntas altura da pelve: 0.79 m no início → 0.78 m após 5 s · inclinação: 1° maior torque pedido: 12 N·m · juntas que bateram no limite de torque: 0 de pé (pelve entre 0.70 e 0.85 m, inclinação < 20°): sim saída: 0
Con kp 300 en todas las articulaciones, el G1 se vuelve una estatua: se queda de pie, inclinado 1°, pidiendo como máximo 12 N·m.
ganhos: kp/kd por junta do unitree_rl_lab altura da pelve: 0.79 m no início → 0.09 m após 5 s · inclinação: 95° maior torque pedido: 41 N·m · juntas que bateram no limite de torque: 2 de pé (pelve entre 0.70 e 0.85 m, inclinação < 20°): não saída: 1
Con las ganancias por articulación del deploy.yaml (cadera 100/2, rodilla 150/4, tobillo 40/2, cintura 200/5, brazos 40/10), el robot se desploma y dos articulaciones llegan al límite de torque. Medido aquí con el mismo kp en todas las articulaciones, el G1 quieto solo se mantiene de pie con un kp desde unos 200.
No es un defecto: la política fue entrenada con esas ganancias y es ella la que cierra el equilibrio. Cambiar las ganancias invalida la política.
ERRO: passe --kp e --kd (ex.: --kp 100 --kd 2) ou --ganhos rl_lab. saída: 1
El script exige las dos ganancias o el conjunto listo. PD es un par: kp sin kd es un resorte sin freno.
Qué cambia cuando lees un deploy.yaml de verdad.
En el deploy.yaml de unitree_rl_lab, stiffness (kp) y damping (kd) vienen en una lista con un valor por articulación, en el orden del SDK de Unitree.
En el robot, el deploy manda q, dq, kp, kd y tau por motor en cada ciclo; el driver hace el PD.
La pose por defecto y las acciones vienen en el orden de Isaac Lab, y joint_ids_map las convierte. Mezclar los órdenes tumba al robot en 1 s: el curso 2, clase 6, muestra el error.
Las ganancias entran en el entrenamiento: la policy aprende a caminar con ese PD. En el robot, usar otros kp/kd es correr una policy distinta de la entrenada.
Sentir el PD antes de ponerle una red encima.
Corre el escalón en la rodilla con kd 0, 2 y 10 y anota el sobreimpulso de cada uno.
Listo cuando: la salida muestra sobressinal: 49 % (kd 0) y sobressinal: 1 % (kd 2).
Deja el G1 de pie 5 s solo con el PD rígido.
Listo cuando: python3 kit/ficar_em_pe.py --kp 300 --kd 5; echo "saída: $?" → de pé (pelve entre 0.70 e 0.85 m, inclinação < 20°): sim y saída: 0.
Baja el kp (manteniendo kd 5) hasta que el robot se caiga. Anota el menor kp que todavía lo sostiene y compáralo con los 40 del tobillo de la policy.
Listo cuando: tienes un kp con de pé (…): sim y uno menor con de pé (…): não y saída: 1 (el 19/10/2026: 200 sostiene, 175 cae).
La explicación aparece después de tu respuesta.
Pregunta 1 de 3
Con kd 2, la rodilla se detiene a 0,03 rad del objetivo y no llega. ¿Por qué?competencia
Pregunta 2 de 3
Con las ganancias del deploy.yaml y sin policy, el G1 se cae. ¿Qué dice eso?
Pregunta 3 de 3
¿Dónde corren el PD el kit y el robot?
Elige una alternativa. La explicación aparece después de tu intento.