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

The intermediate stage of ParNMPC for unconstrained rigid-body systems. More...

#include <parnmpc_intermediate_stage.hpp>

Public Member Functions

 ParNMPCIntermediateStage (const Robot &robot, const std::shared_ptr< CostFunction > &cost, const std::shared_ptr< Constraints > &constraints)
 Constructs the intermediate stage. More...
 
 ParNMPCIntermediateStage ()
 Default constructor.
More...
 
 ~ParNMPCIntermediateStage ()=default
 Default destructor. More...
 
 ParNMPCIntermediateStage (const ParNMPCIntermediateStage &)=default
 Default copy constructor. More...
 
ParNMPCIntermediateStageoperator= (const ParNMPCIntermediateStage &)=default
 Default copy assign operator. More...
 
 ParNMPCIntermediateStage (ParNMPCIntermediateStage &&) noexcept=default
 Default move constructor. More...
 
ParNMPCIntermediateStageoperator= (ParNMPCIntermediateStage &&) noexcept=default
 Default move assign operator. More...
 
UnconstrOCPData createData (const Robot &robot) const
 Creates the data. More...
 
bool isFeasible (Robot &robot, const GridInfo &grid_info, const SplitSolution &s, UnconstrOCPData &data) const
 Checks whether the solution is feasible w.r.t. the inequality constraints. More...
 
void initConstraints (Robot &robot, const GridInfo &grid_info, const SplitSolution &s, UnconstrOCPData &data) const
 Initializes the constraints, i.e., set slack and dual variables. More...
 
void evalOCP (Robot &robot, const GridInfo &grid_info, const Eigen::VectorXd &q_prev, const Eigen::VectorXd &v_prev, const SplitSolution &s, UnconstrOCPData &data, SplitKKTResidual &kkt_residual) const
 Computes the stage cost and constraint violation of this stage. More...
 
void evalKKT (Robot &robot, const GridInfo &grid_info, const Eigen::VectorXd &q_prev, const Eigen::VectorXd &v_prev, const SplitSolution &s, const SplitSolution &s_next, UnconstrOCPData &data, SplitKKTMatrix &kkt_matrix, SplitKKTResidual &kkt_residual) const
 Computes the KKT matrix and residual of this stage. More...
 
void expandPrimalAndDual (const double dt, const SplitKKTMatrix &kkt_matrix, const SplitKKTResidual &kkt_residual, UnconstrOCPData &data, SplitDirection &d) const
 Expands the primal and dual variables, i.e., computes the Newton direction of the condensed variables of this stage. More...
 
double maxPrimalStepSize (const UnconstrOCPData &data) const
 Computes the maximum primal step size. More...
 
double maxDualStepSize (const UnconstrOCPData &data) const
 Computes the maximum dual size. More...
 
void updatePrimal (const Robot &robot, const double primal_step_size, const SplitDirection &d, SplitSolution &s, UnconstrOCPData &data) const
 Updates primal variables of this stage. More...
 
void updateDual (const double dual_step_size, UnconstrOCPData &data) const
 Updates dual variables of the inequality constraints. More...
 

Detailed Description

The intermediate stage of ParNMPC for unconstrained rigid-body systems.

Constructor & Destructor Documentation

◆ ParNMPCIntermediateStage() [1/4]

robotoc::ParNMPCIntermediateStage::ParNMPCIntermediateStage ( const Robot robot,
const std::shared_ptr< CostFunction > &  cost,
const std::shared_ptr< Constraints > &  constraints 
)

Constructs the intermediate stage.

Parameters
[in]robotRobot model.
[in]costShared ptr to the cost function.
[in]constraintsShared ptr to the constraints.

◆ ParNMPCIntermediateStage() [2/4]

robotoc::ParNMPCIntermediateStage::ParNMPCIntermediateStage ( )

Default constructor.

◆ ~ParNMPCIntermediateStage()

robotoc::ParNMPCIntermediateStage::~ParNMPCIntermediateStage ( )
default

Default destructor.

◆ ParNMPCIntermediateStage() [3/4]

robotoc::ParNMPCIntermediateStage::ParNMPCIntermediateStage ( const ParNMPCIntermediateStage )
default

Default copy constructor.

◆ ParNMPCIntermediateStage() [4/4]

robotoc::ParNMPCIntermediateStage::ParNMPCIntermediateStage ( ParNMPCIntermediateStage &&  )
defaultnoexcept

Default move constructor.

Member Function Documentation

◆ createData()

UnconstrOCPData robotoc::ParNMPCIntermediateStage::createData ( const Robot robot) const

