Robotics StackExchange | Archived questions

How do I use ODE's ERP feature correctly to model an elastic joint?

I am modelling elastic links via revolute joints that act as torsion springs.

It works well for few joints (< 4 spring-joints in series) and small loads, but once I add more joints or apply larger forces, my robot sort of "explodes". Most commonly, all the links will snap to the world origin as soon as I start the physics simulation. Sometimes the simulation crashed while attempting to set [Inf Inf Inf . . .] as a pose. I suspect some numerical instability going on.

For that reason I began looking into ODE's ERP feature, as well as <implicit_spring_damper> within SDF, since this tutorial mentions it as a more numerically stable method of modelling springs and dampers. Looking into ODE, I found this entry on how to go about that.

Setting the aforementioned tag, as well as specifying <erp> and <cfm> in the joints does indeed produce more stable results. The joints however behave very differently now, seemingly having 6 DoF, allowing rotations about axes that should be constrained.

This opens up quite a few questions:

Asked by FabianMene on 2019-01-19 23:08:54 UTC

Comments

Have you made any progress on this?

The joints however behave very differently now, seemingly having 6 DoF, allowing rotations about axes that should be constrained.

https://ode.org/wiki/index.php?title=Manual#Constraint_Force_Mixing_.28CFM.29

A nonzero (positive) value of CFM allows the original constraint equation to be violated by an amount proportional to CFM times the restoring force λ that is needed to enforce the constraint.

Asked by danzimmerman on 2021-02-04 10:44:55 UTC

How can I model a 1 DOF revolute joint with spring and damper via this method?

Yes, I really want to know this too.

Asked by danzimmerman on 2021-02-04 10:45:09 UTC

Answers