aligator  0.6.1
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
9
10namespace aligator {
11namespace python {
12
13template <class T = dynamics::ContinuousDynamicsAbstractTpl<context::Scalar>>
14struct PyContinuousDynamics : T, bp::wrapper<T> {
17
18 template <class... Args> PyContinuousDynamics(Args &&...args) : T(args...) {}
19
20 void evaluate(const ConstVectorRef &x, const ConstVectorRef &u,
21 const ConstVectorRef &xdot, Data &data) const override {
22 ALIGATOR_PYTHON_OVERRIDE_PURE(void, "evaluate", x, u, xdot,
23 boost::ref(data));
24 }
25
26 void computeJacobians(const ConstVectorRef &x, const ConstVectorRef &u,
27 const ConstVectorRef &xdot, Data &data) const override {
28 ALIGATOR_PYTHON_OVERRIDE_PURE(void, "computeJacobians", x, u, xdot,
29 boost::ref(data));
30 }
31
32 shared_ptr<Data> createData() const override {
33 ALIGATOR_PYTHON_OVERRIDE(shared_ptr<Data>, T, createData, );
34 }
35
36 shared_ptr<Data> default_createData() const { return T::createData(); }
37};
38
39template <class T = dynamics::ODEAbstractTpl<context::Scalar>>
40struct PyODEAbstract : T, bp::wrapper<T> {
44
45 template <class... Args> PyODEAbstract(Args &&...args) : T(args...) {}
46
47 virtual void forward(const ConstVectorRef &x, const ConstVectorRef &u,
48 Data &data) const override {
49 ALIGATOR_PYTHON_OVERRIDE_PURE(void, "forward", x, u, boost::ref(data));
50 }
51
52 virtual void dForward(const ConstVectorRef &x, const ConstVectorRef &u,
53 Data &data) const override {
54 ALIGATOR_PYTHON_OVERRIDE_PURE(void, "dForward", x, u, boost::ref(data));
55 }
56
57 shared_ptr<Data> createData() const override {
58 ALIGATOR_PYTHON_OVERRIDE(shared_ptr<Data>, T, createData, );
59 }
60
61 shared_ptr<Data> default_createData() const { return T::createData(); }
62};
63
64} // namespace python
65} // namespace aligator
#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 macros.hpp:50
#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 macros.hpp:41
Base definitions for continuous dynamics.
Main package namespace.
Defines a class representing ODEs.
Data struct for ContinuousDynamicsAbstractTpl.
void evaluate(const ConstVectorRef &x, const ConstVectorRef &u, const ConstVectorRef &xdot, Data &data) const override
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
shared_ptr< Data > default_createData() const
shared_ptr< Data > createData() const override
Create a data holder instance.
shared_ptr< Data > default_createData() const
virtual void dForward(const ConstVectorRef &x, const ConstVectorRef &u, Data &data) const override
virtual void forward(const ConstVectorRef &x, const ConstVectorRef &u, Data &data) const override