|
| ActionModelLQRTpl (const ActionModelLQRTpl ©) |
| Copy constructor.
|
|
| ActionModelLQRTpl (const MatrixXs &A, const MatrixXs &B, const MatrixXs &Q, const MatrixXs &R, const MatrixXs &N) |
| Initialize the LQR action model. More...
|
|
| ActionModelLQRTpl (const MatrixXs &A, const MatrixXs &B, const MatrixXs &Q, const MatrixXs &R, const MatrixXs &N, const MatrixXs &G, const MatrixXs &H, const VectorXs &f, const VectorXs &q, const VectorXs &r, const VectorXs &g, const VectorXs &h) |
| Initialize the LQR action model. More...
|
|
| ActionModelLQRTpl (const MatrixXs &A, const MatrixXs &B, const MatrixXs &Q, const MatrixXs &R, const MatrixXs &N, const VectorXs &f, const VectorXs &q, const VectorXs &r) |
| Initialize the LQR action model. More...
|
|
| ActionModelLQRTpl (const std::size_t nx, const std::size_t nu, const bool drift_free=true) |
| Initialize the LQR action model. More...
|
|
virtual void | calc (const boost::shared_ptr< ActionDataAbstract > &data, const Eigen::Ref< const VectorXs > &x) |
| Compute the total cost value for nodes that depends only on the state. More...
|
|
virtual void | calc (const boost::shared_ptr< ActionDataAbstract > &data, const Eigen::Ref< const VectorXs > &x, const Eigen::Ref< const VectorXs > &u) |
| Compute the next state and cost value. More...
|
|
virtual void | calcDiff (const boost::shared_ptr< ActionDataAbstract > &data, const Eigen::Ref< const VectorXs > &x) |
| Compute the derivatives of the cost functions with respect to the state only. More...
|
|
virtual void | calcDiff (const boost::shared_ptr< ActionDataAbstract > &data, const Eigen::Ref< const VectorXs > &x, const Eigen::Ref< const VectorXs > &u) |
| Compute the derivatives of the dynamics and cost functions. More...
|
|
virtual bool | checkData (const boost::shared_ptr< ActionDataAbstract > &data) |
| Checks that a specific data belongs to this model.
|
|
virtual boost::shared_ptr< ActionDataAbstract > | createData () |
| Create the action data. More...
|
|
| DEPRECATED ("Use get_A", const MatrixXs &get_Fx() const { return get_A();}) DEPRECATED("Use get_B" |
|
| DEPRECATED ("Use get_f", const VectorXs &get_f0() const { return get_f();}) DEPRECATED("Use get_q" |
|
| DEPRECATED ("Use get_R", const MatrixXs &get_Lxu() const { return get_R();}) DEPRECATED("Use get_N" |
|
| DEPRECATED ("Use get_r", const VectorXs &get_lu() const { return get_r();}) DEPRECATED("Use get_Q" |
|
| DEPRECATED ("Use set_LQR", void set_f0(const VectorXs &f) { set_LQR(A_, B_, Q_, R_, N_, G_, H_, f, q_, r_, g_, h_);}) DEPRECATED("Use set_LQR" |
|
| DEPRECATED ("Use set_LQR", void set_Fx(const MatrixXs &A) { set_LQR(A, B_, Q_, R_, N_, G_, H_, f_, q_, r_, g_, h_);}) DEPRECATED("Use set_LQR" |
|
| DEPRECATED ("Use set_LQR", void set_lu(const VectorXs &r) { set_LQR(A_, B_, Q_, R_, N_, G_, H_, f_, q_, r, g_, h_);}) DEPRECATED("Use set_LQR" |
|
| DEPRECATED ("Use set_LQR", void set_Luu(const MatrixXs &R) { set_LQR(A_, B_, Q_, R, N_, G_, H_, f_, q_, r_, g_, h_);}) DEPRECATED("Use set_LQR" |
|
const MatrixXs & | get_A () const |
| Return the state matrix.
|
|
const MatrixXs & | get_B () const |
| Return the input matrix.
|
|
const VectorXs & | get_f () const |
| Return the dynamics drift.
|
|
const MatrixXs & | get_Fu () const |
|
const MatrixXs & | get_G () const |
| Return the state-input inequality constraint matrix.
|
|
const VectorXs & | get_g () const |
| Return the state-input inequality constraint bias.
|
|
const MatrixXs & | get_H () const |
| Return the state-input equality constraint matrix.
|
|
const VectorXs & | get_h () const |
| Return the state-input equality constraint bias.
|
|
const MatrixXs & | get_Luu () const |
|
const VectorXs & | get_lx () const |
|
const MatrixXs & | get_Lxx () const |
|
const MatrixXs & | get_N () const |
| Return the state-input weight matrix.
|
|
const MatrixXs & | get_Q () const |
| Return the state weight matrix.
|
|
const VectorXs & | get_q () const |
| Return the state weight vector.
|
|
const MatrixXs & | get_R () const |
| Return the input weight matrix.
|
|
const VectorXs & | get_r () const |
| Return the input weight vector.
|
|
virtual void | print (std::ostream &os) const |
| Print relevant information of the LQR model. More...
|
|
void | set_Fu (const MatrixXs &B) |
|
void | set_LQR (const MatrixXs &A, const MatrixXs &B, const MatrixXs &Q, const MatrixXs &R, const MatrixXs &N, const MatrixXs &G, const MatrixXs &H, const VectorXs &f, const VectorXs &q, const VectorXs &r, const VectorXs &g, const VectorXs &h) |
| Modify the LQR action model. More...
|
|
void | set_lx (const VectorXs &q) |
|
void | set_Lxu (const MatrixXs &N) |
|
void | set_Lxx (const MatrixXs &Q) |
|
| ActionModelAbstractTpl (boost::shared_ptr< StateAbstract > state, const std::size_t nu, const std::size_t nr=0, const std::size_t ng=0, const std::size_t nh=0, const std::size_t ng_T=0, const std::size_t nh_T=0) |
| Initialize the action model. More...
|
|
virtual const VectorXs & | get_g_lb () const |
| Return the lower bound of the inequality constraints.
|
|
virtual const VectorXs & | get_g_ub () const |
| Return the upper bound of the inequality constraints.
|
|
bool | get_has_control_limits () const |
| Indicates if there are defined control limits.
|
|
virtual std::size_t | get_ng () const |
| Return the number of inequality constraints.
|
|
virtual std::size_t | get_ng_T () const |
| Return the number of inequality terminal constraints.
|
|
virtual std::size_t | get_nh () const |
| Return the number of equality constraints.
|
|
virtual std::size_t | get_nh_T () const |
| Return the number of equality terminal constraints.
|
|
std::size_t | get_nr () const |
| Return the dimension of the cost-residual vector.
|
|
std::size_t | get_nu () const |
| Return the dimension of the control input.
|
|
const boost::shared_ptr< StateAbstract > & | get_state () const |
| Return the state.
|
|
const VectorXs & | get_u_lb () const |
| Return the control lower bound.
|
|
const VectorXs & | get_u_ub () const |
| Return the control upper bound.
|
|
virtual void | quasiStatic (const boost::shared_ptr< ActionDataAbstract > &data, Eigen::Ref< VectorXs > u, const Eigen::Ref< const VectorXs > &x, const std::size_t maxiter=100, const Scalar tol=Scalar(1e-9)) |
| Computes the quasic static commands. More...
|
|
VectorXs | quasiStatic_x (const boost::shared_ptr< ActionDataAbstract > &data, const VectorXs &x, const std::size_t maxiter=100, const Scalar tol=Scalar(1e-9)) |
|
void | set_g_lb (const VectorXs &g_lb) |
| Modify the lower bound of the inequality constraints.
|
|
void | set_g_ub (const VectorXs &g_ub) |
| Modify the upper bound of the inequality constraints.
|
|
void | set_u_lb (const VectorXs &u_lb) |
| Modify the control lower bounds.
|
|
void | set_u_ub (const VectorXs &u_ub) |
| Modify the control upper bounds.
|
|
template<typename _Scalar>
class crocoddyl::ActionModelLQRTpl< _Scalar >
Linear-quadratic regulator (LQR) action model.
A linear-quadratic regulator (LQR) action has a transition model of the form
\[ \begin{equation} \mathbf{x}^' = \mathbf{A x + B u + f}. \end{equation} \]
Its cost function is quadratic of the form:
\[ \begin{equation} \ell(\mathbf{x},\mathbf{u}) = \begin{bmatrix}1 \\ \mathbf{x} \\ \mathbf{u}\end{bmatrix}^T \begin{bmatrix}0 & \mathbf{q}^T & \mathbf{r}^T \\ \mathbf{q} & \mathbf{Q} & \mathbf{N}^T \\ \mathbf{r} & \mathbf{N} & \mathbf{R}\end{bmatrix} \begin{bmatrix}1 \\ \mathbf{x} \\ \mathbf{u}\end{bmatrix} \end{equation} \]
and the linear equality and inequality constraints has the form:
\[ \begin{aligned} \mathbf{g(x,u)} = \mathbf{G}\begin{bmatrix} \mathbf{x} \\ \mathbf{u} \end{bmatrix} [x,u] + \mathbf{g} \leq \mathbf{0} &\mathbf{h(x,u)} = \mathbf{H}\begin{bmatrix} \mathbf{x} \\ \mathbf{u} \end{bmatrix} [x,u] + \mathbf{h} \end{aligned} \]
Definition at line 47 of file lqr.hpp.