You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
For educational purposes, I'm trying to implement a multiple shooting Gauss Newton method in python using HPIPM according to Giftthaler et al's really nice paper https://arxiv.org/pdf/1711.11006.pdf - there in equations 14 and 15, authors use the feedback matrices from the Riccati recursion in order to calculate control and feedbacks that reduce the defects at the connection points of the multiple shooting methods.
I cannot judge if the huge values in ric_P, ric_Ls and ric_Lr are to be expected at the last stage and in the first stage for ric_p and ric_P - intermediate states produce "normal values". However, the primary issue is that solver.get_feedback(qp, 'ric_K', idx) crashes the python interpreter and I'm lost as to why since the interface in the PR is the same for all Riccati matrices. So maybe there is an issue in the c-code?
Also, it would be really nice to document the use of the Riccati recursion matrices. I'm confused by the names and the control-toolbox is not all that helpful:
For educational purposes, I'm trying to implement a multiple shooting Gauss Newton method in python using HPIPM according to Giftthaler et al's really nice paper https://arxiv.org/pdf/1711.11006.pdf - there in equations 14 and 15, authors use the feedback matrices from the Riccati recursion in order to calculate control and feedbacks that reduce the defects at the connection points of the multiple shooting methods.
Giftthaler's control toolbox implementation makes use of these feedback matrices also in the HPIPM interface: https://github.com/ethz-adrl/control-toolbox/blob/e7a29a6b28dd516563b8be84d8980897cd2b10aa/ct_optcon/include/ct/optcon/solver/lqp/HPIPMInterface-impl.hpp#L316-L352
Unfortunately, the feedback matrices are not in the python interface, hence, I've provided the PR #115 .
Adding the following to the example https://github.com/giaf/hpipm/blob/master/examples/python/example_qp_getting_started.py
produces the following output:
I cannot judge if the huge values in
ric_P
,ric_Ls
andric_Lr
are to be expected at the last stage and in the first stage forric_p
andric_P
- intermediate states produce "normal values". However, the primary issue is thatsolver.get_feedback(qp, 'ric_K', idx)
crashes the python interpreter and I'm lost as to why since the interface in the PR is the same for all Riccati matrices. So maybe there is an issue in the c-code?Also, it would be really nice to document the use of the Riccati recursion matrices. I'm confused by the names and the control-toolbox is not all that helpful:
https://github.com/ethz-adrl/control-toolbox/blob/e7a29a6b28dd516563b8be84d8980897cd2b10aa/ct_optcon/include/ct/optcon/solver/lqp/HPIPMInterface-impl.hpp#L333-L336
So a definite mapping of the functions in HPIPM to the notation in Giftthaler et al's paper would be really great.
Thanks a lot for considering this.
The text was updated successfully, but these errors were encountered: