9 #ifndef CROCODDYL_CORE_ACTIONS_LQR_HPP_ 10 #define CROCODDYL_CORE_ACTIONS_LQR_HPP_ 14 #include "crocoddyl/core/fwd.hpp" 15 #include "crocoddyl/core/action-base.hpp" 16 #include "crocoddyl/core/states/euclidean.hpp" 20 template <
typename _Scalar>
23 typedef _Scalar Scalar;
29 typedef typename MathBase::VectorXs VectorXs;
30 typedef typename MathBase::MatrixXs MatrixXs;
32 ActionModelLQRTpl(
const std::size_t nx,
const std::size_t nu,
const bool drift_free =
true);
35 virtual void calc(
const boost::shared_ptr<ActionDataAbstract>& data,
const Eigen::Ref<const VectorXs>& x,
36 const Eigen::Ref<const VectorXs>& u);
37 virtual void calc(
const boost::shared_ptr<ActionDataAbstract>& data,
const Eigen::Ref<const VectorXs>& x);
38 virtual void calcDiff(
const boost::shared_ptr<ActionDataAbstract>& data,
const Eigen::Ref<const VectorXs>& x,
39 const Eigen::Ref<const VectorXs>& u);
40 virtual void calcDiff(
const boost::shared_ptr<ActionDataAbstract>& data,
const Eigen::Ref<const VectorXs>& x);
41 virtual boost::shared_ptr<ActionDataAbstract>
createData();
42 virtual bool checkData(
const boost::shared_ptr<ActionDataAbstract>& data);
44 const MatrixXs& get_Fx()
const;
45 const MatrixXs& get_Fu()
const;
46 const VectorXs& get_f0()
const;
47 const VectorXs& get_lx()
const;
48 const VectorXs& get_lu()
const;
49 const MatrixXs& get_Lxx()
const;
50 const MatrixXs& get_Lxu()
const;
51 const MatrixXs& get_Luu()
const;
53 void set_Fx(
const MatrixXs& Fx);
54 void set_Fu(
const MatrixXs& Fu);
55 void set_f0(
const VectorXs& f0);
56 void set_lx(
const VectorXs& lx);
57 void set_lu(
const VectorXs& lu);
58 void set_Lxx(
const MatrixXs& Lxx);
59 void set_Lxu(
const MatrixXs& Lxu);
60 void set_Luu(
const MatrixXs& Luu);
67 virtual void print(std::ostream& os)
const;
85 template <
typename _Scalar>
87 typedef _Scalar Scalar;
90 typedef typename MathBase::VectorXs VectorXs;
92 template <
template <
typename Scalar>
class Model>
95 Luu_u_tmp(VectorXs::Zero(static_cast<Eigen::Index>(model->get_nu()))),
96 Lxx_x_tmp(VectorXs::Zero(static_cast<Eigen::Index>(model->get_state()->get_ndx()))) {
100 Lxx = model->get_Lxx();
101 Luu = model->get_Luu();
102 Lxu = model->get_Lxu();
124 #include "crocoddyl/core/actions/lqr.hxx" 126 #endif // CROCODDYL_CORE_ACTIONS_LQR_HPP_ Abstract class for action model.
MatrixXs Lxx
Hessian of the cost function.
virtual boost::shared_ptr< ActionDataAbstract > createData()
Create the action data.
std::size_t nu_
Control dimension.
virtual void print(std::ostream &os) const
Print relevant information of the LQR model.
VectorXs xnext
evolution state
VectorXs Lx
Jacobian of the cost function.
MatrixXs Fx
Jacobian of the dynamics.
VectorXs Lu
Jacobian of the cost function.
MatrixXs Luu
Hessian of the cost function.
boost::shared_ptr< StateAbstract > state_
Model of the state.
MatrixXs Lxu
Hessian of the cost function.
virtual bool checkData(const boost::shared_ptr< ActionDataAbstract > &data)
Checks that a specific data belongs to this model.
MatrixXs Fu
Jacobian of the dynamics.