BipedalLocomotion::Math::CARE class

Computes the unique stabilizing solution S to the continuous-time algebraic equation.

\[ S A + A' S - S B R^{-1} B' S + Q = 0 \]

Constructors, destructors, conversion operators

CARE()
Constructor.
~CARE()
Destructor.

Public functions

auto initialize(std::weak_ptr<ParametersHandler::IParametersHandler> handler) -> bool
Initialize the continuous algebraic riccati equation solver.
auto setMatrices(Eigen::Ref<const Eigen::MatrixXd> A, Eigen::Ref<const Eigen::MatrixXd> B, Eigen::Ref<const Eigen::MatrixXd> Q, Eigen::Ref<const Eigen::MatrixXd> R) -> bool
Initialize the matrices.
auto solve() -> bool
Run the algorithm to compute the unique stabilizing solution of the continuous algebriac Riccati equation.
auto getSolution() const -> Eigen::Ref<const Eigen::MatrixXd>
Get the solution.

Function documentation

bool BipedalLocomotion::Math::CARE::initialize(std::weak_ptr<ParametersHandler::IParametersHandler> handler)

Initialize the continuous algebraic riccati equation solver.

Parameters
handler pointer to the parameter handler.
Returns true in case of success/false otherwise.

bool BipedalLocomotion::Math::CARE::setMatrices(Eigen::Ref<const Eigen::MatrixXd> A, Eigen::Ref<const Eigen::MatrixXd> B, Eigen::Ref<const Eigen::MatrixXd> Q, Eigen::Ref<const Eigen::MatrixXd> R)

Initialize the matrices.

Parameters
A n x n square matrix
B n x m matrix
Q n x n symmetric-square matrix
R m x m square positive definite matrix
Returns True in case of success and false otherwise.

bool BipedalLocomotion::Math::CARE::solve()

Run the algorithm to compute the unique stabilizing solution of the continuous algebriac Riccati equation.

Returns True in case of success and false otherwise.

Eigen::Ref<const Eigen::MatrixXd> BipedalLocomotion::Math::CARE::getSolution() const

Get the solution.

Returns the solution