FTH 3 · Whole body|INEMA.CLUB-PRO

Lesson 6 · 15 min

Hands: the problem that is still unsolved

The whole body walks, balances and imitates; when it is time to grasp, everything depends on a hand with few degrees of freedom and almost no touch. In this lesson you count the joints of the G1's hand in the model, compare it with two research hands, and measure a simulated grip, knowing what that number is and what it is not.

Start the lesson
Dark gray three-finger robot hand squeezing a small cylinder on the workbench, with thin cables and side lighting.

In this lesson you will

  1. 1The G1's Dex3-1: 7 DoF per hand (thumb 3, index 2, middle 2)
  2. 2Torque declared in the MJCF and what it limits
  3. 3A simulated grip: contact force per finger
  4. 4Research hands (LEAP, Shadow) and the ones on the market, with sources

Goal: count the degrees of freedom of the G1's hand, compare it with other hands, and measure a simulated grip in the model.

01From the joint to the object

Click each block.

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

Few degrees of freedom and little touch: this is where fine tasks still fail.

02The hands you'll run into

Click each group.

1. On humanoids

Unitree Dex3-1: 7 DoF, optional tactile, included in the G1 EDU package (fact, unitree.com/g1).

In the model: both of the Menagerie G1's hands, with limits and torque declared.

03Count the joints and squeeze a cylinder

mao.py counts the joints of each hand in the MJCF, reads the declared torque and closes the right hand around a fixed 4 cm cylinder, with the pelvis on the gantry. It reads each finger's normal contact force after 2 s.

Terminal · the G1 hand
F=${FTH:-$HOME/fth}; cd $F/corpo-inteiro && . $F/.venv/bin/activate
python3 kit/mao.py; echo "saída: $?"
Excerpt · kit/mao.py
FECHAR = {"right_hand_index_0_joint": 1.57, "right_hand_index_1_joint": 1.75,
          "right_hand_middle_0_joint": 1.57, "right_hand_middle_1_joint": 1.75,
          "right_hand_thumb_0_joint": 0.0, "right_hand_thumb_1_joint": -1.05, "right_hand_thumb_2_joint": -1.75}
Example from the repository
modelo: unitree_g1/scene_with_hands.xml · nu=43
mão left: 7 GDL (polegar 3, indicador 2, médio 2)
mão right: 7 GDL (polegar 3, indicador 2, médio 2)
torque declarado por junta da mão: 1.40 a 2.45 N·m (actuatorfrcrange)
aperto simulado num cilindro fixo de 4 cm (mão direita, 2 s):
  polegar  :  18.6 N
  indicador:  53.0 N
  médio    :  81.4 N
dedos tocando o objeto: 3/3 · estimativa do modelo, não medida no robô
saída: 0

7 degrees of freedom per hand, as in the Dex3-1 spec sheet. The forces come from the model: the cylinder is fixed, the PD pushes up to the torque limit, and the middle finger grips close to the joint. This is not the robot's grip force, which Unitree doesn't publish on the page I read.

04Two research hands to compare

Adds the LEAP Hand and Shadow Hand folders to your Menagerie (sparse-checkout add, without downloading the rest) and counts the joints.

Terminal · LEAP and Shadow
F=${FTH:-$HOME/fth}; cd $F/mujoco_menagerie && git sparse-checkout add leap_hand shadow_hand
cd $F/corpo-inteiro && . $F/.venv/bin/activate
for h in leap_hand/right_hand.xml shadow_hand/right_hand.xml; do python3 kit/mao.py --modelo $h | tail -1 | sed "s#^#$h: #"; done
Example from the repository
leap_hand/right_hand.xml: mão avulsa: 16 GDL · 16 atuadores
shadow_hand/right_hand.xml: mão avulsa: 24 GDL · 20 atuadores

On the Shadow, 24 joints for 20 actuators: four joints follow others through coupling. More DoF is not the same as more motors.

05Practice

Count, compare, squeeze.

E1 · The G1 hand

5 min

Run mao.py and check the 7 DoF on both hands.

Done when: python3 kit/mao.py | tail -1 → dedos tocando o objeto: 3/3 · estimativa do modelo, não medida no robô.

E2 · Count only

3 min

Run only the count, without the grip simulation.

Done when: python3 kit/mao.py --so-contar | grep -c "7 GDL" → 2.

E3 · Another hand

10 min

Add wonik_allegro to the sparse-checkout and count the joints of its right hand.

Done when: python3 kit/mao.py --modelo wonik_allegro/right_hand.xml | tail -1 → one line mão avulsa: [N] GDL · [N] atuadores.

06Lesson quiz

The explanation appears after your answer.

Question 1 of 3

The kit measured 81 N on the middle finger. How can this number go into a spec sheet?skill

07In three sentences

7 degrees of freedomThe G1's Dex3-1 has 7 joints per hand, and so does the model.
ForceThe simulator's grip force is a model estimate, and it is reported as such.
BottleneckFew degrees of freedom and little touch: this is where fine tasks still fail.

Going further

Previous lessonNext lesson