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.