1 | initial version |
Some suggestions:
1) add following blocks to your urdf for every joint:
<gazebo reference="[joint name]">
<implicitSpringDamper>1</implicitSpringDamper>
</gazebo>
Sometimes I think we should have these settings on by default.
Also, try to come up with as realistic as possible material properties kp, mu1, mu2. Set contact dissipation coefficient kd
to 1 to help stabilize contacts. Also, setting minDepth
margin to a small non-zero number prevents contact from jumping in and out of existence. For example:
<gazebo reference="[links in contact]">
<kp>1000000.0</kp>
<kd>1.0</kd>
<mu1>1.0</mu1>
<mu2>1.0</mu2>
<minDepth>0.001</minDepth>
</gazebo>
2) The cylinder has mass value of 0.1kg, but Ixx of 1.0 kg m^2, which is not very physically realistic. One should always start with a more physically realistic object model.
3) As a rule of thumb, if the inertia ratio across contact constraint formed by the object and the gripper finger is on the order of or greater than 1e3, consider increasing number of inner iterations from default of 50, do a quick ad-hoc search by doubling iterations and look for improvement in behavior. Alternatively, plot iterations vs rms_error and check trend.
4) consider increasing joint damping for the fingers, without modeling high gear ratio gearbox joints and the underlying motor and gear inertia, the stabilizing effects of such mechanisms is easiest replaced by larger joint damping in the time being. Physically, my go to damping coefficient for triaging a hard to converge system ranges anywhere between 0.1 to 30 (effort/joint_vel). Until such time validation or more accurate model data are available.
5) Are the joint effort limits realistic? 0.1N seems low for holding up a 0.1kg cylinder (under gravity, downward force is 9.81N).
6) Consider tuning the PID gains of your controller. We can go into details on this as needed.
2 | No.2 Revision |
Some suggestions:
1) add following blocks to your urdf for every joint:
<gazebo reference="[joint name]">
<implicitSpringDamper>1</implicitSpringDamper>
</gazebo>
Sometimes I think we should have these settings on by default.
Also, try to come up with as realistic as possible material properties kp, mu1, mu2. Set contact dissipation coefficient kd
to 1 to help stabilize contacts. Also, setting minDepth
margin to a small non-zero number prevents contact from jumping in and out of existence. For example:
<gazebo reference="[links in contact]">
<kp>1000000.0</kp>
<kd>1.0</kd>
<mu1>1.0</mu1>
<mu2>1.0</mu2>
<minDepth>0.001</minDepth>
</gazebo>
2) The cylinder has mass value of 0.1kg, but Ixx of 1.0 kg m^2, which is not very physically realistic. One should always start with a more physically realistic object model.
3) As a rule of thumb, if the inertia ratio across contact constraint formed by the object and the gripper finger is on the order of or greater than 1e3, consider increasing number of inner iterations from default of 50, do a quick ad-hoc search by doubling iterations and look for improvement in behavior. Alternatively, plot iterations vs rms_error and check trend.
4) consider Consider increasing joint damping for the fingers, without fingers. Without modeling high gear ratio gearbox joints and the underlying motor and gear inertia, the stabilizing effects of such mechanisms is easiest replaced by larger joint damping in the time being. Physically, my go to damping coefficient for triaging a hard to converge system ranges anywhere between 0.1 to 30 (effort/joint_vel). Until such time validation or more accurate model data are available.
5) Are the joint effort limits realistic? 0.1N seems low for holding up a 0.1kg cylinder (under gravity, downward force is 9.81N).
6) Consider tuning the PID gains of your controller. We can go into details on this as needed.