aligator
0.19.0
A versatile and efficient C++ library for real-time constrained trajectory optimization.
Toggle main menu visibility
Loading...
Searching...
No Matches
dense-riccati.hpp
Go to the documentation of this file.
1
4
#pragma once
5
6
#include "
riccati-base.hpp
"
7
#include "
dense-kernel.hpp
"
8
9
namespace
aligator::gar
{
10
15
template
<
typename
_Scalar>
16
class
RiccatiSolverDense
:
public
RiccatiSolverBase
<_Scalar> {
17
public
:
18
using
Scalar
= _Scalar;
19
ALIGATOR_DYNAMIC_TYPEDEFS_WITH_ROW_TYPES
(
Scalar
);
20
using
Base
=
RiccatiSolverBase<Scalar>
;
21
using
BlkMat44
=
BlkMatrix<MatrixXs, 4, 4>
;
22
using
BlkRowMat41
=
BlkMatrix<RowMatrixXs, 4, 1>
;
23
using
BlkVec4
=
BlkMatrix<VectorXs, 4, 1>
;
24
using
KnotType
=
LqrKnotTpl<Scalar>
;
25
using
Kernel
=
DenseKernel<Scalar>
;
26
using
Data
=
typename
Kernel::Data;
27
28
std::vector<Data>
stage_factors
;
29
std::vector<MatrixXs>
Pxx
;
30
std::vector<MatrixXs>
Pxt
;
31
std::vector<MatrixXs>
Ptt
;
32
std::vector<VectorXs>
px
;
33
std::vector<VectorXs>
pt
;
34
struct
{
35
BlkMatrix<MatrixXs, 2, 2>
mat
;
36
BlkMatrix<VectorXs, 2, 1>
ff
;
37
BlkMatrix<MatrixXs, 2, 1>
fth
;
// parametric rhs
38
BunchKaufman<MatrixXs>
ldl
;
39
}
kkt0
;
40
VectorXs
thGrad
;
41
MatrixXs
thHess
;
42
43
explicit
RiccatiSolverDense
(
const
LqrProblemTpl<Scalar>
&problem);
44
45
bool
backward
(
const
Scalar
mueq);
46
47
bool
forward
(std::vector<VectorXs> &xs, std::vector<VectorXs> &us,
48
std::vector<VectorXs> &vs, std::vector<VectorXs> &lbdas,
49
const
std::optional<ConstVectorRef> &theta = std::nullopt)
const
;
50
51
void
cycleAppend
(
const
KnotType
&knot);
52
VectorRef
getFeedforward
(
size_t
i) {
return
stage_factors
[i].ff; }
53
RowMatrixRef
getFeedback
(
size_t
i) {
return
stage_factors
[i].fb; }
54
55
protected
:
56
const
LqrProblemTpl<Scalar>
*
problem_
;
57
};
58
59
#ifdef ALIGATOR_ENABLE_TEMPLATE_INSTANTIATION
60
extern
template
class
RiccatiSolverDense<context::Scalar>
;
61
#endif
62
}
// namespace aligator::gar
aligator::BlkMatrix
Block matrix class, with a fixed or dynamic-size number of row and column blocks.
Definition
blk-matrix.hpp:19
aligator::gar::RiccatiSolverBase
Definition
riccati-base.hpp:13
aligator::gar::RiccatiSolverDense
A stagewise-dense Riccati solver. This algorithm uses a dense Bunch-Kaufman factorization at every st...
Definition
dense-riccati.hpp:16
aligator::gar::RiccatiSolverDense::ALIGATOR_DYNAMIC_TYPEDEFS_WITH_ROW_TYPES
ALIGATOR_DYNAMIC_TYPEDEFS_WITH_ROW_TYPES(Scalar)
aligator::gar::RiccatiSolverDense::cycleAppend
void cycleAppend(const KnotType &knot)
Cycle the solver data, given the specs from a given new knot.
aligator::gar::RiccatiSolverDense::BlkVec4
BlkMatrix< VectorXs, 4, 1 > BlkVec4
Definition
dense-riccati.hpp:23
aligator::gar::RiccatiSolverDense::ff
BlkMatrix< VectorXs, 2, 1 > ff
Definition
dense-riccati.hpp:36
aligator::gar::RiccatiSolverDense::Scalar
_Scalar Scalar
Definition
dense-riccati.hpp:18
aligator::gar::RiccatiSolverDense::BlkRowMat41
BlkMatrix< RowMatrixXs, 4, 1 > BlkRowMat41
Definition
dense-riccati.hpp:22
aligator::gar::RiccatiSolverDense::Pxt
std::vector< MatrixXs > Pxt
Definition
dense-riccati.hpp:30
aligator::gar::RiccatiSolverDense::thGrad
VectorXs thGrad
Definition
dense-riccati.hpp:40
aligator::gar::RiccatiSolverDense::Data
typename Kernel::Data Data
Definition
dense-riccati.hpp:26
aligator::gar::RiccatiSolverDense::Pxx
std::vector< MatrixXs > Pxx
Definition
dense-riccati.hpp:29
aligator::gar::RiccatiSolverDense::pt
std::vector< VectorXs > pt
Definition
dense-riccati.hpp:33
aligator::gar::RiccatiSolverDense::px
std::vector< VectorXs > px
Definition
dense-riccati.hpp:32
aligator::gar::RiccatiSolverDense::Ptt
std::vector< MatrixXs > Ptt
Definition
dense-riccati.hpp:31
aligator::gar::RiccatiSolverDense::Base
RiccatiSolverBase< Scalar > Base
Definition
dense-riccati.hpp:20
aligator::gar::RiccatiSolverDense::stage_factors
std::vector< Data > stage_factors
Definition
dense-riccati.hpp:28
aligator::gar::RiccatiSolverDense::getFeedforward
VectorRef getFeedforward(size_t i)
Definition
dense-riccati.hpp:52
aligator::gar::RiccatiSolverDense::kkt0
struct aligator::gar::RiccatiSolverDense::@331356351357076052247076001133223062057032131163 kkt0
aligator::gar::RiccatiSolverDense::forward
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
aligator::gar::RiccatiSolverDense::BlkMat44
BlkMatrix< MatrixXs, 4, 4 > BlkMat44
Definition
dense-riccati.hpp:21
aligator::gar::RiccatiSolverDense::mat
BlkMatrix< MatrixXs, 2, 2 > mat
Definition
dense-riccati.hpp:35
aligator::gar::RiccatiSolverDense::thHess
MatrixXs thHess
Definition
dense-riccati.hpp:41
aligator::gar::RiccatiSolverDense::problem_
const LqrProblemTpl< Scalar > * problem_
Definition
dense-riccati.hpp:56
aligator::gar::RiccatiSolverDense::fth
BlkMatrix< MatrixXs, 2, 1 > fth
Definition
dense-riccati.hpp:37
aligator::gar::RiccatiSolverDense::KnotType
LqrKnotTpl< Scalar > KnotType
Definition
dense-riccati.hpp:24
aligator::gar::RiccatiSolverDense::RiccatiSolverDense
RiccatiSolverDense(const LqrProblemTpl< Scalar > &problem)
aligator::gar::RiccatiSolverDense::backward
bool backward(const Scalar mueq)
aligator::gar::RiccatiSolverDense::getFeedback
RowMatrixRef getFeedback(size_t i)
Definition
dense-riccati.hpp:53
aligator::gar::RiccatiSolverDense::Kernel
DenseKernel< Scalar > Kernel
Definition
dense-riccati.hpp:25
aligator::gar::RiccatiSolverDense::ldl
BunchKaufman< MatrixXs > ldl
Definition
dense-riccati.hpp:38
dense-kernel.hpp
aligator::gar
Definition
block-tridiagonal.hpp:10
riccati-base.hpp
Eigen::BunchKaufman
Definition
bunchkaufman.hpp:522
aligator::gar::DenseKernel
A dense Bunch-Kaufman based kernel.
Definition
dense-kernel.hpp:13
aligator::gar::LqrKnotTpl
Struct describing a stage of a constrained LQ problem.
Definition
lqr-problem.hpp:34
aligator::gar::LqrProblemTpl
Definition
lqr-problem.hpp:105
include
aligator
gar
dense-riccati.hpp
Generated by
1.17.0