Expose base solver elements
| 14 | |
| 15 | /// Expose base solver elements |
| 16 | void exposeSolverCommon() { |
| 17 | using context::Scalar; |
| 18 | |
| 19 | using WorkspaceBase = WorkspaceBaseTpl<Scalar>; |
| 20 | bp::class_<WorkspaceBase, boost::noncopyable>( |
| 21 | "WorkspaceBase", "Base workspace struct.", bp::no_init) |
| 22 | .def_readonly("nsteps", &WorkspaceBase::nsteps) |
| 23 | .def_readonly("problem_data", &WorkspaceBase::problem_data) |
| 24 | .def_readonly("trial_xs", &WorkspaceBase::trial_xs) |
| 25 | .def_readonly("trial_us", &WorkspaceBase::trial_us) |
| 26 | .def_readonly("dyn_slacks", &WorkspaceBase::dyn_slacks, |
| 27 | "Expose dynamics' slack variables (e.g. feasibility gaps).") |
| 28 | .def("cycleLeft", &WorkspaceBase::cycleLeft, "self"_a, |
| 29 | "Cycle the workspace to the left: this will rotate all the data " |
| 30 | "(states, controls, multipliers) forward by one rank.") |
| 31 | .def("cycleAppend", &WorkspaceBase::cycleAppend, ("self"_a, "data"), |
| 32 | "Insert a StageData object and cycle the workspace left (using " |
| 33 | "`cycleLeft()`) and insert the allocated data (useful for MPC)."); |
| 34 | |
| 35 | using ResultsBase = ResultsBaseTpl<Scalar>; |
| 36 | bp::class_<ResultsBase>("ResultsBase", "Base results struct.", bp::no_init) |
| 37 | .def_readonly("num_iters", &ResultsBase::num_iters, |
| 38 | "Number of solver iterations.") |
| 39 | .def_readonly("conv", &ResultsBase::conv) |
| 40 | .def_readonly("gains", &ResultsBase::gains_) |
| 41 | .def_readonly("xs", &ResultsBase::xs) |
| 42 | .def_readonly("us", &ResultsBase::us) |
| 43 | .def_readonly("primal_infeas", &ResultsBase::prim_infeas) |
| 44 | .def_readonly("dual_infeas", &ResultsBase::dual_infeas) |
| 45 | .def_readonly("traj_cost", &ResultsBase::traj_cost_, "Trajectory cost.") |
| 46 | .def_readonly("merit_value", &ResultsBase::merit_value_, |
| 47 | "Merit function value.") |
| 48 | .def("controlFeedbacks", &ResultsBase::getCtrlFeedbacks, "self"_a, |
| 49 | "Get the control feedback matrices.") |
| 50 | .def("controlFeedforwards", &ResultsBase::getCtrlFeedforwards, "self"_a, |
| 51 | "Get the control feedforward gains.") |
| 52 | .def(PrintableVisitor<ResultsBase>()); |
| 53 | } |
| 54 | |
| 55 | void exposeSolvers() { |
| 56 | exposeSolverCommon(); |