DataVariationLimiter

General description

The “DataVariationLimiter” component is used to avoid big variation of an input data. It interpolates between two consecutive inputs when a jump is detected.

DataStabilizer_0DataStabilizer_1DataStabilizer_2DataStabilizer_3DataStabilizer_4DataStabilizer_5

How to use the component

To learn how to create a SOFA scene, please refer to the tutorial provided by the SOFA Modeler or this documentation.

Here is an example where the DataVariationLimiter is used to avoid big jump in a goal effector:

goal = rootNode.createChild('goal')
goal.createObject('EulerImplicit')
goal.createObject('CGLinearSolver', iterations='100', tolerance="1e-5", threshold="1e-5")
goal.createObject('MechanicalObject', name='goalMO',
                  position='0 0 5',
                  showObject="1",
                  showObjectScale="1",
                  drawMode="1")
goal.createObject('DataVariationLimiter', name="stabilizer", listening="1", input="@goalMO.position") 
goal.createObject('MechanicalObject', name='goalMOStabilized', 
                  position='@stabilizer.output',
                  showObject="1",
                  showObjectScale="1",
                  drawMode="1")
goal.createObject('UncoupledConstraintCorrection')

This component is useful when using, for example, an external device to control an effector.

Data field

Input data

input : Input data (usually link to a mechanical position)

initOuput : If true, will initialize the output with the input (allows to interpolate an initial jump). Default true.

nbStep : Interpolation number of step. Default 50.

maxJump : Unautorized jump. Default 10%, maxJump = 0.1.

Output data

 output : Output interpolation.

Comments are closed.