9 #ifndef CROCODDYL_CORE_ACTIONS_UNICYCLE_HPP_
10 #define CROCODDYL_CORE_ACTIONS_UNICYCLE_HPP_
14 #include "crocoddyl/core/action-base.hpp"
15 #include "crocoddyl/core/fwd.hpp"
16 #include "crocoddyl/core/states/euclidean.hpp"
19 template <
typename _Scalar>
22 EIGEN_MAKE_ALIGNED_OPERATOR_NEW
24 typedef _Scalar Scalar;
29 typedef typename MathBase::VectorXs VectorXs;
30 typedef typename MathBase::Vector2s Vector2s;
35 virtual void calc(
const boost::shared_ptr<ActionDataAbstract>& data,
36 const Eigen::Ref<const VectorXs>& x,
37 const Eigen::Ref<const VectorXs>& u);
38 virtual void calc(
const boost::shared_ptr<ActionDataAbstract>& data,
39 const Eigen::Ref<const VectorXs>& x);
40 virtual void calcDiff(
const boost::shared_ptr<ActionDataAbstract>& data,
41 const Eigen::Ref<const VectorXs>& x,
42 const Eigen::Ref<const VectorXs>& u);
43 virtual void calcDiff(
const boost::shared_ptr<ActionDataAbstract>& data,
44 const Eigen::Ref<const VectorXs>& x);
45 virtual boost::shared_ptr<ActionDataAbstract>
createData();
46 virtual bool checkData(
const boost::shared_ptr<ActionDataAbstract>& data);
48 const Vector2s& get_cost_weights()
const;
49 void set_cost_weights(
const Vector2s& weights);
51 Scalar get_dt()
const;
52 void set_dt(
const Scalar dt);
59 virtual void print(std::ostream& os)
const;
66 Vector2s cost_weights_;
70 template <
typename _Scalar>
72 EIGEN_MAKE_ALIGNED_OPERATOR_NEW
74 typedef _Scalar Scalar;
88 template <
template <
typename Scalar>
class Model>
90 Fx.diagonal().array() = Scalar(1.);
99 #include "crocoddyl/core/actions/unicycle.hxx"
Abstract class for action model.
boost::shared_ptr< StateAbstract > state_
Model of the state.
std::size_t nu_
Control dimension.
virtual void print(std::ostream &os) const
Print relevant information of the unicycle model.
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.
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.
virtual bool checkData(const boost::shared_ptr< ActionDataAbstract > &data)
Checks that a specific data belongs to this model.
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.
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.
virtual boost::shared_ptr< ActionDataAbstract > createData()
Create the action data.
VectorXs xnext
evolution state
MatrixXs Fx
Jacobian of the dynamics w.r.t. the state .
MatrixXs Fu
Jacobian of the dynamics w.r.t. the control .
MatrixXs Luu
Hessian of the cost w.r.t. the control .
VectorXs Lx
Jacobian of the cost w.r.t. the state .
MatrixXs Lxx
Hessian of the cost w.r.t. the state .
VectorXs Lu
Jacobian of the cost w.r.t. the control .
MatrixXs Fx
Jacobian of the dynamics w.r.t. the state .