Creates the data.

Parameters
[in]robotRobot model.

◆ evalKKT()

void robotoc::ParNMPCIntermediateStage::evalKKT ( Robot robot,
const GridInfo grid_info,
const Eigen::VectorXd &  q_prev,
const Eigen::VectorXd &  v_prev,
const SplitSolution s,
const SplitSolution s_next,
UnconstrOCPData data,
SplitKKTMatrix kkt_matrix,
SplitKKTResidual kkt_residual 
) const

Computes the KKT matrix and residual of this stage.

Parameters
[in,out]robotRobot model.
[in]grid_infoGrid info.
[in]q_prevConfiguration at the previous stage.
[in]v_prevConfiguration at the previous stage.
[in]sSplit solution of this stage.
[in]s_nextSplit solution of the next stage.
[in,out]dataData of this stage.
[in,out]kkt_matrixSplit KKT matrix of this stage.
[in,out]kkt_residualSplit KKT residual of this stage.

◆ evalOCP()

void robotoc::ParNMPCIntermediateStage::evalOCP ( Robot robot,
const GridInfo grid_info,
const Eigen::VectorXd &  q_prev,
const Eigen::VectorXd &  v_prev,
const SplitSolution s,
UnconstrOCPData data,
SplitKKTResidual kkt_residual 
) const

Computes the stage cost and constraint violation of this stage.

Parameters
[in,out]robotRobot model.
[in]grid_infoGrid info.
[in]q_prevConfiguration at the previous stage.
[in]v_prevConfiguration at the previous stage.
[in]sSplit solution of this stage.
[in,out]dataData of this stage.
[in,out]kkt_residualSplit KKT residual of this stage.

◆ expandPrimalAndDual()

void robotoc::ParNMPCIntermediateStage::expandPrimalAndDual ( const double  dt,
const SplitKKTMatrix kkt_matrix,
const SplitKKTResidual kkt_residual,
UnconstrOCPData data,
SplitDirection d 
) const

Expands the primal and dual variables, i.e., computes the Newton direction of the condensed variables of this stage.

Parameters
[in]dtTime step.
[in]kkt_matrixSplit KKT matrix of this stage.
[in]kkt_residualSplit KKT residual of this stage.
[in,out]dataData of this stage.
[in,out]dSplit direction of this stage.

◆ initConstraints()

void robotoc::ParNMPCIntermediateStage::initConstraints ( Robot robot,
const GridInfo grid_info,
const SplitSolution s,
UnconstrOCPData data 
) const

Initializes the constraints, i.e., set slack and dual variables.

Parameters
[in,out]robotRobot model.
[in]grid_infoGrid info.
[in]sSplit solution of this stage.
[in,out]dataData of this stage.

◆ isFeasible()

bool robotoc::ParNMPCIntermediateStage::isFeasible ( Robot robot,
const GridInfo grid_info,
const SplitSolution s,
UnconstrOCPData data 
) const

Checks whether the solution is feasible w.r.t. the inequality constraints.

Parameters
[in,out]robotRobot model.
[in]grid_infoGrid info of this stage.
[in]sSplit solution of this stage.
[in,out]dataData of this stage.

◆ maxDualStepSize()

double robotoc::ParNMPCIntermediateStage::maxDualStepSize ( const UnconstrOCPData data) const

Computes the maximum dual size.

Parameters
[in]dataData of this stage.
Returns
Maximum dual step size.

◆ maxPrimalStepSize()

double robotoc::ParNMPCIntermediateStage::maxPrimalStepSize ( const UnconstrOCPData data) const

Computes the maximum primal step size.

Parameters
[in]dataData of this stage.
Returns
Maximum primal step size.

◆ operator=() [1/2]

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

Default copy assign operator.

◆ operator=() [2/2]

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

Default move assign operator.

◆ updateDual()

void robotoc::ParNMPCIntermediateStage::updateDual ( const double  dual_step_size,
UnconstrOCPData data 
) const

Updates dual variables of the inequality constraints.

Parameters
[in]dual_step_sizeDula step size.
[in,out]dataData of this stage.

◆ updatePrimal()

void robotoc::ParNMPCIntermediateStage::updatePrimal ( const Robot robot,
const double  primal_step_size,
const SplitDirection d,
SplitSolution s,
UnconstrOCPData data 
) const

Updates primal variables of this stage.

Parameters
[in]robotRobot model.
[in]primal_step_sizePrimal step size.
[in]dSplit direction of this stage.
[in,out]sSplit solution of this stage.
[in,out]dataData of this stage.

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