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

Optimal control problem solver of unconstrained rigid-body systems by ParNMPC algorithm. "Unconstrained" means that the system does not have either a floating base or any contacts. More...

#include <unconstr_parnmpc_solver.hpp>

Public Member Functions

 UnconstrParNMPCSolver (const OCP &ocp, const SolverOptions &solver_options=SolverOptions())
 Construct optimal control problem solver. More...
 
 UnconstrParNMPCSolver ()
 Default constructor. More...
 
 ~UnconstrParNMPCSolver ()=default
 Destructor. More...
 
 UnconstrParNMPCSolver (const UnconstrParNMPCSolver &)=default
 Default copy constructor. More...
 
UnconstrParNMPCSolveroperator= (const UnconstrParNMPCSolver &)=default
 Default copy assign operator. More...
 
 UnconstrParNMPCSolver (UnconstrParNMPCSolver &&) noexcept=default
 Default move constructor. More...
 
UnconstrParNMPCSolveroperator= (UnconstrParNMPCSolver &&) noexcept=default
 Default move assign operator. More...
 
void setSolverOptions (const SolverOptions &solver_options)
 Sets the solver option. More...
 
void discretize (const double t)
 Discretizes the problem and reiszes the data structures. More...
 
void initConstraints ()
 Initializes the priaml-dual interior point method for inequality constraints. More...
 
void initBackwardCorrection ()
 Initializes the backward correction solver. More...
 
void solve (const double t, const Eigen::VectorXd &q, const Eigen::VectorXd &v, const bool init_solver=true)
 Solves the optimal control problem. Internally calls updateSolution(). More...
 
const SolverStatisticsgetSolverStatistics () const
 Gets the solver statistics. More...
 
const SplitSolutiongetSolution (const int stage) const
 Get the split solution of a time stage. For example, the control input torques at the initial stage can be obtained by ocp.getSolution(0).u. More...
 
std::vector< Eigen::VectorXd > getSolution (const std::string &name) const
 Get the solution vector over the horizon. More...
 
void setSolution (const std::string &name, const Eigen::VectorXd &value)
 Sets the solution over the horizon. More...
 
double KKTError (const double t, const Eigen::VectorXd &q, const Eigen::VectorXd &v)
 Computes the KKT residual of the optimal control problem and returns the KKT error, that is, the l2-norm of the KKT residual. More...
 
double KKTError () const
 Returns the l2-norm of the KKT residuals using the results of UnconstrParNMPCsolver::updateSolution() or UnconstrParNMPCsolver::solve(). More...
 
const std::vector< GridInfo > & getTimeDiscretization () const
 Gets the discretization. More...
 
void setRobotProperties (const RobotProperties &properties)
 Sets a collection of the properties for robot model in this solver. More...
 

Detailed Description

Optimal control problem solver of unconstrained rigid-body systems by ParNMPC algorithm. "Unconstrained" means that the system does not have either a floating base or any contacts.

Constructor & Destructor Documentation

◆ UnconstrParNMPCSolver() [1/4]

robotoc::UnconstrParNMPCSolver::UnconstrParNMPCSolver ( const OCP ocp,
const SolverOptions solver_options = SolverOptions() 
)

Construct optimal control problem solver.

Parameters
[in]ocpOptimal control problem.
[in]solver_optionsSolver options. Default is SolverOptions().

◆ UnconstrParNMPCSolver() [2/4]

robotoc::UnconstrParNMPCSolver::UnconstrParNMPCSolver ( )

Default constructor.

◆ ~UnconstrParNMPCSolver()

robotoc::UnconstrParNMPCSolver::~UnconstrParNMPCSolver ( )
default

Destructor.

◆ UnconstrParNMPCSolver() [3/4]

robotoc::UnconstrParNMPCSolver::UnconstrParNMPCSolver ( const UnconstrParNMPCSolver )
default

Default copy constructor.

◆ UnconstrParNMPCSolver() [4/4]

robotoc::UnconstrParNMPCSolver::UnconstrParNMPCSolver ( UnconstrParNMPCSolver &&  )
defaultnoexcept

