Exotica
Public Member Functions | Private Member Functions | Private Attributes | List of all members
exotica::AnalyticDDPSolver Class Reference

#include <analytic_ddp_solver.h>

Inheritance diagram for exotica::AnalyticDDPSolver:
Inheritance graph
Collaboration diagram for exotica::AnalyticDDPSolver:
Collaboration graph

Public Member Functions

void Instantiate (const AnalyticDDPSolverInitializer &init) override
 
- Public Member Functions inherited from exotica::AbstractDDPSolver
void Solve (Eigen::MatrixXd &solution) override
 Solves the problem. More...
 
void SpecifyProblem (PlanningProblemPtr pointer) override
 Binds the solver to a specific problem which must be pre-initalised. More...
 
Eigen::VectorXd GetFeedbackControl (Eigen::VectorXdRefConst x, int t) const override
 
const std::vector< Eigen::MatrixXd > & get_Vxx () const
 
const std::vector< Eigen::VectorXd > & get_Vx () const
 
const std::vector< Eigen::MatrixXd > & get_Qxx () const
 
const std::vector< Eigen::MatrixXd > & get_Qux () const
 
const std::vector< Eigen::MatrixXd > & get_Quu () const
 
const std::vector< Eigen::VectorXd > & get_Qx () const
 
const std::vector< Eigen::VectorXd > & get_Qu () const
 
const std::vector< Eigen::MatrixXd > & get_K () const
 
const std::vector< Eigen::VectorXd > & get_k () const
 
const std::vector< Eigen::VectorXd > & get_X_try () const
 
const std::vector< Eigen::VectorXd > & get_U_try () const
 
const std::vector< Eigen::VectorXd > & get_X_ref () const
 
const std::vector< Eigen::VectorXd > & get_U_ref () const
 
const std::vector< Eigen::MatrixXd > & get_Quu_inv () const
 
const std::vector< Eigen::MatrixXd > & get_fx () const
 
const std::vector< Eigen::MatrixXd > & get_fu () const
 
std::vector< double > get_control_cost_evolution () const
 
void set_control_cost_evolution (const int index, const double cost)
 
std::vector< double > get_steplength_evolution () const
 
std::vector< double > get_regularization_evolution () const
 
- Public Member Functions inherited from exotica::MotionSolver
 MotionSolver ()=default
 
virtual ~MotionSolver ()=default
 
void InstantiateBase (const Initializer &init) override
 
PlanningProblemPtr GetProblem () const
 
std::string Print (const std::string &prepend) const override
 
void SetNumberOfMaxIterations (int max_iter)
 
int GetNumberOfMaxIterations ()
 
double GetPlanningTime ()
 
- Public Member Functions inherited from exotica::Object
 Object ()
 
virtual ~Object ()
 
virtual std::string type () const
 Type Information wrapper: must be virtual so that it is polymorphic... More...
 
std::string GetObjectName ()
 
void InstantiateObject (const Initializer &init)
 
- Public Member Functions inherited from exotica::InstantiableBase
 InstantiableBase ()=default
 
virtual ~InstantiableBase ()=default
 
virtual std::vector< InitializerGetAllTemplates () const =0
 
- Public Member Functions inherited from exotica::Instantiable< AnalyticDDPSolverInitializer >
void InstantiateInternal (const Initializer &init) override
 
Initializer GetInitializerTemplate () override
 
std::vector< InitializerGetAllTemplates () const override
 
const AnalyticDDPSolverInitializer & GetParameters () const
 

Private Member Functions

void BackwardPass () override
 Computes the control gains for a the trajectory in the associated DynamicTimeIndexedProblem. More...
 

Private Attributes

Eigen::LLT< Eigen::MatrixXd > Quu_llt_
 

Additional Inherited Members

- Public Attributes inherited from exotica::Object
std::string ns_
 
std::string object_name_
 
bool debug_
 
- Protected Member Functions inherited from exotica::AbstractDDPSolver
double ForwardPass (const double alpha)
 Forward simulates the dynamics using the gains computed in the last BackwardPass;. More...
 
virtual void IncreaseRegularization ()
 
virtual void DecreaseRegularization ()
 
