aligator  0.15.0
A versatile and efficient C++ library for real-time constrained trajectory optimization.
Loading...
Searching...
No Matches
expose-stage.cpp
Go to the documentation of this file.
1
5
10
11#include <eigenpy/deprecation-policy.hpp>
12
13namespace aligator {
14namespace python {
15
19
20 bp::register_ptr_to_python<shared_ptr<StageData>>();
21 StdVectorPythonVisitor<std::vector<shared_ptr<StageData>>, true>::expose(
22 "StdVec_StageData");
23
24 bp::class_<StageData>("StageData", "Data struct for StageModel objects.",
25 bp::init<const StageModel &>())
26 .def_readonly("cost_data", &StageData::cost_data)
27 .def_readwrite("dynamics_data", &StageData::dynamics_data)
28 .def_readwrite("constraint_data", &StageData::constraint_data);
29}
30
34 using context::Scalar;
36
37 using PolyCost = xyz::polymorphic<context::CostAbstract>;
38 using PolyDynamics = xyz::polymorphic<context::ExplicitDynamics>;
39 using PolyFunction = xyz::polymorphic<context::StageFunction>;
40 using PolyCstrSet = xyz::polymorphic<ConstraintSet>;
41 using PolyStage = xyz::polymorphic<StageModel>;
42
44
45 using StageVec = std::vector<PolyStage>;
46 StdVectorPythonVisitor<StageVec, true>::expose(
47 "StdVec_StageModel",
48 eigenpy::details::overload_base_get_item_for_std_vector<StageVec>());
49
50#pragma GCC diagnostic push
51#pragma GCC diagnostic ignored "-Wdeprecated-declarations"
52 bp::class_<StageModel>(
53 "StageModel",
54 "A stage of the control problem. Holds costs, dynamics, and constraints.",
55 bp::no_init)
56 .def(bp::init<const PolyCost &, const PolyDynamics &>(
57 ("self"_a, "cost", "dynamics")))
58 .def<void (StageModel::*)(const context::StageConstraint &)>(
59 "addConstraint", &StageModel::addConstraint,
60 eigenpy::deprecated_member<>("This method has been deprecated since "
61 "StageConstraint is deprecated."),
62 ("self"_a, "constraint"), "Add an existing constraint to the stage.")
63 .def<void (StageModel::*)(const PolyFunction &, const PolyCstrSet &)>(
64 "addConstraint", &StageModel::addConstraint,
65 ("self"_a, "func", "cstr_set"),
66 "Constructs a new constraint (from the underlying function and set) "
67 "and adds it to the stage.")
68 .def_readonly("constraints", &StageModel::constraints_,
69 "Get the set of constraints.")
70 .def_readonly("dynamics", &StageModel::dynamics_, "Stage dynamics.")
71 .add_property("xspace",
72 bp::make_getter(&StageModel::xspace_,
73 bp::return_internal_reference<>()),
74 "State space for the current state :math:`x_k`.")
75 .add_property("xspace_next",
76 bp::make_getter(&StageModel::xspace_next_,
77 bp::return_internal_reference<>()),
78 "State space corresponding to next state :math:`x_{k+1}`.")
79 .add_property("uspace",
80 bp::make_getter(&StageModel::uspace_,
81 bp::return_internal_reference<>()),
82 "Control space.")
83 .add_property("cost",
84 bp::make_getter(&StageModel::cost_,
85 bp::return_internal_reference<>()),
86 "Stage cost.")
87 .def("evaluate", &StageModel::evaluate, ("self"_a, "x", "u", "data"),
88 "Evaluate the stage cost, dynamics, constraints.")
89 .def("computeFirstOrderDerivatives",
90 &StageModel::computeFirstOrderDerivatives,
91 ("self"_a, "x", "u", "data"),
92 "Compute gradients of the stage cost and jacobians of the dynamics "
93 "and "
94 "constraints.")
95 .def("computeSecondOrderDerivatives",
96 &StageModel::computeSecondOrderDerivatives,
97 ("self"_a, "x", "u", "data"), "Compute Hessians of the stage cost.")
98 .add_property("ndx1", &StageModel::ndx1)
99 .add_property("ndx2", &StageModel::ndx2)
100 .add_property("nu", &StageModel::nu, "Control space dimension.")
101 .add_property("num_dual", &StageModel::numDual,
102 "Number of dual variables.")
107#pragma GCC diagnostic pop
108
110}
111
112} // namespace python
113} // namespace aligator
StageModelTpl< Scalar > StageModel
Definition context.hpp:30
ManifoldAbstractTpl< Scalar > Manifold
Definition context.hpp:14
StageDataTpl< Scalar > StageData
Definition context.hpp:31
ConstraintSetTpl< Scalar > ConstraintSet
Definition context.hpp:22
The Python bindings.
Definition blk-matrix.hpp:5
xyz::polymorphic< StageFunction > PolyFunction
void exposeStage()
Expose StageModel and StageData.
void register_polymorphic_to_python()
Expose a polymorphic value type, e.g. xyz::polymorphic<T, A>.
xyz::polymorphic< CostAbstract > PolyCost
Main package namespace.