How to model material and joint sag


If I have a long robot arm carrying a heavy load, the arm material itself will sag under the weight, and the joints themselves will sag also. What’s the best way to model this so that the forward and inverse kinematics work correctly? Or is this normally handled in a different way?



this happens naturally if you set up your joint Damping and Stiffness correctly - If you have a lower stiffness, the joint will be more prone to “error” due to heavy loads. You’d need to model this sagging so you can make a Kinematics solver that compensate for that, as that does not come by default in the driver.

With a revolute joint as pictured below, if the white cube was resting on a base a meter off the ground, and the cubes were made from a non-stiff material, you could imagine that the cubes would deform due to gravity in a way that the blue cube would be closer to the ground than the white cube.

If I understand PhysX right, this behaviour can’t be captured by the damping and stiffness parameters, because those affect motion in the plane parallel to the ground.

Does the kinematics solver handle complex joints like D6 that could model this kind of outside-main-axis behavior? Or would I need to model it by having two orthogonal revolute joints?

Yes - there are d6 physics joints and you can control how much sagging happens per axis - including linear axis.

Please refer to this video tutorial to check how to set up individual axis settings for a D6 joint.

Thanks for the reply. Can you confirm that the Lula kinematics solver will properly solve the forward & reverse kinematics for a d6 (“floating” in URDF, apparently) joint?

D6 joints are not supported by Lula. Only revolute and prismatic.

The recommendation for that case would be adding an extra joint between your links to account for that sagging. But keep using your nominal urdf for Lula control. Then in Isaac you’d use a reduced articulation set to make your controller only account for the driven joints and links.

This topic was automatically closed 14 days after the last reply. New replies are no longer allowed.