I'm working on a biped robot simulation in pydrake. My robot now could stand well or even jump by using inverse dynamics and optimizing contact forces when the step time is 0.0001s. However, the feet penetrate the ground when I set the step time 0.001s. Because time step 0.001s usually used in the real time discrete system .
Is it possible to prevent the interpenetration (between feet and ground when standing) in pydrake? I think the contact I'm using is the penalty method in pydrake, and the parameters related to that are shown below.
-
- The parameters (when step time is 0.0001s):
plant.set_penetration_allowance(0.0001)
plant.set_stiction_tolerance(0.001)
- Ground set like:
ground_friction = CoulombFriction(static_friction=1,static_friction=1)
plant.RegisterVisualGeometry(plant.world_body(), RigidTransform(),HalfSpace(), "GroundVisualGeometry", diffuse_color=[1., 0.64, 0.0, 0.5])
plant.RegisterCollisionGeometry(plant.world_body(), RigidTransform(), HalfSpace(), "GroundCollisionGeometry", ground_friction)
No penetration here.
Standing when steptime is 0.0001
-
- The parameters (when step time is 0.001s):
plant.set_penetration_allowance(0.001) # if this param smaller than the step time 0.001, an error will be there
plant.set_stiction_tolerance(0.001)
- Ground parameters are same.
Is it possible to fix the penetration of feet?