aligator
0.19.0
A versatile and efficient C++ library for real-time constrained trajectory optimization.
Toggle main menu visibility
Loading...
Searching...
No Matches
solvers.hpp
Go to the documentation of this file.
1
3
#pragma once
4
5
#include <eigenpy/fwd.hpp>
6
#include <fmt/format.h>
7
8
namespace
aligator::python
{
9
namespace
bp = boost::python;
10
11
// fwd-declaration
12
bp::arg
operator
""
_a(
const
char
*argname, std::size_t);
13
14
template
<
typename
SolverType>
15
struct
SolverVisitor
: bp::def_visitor<SolverVisitor<SolverType>> {
16
using
CallbackPtr
=
typename
SolverType::CallbackPtr;
17
static
auto
getCallback
(
const
SolverType &obj, std::string_view name)
18
->
CallbackPtr
{
19
const
CallbackPtr
&cb = obj.getCallback(name);
20
if
(!cb) {
21
PyErr_SetString(PyExc_KeyError,
22
fmt::format(
"Key {} not found."
, name).c_str());
23
bp::throw_error_already_set();
24
}
25
return
cb;
26
}
27
28
template
<
typename
... Args>
void
visit
(bp::class_<Args...> &obj)
const
{
29
obj.def_readwrite(
"verbose"
, &SolverType::verbose_,
30
"Verbosity level of the solver."
)
31
.def_readwrite(
"max_iters"
, &SolverType::max_iters,
32
"Maximum number of iterations."
)
33
.def_readwrite(
"ls_params"
, &SolverType::ls_params,
34
"Linesearch parameters."
)
35
.def_readwrite(
"target_tol"
, &SolverType::target_tol_,
36
"Target tolerance."
)
37
.def_readwrite(
"reg_init"
, &SolverType::reg_init)
38
.def_readwrite(
"preg"
, &SolverType::preg_)
39
.def_readwrite(
"force_initial_condition"
,
40
&SolverType::force_initial_condition_,
41
"Set x0 to be fixed to the initial condition."
)
42
.add_property(
"num_threads"
, &SolverType::getNumThreads)
43
.def(
"setNumThreads"
, &SolverType::setNumThreads,
44
(
"self"
_a,
"num_threads"
))
45
.def_readonly(
"results"
, &SolverType::results_,
"Solver results."
)
46
.def_readonly(
"workspace"
, &SolverType::workspace_,
"Solver workspace."
)
47
.def(
"setup"
, &SolverType::setup, (
"self"
_a,
"problem"
),
48
"Allocate solver workspace and results data for the problem."
)
49
.def(
"registerCallback"
, &SolverType::registerCallback,
50
(
"self"
_a,
"name"
,
"cb"
),
"Add a callback to the solver."
)
51
.def(
"getCallbackNames"
, &SolverType::getCallbackNames,
"self"
_a,
52
"Get names of registered callbacks."
)
53
.def(
"removeCallback"
, &SolverType::removeCallback, (
"self"
_a,
"key"
),
54
"Remove a callback."
)
55
.def(
"getCallback"
,
getCallback
, (
"self"
_a,
"key"
))
56
.def(
"clearCallbacks"
, &SolverType::clearCallbacks, (
"self"
_a),
57
"Clear callbacks."
);
58
}
59
};
60
61
}
// namespace aligator::python
aligator::python
The Python bindings.
Definition
blk-matrix.hpp:7
aligator::python::SolverVisitor
Definition
solvers.hpp:15
aligator::python::SolverVisitor::CallbackPtr
typename SolverType::CallbackPtr CallbackPtr
Definition
solvers.hpp:16
aligator::python::SolverVisitor::getCallback
static auto getCallback(const SolverType &obj, std::string_view name) -> CallbackPtr
Definition
solvers.hpp:17
aligator::python::SolverVisitor::visit
void visit(bp::class_< Args... > &obj) const
Definition
solvers.hpp:28
bindings
python
include
aligator
python
solvers.hpp
Generated by
1.17.0