aligator  0.6.1
A primal-dual augmented Lagrangian-type solver for nonlinear trajectory optimization.
Loading...
Searching...
No Matches
expose-solver-fddp.cpp
Go to the documentation of this file.
4
6
7namespace aligator::python {
9using QParams = QFunctionTpl<Scalar>;
10using VParams = ValueFunctionTpl<Scalar>;
11} // namespace aligator::python
12
13namespace aligator {
14namespace python {
15
16void exposeFDDP() {
19 using Workspace = WorkspaceFDDPTpl<Scalar>;
20 using Results = ResultsFDDPTpl<Scalar>;
21
22 bp::class_<QParams>("QParams", "Q-function parameters.",
23 bp::init<int, int, int>(("self"_a, "ndx", "nu", "ndy")))
24 .add_property("ntot", &QParams::ntot)
25 .def_readonly("grad", &QParams::grad_)
26 .def_readonly("hess", &QParams::hess_)
27 .add_property(
28 "Qx", bp::make_getter(&QParams::Qx,
29 bp::return_value_policy<bp::return_by_value>()))
30 .add_property(
31 "Qu", bp::make_getter(&QParams::Qu,
32 bp::return_value_policy<bp::return_by_value>()))
33 .add_property("Qxx", bp::make_getter(
34 &QParams::Qxx,
35 bp::return_value_policy<bp::return_by_value>()))
36 .add_property("Qxu", bp::make_getter(
37 &QParams::Qxu,
38 bp::return_value_policy<bp::return_by_value>()))
39 .add_property("Qxy", bp::make_getter(
40 &QParams::Qxy,
41 bp::return_value_policy<bp::return_by_value>()))
42 .add_property("Quu", bp::make_getter(
43 &QParams::Quu,
44 bp::return_value_policy<bp::return_by_value>()))
45 .add_property("Quy", bp::make_getter(
46 &QParams::Quy,
47 bp::return_value_policy<bp::return_by_value>()))
48 .add_property("Qyy", bp::make_getter(
49 &QParams::Qyy,
50 bp::return_value_policy<bp::return_by_value>()))
51 .def(PrintableVisitor<QParams>());
52
53 bp::class_<VParams>("VParams", "Value function parameters.", bp::no_init)
54 .def_readonly("Vx", &VParams::Vx_)
55 .def_readonly("Vxx", &VParams::Vxx_)
56 .def(PrintableVisitor<VParams>());
57
58 StdVectorPythonVisitor<std::vector<QParams>>::expose("StdVec_QParams");
59 StdVectorPythonVisitor<std::vector<VParams>>::expose("StdVec_VParams");
60
61 bp::class_<Workspace, bp::bases<Workspace::Base>, boost::noncopyable>(
62 "WorkspaceFDDP", bp::no_init)
63 .def_readonly("dxs", &Workspace::dxs)
64 .def_readonly("dus", &Workspace::dus)
65 .def_readonly("value_params", &Workspace::value_params)
66 .def_readonly("q_params", &Workspace::q_params)
67 .def_readonly("d1", &Workspace::d1_)
68 .def_readonly("d2", &Workspace::d2_);
69
70 bp::class_<Results, bp::bases<Results::Base>>("ResultsFDDP", bp::no_init)
71 .def(bp::init<const context::TrajOptProblem &>(("self"_a, "problem")));
72
73 bp::class_<SolverFDDP, boost::noncopyable>(
74 "SolverFDDP", "An implementation of the FDDP solver from Crocoddyl.",
75 bp::init<Scalar, VerboseLevel, Scalar, std::size_t>(
76 ("self"_a, "tol", "verbose"_a = VerboseLevel::QUIET,
77 "reg_init"_a = 1e-9, "max_iters"_a = 1000)))
78 .def_readwrite("reg_min", &SolverFDDP::reg_min_)
79 .def_readwrite("reg_max", &SolverFDDP::reg_max_)
80 .def_readwrite("preg", &SolverFDDP::preg_)
81 .def(SolverVisitor<SolverFDDP>())
82 .def("run", &SolverFDDP::run,
83 ("self"_a, "problem", "xs_init", "us_init"));
84}
85
86} // namespace python
87} // namespace aligator
ManifoldAbstractTpl< Scalar > Manifold
Definition context.hpp:14
SolverFDDPTpl< Scalar > SolverFDDP
Definition context.hpp:42
The Python bindings.
Definition blk-matrix.hpp:5
ValueFunctionTpl< Scalar > VParams
QFunctionTpl< Scalar > QParams
Main package namespace.