robotoc
robotoc - efficient ROBOT Optimal Control solvers
|
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... | |
UnconstrParNMPCSolver & | operator= (const UnconstrParNMPCSolver &)=default |
Default copy assign operator. More... | |
UnconstrParNMPCSolver (UnconstrParNMPCSolver &&) noexcept=default | |
Default move constructor. More... | |
UnconstrParNMPCSolver & | operator= (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 SolverStatistics & | getSolverStatistics () const |
Gets the solver statistics. More... | |
const SplitSolution & | 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. 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... | |
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.
robotoc::UnconstrParNMPCSolver::UnconstrParNMPCSolver | ( | const OCP & | ocp, |
const SolverOptions & | solver_options = SolverOptions() |
||
) |
Construct optimal control problem solver.
[in] | ocp | Optimal control problem. |
[in] | solver_options | Solver options. Default is SolverOptions(). |
robotoc::UnconstrParNMPCSolver::UnconstrParNMPCSolver | ( | ) |
Default constructor.
|
default |
Destructor.
|
default |
Default copy constructor.
|
defaultnoexcept |
Default move constructor.
void robotoc::UnconstrParNMPCSolver::discretize | ( | const double | t | ) |
Discretizes the problem and reiszes the data structures.
[in] | t | Initial time of the horizon. |
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.
[in] | stage | Time stage of interest. Must be larger than 0 and smaller than N. |
std::vector< Eigen::VectorXd > robotoc::UnconstrParNMPCSolver::getSolution | ( | const std::string & | name | ) | const |
Get the solution vector over the horizon.
[in] | name | Name of the variable. |
const SolverStatistics & robotoc::UnconstrParNMPCSolver::getSolverStatistics | ( | ) | const |
Gets the solver statistics.
const std::vector< GridInfo > & robotoc::UnconstrParNMPCSolver::getTimeDiscretization | ( | ) | const |
Gets the discretization.
void robotoc::UnconstrParNMPCSolver::initBackwardCorrection | ( | ) |
Initializes the backward correction solver.
void robotoc::UnconstrParNMPCSolver::initConstraints | ( | ) |
Initializes the priaml-dual interior point method for inequality constraints.
double robotoc::UnconstrParNMPCSolver::KKTError | ( | ) | const |
Returns the l2-norm of the KKT residuals using the results of UnconstrParNMPCsolver::updateSolution() or UnconstrParNMPCsolver::solve().
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.
[in] | t | Initial time of the horizon. |
[in] | q | Initial configuration. Size must be Robot::dimq(). |
[in] | v | Initial velocity. Size must be Robot::dimv(). |
|
default |
Default copy assign operator.
|
defaultnoexcept |
Default move assign operator.
void robotoc::UnconstrParNMPCSolver::setRobotProperties | ( | const RobotProperties & | properties | ) |
Sets a collection of the properties for robot model in this solver.
[in] | properties | A collection of the properties for the robot model. |
void robotoc::UnconstrParNMPCSolver::setSolution | ( | const std::string & | name, |
const Eigen::VectorXd & | value | ||
) |
Sets the solution over the horizon.
[in] | name | Name of the variable. |
[in] | value | Value of the specified variable. |
void robotoc::UnconstrParNMPCSolver::setSolverOptions | ( | const SolverOptions & | solver_options | ) |
Sets the solver option.
[in] | solver_options | Solver options. |
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().
[in] | t | Initial time of the horizon. |
[in] | q | Initial configuration. Size must be Robot::dimq(). |
[in] | v | Initial velocity. Size must be Robot::dimv(). |
[in] | init_solver | If true, initializes the solver, that is, calls initConstraints(), initBackwardCorrection(), and clears the line search filter. Default is true. |