FTH 0 · The humanoid's body|INEMA.CLUB-PRO

Lesson 6 · 15 min

Balance: center of mass and support polygon

A standing humanoid is an inverted pendulum on two small feet. In this lesson you calculate the G1's center of mass, support polygon, and center of pressure from the model itself, push the robot with different forces, and separate three things that usually get mixed up: leaving the support, swaying, and falling.

Start the lesson
Standing humanoid robot in a dark lab being pushed by a padded pole, with a safety cable attached to the gantry.

In this lesson you will

  1. 1Center of mass, support polygon, and center of pressure (ZMP on flat ground)
  2. 2CoM margin in centimeters, every 0.25 s
  3. 3Why 25 N leaves the support and comes back, and 35 N knocks it down
  4. 4Where classical control (ZMP) and RL come in

Goal: push the G1 and say, from the simulation, when the center of mass leaves the support polygon and whether the robot falls.

01Four quantities, one question: does it fall?

Click each block.

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

Standing still, it is enough for the CoM to be inside the support. In motion, the CoP and the speed are what matter.

02What the push sweep shows

A 0.2 s forward push on the torso, with the G1 just holding the pose. Click each band.

1. Up to 15 N

The CoM never leaves the polygon: the margin never goes negative at any moment.

That is what any rigid pose can handle: the impulse is small (3 N·s).

03Pushing the G1

The equilibrio.py applies the force on the torso at t = 0.5 s and prints, every 0.25 s, the CoM margin (positive = inside the support), the CoP forward, and the pelvis height.

Terminal · 40 N push
F=${FTH:-$HOME/fth}; cd $F/anatomia && . $F/.venv/bin/activate
python3 kit/equilibrio.py --empurrao 40
Terminal · from 10 N to 40 N
F=${FTH:-$HOME/fth}; cd $F/anatomia && . $F/.venv/bin/activate
for n in 10 15 20 25 30 35 40; do
  echo "$n N → $(python3 kit/equilibrio.py --empurrao $n | tail -2 | cut -d'(' -f1 | tr '\n' ' ')"
done
Example from the repository
empurrão de 40 N por 0.2 s no tronco (t = 0.5 s) · impulso 8 N·s
t (s)  margem do CoM (cm)  CoP x (cm)  pelve z (m)
 0.00                 5.3         0.1         0.79
 0.25                 5.3         0.4         0.79
 0.50                 5.3         0.3         0.79
 0.75                -8.1        12.0         0.79
 1.00                -5.8        12.1         0.79
 1.25                -8.1        12.2         0.79
 1.50                -3.4        -4.8         0.79
 1.75                -1.2        -4.8         0.79
 2.00                -6.7        -4.8         0.79
 2.25               -17.4        -4.7         0.76
 2.50               -39.6        -4.5         0.64
 2.75               -68.4        -8.4         0.15
 3.00               -68.9       -11.4         0.06
CoM dentro do apoio: não · saiu em t = 0.73 s
queda: sim (pelve a 0.06 m em t = 3 s)

The CoP goes to 12 cm (toes), then to -4.8 cm (heel); the pelvis only drops after 2.25 s, when the robot falls backward.

04Practice

Find the limit of the body without a controller.

E1 · A push that knocks it over

3 min

Run the 40 N block and describe the motion by reading the CoP and pelvis columns.

Done when: python3 kit/equilibrio.py --empurrao 40 ends with CoM dentro do apoio: não · saiu em t = 0.73 s and queda: sim.

E2 · A push it can handle

3 min

Repeat with 15 N.

Done when: python3 kit/equilibrio.py --empurrao 15 | tail -2 → CoM dentro do apoio: sim (o tempo todo) and queda: não.

E3 · Impulse, not force

5 min

Run 40 N for 0.1 s and 80 N for 0.1 s. Compare with 40 N for 0.2 s: what matters, the force or the product of force × time?

Done when: --empurrao 40 --duracao 0.1 ends with queda: não and --empurrao 80 --duracao 0.1 with queda: sim; you wrote down the three impulses (4, 8 and 8 N·s).

05Lesson quiz

The explanation appears after you answer.

Question 1 of 3

With 25 N the CoM left the support polygon, but the robot ended up standing. How do you explain that?skill

06In three sentences

QuantitiesCoM, support polygon and CoP come out of the model at every step.
DynamicsLeaving the support is rotating; falling is rotating too fast to come back.
LimitWithout a controller, the G1 takes 15 N for 0.2 s and falls with 35 N.

To go further

Previous lessonNext lesson