|
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. |