|
| DifferentialActionModelLQRTpl (const DifferentialActionModelLQRTpl ©) |
| Copy constructor.
|
|
| DifferentialActionModelLQRTpl (const MatrixXs &Aq, const MatrixXs &Av, const MatrixXs &B, const MatrixXs &Q, const MatrixXs &R, const MatrixXs &N) |
| Initialize the LQR action model. More...
|
|
| DifferentialActionModelLQRTpl (const MatrixXs &Aq, const MatrixXs &Av, 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...
|
|
| DifferentialActionModelLQRTpl (const MatrixXs &Aq, const MatrixXs &Av, 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...
|
|
| DifferentialActionModelLQRTpl (const std::size_t nq, const std::size_t nu, const bool drift_free=true) |
| Initialize the LQR action model. More...
|
|
virtual void | calc (const boost::shared_ptr< DifferentialActionDataAbstract > &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< DifferentialActionDataAbstract > &data, const Eigen::Ref< const VectorXs > &x, const Eigen::Ref< const VectorXs > &u) |
| Compute the system acceleration and cost value. More...
|
|
virtual void | calcDiff (const boost::shared_ptr< DifferentialActionDataAbstract > &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< DifferentialActionDataAbstract > &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< DifferentialActionDataAbstract > &data) |
| Checks that a specific data belongs to this model.
|
|
virtual boost::shared_ptr< DifferentialActionDataAbstract > | createData () |
| Create the differential action data. More...
|
|
| DEPRECATED ("Use get_Aq", const MatrixXs &get_Fq() const { return get_Aq();}) DEPRECATED("Use get_Av" |
|
| DEPRECATED ("Use get_B", const MatrixXs &get_Fu() const { return get_B();}) DEPRECATED("Use get_f" |
|
| DEPRECATED ("Use get_Q", const MatrixXs &get_Lxx() const { return get_Q();}) DEPRECATED("Use get_N" |
|
| DEPRECATED ("Use get_q", const VectorXs &get_lx() const { return get_q();}) DEPRECATED("Use get_r" |
|
| DEPRECATED ("Use get_R", const MatrixXs &get_Luu() const { return get_R();}) DEPRECATED("Use set_LQR" |
|
| DEPRECATED ("Use set_LQR", void set_f0(const VectorXs &f) { set_LQR(Aq_, Av_, B_, Q_, R_, N_, G_, H_, f, q_, r_, g_, h_);}) DEPRECATED("Use set_LQR" |
|
| DEPRECATED ("Use set_LQR", void set_Fv(const MatrixXs &Av) { set_LQR(Aq_, Av, 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(Aq_, Av_, B_, Q_, R_, N_, G_, H_, f_, q_, r, g_, h_);}) DEPRECATED("Use set_LQR" |
|
| DEPRECATED ("Use set_LQR", void set_Lxu(const MatrixXs &N) { set_LQR(Aq_, Av_, B_, Q_, R_, N, G_, H_, f_, q_, r_, g_, h_);}) DEPRECATED("Use set_LQR" |
|
const MatrixXs & | get_Aq () const |
| Return the position matrix.
|
|
const MatrixXs & | get_Av () const |
| Return the velocity matrix.
|
|
const MatrixXs & | get_B () const |
| Return the input matrix.
|
|
const VectorXs & | get_f () const |
| Return the dynamics drift.
|
|
const VectorXs & | get_f0 () const |
|
const MatrixXs & | get_Fv () 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 VectorXs & | get_lu () const |
|
const MatrixXs & | get_Lxu () 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_Fq (const MatrixXs &Aq) |
|
void | set_Fu (const MatrixXs &B) |
|
void | set_LQR (const MatrixXs &Aq, const MatrixXs &Av, 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_Luu (const MatrixXs &R) |
|
void | set_lx (const VectorXs &q) |
|
void | set_Lxx (const MatrixXs &Q) |
|
| DifferentialActionModelAbstractTpl (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 differential 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< DifferentialActionDataAbstract > &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< DifferentialActionDataAbstract > &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::DifferentialActionModelLQRTpl< _Scalar >
Linear-quadratic regulator (LQR) differential action model.
A linear-quadratic regulator (LQR) action has a transition model of the form
\[ \begin{equation} \mathbf{\dot{v}} = \mathbf{A_q q + A_v v + 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 diff-lqr.hpp.