aligator  0.14.0
A primal-dual augmented Lagrangian-type solver for nonlinear trajectory optimization.
Loading...
Searching...
No Matches
dynamics.hpp
Go to the documentation of this file.
1
2#pragma once
3
6
8
11
12namespace aligator {
13namespace python {
21template <class Base = context::DynamicsModel>
22struct PyDynamics final : Base, PolymorphicWrapper<PyDynamics<Base>, Base> {
23 using Scalar = typename Base::Scalar;
25 using Base::Base;
27
28 void evaluate(const ConstVectorRef &x, const ConstVectorRef &u,
29 const ConstVectorRef &y, Data &data) const override {
30 ALIGATOR_PYTHON_OVERRIDE_PURE(void, "evaluate", x, u, y, boost::ref(data));
31 }
32
33 void computeJacobians(const ConstVectorRef &x, const ConstVectorRef &u,
34 const ConstVectorRef &y, Data &data) const override {
35 ALIGATOR_PYTHON_OVERRIDE_PURE(void, "computeJacobians", x, u, y,
36 boost::ref(data));
37 }
38
39 void computeVectorHessianProducts(const ConstVectorRef &x,
40 const ConstVectorRef &u,
41 const ConstVectorRef &y,
42 const ConstVectorRef &lbda,
43 Data &data) const override {
45 lbda, boost::ref(data));
46 }
47
48 shared_ptr<Data> createData() const override {
49 ALIGATOR_PYTHON_OVERRIDE(shared_ptr<Data>, Base, createData, );
50 }
51
52 shared_ptr<Data> default_createData() const { return Base::createData(); }
53};
54
55} // namespace python
56} // namespace aligator
57
58namespace boost::python::objects {
59
60template <>
61struct value_holder<aligator::python::PyDynamics<>>
62 : aligator::python::OwningNonOwningHolder<aligator::python::PyDynamics<>> {
63 using OwningNonOwningHolder::OwningNonOwningHolder;
64};
65
66template <>
67struct value_holder<
68 aligator::python::PyDynamics<aligator::context::IntegratorAbstract>>
69 : aligator::python::OwningNonOwningHolder<
70 aligator::python::PyDynamics<aligator::context::IntegratorAbstract>> {
71 using OwningNonOwningHolder::OwningNonOwningHolder;
72};
73
74} // namespace boost::python::objects
#define ALIGATOR_PYTHON_OVERRIDE(ret_type, cname, fname,...)
Define the body of a virtual function override. This is meant to reduce boilerplate code when exposin...
Definition fwd.hpp:99
#define ALIGATOR_PYTHON_OVERRIDE_PURE(ret_type, pyname,...)
Define the body of a virtual function override. This is meant to reduce boilerplate code when exposin...
Definition fwd.hpp:91
Base definitions for numerical integrators.
The Python bindings.
Definition blk-matrix.hpp:5
Main package namespace.
virtual shared_ptr< Data > createData() const
typename Base::Scalar Scalar
Definition dynamics.hpp:23
shared_ptr< Data > createData() const override
Definition dynamics.hpp:48
void evaluate(const ConstVectorRef &x, const ConstVectorRef &u, const ConstVectorRef &y, Data &data) const override
Definition dynamics.hpp:28
void computeVectorHessianProducts(const ConstVectorRef &x, const ConstVectorRef &u, const ConstVectorRef &y, const ConstVectorRef &lbda, Data &data) const override
Definition dynamics.hpp:39
void computeJacobians(const ConstVectorRef &x, const ConstVectorRef &u, const ConstVectorRef &y, Data &data) const override
Definition dynamics.hpp:33
DynamicsDataTpl< Scalar > Data
Definition dynamics.hpp:24
shared_ptr< Data > default_createData() const
Definition dynamics.hpp:52