FTH 2 · From simulator to ground|INEMA.CLUB-PRO

Lesson 8 · 13 min

The deployment ladder: sim → sim2sim → suspended → floor

Everything in this course becomes a plan: four steps, each with what runs, the criterion to move up, and the reason to stop and go back. In this lesson you write your own ladder in a YAML file, check it with a script, and simulate the queue of steps with a failure in the middle. The safety procedure with the robot powered on is in course 4.

Start the lesson
Test area of a lab with a humanoid robot hanging from a gantry, a floor marked with yellow tape, and a red stop button in the foreground.

In this lesson you will

  1. 1The four steps and what each lesson in this course delivers to them
  2. 2Pass criterion in the command → expected output format
  3. 3The queue of steps: if one fails, go back a step
  4. 4Your plan with dates

Goal: write the ladder sim → sim2sim → suspended → floor with a pass criterion and a stop criterion at each step, and check it with a script.

01The four steps

Click each step. You only move up when the criterion is true.

Click each block in the diagram to see what it does.

If a step fails, go back to the previous one with what you learned: a new identified parameter, a new randomization range, a new criterion.

02The queue of steps

Run it, watch a step fail, and run it again. That's the ladder cycle.

to climb

on the step

passed

went back

Illustrative simulation in the browser. The failure on the "Suspended" step is on purpose, to show the return.

03Your ladder in YAML

Copy the template to ~/fth/escada.yaml and swap in your robot and your criteria. conferir_escada.py requires the 4 steps in order, with onde, criterio (command → output), and when to stop.

File · kit/escada-modelo.yaml
# escada.yaml — the deployment ladder for your policy (FTH 2, lesson 8)
# Each step: what runs, the criterion to move up (command → expected output) and when to stop and go back.
politica: unitree_rl_lab G1 29 GDL velocity v0 (ONNX)
robo: Unitree G1 EDU (29 GDL)
degraus:
  - nome: sim
    onde: MuJoCo 3.16 + G1 do Menagerie, com as faixas de randomização do treino
    criterio: "python3 kit/randomizar.py --seeds 20 --faixa treino → sobreviveu: 20/20"
    parar_se: qualquer queda dentro da faixa do treino
  - nome: sim2sim
    onde: outro MJCF (unitree_mujoco) e o caminho de mensagens do robô (DDS, rt/lowcmd e rt/lowstate)
    criterio: "python3 kit/portao_sim2sim.py --passo 0.001 --dds → PORTÃO: passou (3 de 3 etapas)"
    parar_se: queda, velocidade fora de ±0,15 m/s, pernas no limite de torque ou política abaixo de 45 Hz
  - nome: suspenso
    onde: robô no pórtico, pés fora do chão, elástico ou cabo de segurança
    criterio: "ensaio de bancada + sysid → kp identificado e atraso medido; a política mexe as pernas sem bater no limite"
    parar_se: junta batendo no limite, vibração, temperatura subindo, atraso maior que o simulado
  - nome: chão
    onde: piso plano, área isolada, cabo frouxo no pórtico, pessoa no botão de parada
    criterio: "teste no chão → 10 s parado + 10 s a 0,3 m/s sem queda, três vezes seguidas"
    parar_se: tropeço, queda, qualquer pessoa dentro da área
Terminal · check the ladder
F=${FTH:-$HOME/fth}; cd $F/sim2real && . $F/.venv/bin/activate
[ -f $F/escada.yaml ] || cp kit/escada-modelo.yaml $F/escada.yaml
python3 kit/conferir_escada.py $F/escada.yaml; echo "saída: $?"
Terminal · ladder with no stop criterion (common mistake)
F=${FTH:-$HOME/fth}; cd $F/sim2real && . $F/.venv/bin/activate
grep -v "parar_se: tropeço" kit/escada-modelo.yaml > $F/escada-incompleta.yaml
python3 kit/conferir_escada.py $F/escada-incompleta.yaml; echo "saída: $?"
Example from the repository
4 degraus, 4 critérios · escada ok
saída: 0

Four steps, four criteria, exit 0.

04Practice

The plan all the way to the floor, verifiable.

E1 · Ladder checked

15 min

Copy the template, swap in your robot, policy and criteria (use the outputs you captured yourself in lessons 2, 3 and 6), and check it.

Done when: python3 kit/conferir_escada.py ~/fth/escada.yaml; echo "saída: $?" → 4 degraus, 4 critérios · escada ok and saída: 0.

E2 · The reason to turn back

5 min

For each step, write in the YAML a stop reason that you would know how to measure (with the command or the instrument).

Done when: the 4 parar_se fields cite something measurable (fall, ms, %, N·m, temperature).

E3 · Plan with dates

5 min

Generate your own study plan with the generator below and mark it on your calendar.

Done when: the downloaded plano.md lists the 8 lessons with the practice and the "done when" of each one.

05What you built in this course

Four main deliverables. Click a step to see its "done when".

Lessons 1–2Gap

measured

3 exercises

Fall in 2.3 s; 20/20 × 8/20.

See the lesson
Lessons 3–4Actuator

kp, latency

3 exercises

kp within ±10 %; latency of 22 ms.

See the lesson
Lessons 5–6Gate

delta, DDS

3 exercises

Sim × real error on falls; gate 3 of 3.

See the lesson
Lessons 7–8Ladder

all the way to the floor

3 exercises

escada.yaml with 4 criteria.

See the lesson
At the end of the courseGap measured, actuator identified, gate passed and ladder written.
8 lessons
Tap an exercise to see what to do and the "done when".
  1. 1/5

    Gap

    The gap of a ready-made policy, measured, and the coverage of the training randomization compared with the outside world.

  2. 2/5

    Actuator

    The "real robot" actuator identified on the gantry and the latency measured per step, with the compensation that makes the "real" one walk.

  3. 3/5

    Gate

    The simulator corrected with data and the policy passing through another model and through the manufacturer's DDS.

  4. 4/5

    Ladder

    The twin and the proof on the physics, and the ladder with a criterion to go up and to stop at each step.

  5. 5/5

    The whole course

    Four deliverables in sequence. The ladder is what course 4 (operating) applies to the real robot.

Order matters: the criterion for each step uses the output of an earlier lesson.

06Generate your plan with dates

Pick a start date and how much time you have per week. The plan lists the practices for each lesson.

07Lesson quiz

The explanation appears after your answer.

Question 1 of 3

On which step do you do the bench test, the sysid, and the latency measurement on the real robot?skill

08In three sentences

StepsSim, sim2sim, suspended, and ground, in that order.
CriterionEach step has a command → output to climb and a measurable reason to stop.
BackIf it fails, go back one step with what you measured; course 4 applies the ladder to the robot.

Going further