LCPQP Inverse Problem Solver

General description

The “LCPQPInverseProblemSolver” is used to build and solve an inverse problem set by the combinaison of effector and actuator constraints. It inherits the quadratic program formulation from the QPInverseProblemSolver, converts it to a linear complementary problem and solves it.

Methods description

Requirement: Real time inverse simulation method

Definition: Linear complementarity problem (LCP) is a type of optimization problem. It corresponds to:

(LCP)      minimize  Mz+q = w

    subject to  w,x ≥ 0

                                                                             and  wixi=0   for all i (the complementarity condition)

where w is a slack variable.

Method

Consider the quadratic programming (QP) problem of the form:

(QP)    minimize   1/2 xTQx + cTx

      subject to    Ax ≥ b

                            x ≥ 0

where A is a matrix of order m×n and Q is a symmetric square matrix of order n.

If (QP) is a convex problem, i.e if Q is a positive-semidefinite (PSD) matrix, then it can be posed as an LCP associated with a PSD matrix. Indeed, if x is an optimum feasible solution of (QP), there exist a vector μ and slack vectors u and v such as x, μ, u and v together satisfy:

(Q   -AT)  *  (x)  +  (c ) = (u)

(A      0)     (μ)      (-b)   (v)

 u, v, x, y ≥ 0 and (u  v).(x  μ)T = 0

See Linear complementarity problem, its geometry and applications for more information.

To solve the LCP, we use a solver provided by the Siconos library. Unfortunately there is no official support to build Siconos on Windows. On Linux, get the binaries from https://gforge.inria.fr/frs/?group_id=9, install the dependencies from http://siconos.gforge.inria.fr/InstallGuide/IG_prereq.html. The last step of the install process is to install the mumps-test package:

apt-get install mumps-test

The source of Siconos is now available on github: https://github.com/siconos/siconos

How to use the component

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

The “LCPQPInverseProblemSolver” has to be set in the beginning of the scene graph. You can display the system by setting the printLog variable to true. The component also provides an output data of the results.

An example is provided in the “examples” directory of the plugin.

Data field

Here are described the data fields corresponding to this particular component.

Input data

epsilon : An energy term is added in the minimization process. Epsilon has to be chosen sufficiently small so that the deformation energy does not disrupt the quality of the effector positioning. Default value is 1e-3.

saveMatrices : If set to true, the component will save the current LCP matrices in a file named “LCPQPInverseProblemSolverMatrices.txt”. The file will be located in the current directory.

Output data

delta : Output geometrical actuations. For instance, displacement in the case of cable actuation or volume growth in the case of pressure actuation. The order in the vector corresponds to the order of the components in the scene.

lambda : Output efforts.

Bibliography

Comments are closed.