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

asked 2019-01-19 22:08:54 -0500

FabianMene gravatar image

updated 2019-01-19 22:10:43 -0500

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:

  • What exactly does <implicit_spring_damper> achieve?
  • What significance do the values inside my <axis> tag have when using <implicit_spring_damper> (including<damping> and <spring_stiffness>, which are also being implicitly specified va <erp> and <cfm>) ?
  • How can I model a 1 DOF revolute joint with spring and damper via this method?
  • What do <erp> and <cfm> within a joint do without <implicit_spring_damper>?
  • What is the purpose of the global ERP and CFM values (set in Gazebo's GUI)?
edit retag flag offensive close merge delete

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=...

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.

danzimmerman gravatar imagedanzimmerman ( 2021-02-04 09:44:55 -0500 )edit

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

Yes, I really want to know this too.

danzimmerman gravatar imagedanzimmerman ( 2021-02-04 09:45:09 -0500 )edit