aligator  0.14.0
A primal-dual augmented Lagrangian-type solver for nonlinear trajectory optimization.
Loading...
Searching...
No Matches
explicit-dynamics.hpp
Go to the documentation of this file.
1
3#pragma once
4
7
10
11namespace aligator {
12namespace python {
14
19template <class ExplicitBase = context::ExplicitDynamics>
21 : ExplicitBase,
22 PolymorphicWrapper<PyExplicitDynamics<ExplicitBase>, ExplicitBase> {
25 // All functions in the interface take this type for output
27
28 using ExplicitBase::ExplicitBase;
29
30 void forward(const ConstVectorRef &x, const ConstVectorRef &u,
31 Data &data) const {
32 ALIGATOR_PYTHON_OVERRIDE_PURE(void, "forward", x, u, boost::ref(data));
33 }
34
35 void dForward(const ConstVectorRef &x, const ConstVectorRef &u,
36 Data &data) const {
37 ALIGATOR_PYTHON_OVERRIDE_PURE(void, "dForward", x, u, boost::ref(data));
38 }
39
40 shared_ptr<DynamicsData> createData() const {
41 ALIGATOR_PYTHON_OVERRIDE(shared_ptr<DynamicsData>, ExplicitBase,
42 createData, );
43 }
44
45 shared_ptr<DynamicsData> default_createData() const {
46 return ExplicitBase::createData();
47 }
48};
49
50} // namespace python
51} // namespace aligator
52
53namespace boost::python::objects {
54
55template <>
56struct value_holder<aligator::python::PyExplicitDynamics<>>
57 : aligator::python::OwningNonOwningHolder<
58 aligator::python::PyExplicitDynamics<>> {
59 using OwningNonOwningHolder::OwningNonOwningHolder;
60};
61
62template <>
63struct value_holder<aligator::python::PyExplicitDynamics<
64 aligator::context::ExplicitIntegratorAbstract>>
65 : aligator::python::OwningNonOwningHolder<
66 aligator::python::PyExplicitDynamics<
67 aligator::context::ExplicitIntegratorAbstract>> {
68 using OwningNonOwningHolder::OwningNonOwningHolder;
69};
70
71} // 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 explicit integrators.
DynamicsDataTpl< Scalar > DynamicsData
Definition context.hpp:29
The Python bindings.
Definition blk-matrix.hpp:5
Main package namespace.
Specific data struct for explicit dynamics ExplicitDynamicsModelTpl.
shared_ptr< DynamicsData > createData() const
void forward(const ConstVectorRef &x, const ConstVectorRef &u, Data &data) const
Evaluate the forward discrete dynamics.
shared_ptr< DynamicsData > default_createData() const
ExplicitDynamicsDataTpl< Scalar > Data
void dForward(const ConstVectorRef &x, const ConstVectorRef &u, Data &data) const
Compute the Jacobians of the forward dynamics.