You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
I’m working with a humanoid in Isaac Lab on a box-lifting manipulation task using the hands.
Initially, I trained all joints (including the lower body and legs), but simulation was expensive -- mainly due to the closed kinematic chain in the legs.
To simplify and speed up training, I removed the lower body and kept only the torso and arms. This reduced the joint space and made the box-lifting task much faster to train.
Since the upper body now lacks physical support, I fixed the root using:
articulation_props.fix_root_link=True
This keeps the torso floating but stationary.
However, I also want the floating base to move. To achieve that, I replaced the fixed root link setup with:
write_root_state_to_sim()
called at every physics step to control the base pose and velocity.
As a sanity check, I trained a policy with fix_root_link=True, then evaluated it under the configuration where I constantly write the same fixed root pose and velocity each step (so the base doesn’t move).
Even though these setups should be dynamically similar, the policy performs much worse when using write_root_state_to_sim().
Moreover, when I train directly with the continuous write_root_state_to_sim() setup (without fixing the root), the policy fails to learn effectively for the box-lifting task.
This suggests there might be a difference in dynamics or contact handling between the two configurations.
Question:
What is the correct way to simulate and train a floating-base humanoid (upper body only)?
Is there a recommended approach to keep the base controllable without introducing artifacts or instability from continuously writing the root state?
reacted with thumbs up emoji reacted with thumbs down emoji reacted with laugh emoji reacted with hooray emoji reacted with confused emoji reacted with heart emoji reacted with rocket emoji reacted with eyes emoji
Uh oh!
There was an error while loading. Please reload this page.
-
I’m working with a humanoid in Isaac Lab on a box-lifting manipulation task using the hands.
Initially, I trained all joints (including the lower body and legs), but simulation was expensive -- mainly due to the closed kinematic chain in the legs.
To simplify and speed up training, I removed the lower body and kept only the torso and arms. This reduced the joint space and made the box-lifting task much faster to train.
Since the upper body now lacks physical support, I fixed the root using:
This keeps the torso floating but stationary.
However, I also want the floating base to move. To achieve that, I replaced the fixed root link setup with:
write_root_state_to_sim()called at every physics step to control the base pose and velocity.
As a sanity check, I trained a policy with
fix_root_link=True, then evaluated it under the configuration where I constantly write the same fixed root pose and velocity each step (so the base doesn’t move).Even though these setups should be dynamically similar, the policy performs much worse when using
write_root_state_to_sim().Moreover, when I train directly with the continuous
write_root_state_to_sim()setup (without fixing the root), the policy fails to learn effectively for the box-lifting task.This suggests there might be a difference in dynamics or contact handling between the two configurations.
Question:
What is the correct way to simulate and train a floating-base humanoid (upper body only)?
Is there a recommended approach to keep the base controllable without introducing artifacts or instability from continuously writing the root state?
Beta Was this translation helpful? Give feedback.
All reactions