- Protected Attributes inherited from exotica::AbstractDDPSolver
DynamicTimeIndexedShootingProblemPtr prob_
 Shared pointer to the planning problem. More...
 
DynamicsSolverPtr dynamics_solver_
 Shared pointer to the dynamics solver. More...
 
AbstractDDPSolverInitializer base_parameters_
 
Eigen::VectorXd alpha_space_
 Backtracking line-search steplengths. More...
 
double lambda_
 Regularization (Vxx, Quu) More...
 
int T_
 Length of shooting problem, i.e., state trajectory. The control trajectory has length T_-1. More...
 
int NU_
 Size of control vector. More...
 
int NX_
 Size of state vector. More...
 
int NDX_
 Size of tangent vector to the state vector. More...
 
int NV_
 Size of velocity vector (tangent vector to the configuration) More...
 
double dt_
 Integration time-step. More...
 
double cost_
 Cost during iteration. More...
 
double control_cost_
 Control cost during iteration. More...
 
double cost_try_
 Total cost computed by line-search procedure. More...
 
double control_cost_try_
 Total control cost computed by line-search procedure. More...
 
double cost_prev_
 Cost during previous iteration. More...
 
double alpha_best_
 Line-search step taken. More...
 
double time_taken_forward_pass_
 
double time_taken_backward_pass_
 
std::vector< Eigen::MatrixXd > Vxx_
 Hessian of the Value function. More...
 
std::vector< Eigen::VectorXd > Vx_
 Gradient of the Value function. More...
 
std::vector< Eigen::MatrixXd > Qxx_
 Hessian of the Hamiltonian. More...
 
std::vector< Eigen::MatrixXd > Qux_
 Hessian of the Hamiltonian. More...
 
std::vector< Eigen::MatrixXd > Quu_
 Hessian of the Hamiltonian. More...
 
std::vector< Eigen::VectorXd > Qx_
 Gradient of the Hamiltonian. More...
 
std::vector< Eigen::VectorXd > Qu_
 Gradient of the Hamiltonian. More...
 
std::vector< Eigen::MatrixXd > K_
 Feedback gains. More...
 
std::vector< Eigen::VectorXd > k_
 Feed-forward terms. More...
 
std::vector< Eigen::VectorXd > X_try_
 Updated state trajectory during iteration (computed by line-search) More...
 
std::vector< Eigen::VectorXd > U_try_
 Updated control trajectory during iteration (computed by line-search) More...
 
std::vector< Eigen::VectorXd > X_ref_
 Reference state trajectory for feedback control. More...
 
std::vector< Eigen::VectorXd > U_ref_
 Reference control trajectory for feedback control. More...
 
std::vector< Eigen::MatrixXd > Quu_inv_
 Inverse of the Hessian of the Hamiltonian. More...
 
std::vector< Eigen::MatrixXd > fx_
 Derivative of the dynamics f w.r.t. x. More...
 
std::vector< Eigen::MatrixXd > fu_
 Derivative of the dynamics f w.r.t. u. More...
 
std::vector< double > control_cost_evolution_
 Evolution of the control cost (control regularization) More...
 
std::vector< double > steplength_evolution_
 Evolution of the steplength. More...
 
std::vector< double > regularization_evolution_
 Evolution of the regularization (xreg/ureg) More...
 
- Protected Attributes inherited from exotica::MotionSolver
PlanningProblemPtr problem_
 
double planning_time_ = -1
 
int max_iterations_ = 100
 
- Protected Attributes inherited from exotica::Instantiable< AnalyticDDPSolverInitializer >
AnalyticDDPSolverInitializer parameters_
 

Member Function Documentation

◆ BackwardPass()

void exotica::AnalyticDDPSolver::BackwardPass ( )
overrideprivatevirtual

Computes the control gains for a the trajectory in the associated DynamicTimeIndexedProblem.

Implements exotica::AbstractDDPSolver.

◆ Instantiate()

void exotica::AnalyticDDPSolver::Instantiate ( const AnalyticDDPSolverInitializer &  init)
overridevirtual

Member Data Documentation

◆ Quu_llt_

Eigen::LLT<Eigen::MatrixXd> exotica::AnalyticDDPSolver::Quu_llt_
private

The documentation for this class was generated from the following file: