aligator
0.19.0
A versatile and efficient C++ library for real-time constrained trajectory optimization.
Toggle main menu visibility
Loading...
Searching...
No Matches
expose-gar.cpp
Go to the documentation of this file.
1
2
#include "
aligator/python/fwd.hpp
"
3
#include "
aligator/python/blk-matrix.hpp
"
4
#include "
aligator/gar/lqr-problem.hpp
"
5
#include "
aligator/gar/riccati-base.hpp
"
6
7
#include "
aligator/python/utils.hpp
"
8
#include "
aligator/python/visitors.hpp
"
9
10
#include <eigenpy/std-array.hpp>
11
12
namespace
aligator::python
{
13
using namespace
gar;
14
15
using
context::Scalar
;
16
using
riccati_base_t
=
RiccatiSolverBase<Scalar>
;
17
using
knot_t
=
LqrKnotTpl<context::Scalar>
;
18
using
lqr_t
=
LqrProblemTpl<context::Scalar>
;
19
20
using
context::MatrixXs;
21
using
RowMatrixXs
= Eigen::Transpose<MatrixXs>::PlainMatrix;
22
using
context::VectorXs;
23
24
using
knot_vec_t
=
lqr_t::KnotVector
;
25
26
static
void
exposeBlockMatrices
() {
27
BlkMatrixPythonVisitor<BlkMatrix<MatrixXs, 2, 2>
>::expose(
"BlockMatrix22"
);
28
BlkMatrixPythonVisitor<BlkMatrix<VectorXs, 4, 1>
>::expose(
"BlockVector4"
);
29
BlkMatrixPythonVisitor<BlkMatrix<VectorXs, 2, 1>
>::expose(
"BlockVector2"
);
30
BlkMatrixPythonVisitor<BlkMatrix<RowMatrixXs, 4, 1>
>::expose(
31
"BlockRowMatrix41"
);
32
BlkMatrixPythonVisitor<BlkMatrix<RowMatrixXs, 2, 1>
>::expose(
33
"BlockRowMatrix21"
);
34
eigenpy::StdArrayPythonVisitor<std::array<long, 1>,
true
>::expose(
35
"StdArr1_long"
);
36
eigenpy::StdArrayPythonVisitor<std::array<long, 2>,
true
>::expose(
37
"StdArr2_long"
);
38
eigenpy::StdArrayPythonVisitor<std::array<long, 4>,
true
>::expose(
39
"StdArr4_long"
);
40
}
41
42
// fwd-declare exposeParallelSolver()
43
void
exposeParallelSolver
();
44
// fwd-declare exposeDenseSolver()
45
void
exposeDenseSolver
();
46
// fwd-declare exposeProxRiccati()
47
void
exposeProxRiccati
();
48
// fwd-declare exposeGarUtils()
49
void
exposeGarUtils
();
50
51
void
exposeGAR
() {
52
53
bp::scope ns =
get_namespace
(
"gar"
);
54
55
exposeBlockMatrices
();
56
57
bp::class_<knot_t>(
"LqrKnot"
, bp::no_init)
58
.def(bp::init<uint, uint, uint>((
"self"
_a,
"nx"
,
"nu"
,
"nc"
)))
59
.def(bp::init<uint, uint, uint, uint, uint>(
60
(
"self"
_a,
"nx"
_a,
"nu"
,
"nc"
,
"nx2"
,
"nth"
_a = 0)))
61
.def_readonly(
"nx"
, &
knot_t::nx
)
62
.def_readonly(
"nu"
, &
knot_t::nu
)
63
.def_readonly(
"nc"
, &
knot_t::nc
)
64
.def_readonly(
"nx2"
, &
knot_t::nx2
)
65
.def_readonly(
"nth"
, &
knot_t::nth
)
66
//
67
.def_readwrite(
"Q"
, &
knot_t::Q
)
68
.def_readwrite(
"S"
, &
knot_t::S
)
69
.def_readwrite(
"R"
, &
knot_t::R
)
70
.def_readwrite(
"q"
, &
knot_t::q
)
71
.def_readwrite(
"r"
, &
knot_t::r
)
72
//
73
.def_readwrite(
"A"
, &
knot_t::A
)
74
.def_readwrite(
"B"
, &
knot_t::B
)
75
.def_readwrite(
"f"
, &
knot_t::f
)
76
//
77
.def_readwrite(
"C"
, &
knot_t::C
)
78
.def_readwrite(
"D"
, &
knot_t::D
)
79
.def_readwrite(
"d"
, &
knot_t::d
)
80
//
81
.def_readwrite(
"Gth"
, &
knot_t::Gth
)
82
.def_readwrite(
"Gx"
, &
knot_t::Gx
)
83
.def_readwrite(
"Gu"
, &
knot_t::Gu
)
84
.def_readwrite(
"gamma"
, &
knot_t::gamma
)
85
//
86
.def(
"isApprox"
, &
knot_t::isApprox
,
87
(
"self"
_a,
"prec"
_a = std::numeric_limits<Scalar>::epsilon()))
88
//
89
.def(
CopyableVisitor<knot_t>
())
90
.def(
PrintableVisitor<knot_t>
());
91
92
StdVectorPythonVisitor<knot_vec_t, false>::expose(
"StdVec_LqrKnot"
);
93
94
bp::class_<lqr_t, boost::noncopyable>(
"LqrProblem"
, bp::no_init)
95
.def(bp::init<const knot_vec_t &, long>((
"self"
_a,
"stages"
,
"nc0"
)))
96
.def_readwrite(
"stages"
, &
lqr_t::stages
)
97
.add_property(
"horizon"
, &
lqr_t::horizon
)
98
.def_readwrite(
"G0"
, &
lqr_t::G0
)
99
.def_readwrite(
"g0"
, &
lqr_t::g0
)
100
.add_property(
"isInitialized"
, &
lqr_t::isInitialized
,
101
"Whether the problem is initialized."
)
102
.add_property(
"isParameterized"
, &
lqr_t::isParameterized
,
103
"Whether the problem is parameterized."
)
104
.def(
"addParameterization"
, &
lqr_t::addParameterization
,
105
(
"self"
_a,
"nth"
))
106
.add_property(
"ntheta"
, &
lqr_t::ntheta
)
107
.def(
"evaluate"
, &
lqr_t::evaluate
,
108
(
"self"
_a,
"xs"
,
"us"
,
"theta"
_a = std::nullopt),
109
"Evaluate the problem objective."
);
110
111
bp::class_<riccati_base_t, boost::noncopyable>(
"RiccatiSolverBase"
,
112
bp::no_init)
113
.def(
"backward"
, &
riccati_base_t::backward
, (
"self"
_a,
"mueq"
))
114
.def(
"forward"
, &
riccati_base_t::forward
,
115
(
"self"
_a,
"xs"
,
"us"
,
"vs"
,
"lbdas"
,
"theta"
_a = std::nullopt));
116
117
exposeGarUtils
();
118
exposeDenseSolver
();
119
exposeParallelSolver
();
120
exposeProxRiccati
();
121
}
122
123
}
// namespace aligator::python
blk-matrix.hpp
fwd.hpp
utils.hpp
aligator::gar::RiccatiSolverBase
Definition
riccati-base.hpp:13
aligator::gar::RiccatiSolverBase< Scalar >::forward
virtual 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=0
aligator::gar::RiccatiSolverBase< Scalar >::backward
virtual bool backward(const Scalar mueq)=0
lqr-problem.hpp
aligator::context::Scalar
double Scalar
Definition
context.hpp:9
aligator::python
The Python bindings.
Definition
blk-matrix.hpp:7
aligator::python::exposeGarUtils
void exposeGarUtils()
Definition
expose-utils.cpp:33
aligator::python::RowMatrixXs
Eigen::Transpose< MatrixXs >::PlainMatrix RowMatrixXs
Definition
expose-gar.cpp:21
aligator::python::knot_t
LqrKnotTpl< context::Scalar > knot_t
Definition
expose-gar.cpp:17
aligator::python::exposeGAR
void exposeGAR()
Expose GAR module.
Definition
expose-gar.cpp:51
aligator::python::riccati_base_t
RiccatiSolverBase< Scalar > riccati_base_t
Definition
expose-dense.cpp:10
aligator::python::get_namespace
bp::object get_namespace(const std::string &name)
Create or retrieve a Python scope (that is, a class or module namespace).
Definition
utils.hpp:22
aligator::python::exposeDenseSolver
void exposeDenseSolver()
Definition
expose-dense.cpp:13
aligator::python::lqr_t
LqrProblemTpl< context::Scalar > lqr_t
Definition
expose-dense.cpp:11
aligator::python::knot_vec_t
lqr_t::KnotVector knot_vec_t
Definition
expose-gar.cpp:24
aligator::python::exposeParallelSolver
void exposeParallelSolver()
Definition
expose-parallel.cpp:16
aligator::python::exposeProxRiccati
void exposeProxRiccati()
Definition
expose-prox-riccati.cpp:14
aligator::python::exposeBlockMatrices
static void exposeBlockMatrices()
Definition
expose-gar.cpp:26
riccati-base.hpp
aligator::gar::LqrKnotTpl
Struct describing a stage of a constrained LQ problem.
Definition
lqr-problem.hpp:34
aligator::gar::LqrKnotTpl< context::Scalar >::A
ArenaMatrix< MatrixXs > A
Definition
lqr-problem.hpp:47
aligator::gar::LqrKnotTpl< context::Scalar >::nx2
uint nx2
Definition
lqr-problem.hpp:42
aligator::gar::LqrKnotTpl< context::Scalar >::D
ArenaMatrix< MatrixXs > D
Definition
lqr-problem.hpp:49
aligator::gar::LqrKnotTpl< context::Scalar >::isApprox
bool isApprox(const LqrKnotTpl &other, Scalar prec=std::numeric_limits< Scalar >::epsilon()) const
aligator::gar::LqrKnotTpl< context::Scalar >::Q
ArenaMatrix< MatrixXs > Q
Definition
lqr-problem.hpp:45
aligator::gar::LqrKnotTpl< context::Scalar >::q
ArenaMatrix< VectorXs > q
Definition
lqr-problem.hpp:46
aligator::gar::LqrKnotTpl< context::Scalar >::nu
uint nu
Definition
lqr-problem.hpp:40
aligator::gar::LqrKnotTpl< context::Scalar >::Gx
ArenaMatrix< MatrixXs > Gx
Definition
lqr-problem.hpp:53
aligator::gar::LqrKnotTpl< context::Scalar >::Gth
ArenaMatrix< MatrixXs > Gth
Definition
lqr-problem.hpp:52
aligator::gar::LqrKnotTpl< context::Scalar >::B
ArenaMatrix< MatrixXs > B
Definition
lqr-problem.hpp:47
aligator::gar::LqrKnotTpl< context::Scalar >::R
ArenaMatrix< MatrixXs > R
Definition
lqr-problem.hpp:45
aligator::gar::LqrKnotTpl< context::Scalar >::nc
uint nc
Definition
lqr-problem.hpp:41
aligator::gar::LqrKnotTpl< context::Scalar >::S
ArenaMatrix< MatrixXs > S
Definition
lqr-problem.hpp:45
aligator::gar::LqrKnotTpl< context::Scalar >::d
ArenaMatrix< VectorXs > d
Definition
lqr-problem.hpp:50
aligator::gar::LqrKnotTpl< context::Scalar >::gamma
ArenaMatrix< VectorXs > gamma
Definition
lqr-problem.hpp:56
aligator::gar::LqrKnotTpl< context::Scalar >::Gu
ArenaMatrix< MatrixXs > Gu
Definition
lqr-problem.hpp:54
aligator::gar::LqrKnotTpl< context::Scalar >::C
ArenaMatrix< MatrixXs > C
Definition
lqr-problem.hpp:49
aligator::gar::LqrKnotTpl< context::Scalar >::r
ArenaMatrix< VectorXs > r
Definition
lqr-problem.hpp:46
aligator::gar::LqrKnotTpl< context::Scalar >::nx
uint nx
Definition
lqr-problem.hpp:39
aligator::gar::LqrKnotTpl< context::Scalar >::nth
uint nth
Definition
lqr-problem.hpp:43
aligator::gar::LqrKnotTpl< context::Scalar >::f
ArenaMatrix< VectorXs > f
Definition
lqr-problem.hpp:48
aligator::gar::LqrProblemTpl
Definition
lqr-problem.hpp:105
aligator::gar::LqrProblemTpl< context::Scalar >::ntheta
uint ntheta() const
Definition
lqr-problem.hpp:169
aligator::gar::LqrProblemTpl< context::Scalar >::KnotVector
std::pmr::vector< KnotType > KnotVector
Definition
lqr-problem.hpp:109
aligator::gar::LqrProblemTpl< context::Scalar >::addParameterization
void addParameterization(uint nth)
Definition
lqr-problem.hpp:155
aligator::gar::LqrProblemTpl< context::Scalar >::g0
ArenaMatrix< VectorXs > g0
Definition
lqr-problem.hpp:112
aligator::gar::LqrProblemTpl< context::Scalar >::evaluate
Scalar evaluate(const VectorOfVectors &xs, const VectorOfVectors &us, const std::optional< ConstVectorRef > &theta) const
aligator::gar::LqrProblemTpl< context::Scalar >::isInitialized
bool isInitialized() const
Definition
lqr-problem.hpp:167
aligator::gar::LqrProblemTpl< context::Scalar >::G0
ArenaMatrix< MatrixXs > G0
Definition
lqr-problem.hpp:111
aligator::gar::LqrProblemTpl< context::Scalar >::isParameterized
bool isParameterized() const
Definition
lqr-problem.hpp:163
aligator::gar::LqrProblemTpl< context::Scalar >::stages
KnotVector stages
Definition
lqr-problem.hpp:113
aligator::gar::LqrProblemTpl< context::Scalar >::horizon
int horizon() const noexcept
Definition
lqr-problem.hpp:115
aligator::python::BlkMatrixPythonVisitor
Definition
blk-matrix.hpp:12
aligator::python::CopyableVisitor
Definition
visitors.hpp:38
aligator::python::PrintableVisitor
Definition
visitors.hpp:49
visitors.hpp
bindings
python
src
gar
expose-gar.cpp
Generated by
1.17.0