aligator
0.19.0
A versatile and efficient C++ library for real-time constrained trajectory optimization.
Toggle main menu visibility
Loading...
Searching...
No Matches
proximal-riccati.hpp
Go to the documentation of this file.
1
2
#pragma once
3
4
#include "
riccati-base.hpp
"
5
#include "
riccati-kernel.hpp
"
6
7
namespace
aligator
{
8
namespace
gar
{
9
11
template
<
typename
_Scalar>
12
class
ProximalRiccatiSolver
:
public
RiccatiSolverBase
<_Scalar> {
13
public
:
14
using
Scalar
= _Scalar;
15
ALIGATOR_DYNAMIC_TYPEDEFS_WITH_ROW_TYPES
(
Scalar
);
16
using
Base
=
RiccatiSolverBase<Scalar>
;
17
using
allocator_type
=
::aligator::polymorphic_allocator
;
18
19
using
Kernel
=
ProximalRiccatiKernel<Scalar>
;
20
using
StageFactorType
=
typename
Kernel::StageFactorType
;
21
using
CostToGo
=
typename
StageFactorType::CostToGo;
22
using
kkt0_t
=
typename
Kernel::kkt0_t
;
23
using
KnotType
=
LqrKnotTpl<Scalar>
;
24
25
explicit
ProximalRiccatiSolver
(
const
LqrProblemTpl<Scalar>
&problem);
26
28
bool
backward
(
const
Scalar
mueq);
29
30
bool
forward
(std::vector<VectorXs> &xs, std::vector<VectorXs> &us,
31
std::vector<VectorXs> &vs, std::vector<VectorXs> &lbdas,
32
const
std::optional<ConstVectorRef> &theta = std::nullopt)
const
;
33
34
void
cycleAppend
(
const
KnotType
&knot);
35
VectorRef
getFeedforward
(
size_t
i) {
return
datas
[i].ff.matrix(); }
36
RowMatrixRef
getFeedback
(
size_t
i) {
return
datas
[i].fb.matrix(); }
37
38
allocator_type
get_allocator
()
const
{
return
problem_
->get_allocator(); }
39
40
std::pmr::vector<StageFactor<Scalar>>
datas
;
41
kkt0_t
kkt0
;
//< initial stage KKT system
42
ArenaMatrix<VectorXs>
thGrad
;
//< optimal value gradient wrt parameter
43
ArenaMatrix<MatrixXs>
thHess
;
//< optimal value Hessian wrt parameter
44
45
protected
:
46
const
LqrProblemTpl<Scalar>
*
problem_
;
47
};
48
49
template
<
typename
Scalar>
50
ProximalRiccatiSolver
(
const
LqrProblemTpl<Scalar>
&)
51
->
ProximalRiccatiSolver<Scalar>
;
52
53
#ifdef ALIGATOR_ENABLE_TEMPLATE_INSTANTIATION
54
extern
template
class
ProximalRiccatiSolver<context::Scalar>
;
55
#endif
56
57
}
// namespace gar
58
}
// namespace aligator
aligator::ArenaMatrix
Definition
arena-matrix.hpp:25
aligator::gar::ProximalRiccatiSolver
A Riccati-like solver for the proximal LQ subproblem in ProxDDP.
Definition
proximal-riccati.hpp:12
aligator::gar::ProximalRiccatiSolver::kkt0_t
typename Kernel::kkt0_t kkt0_t
Definition
proximal-riccati.hpp:22
aligator::gar::ProximalRiccatiSolver::Kernel
ProximalRiccatiKernel< Scalar > Kernel
Definition
proximal-riccati.hpp:19
aligator::gar::ProximalRiccatiSolver::ALIGATOR_DYNAMIC_TYPEDEFS_WITH_ROW_TYPES
ALIGATOR_DYNAMIC_TYPEDEFS_WITH_ROW_TYPES(Scalar)
aligator::gar::ProximalRiccatiSolver< Scalar >::problem_
const LqrProblemTpl< Scalar > * problem_
Definition
proximal-riccati.hpp:46
aligator::gar::ProximalRiccatiSolver::Scalar
_Scalar Scalar
Definition
proximal-riccati.hpp:14
aligator::gar::ProximalRiccatiSolver::getFeedback
RowMatrixRef getFeedback(size_t i)
Definition
proximal-riccati.hpp:36
aligator::gar::ProximalRiccatiSolver< Scalar >::thGrad
ArenaMatrix< VectorXs > thGrad
Definition
proximal-riccati.hpp:42
aligator::gar::ProximalRiccatiSolver::CostToGo
typename StageFactorType::CostToGo CostToGo
Definition
proximal-riccati.hpp:21
aligator::gar::ProximalRiccatiSolver::cycleAppend
void cycleAppend(const KnotType &knot)
Cycle the solver data, given the specs from a given new knot.
aligator::gar::ProximalRiccatiSolver< Scalar >::thHess
ArenaMatrix< MatrixXs > thHess
Definition
proximal-riccati.hpp:43
aligator::gar::ProximalRiccatiSolver::StageFactorType
typename Kernel::StageFactorType StageFactorType
Definition
proximal-riccati.hpp:20
aligator::gar::ProximalRiccatiSolver::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::ProximalRiccatiSolver::KnotType
LqrKnotTpl< Scalar > KnotType
Definition
proximal-riccati.hpp:23
aligator::gar::ProximalRiccatiSolver::getFeedforward
VectorRef getFeedforward(size_t i)
Definition
proximal-riccati.hpp:35
aligator::gar::ProximalRiccatiSolver< Scalar >::kkt0
kkt0_t kkt0
Definition
proximal-riccati.hpp:41
aligator::gar::ProximalRiccatiSolver< Scalar >::datas
std::pmr::vector< StageFactor< Scalar > > datas
Definition
proximal-riccati.hpp:40
aligator::gar::ProximalRiccatiSolver::allocator_type
::aligator::polymorphic_allocator allocator_type
Definition
proximal-riccati.hpp:17
aligator::gar::ProximalRiccatiSolver::get_allocator
allocator_type get_allocator() const
Definition
proximal-riccati.hpp:38
aligator::gar::ProximalRiccatiSolver::Base
RiccatiSolverBase< Scalar > Base
Definition
proximal-riccati.hpp:16
aligator::gar::ProximalRiccatiSolver::backward
bool backward(const Scalar mueq)
Backward sweep.
aligator::gar::ProximalRiccatiSolver::ProximalRiccatiSolver
ProximalRiccatiSolver(const LqrProblemTpl< Scalar > &problem)
aligator::gar::RiccatiSolverBase
Definition
riccati-base.hpp:13
aligator::polymorphic_allocator
A convenience subclass of std::pmr::polymorphic_allocator for bytes.
Definition
allocator.hpp:16
aligator::gar
Definition
block-tridiagonal.hpp:10
aligator::gar::ProximalRiccatiSolver
ProximalRiccatiSolver(const LqrProblemTpl< Scalar > &) -> ProximalRiccatiSolver< Scalar >
aligator
Main package namespace.
Definition
action-model-wrap.hpp:14
riccati-base.hpp
riccati-kernel.hpp
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
aligator::gar::ProximalRiccatiKernel::kkt0_t
Definition
riccati-kernel.hpp:112
aligator::gar::ProximalRiccatiKernel
Kernel for use in Riccati-like algorithms for the proximal LQ subproblem.
Definition
riccati-kernel.hpp:106
aligator::gar::ProximalRiccatiKernel::StageFactorType
StageFactor< Scalar > StageFactorType
Definition
riccati-kernel.hpp:109
include
aligator
gar
proximal-riccati.hpp
Generated by
1.17.0