I'm trying to build a humanoid robot on my own. The URDF file for the robot was automatically generated by SolidWorks. I've read tutorials on the link text. But the elements for links, such as maxVel, minDepth, still confuse me.

<gazebo reference="left_foot_link">
<kp>10000.0</kp>
<kd>1000.0</kd>
<mu1>1.5</mu1>
<mu2>1.5</mu2>
<fdir>1 0 0</fdir>
<maxVel>1.0</maxVel>
<minDepth>0.0</minDepth>
</gazebo>

1. What do these elements really mean? I didn't see effects after I changed the values of the elements.
2. Is there any reliable way of tuning these elements rather than random guess?

edit retag close merge delete

Sort by » oldest newest most voted

I've read tutorials on the link text. But the elements for links, such as maxVel, minDepth, still confuse me.

Check out the sdformat reference too - Gazebo parses your URDF file and generates a SDF file when your spawn a model using a URDF: http://www.sdformat.org/spec?ver=1.6&...

What do these elements really mean? I didn't see effects after I changed the values of the elements.

When two object collide, the physics engine - I'm assuming ODE - has to 1) detect the collision and 2) do something about it. If two objects penetrate one another, the physics engine applies a corrective force (roughly similar to how the floor applies an upwards force to the bottom of your feet - in accordance with Newton's 3rd law - that keeps you from suddenly falling through the floor.

maxVel caps the resulting velocity from such a corrective impulse - e.g. if you want your object to bounce, you would set a relatively high maxVel. Alternatively, if you want to reduce "bounciness" in your model, you might set maxVel to a relatively low value, say 0.5 [m/s]

minDepth is how far the link can penetrate into another model/link before that corrective force is applied by the physics engine. This is useful if you want to ensure continuous contact between surfaces. If you set a small minDepth of say 0.002 [m], then small corrective forces will not push your foot link out of contact with the ground, allowing it to stay in contact and friction to work, etc.

Is there any reliable way of tuning these elements rather than random guess?

I don't have an easy answer here. I usually start out with a minDepth of 0.002 [m] and a maxVel of 10-100 [m/s]. I'll increase minDepth and maxVel to reduce "bounciness" between foot & ground, I'll decrease minDepth to reduce unwanted "stickiness" between foot & ground, I'll increase maxVel if I want something to bounce.

Basically, I tweak the values based off behavior in Gazebo.

Note 1: Like the OP, I'm very open to recommendations when it comes to intelligently managing/setting these physics parameters

Note 2: For more of the theory behind how the ODE physics engine works, check out the old user manual: http://ode.org/ode-latest-userguide.html

more