ODE Tutorial 10: CFM (Constraint Force Mixing)

This page was mainly translated from http://demura.net/archives/9ode by Babel Fish Translation.

ODE (Open Dynamics Engine) tutorial  is 10th.

Well, you explain the parameter which this time is peculiar to ODE. With ODE CFM (Contratint Force Mixing) with there is a parameter which is said other than ERP.

There are two types of constraint, these area hard constraintand a soft constraint.With hard restraint constraint must be protected sincerely, be sure. On the one hand, software restraint slips adaptability being effective, more or less being to be OK. It meaning that a hard constraint is many generally, it does, but it becomes a soft constraint with ODE by introducing CFM. When CFM 0 being, as a hard constraint, it becomes large, it becomes a soft constraint.

In addition, with ODE it meaning that when constraints and the joint are used in the same meaning is many, when you list the joint to example, with a hard constraint you do not have to tear the constraint of the joint altogether. In other words, the position of the axis of rotation of the joint and two links where direction is connected a little do not have to slip. On the one hand, with a soft constraint some joint center and it meaning that direction of the axis may slip, physical like the living thing, the soft joint it is simulating possible.

Furthermore, also simulating the spring damper system is possible by using previous ERP and latest CFM. Because contact of the land and the foot when it makes the spring damper model is many with simulation of humanoid, also such simulation sufficiently is possible with ODE. As for details please seethe ODE manual.

Next, it explains the concrete using of CFM.

When CFM is set, API below is used. Furthermore, this works to global and operates all joints. The default value of CFM in case of single precision in case of 10E-5 and double precision becomes 10E-10.

  • void  dWorldSetCFM (dWorldID , dReal cfm)
    Here, as for dWorldID ID number of world, as for cfm the value of CFM.

So, please insert dWorldSetCFM in the line under dWorldSetERPof sample4amodify the value of CFM try playing various types as a practice, and. When the value of CFM is enlarged, the joint becomes soft. When it makes small, 0 being smallest, in this case it becomes hard restraint. CFM as for negative value it meaning that the system becomes unstable please stop.

Furthermore, because there is the function which makes simulation stabilize in CFM, behavior of the object in case of strange we recommend that value is enlarged little by little, but with usual use 10E-3 (10^-3) is good even with when it is large, probably will be. It is too large, when like the thick malt syrup it becomes too soft.

To be continued.