aligator  0.14.0
A primal-dual augmented Lagrangian-type solver for nonlinear trajectory optimization.
Loading...
Searching...
No Matches
continuous.hpp
Go to the documentation of this file.
1
3#pragma once
4
6
10
11namespace aligator {
12namespace python {
13
14template <class T = context::ContinuousDynamicsAbstract>
16 : T,
17 PolymorphicWrapper<PyContinuousDynamics<T>, T> {
20 using T::T;
21
22 void evaluate(const ConstVectorRef &x, const ConstVectorRef &u,
23 const ConstVectorRef &xdot, Data &data) const override {
24 ALIGATOR_PYTHON_OVERRIDE_PURE(void, "evaluate", x, u, xdot,
25 boost::ref(data));
26 }
27
28 void computeJacobians(const ConstVectorRef &x, const ConstVectorRef &u,
29 const ConstVectorRef &xdot, Data &data) const override {
30 ALIGATOR_PYTHON_OVERRIDE_PURE(void, "computeJacobians", x, u, xdot,
31 boost::ref(data));
32 }
33
34 shared_ptr<Data> createData() const override {
35 ALIGATOR_PYTHON_OVERRIDE(shared_ptr<Data>, T, createData, );
36 }
37
38 shared_ptr<Data> default_createData() const { return T::createData(); }
39};
40
41template <class T = context::ODEAbstract>
42struct PyODEAbstract final : T, PolymorphicWrapper<PyODEAbstract<T>, T> {
46
47 using T::T;
48
49 void forward(const ConstVectorRef &x, const ConstVectorRef &u,
50 Data &data) const override {
51 ALIGATOR_PYTHON_OVERRIDE_PURE(void, "forward", x, u, boost::ref(data));
52 }
53
54 void dForward(const ConstVectorRef &x, const ConstVectorRef &u,
55 Data &data) const override {
56 ALIGATOR_PYTHON_OVERRIDE_PURE(void, "dForward", x, u, boost::ref(data));
57 }
58
59 shared_ptr<Data> createData() const override {
60 ALIGATOR_PYTHON_OVERRIDE(shared_ptr<Data>, T, createData, );
61 }
62
63 shared_ptr<Data> default_createData() const { return T::createData(); }
64};
65
66} // namespace python
67} // namespace aligator
68//
69namespace boost::python::objects {
70
71template <>
72struct value_holder<aligator::python::PyContinuousDynamics<>>
73 : aligator::python::OwningNonOwningHolder<
74 aligator::python::PyContinuousDynamics<>> {
75 using OwningNonOwningHolder::OwningNonOwningHolder;
76};
77
78template <>
79struct value_holder<aligator::python::PyODEAbstract<>>
80 : aligator::python::OwningNonOwningHolder<
81 aligator::python::PyODEAbstract<>> {
82 using OwningNonOwningHolder::OwningNonOwningHolder;
83};
84
85} // 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 continuous dynamics.
dynamics::ContinuousDynamicsDataTpl< Scalar > ODEData
Definition context.hpp:16
dynamics::ContinuousDynamicsDataTpl< Scalar > ContinuousDynamicsData
Definition context.hpp:12
The Python bindings.
Definition blk-matrix.hpp:5
Main package namespace.
Defines a class representing ODEs.
context::ContinuousDynamicsData Data
void evaluate(const ConstVectorRef &x, const ConstVectorRef &u, const ConstVectorRef &xdot, Data &data) const override
Evaluate the vector field at a point .
shared_ptr< Data > createData() const override
Create a data holder instance.
void computeJacobians(const ConstVectorRef &x, const ConstVectorRef &u, const ConstVectorRef &xdot, Data &data) const override
Differentiate the vector field.
shared_ptr< Data > default_createData() const
void forward(const ConstVectorRef &x, const ConstVectorRef &u, Data &data) const override
Evaluate the ODE vector field: this returns the value of .
shared_ptr< Data > createData() const override
Create a data holder instance.
shared_ptr< Data > default_createData() const
void dForward(const ConstVectorRef &x, const ConstVectorRef &u, Data &data) const override
Evaluate the vector field Jacobians.