|
aligator
0.16.0
A versatile and efficient C++ library for real-time constrained trajectory optimization.
|
The feasible DDP (FDDP) algorithm, from Mastalli et al. (2020). More...
#include <aligator/solvers/fddp/solver-fddp.hpp>
Public Types | |
| using | Problem = TrajOptProblemTpl<Scalar> |
| using | StageModel = StageModelTpl<Scalar> |
| using | StageData = StageDataTpl<Scalar> |
| using | ProblemData = TrajOptDataTpl<Scalar> |
| using | Results = ResultsFDDPTpl<Scalar> |
| using | Workspace = WorkspaceFDDPTpl<Scalar> |
| using | Manifold = ManifoldAbstractTpl<Scalar> |
| using | VParams = ValueFunctionTpl<Scalar> |
| using | QParams = QFunctionTpl<Scalar> |
| using | CostData = CostDataAbstractTpl<Scalar> |
| using | DynamicsModel = ExplicitDynamicsModelTpl<Scalar> |
| using | ExplicitDynamicsData = ExplicitDynamicsDataTpl<Scalar> |
| using | CallbackPtr = shared_ptr<CallbackBaseTpl<Scalar>> |
| using | CallbackMap |
Public Member Functions | |
| ALIGATOR_DYNAMIC_TYPEDEFS (Scalar) | |
| void | setNumThreads (const std::size_t num_threads) |
| std::size_t | getNumThreads () const |
| SolverFDDPTpl (const Scalar tol=1e-6, VerboseLevel verbose=VerboseLevel::QUIET, const Scalar reg_init=1e-9, const std::size_t max_iters=200) | |
| void | setup (const Problem &problem) |
| Allocate workspace and results structs. | |
| void | updateExpectedImprovement (Workspace &workspace, Results &results) const |
| Pre-compute parts of the directional derivatives – this is done before linesearch. | |
| void | expectedImprovement (Workspace &workspace, Scalar &d1, Scalar &d2) const |
| Finish computing the directional derivatives – this is done within linesearch. | |
Static Public Member Functions | |
| static Scalar | forwardPass (const Problem &problem, const Results &results, Workspace &workspace, const Scalar alpha) |
| Perform a nonlinear rollout, keeping an infeasibility gap. | |
Public Attributes | |
| Scalar | target_tol_ |
| Scalar | th_grad_ = 1e-12 |
| Scalar | th_step_dec_ = 0.5 |
| Scalar | th_step_inc_ = 0.01 |
| Linesearch< Scalar >::Options | ls_params |
| VerboseLevel | verbose_ |
| std::size_t | max_iters |
| Maximum number of iterations for the solver. | |
| bool | force_initial_condition_ |
| Logger | logger {} |
| Results | results_ |
| Workspace | workspace_ |
Regularization parameters | |
| Scalar | reg_init |
| Scalar | preg_ = reg_init |
| Scalar | reg_min_ = 1e-9 |
| Scalar | reg_max_ = 1e9 |
| Scalar | reg_dec_factor_ = 0.1 |
| Regularization decrease factor. | |
| Scalar | reg_inc_factor_ = 10. |
| Regularization increase factor. | |
Protected Attributes | |
| std::size_t | num_threads_ |
| Number of threads to use when evaluating the problem or its derivatives. | |
| CallbackMap | callbacks_ |
| Callbacks. | |
The feasible DDP (FDDP) algorithm, from Mastalli et al. (2020).
The implementation very similar to Crocoddyl's SolverFDDP.
Definition at line 28 of file solver-fddp.hpp.
| using aligator::SolverFDDPTpl< Scalar >::Problem = TrajOptProblemTpl<Scalar> |
Definition at line 30 of file solver-fddp.hpp.
| using aligator::SolverFDDPTpl< Scalar >::StageModel = StageModelTpl<Scalar> |
Definition at line 31 of file solver-fddp.hpp.
| using aligator::SolverFDDPTpl< Scalar >::StageData = StageDataTpl<Scalar> |
Definition at line 32 of file solver-fddp.hpp.
| using aligator::SolverFDDPTpl< Scalar >::ProblemData = TrajOptDataTpl<Scalar> |
Definition at line 33 of file solver-fddp.hpp.
| using aligator::SolverFDDPTpl< Scalar >::Results = ResultsFDDPTpl<Scalar> |
Definition at line 34 of file solver-fddp.hpp.
| using aligator::SolverFDDPTpl< Scalar >::Workspace = WorkspaceFDDPTpl<Scalar> |
Definition at line 35 of file solver-fddp.hpp.
| using aligator::SolverFDDPTpl< Scalar >::Manifold = ManifoldAbstractTpl<Scalar> |
Definition at line 36 of file solver-fddp.hpp.
| using aligator::SolverFDDPTpl< Scalar >::VParams = ValueFunctionTpl<Scalar> |
Definition at line 37 of file solver-fddp.hpp.
| using aligator::SolverFDDPTpl< Scalar >::QParams = QFunctionTpl<Scalar> |
Definition at line 38 of file solver-fddp.hpp.
| using aligator::SolverFDDPTpl< Scalar >::CostData = CostDataAbstractTpl<Scalar> |
Definition at line 39 of file solver-fddp.hpp.
| using aligator::SolverFDDPTpl< Scalar >::DynamicsModel = ExplicitDynamicsModelTpl<Scalar> |
Definition at line 40 of file solver-fddp.hpp.
| using aligator::SolverFDDPTpl< Scalar >::ExplicitDynamicsData = ExplicitDynamicsDataTpl<Scalar> |
Definition at line 41 of file solver-fddp.hpp.
| using aligator::SolverFDDPTpl< Scalar >::CallbackPtr = shared_ptr<CallbackBaseTpl<Scalar>> |
Definition at line 42 of file solver-fddp.hpp.
| using aligator::SolverFDDPTpl< Scalar >::CallbackMap |
Definition at line 43 of file solver-fddp.hpp.
| aligator::SolverFDDPTpl< Scalar >::SolverFDDPTpl | ( | const Scalar | tol = 1e-6, |
| VerboseLevel | verbose = VerboseLevel::QUIET, | ||
| const Scalar | reg_init = 1e-9, | ||
| const std::size_t | max_iters = 200 ) |
| aligator::SolverFDDPTpl< Scalar >::ALIGATOR_DYNAMIC_TYPEDEFS | ( | Scalar | ) |
|
inline |
Definition at line 76 of file solver-fddp.hpp.
|
inline |
Definition at line 80 of file solver-fddp.hpp.
| void aligator::SolverFDDPTpl< Scalar >::setup | ( | const Problem & | problem | ) |
Allocate workspace and results structs.
|
static |
Perform a nonlinear rollout, keeping an infeasibility gap.
Perform a nonlinear rollout using the computed sensitivity gains from the backward pass, while keeping the dynamical feasibility gaps open proportionally to the step-size alpha.
| [in] | problem | |
| [in] | results | |
| [out] | workspace | |
| [in] | alpha | step-size. |
| void aligator::SolverFDDPTpl< Scalar >::updateExpectedImprovement | ( | Workspace & | workspace, |
| Results & | results ) const |
Pre-compute parts of the directional derivatives – this is done before linesearch.
Inspired from Crocoddyl's own function, crocoddyl::SolverFDDP::updateExpectedImprovement
| void aligator::SolverFDDPTpl< Scalar >::expectedImprovement | ( | Workspace & | workspace, |
| Scalar & | d1, | ||
| Scalar & | d2 ) const |
Finish computing the directional derivatives – this is done within linesearch.
Inspired from Crocoddyl's own function, crocoddyl::SolverFDDP::expectedImprovement
| Scalar aligator::SolverFDDPTpl< Scalar >::target_tol_ |
Definition at line 46 of file solver-fddp.hpp.
| Scalar aligator::SolverFDDPTpl< Scalar >::reg_init |
Definition at line 50 of file solver-fddp.hpp.
| Scalar aligator::SolverFDDPTpl< Scalar >::preg_ = reg_init |
Definition at line 51 of file solver-fddp.hpp.
| Scalar aligator::SolverFDDPTpl< Scalar >::reg_min_ = 1e-9 |
Definition at line 52 of file solver-fddp.hpp.
| Scalar aligator::SolverFDDPTpl< Scalar >::reg_max_ = 1e9 |
Definition at line 53 of file solver-fddp.hpp.
| Scalar aligator::SolverFDDPTpl< Scalar >::reg_dec_factor_ = 0.1 |
Regularization decrease factor.
Definition at line 55 of file solver-fddp.hpp.
| Scalar aligator::SolverFDDPTpl< Scalar >::reg_inc_factor_ = 10. |
Regularization increase factor.
Definition at line 57 of file solver-fddp.hpp.
| Scalar aligator::SolverFDDPTpl< Scalar >::th_grad_ = 1e-12 |
Definition at line 60 of file solver-fddp.hpp.
| Scalar aligator::SolverFDDPTpl< Scalar >::th_step_dec_ = 0.5 |
Definition at line 61 of file solver-fddp.hpp.
| Scalar aligator::SolverFDDPTpl< Scalar >::th_step_inc_ = 0.01 |
Definition at line 62 of file solver-fddp.hpp.
| Linesearch<Scalar>::Options aligator::SolverFDDPTpl< Scalar >::ls_params |
Definition at line 64 of file solver-fddp.hpp.
| VerboseLevel aligator::SolverFDDPTpl< Scalar >::verbose_ |
Definition at line 66 of file solver-fddp.hpp.
| std::size_t aligator::SolverFDDPTpl< Scalar >::max_iters |
Maximum number of iterations for the solver.
Definition at line 68 of file solver-fddp.hpp.
| bool aligator::SolverFDDPTpl< Scalar >::force_initial_condition_ |
Crocoddyl's FDDP implementation forces the initial state in linesearch to satisfy the initial condition. This flag switches that behaviour on or off.
Definition at line 72 of file solver-fddp.hpp.
| Logger aligator::SolverFDDPTpl< Scalar >::logger {} |
Definition at line 74 of file solver-fddp.hpp.
|
protected |
Number of threads to use when evaluating the problem or its derivatives.
Definition at line 84 of file solver-fddp.hpp.
|
protected |
Callbacks.
Definition at line 86 of file solver-fddp.hpp.
| Results aligator::SolverFDDPTpl< Scalar >::results_ |
Definition at line 89 of file solver-fddp.hpp.
| Workspace aligator::SolverFDDPTpl< Scalar >::workspace_ |
Definition at line 90 of file solver-fddp.hpp.