Default move constructor.

Member Function Documentation

◆ discretize()

void robotoc::UnconstrParNMPCSolver::discretize ( const double  t)

Discretizes the problem and reiszes the data structures.

Parameters
[in]tInitial time of the horizon.

◆ getSolution() [1/2]

const SplitSolution & robotoc::UnconstrParNMPCSolver::getSolution ( const int  stage) const

Get the split solution of a time stage. For example, the control input torques at the initial stage can be obtained by ocp.getSolution(0).u.

Parameters
[in]stageTime stage of interest. Must be larger than 0 and smaller than N.
Returns
Const reference to the split solution of the specified time stage.

◆ getSolution() [2/2]

std::vector< Eigen::VectorXd > robotoc::UnconstrParNMPCSolver::getSolution ( const std::string &  name) const

Get the solution vector over the horizon.

Parameters
[in]nameName of the variable.
Returns
Solution vector.

◆ getSolverStatistics()

const SolverStatistics & robotoc::UnconstrParNMPCSolver::getSolverStatistics ( ) const

Gets the solver statistics.

Returns
Solver statistics.

◆ getTimeDiscretization()

const std::vector< GridInfo > & robotoc::UnconstrParNMPCSolver::getTimeDiscretization ( ) const

Gets the discretization.

Returns
Returns const reference to the time discretization.

◆ initBackwardCorrection()

void robotoc::UnconstrParNMPCSolver::initBackwardCorrection ( )

Initializes the backward correction solver.

◆ initConstraints()

void robotoc::UnconstrParNMPCSolver::initConstraints ( )

Initializes the priaml-dual interior point method for inequality constraints.

◆ KKTError() [1/2]

double robotoc::UnconstrParNMPCSolver::KKTError ( ) const

Returns the l2-norm of the KKT residuals using the results of UnconstrParNMPCsolver::updateSolution() or UnconstrParNMPCsolver::solve().

Returns
The l2-norm of the KKT residual.

◆ KKTError() [2/2]

double robotoc::UnconstrParNMPCSolver::KKTError ( const double  t,
const Eigen::VectorXd &  q,
const Eigen::VectorXd &  v 
)

Computes the KKT residual of the optimal control problem and returns the KKT error, that is, the l2-norm of the KKT residual.

Parameters
[in]tInitial time of the horizon.
[in]qInitial configuration. Size must be Robot::dimq().
[in]vInitial velocity. Size must be Robot::dimv().
Returns
The KKT error, that is, the l2-norm of the KKT residual.

◆ operator=() [1/2]

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

Default copy assign operator.

◆ operator=() [2/2]

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

Default move assign operator.

◆ setRobotProperties()

void robotoc::UnconstrParNMPCSolver::setRobotProperties ( const RobotProperties properties)

Sets a collection of the properties for robot model in this solver.

Parameters
[in]propertiesA collection of the properties for the robot model.

◆ setSolution()

void robotoc::UnconstrParNMPCSolver::setSolution ( const std::string &  name,
const Eigen::VectorXd &  value 
)

Sets the solution over the horizon.

Parameters
[in]nameName of the variable.
[in]valueValue of the specified variable.

◆ setSolverOptions()

void robotoc::UnconstrParNMPCSolver::setSolverOptions ( const SolverOptions solver_options)

Sets the solver option.

Parameters
[in]solver_optionsSolver options.

◆ solve()

void robotoc::UnconstrParNMPCSolver::solve ( const double  t,
const Eigen::VectorXd &  q,
const Eigen::VectorXd &  v,
const bool  init_solver = true 
)

Solves the optimal control problem. Internally calls updateSolution().

Parameters
[in]tInitial time of the horizon.
[in]qInitial configuration. Size must be Robot::dimq().
[in]vInitial velocity. Size must be Robot::dimv().
[in]init_solverIf true, initializes the solver, that is, calls initConstraints(), initBackwardCorrection(), and clears the line search filter. Default is true.

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