5#include <proxsuite-nlp/linalg/bunchkaufman.hpp>
16template <
typename _Scalar>
27 std::vector<BlkMat44>
kkts;
28 std::vector<BlkVec4>
ffs;
29 std::vector<BlkRowMat41>
fbs;
30 std::vector<BlkRowMat41>
fts;
31 std::vector<Eigen::BunchKaufman<MatrixXs>>
ldls;
32 std::vector<MatrixXs>
Pxx;
33 std::vector<MatrixXs>
Pxt;
34 std::vector<MatrixXs>
Ptt;
35 std::vector<VectorXs>
px;
36 std::vector<VectorXs>
pt;
41 Eigen::BunchKaufman<MatrixXs>
ldl;
50 bool forward(std::vector<VectorXs> &xs, std::vector<VectorXs> &us,
51 std::vector<VectorXs> &vs, std::vector<VectorXs> &lbdas,
52 const std::optional<ConstVectorRef> &theta = std::nullopt)
const;
66#ifdef ALIGATOR_ENABLE_TEMPLATE_INSTANTIATION
67#include "dense-riccati.txx"
Block matrix class, with a fixed-size number of row and column blocks.
A stagewise-dense Riccati solver. This algorithm uses a dense Bunch-Kaufman factorization at every st...
ALIGATOR_DYNAMIC_TYPEDEFS_WITH_ROW_TYPES(Scalar)
void cycleAppend(const KnotType &knot)
std::vector< BlkMat44 > kkts
BlkMatrix< VectorXs, 2, 1 > ff
std::vector< BlkRowMat41 > fts
std::vector< MatrixXs > Pxt
std::vector< MatrixXs > Pxx
std::vector< Eigen::BunchKaufman< MatrixXs > > ldls
std::vector< VectorXs > pt
std::vector< VectorXs > px
void init_factor(const LQRKnotTpl< Scalar > &knot)
std::vector< MatrixXs > Ptt
VectorRef getFeedforward(size_t i)
bool forward(std::vector< VectorXs > &xs, std::vector< VectorXs > &us, std::vector< VectorXs > &vs, std::vector< VectorXs > &lbdas, const std::optional< ConstVectorRef > &theta=std::nullopt) const
BlkMatrix< MatrixXs, 2, 2 > mat
RiccatiSolverDense(const LQRProblemTpl< Scalar > &problem)
BlkMatrix< MatrixXs, 2, 1 > fth
struct aligator::gar::RiccatiSolverDense::@1 kkt0
std::vector< BlkRowMat41 > fbs
Eigen::BunchKaufman< MatrixXs > ldl
const LQRProblemTpl< Scalar > * problem_
std::vector< BlkVec4 > ffs
RowMatrixRef getFeedback(size_t i)
bool backward(const Scalar mudyn, const Scalar mueq)
Struct describing a stage of a constrained LQ problem.