robotoc
robotoc - efficient ROBOT Optimal Control solvers
Loading...
Searching...
No Matches
robotoc::RiccatiRecursion Class Reference

Riccati recursion solver for optimal control problems. Solves the KKT system in linear time complexity w.r.t. the length of the horizon. More...

#include <riccati_recursion.hpp>

Public Member Functions

 RiccatiRecursion (const OCP &ocp, const double max_dts0=0.1)
 Construct a Riccati recursion solver. More...
 
 RiccatiRecursion ()
 Default constructor. More...
 
 ~RiccatiRecursion ()=default
 Destructor. More...
 
 RiccatiRecursion (const RiccatiRecursion &)=default
 Default copy constructor. More...
 
RiccatiRecursionoperator= (const RiccatiRecursion &)=default
 Default copy operator. More...
 
 RiccatiRecursion (RiccatiRecursion &&) noexcept=default
 Default move constructor. More...
 
RiccatiRecursionoperator= (RiccatiRecursion &&) noexcept=default
 Default move assign operator. More...
 
void setRegularization (const double max_dts0)
 Sets the regularization on the STO. More...
 
void backwardRiccatiRecursion (const TimeDiscretization &time_discretization, KKTMatrix &kkt_matrix, KKTResidual &kkt_residual, RiccatiFactorization &factorization)
 Performs the backward Riccati recursion. More...
 
void forwardRiccatiRecursion (const TimeDiscretization &time_discretization, const KKTMatrix &kkt_matrix, const KKTResidual &kkt_residual, const RiccatiFactorization &factorization, Direction &d) const
 Performs the backward Riccati recursion. More...
 
const aligned_vector< LQRPolicy > & getLQRPolicy () const
 Gets of the LQR policies over the horizon. More...
 
void resizeData (const TimeDiscretization &time_discretization)
 Resizes the internal data. More...
 

Detailed Description

Riccati recursion solver for optimal control problems. Solves the KKT system in linear time complexity w.r.t. the length of the horizon.

Constructor & Destructor Documentation

◆ RiccatiRecursion() [1/4]

robotoc::RiccatiRecursion::RiccatiRecursion ( const OCP ocp,
const double  max_dts0 = 0.1 
)

Construct a Riccati recursion solver.

Parameters
[in]ocpOptimal control problem.
[in]max_dts0Maximum magnitude of the nominal direction of the switching time. Used in a heuristic regularization on the dynamic programming recursion. Must be positive. Default is 0.1.

◆ RiccatiRecursion() [2/4]

robotoc::RiccatiRecursion::RiccatiRecursion ( )

Default constructor.

◆ ~RiccatiRecursion()

robotoc::RiccatiRecursion::~RiccatiRecursion ( )
default

Destructor.

◆ RiccatiRecursion() [3/4]

robotoc::RiccatiRecursion::RiccatiRecursion ( const RiccatiRecursion )
default

Default copy constructor.

◆ RiccatiRecursion() [4/4]

robotoc::RiccatiRecursion::RiccatiRecursion ( RiccatiRecursion &&  )
defaultnoexcept

Default move constructor.

Member Function Documentation

◆ backwardRiccatiRecursion()

void robotoc::RiccatiRecursion::backwardRiccatiRecursion ( const TimeDiscretization time_discretization,
KKTMatrix kkt_matrix,
KKTResidual kkt_residual,
RiccatiFactorization factorization 
)

Performs the backward Riccati recursion.

Parameters
[in]time_discretizationTime discretization.
[in,out]kkt_matrixKKT matrix.
[in,out]kkt_residualKKT residual.
[in,out]factorizationRiccati factorization.

◆ forwardRiccatiRecursion()

void robotoc::RiccatiRecursion::forwardRiccatiRecursion ( const TimeDiscretization time_discretization,
const KKTMatrix kkt_matrix,
const KKTResidual kkt_residual,
const RiccatiFactorization factorization,
Direction d 
) const

Performs the backward Riccati recursion.

Parameters
[in]time_discretizationTime discretization.
[in]kkt_matrixKKT matrix.
[in]kkt_residualKKT residual.
[in,out]factorizationRiccati factorization.
[in]dDirection.

◆ getLQRPolicy()

const aligned_vector< LQRPolicy > & robotoc::RiccatiRecursion::getLQRPolicy ( ) const

Gets of the LQR policies over the horizon.

Returns
const reference to the LQR policies.

◆ operator=() [1/2]

RiccatiRecursion & robotoc::RiccatiRecursion::operator= ( const RiccatiRecursion )
default

Default copy operator.

◆ operator=() [2/2]

RiccatiRecursion & robotoc::RiccatiRecursion::operator= ( RiccatiRecursion &&  )
defaultnoexcept

Default move assign operator.

◆ resizeData()

void robotoc::RiccatiRecursion::resizeData ( const TimeDiscretization time_discretization)

Resizes the internal data.

Parameters
[in]time_discretizationTime discretization.

◆ setRegularization()

void robotoc::RiccatiRecursion::setRegularization ( const double  max_dts0)

Sets the regularization on the STO.

Parameters
[in]max_dts0Maximum magnitude of the nominal direction of the switching time. Used in a heuristic regularization on the dynamic programming recursion. Must be positive.

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