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-dynamics.cpp
Go to the documentation of this file.
1
3
#include "
aligator/python/dynamics.hpp
"
4
#include "
aligator/python/eigen-member.hpp
"
5
#include "
aligator/python/visitors.hpp
"
6
#include "
aligator/core/manifold-base.hpp
"
7
8
namespace
aligator
{
9
namespace
python
{
10
11
// fwd declaration
12
void
exposeDynamicsBase
();
13
// fwd declaration, see expose-explicit-dynamics.cpp
14
void
exposeExplicitDynamics
();
15
16
void
exposeDynamics
() {
17
exposeDynamicsBase
();
18
exposeExplicitDynamics
();
19
}
20
21
using
context::DynamicsData
;
22
using
context::DynamicsModel
;
23
using
PolyManifold
= xyz::polymorphic<context::Manifold>;
24
25
void
exposeDynamicsBase
() {
26
27
using
PyDynamicsModel =
PyDynamics<DynamicsModel>
;
28
using
PolyDynamicsModel = xyz::polymorphic<DynamicsModel>;
29
30
register_polymorphic_to_python<PolyDynamicsModel>
();
31
StdVectorPythonVisitor<std::vector<PolyDynamicsModel>,
true
>::expose(
32
"StdVec_Dynamics"
,
33
eigenpy::details::overload_base_get_item_for_std_vector<
34
std::vector<PolyDynamicsModel>>{});
35
bp::class_<PyDynamicsModel, boost::noncopyable>(
36
"DynamicsModel"
,
37
"Dynamics models are specific ternary functions f(x,u,x') which map "
38
"to the tangent bundle of the next state variable x'."
,
39
bp::init<PolyManifold, int>((
"self"
_a,
"space"
,
"nu"
)))
40
.def(bp::init<PolyManifold, int, PolyManifold>(
41
bp::args(
"self"
,
"space"
,
"nu"
,
"space_next"
)))
42
.def_readonly(
"space"
, &
DynamicsModel::space_
)
43
.def_readonly(
"space_next"
, &
DynamicsModel::space_next_
)
44
.add_property(
"nx1"
, &
DynamicsModel::nx1
)
45
.add_property(
"nx2"
, &
DynamicsModel::nx2
)
46
.def_readonly(
"ndx1"
, &
DynamicsModel::ndx1
)
47
.def_readonly(
"nu"
, &
DynamicsModel::nu
)
48
.def_readonly(
"ndx2"
, &
DynamicsModel::ndx2
)
49
.add_property(
"isExplicit"
, &
DynamicsModel::isExplicit
,
50
"Return whether the current model is explicit."
)
51
.def(
"evaluate"
, &
DynamicsModel::evaluate
,
52
(
"self"
_a,
"x"
,
"u"
,
"y"
,
"data"
))
53
.def(
"computeJacobians"
, &
DynamicsModel::computeJacobians
,
54
(
"self"
_a,
"x"
,
"u"
,
"y"
,
"data"
))
55
.def(
"computeVectorHessianProducts"
,
56
&
DynamicsModel::computeVectorHessianProducts
,
57
(
"self"
_a,
"x"
,
"u"
,
"y"
,
"lbda"
,
"data"
))
58
.def(
CreateDataPolymorphicPythonVisitor<DynamicsModel, PyDynamicsModel>
())
59
.def(
PolymorphicMultiBaseVisitor<DynamicsModel>
())
60
.enable_pickling_(
true
);
61
62
bp::register_ptr_to_python<shared_ptr<DynamicsData>>();
63
bp::class_<DynamicsData, boost::noncopyable>(
"DynamicsData"
, bp::no_init)
64
.def(bp::init<const DynamicsModel &>((
"self"
_a,
"model"
)))
65
.add_property(
66
"value"
,
67
bp::make_getter(&
DynamicsData::valref_
,
68
bp::return_value_policy<bp::return_by_value>()),
69
"Function value."
)
70
.add_property(
"jac_buffer"
,
71
make_getter_eigen_matrix
(&
DynamicsData::jac_buffer_
),
72
"Buffer of the full function Jacobian wrt (x,u,y)."
)
73
.add_property(
74
"Jx"
,
75
bp::make_getter(&
DynamicsData::Jx_
,
76
bp::return_value_policy<bp::return_by_value>()),
77
"Jacobian with respect to $x$."
)
78
.add_property(
79
"Ju"
,
80
bp::make_getter(&
DynamicsData::Ju_
,
81
bp::return_value_policy<bp::return_by_value>()),
82
"Jacobian with respect to $u$."
)
83
.add_property(
84
"Jy"
,
85
bp::make_getter(&
DynamicsData::Jy_
,
86
bp::return_value_policy<bp::return_by_value>()),
87
"Jacobian with respect to $y$."
)
88
.add_property(
"Hxx"
,
make_getter_eigen_matrix
(&
DynamicsData::Hxx_
),
89
"Hessian with respect to $(x, x)$."
)
90
.add_property(
"Hxu"
,
make_getter_eigen_matrix
(&
DynamicsData::Hxu_
),
91
"Hessian with respect to $(x, u)$."
)
92
.add_property(
"Hxy"
,
make_getter_eigen_matrix
(&
DynamicsData::Hxy_
),
93
"Hessian with respect to $(x, y)$."
)
94
.add_property(
"Huu"
,
make_getter_eigen_matrix
(&
DynamicsData::Huu_
),
95
"Hessian with respect to $(u, u)$."
)
96
.add_property(
"Huy"
,
make_getter_eigen_matrix
(&
DynamicsData::Huy_
),
97
"Hessian with respect to $(x, y)$."
)
98
.add_property(
"Hyy"
,
make_getter_eigen_matrix
(&
DynamicsData::Hyy_
),
99
"Hessian with respect to $(y, y)$."
)
100
// .def(PrintableVisitor<DynamicsData>())
101
.def(
PrintAddressVisitor<DynamicsData>
());
102
}
103
104
}
// namespace python
105
}
// namespace aligator
dynamics.hpp
eigen-member.hpp
manifold-base.hpp
aligator::context::DynamicsModel
DynamicsModelTpl< Scalar > DynamicsModel
Definition
context.hpp:27
aligator::context::DynamicsData
DynamicsDataTpl< Scalar > DynamicsData
Definition
context.hpp:28
aligator::python
The Python bindings.
Definition
blk-matrix.hpp:7
aligator::python::PolyManifold
xyz::polymorphic< Manifold > PolyManifold
Definition
expose-manifold.cpp:19
aligator::python::exposeDynamicsBase
void exposeDynamicsBase()
Definition
expose-dynamics.cpp:25
aligator::python::exposeExplicitDynamics
void exposeExplicitDynamics()
Definition
expose-explicit-dynamics.cpp:25
aligator::python::register_polymorphic_to_python
void register_polymorphic_to_python()
Expose a polymorphic value type, e.g. xyz::polymorphic<T, A>.
Definition
polymorphic.hpp:23
aligator::python::exposeDynamics
void exposeDynamics()
Expose discrete dynamics.
Definition
expose-dynamics.cpp:16
aligator::python::make_getter_eigen_matrix
bp::object make_getter_eigen_matrix(MatrixType C::*v)
Create a getter for Eigen::Matrix type objects which returns an Eigen::Ref.
Definition
eigen-member.hpp:46
aligator
Main package namespace.
Definition
action-model-wrap.hpp:14
aligator::DynamicsDataTpl< Scalar >::Hxx_
MatrixXs Hxx_
Definition
dynamics.hpp:101
aligator::DynamicsDataTpl< Scalar >::Huu_
MatrixXs Huu_
Definition
dynamics.hpp:104
aligator::DynamicsDataTpl< Scalar >::Hyy_
MatrixXs Hyy_
Definition
dynamics.hpp:106
aligator::DynamicsDataTpl< Scalar >::Hxy_
MatrixXs Hxy_
Definition
dynamics.hpp:103
aligator::DynamicsDataTpl< Scalar >::Huy_
MatrixXs Huy_
Definition
dynamics.hpp:105
aligator::DynamicsDataTpl< Scalar >::Jy_
MatrixRef Jy_
Definition
dynamics.hpp:97
aligator::DynamicsDataTpl< Scalar >::jac_buffer_
MatrixXs jac_buffer_
Definition
dynamics.hpp:91
aligator::DynamicsDataTpl< Scalar >::Jx_
MatrixRef Jx_
Definition
dynamics.hpp:93
aligator::DynamicsDataTpl< Scalar >::valref_
VectorRef valref_
Definition
dynamics.hpp:89
aligator::DynamicsDataTpl< Scalar >::Hxu_
MatrixXs Hxu_
Definition
dynamics.hpp:102
aligator::DynamicsDataTpl< Scalar >::Ju_
MatrixRef Ju_
Definition
dynamics.hpp:95
aligator::DynamicsModelTpl< Scalar >::space_
xyz::polymorphic< Manifold > space_
Definition
dynamics.hpp:21
aligator::DynamicsModelTpl< Scalar >::isExplicit
virtual bool isExplicit() const
Definition
dynamics.hpp:36
aligator::DynamicsModelTpl< Scalar >::computeJacobians
virtual void computeJacobians(const ConstVectorRef &x, const ConstVectorRef &u, const ConstVectorRef &xn, Data &) const=0
aligator::DynamicsModelTpl< Scalar >::space_next_
xyz::polymorphic< Manifold > space_next_
Definition
dynamics.hpp:23
aligator::DynamicsModelTpl< Scalar >::evaluate
virtual void evaluate(const ConstVectorRef &x, const ConstVectorRef &u, const ConstVectorRef &xn, Data &) const=0
aligator::DynamicsModelTpl< Scalar >::ndx2
const int ndx2
Definition
dynamics.hpp:29
aligator::DynamicsModelTpl< Scalar >::nx2
int nx2() const
Definition
dynamics.hpp:39
aligator::DynamicsModelTpl< Scalar >::nu
const int nu
Definition
dynamics.hpp:27
aligator::DynamicsModelTpl< Scalar >::ndx1
const int ndx1
Definition
dynamics.hpp:25
aligator::DynamicsModelTpl< Scalar >::computeVectorHessianProducts
virtual void computeVectorHessianProducts(const ConstVectorRef &x, const ConstVectorRef &u, const ConstVectorRef &xn, const ConstVectorRef &lbda, Data &data) const
aligator::DynamicsModelTpl< Scalar >::nx1
int nx1() const
Definition
dynamics.hpp:38
aligator::python::CreateDataPolymorphicPythonVisitor
Definition
visitors.hpp:30
aligator::python::PolymorphicMultiBaseVisitor
Definition
polymorphic.hpp:107
aligator::python::PrintAddressVisitor
Definition
visitors.hpp:56
aligator::python::PyDynamics
Definition
dynamics.hpp:22
visitors.hpp
bindings
python
src
modelling
expose-dynamics.cpp
Generated by
1.17.0