Ensuring symmetric in Vxx, this is needed because numerial error
Inspeting the memory warm-starting issue (see https://gepgitlab.laas.fr/memmo/memory-to-crocoddyl/issues/1) I realized that the reason the backward pass was failing. The main reason was having non-invertible \mathbf{Q_{uu}}
matrix. And this was produced because numerical errors were producing non-symmetric \mathbf{V_{xx}}
.
So, I applied a simple rule of thumb to ensure symmetric in this PR. With this changes, we're able to solve the warm-starting problem (with long double support duration) in 6 iterations. This is the log file for that problem:
iter cost stop grad xreg ureg step feas
0 3.06504e+01 2.70110e-02 3.53678e+01 1.00000e-09 1.00000e-09 0.5000 0
1 2.83929e+01 2.12409e-01 1.47910e+01 1.00000e-09 1.00000e-09 0.5000 0
2 2.79667e+01 9.69123e-02 5.96420e+00 1.00000e-09 1.00000e-09 1.0000 1
3 2.74287e+01 1.00807e-01 1.14229e+00 1.00000e-09 1.00000e-09 1.0000 1
4 2.73820e+01 1.64318e-02 9.27254e-02 1.00000e-09 1.00000e-09 1.0000 1
5 2.73818e+01 1.58312e-06 2.29567e-04 1.00000e-09 1.00000e-09 1.0000 1
6 2.73818e+01 2.94175e-08 1.02976e-05 1.00000e-09 1.00000e-09 1.0000 1
Edited by Carlos Mastalli