Go to the documentation of this file.
   10 #define SOBEC_LPF_HPP_ 
   12 #include <crocoddyl/core/action-base.hpp> 
   13 #include <crocoddyl/core/activations/quadratic-barrier.hpp> 
   14 #include <crocoddyl/core/diff-action-base.hpp> 
   15 #include <crocoddyl/core/fwd.hpp> 
   16 #include <crocoddyl/multibody/states/multibody.hpp> 
   17 #include <pinocchio/multibody/model.hpp> 
   22 using namespace crocoddyl;
 
   24 template <
typename _Scalar>
 
   27   EIGEN_MAKE_ALIGNED_OPERATOR_NEW
 
   31   typedef ActionModelAbstractTpl<Scalar> 
Base;
 
   34   typedef DifferentialActionModelAbstractTpl<Scalar>
 
   41   typedef ActivationModelQuadraticBarrierTpl<Scalar>
 
   46       boost::shared_ptr<DifferentialActionModelAbstract> model,
 
   47       std::vector<std::string> lpf_joint_names = {},
 
   48       const Scalar& time_step = Scalar(1e-3),
 
   49       const bool& with_cost_residual = 
true, 
const Scalar& fc = 0,
 
   50       const bool& tau_plus_integration = 
true, 
const int& filter = 0);
 
   53   virtual void calc(
const boost::shared_ptr<ActionDataAbstract>& data,
 
   54                     const Eigen::Ref<const VectorXs>& 
y,
 
   55                     const Eigen::Ref<const VectorXs>& w);
 
   57   virtual void calc(
const boost::shared_ptr<ActionDataAbstract>& data,
 
   58                     const Eigen::Ref<const VectorXs>& 
y);
 
   60   virtual void calcDiff(
const boost::shared_ptr<ActionDataAbstract>& data,
 
   61                         const Eigen::Ref<const VectorXs>& 
y,
 
   62                         const Eigen::Ref<const VectorXs>& w);
 
   64   virtual void calcDiff(
const boost::shared_ptr<ActionDataAbstract>& data,
 
   65                         const Eigen::Ref<const VectorXs>& 
y);
 
   67   virtual boost::shared_ptr<ActionDataAbstract> createData();
 
   68   virtual bool checkData(
const boost::shared_ptr<ActionDataAbstract>& data);
 
   70   virtual void quasiStatic(
const boost::shared_ptr<ActionDataAbstract>& data,
 
   71                            Eigen::Ref<VectorXs> u,
 
   72                            const Eigen::Ref<const VectorXs>& 
x,
 
   73                            const std::size_t maxiter = 100,
 
   74                            const Scalar tol = Scalar(1e-9));
 
   76   const boost::shared_ptr<DifferentialActionModelAbstract>& get_differential()
 
   78   const Scalar& get_dt() 
const;
 
   79   const Scalar& get_fc() 
const;
 
   82   const std::size_t& 
get_nw()
 const { 
return nw_; };
 
   83   const std::size_t& 
get_ntau()
 const { 
return ntau_; };
 
   84   const std::size_t& 
get_ny()
 const { 
return ny_; };
 
   87     return lpf_joint_names_;
 
   91     return lpf_torque_ids_;
 
   94     return non_lpf_torque_ids_;
 
   97   void set_dt(
const Scalar& dt);
 
   98   void set_fc(
const Scalar& fc);
 
   99   void set_alpha(
const Scalar& alpha);
 
  100   void set_differential(
 
  101       boost::shared_ptr<DifferentialActionModelAbstract> model);
 
  104   void set_control_reg_cost(
const Scalar& cost_weight_w_reg,
 
  105                             const VectorXs& cost_ref_w_reg);
 
  106   void set_control_lim_cost(
const Scalar& cost_weight_w_lim);
 
  108   void compute_alpha(
const Scalar& fc);
 
  111   using Base::has_control_limits_;  
 
  124   boost::shared_ptr<ActivationModelQuadraticBarrier>
 
  128   boost::shared_ptr<DifferentialActionModelAbstract> differential_;
 
  132   bool with_cost_residual_;
 
  135   Scalar tauReg_weight_;  
 
  142   Scalar tauLim_weight_;       
 
  143   bool tau_plus_integration_;  
 
  146   boost::shared_ptr<PinocchioModel> pin_model_;  
 
  148   std::vector<std::string>
 
  158   std::vector<int> non_lpf_joint_ids_;   
 
  159   std::vector<int> non_lpf_torque_ids_;  
 
  164 template <
typename _Scalar>
 
  167   EIGEN_MAKE_ALIGNED_OPERATOR_NEW
 
  171   typedef ActionDataAbstractTpl<Scalar> 
Base;
 
  175   typedef DifferentialActionDataAbstractTpl<Scalar>
 
  177   typedef ActivationDataQuadraticBarrierTpl<Scalar>
 
  180   template <
template <
typename Scalar> 
class Model>
 
  182       : 
Base(model), tau_tmp(model->get_nu()) {
 
  184     differential = model->get_differential()->createData();
 
  185     const std::size_t& ndy = model->get_state()->get_ndx();
 
  186     dy = VectorXs::Zero(ndy);
 
  188     activation = boost::static_pointer_cast<ActivationDataQuadraticBarrier>(
 
  189         model->activation_model_tauLim_->createData());
 
  193   boost::shared_ptr<DifferentialActionDataAbstractTpl<Scalar> > 
differential;
 
  198   boost::shared_ptr<ActivationDataQuadraticBarrier> 
activation;  
 
  221 #endif  // SOBEC_LPF_HPP_ 
  
 
std::size_t ny_
Augmented state dimension : nq+nv+ntau.
Definition: action.hpp:120
 
const std::vector< int > & get_non_lpf_torque_ids() const
Definition: action.hpp:93
 
MathBaseTpl< Scalar > MathBase
Definition: action.hpp:30
 
const Scalar & get_alpha() const
Definition: action.hpp:80
 
const std::size_t & get_nw() const
Definition: action.hpp:82
 
ActionDataAbstractTpl< Scalar > ActionDataAbstract
Definition: action.hpp:33
 
DifferentialActionDataAbstractTpl< Scalar > DifferentialActionDataAbstract
Definition: action.hpp:176
 
const std::size_t & get_ny() const
Definition: action.hpp:84
 
MathBase::VectorXs VectorXs
Definition: action.hpp:36
 
ActionModelAbstractTpl< Scalar > Base
Definition: action.hpp:31
 
EIGEN_MAKE_ALIGNED_OPERATOR_NEW typedef _Scalar Scalar
Definition: action.hpp:169
 
ActivationBoundsTpl< Scalar > ActivationBounds
Definition: action.hpp:43
 
const std::size_t & get_ntau() const
Definition: action.hpp:83
 
DifferentialActionModelAbstractTpl< Scalar > DifferentialActionModelAbstract
Definition: action.hpp:35
 
std::size_t nw_
< Neutral state
Definition: action.hpp:118
 
pinocchio::DataTpl< Scalar > PinocchioData
Definition: action.hpp:174
 
IntegratedActionDataLPFTpl< Scalar > Data
Definition: action.hpp:32
 
boost::shared_ptr< ActivationModelQuadraticBarrier > activation_model_tauLim_
< Model of the state
Definition: action.hpp:125
 
VectorXs tau_tmp
Definition: action.hpp:202
 
std::size_t ntau_
Filtered torque dimension ("lpf" dimension)
Definition: action.hpp:119
 
EIGEN_MAKE_ALIGNED_OPERATOR_NEW typedef _Scalar Scalar
Definition: action.hpp:29
 
Definition: activation-quad-ref.hpp:19
 
MathBase::VectorXs VectorXs
Definition: action.hpp:172
 
StateMultibodyTpl< Scalar > StateMultibody
Definition: action.hpp:39
 
boost::shared_ptr< ActivationDataQuadraticBarrier > activation
Definition: action.hpp:198
 
const std::vector< std::string > & get_lpf_joint_names() const
Definition: action.hpp:86
 
const std::vector< int > & get_lpf_torque_ids() const
Definition: action.hpp:90
 
pinocchio::ModelTpl< Scalar > PinocchioModel
Definition: action.hpp:40
 
Definition: action.hpp:25
 
MathBase::MatrixXs MatrixXs
Definition: action.hpp:173
 
IntegratedActionDataLPFTpl(Model< Scalar > *const model)
Definition: action.hpp:181
 
VectorXs dy
Definition: action.hpp:194
 
ActivationModelQuadraticBarrierTpl< Scalar > ActivationModelQuadraticBarrier
Definition: action.hpp:42
 
MathBase::MatrixXs MatrixXs
Definition: action.hpp:37
 
ActivationDataQuadraticBarrierTpl< Scalar > ActivationDataQuadraticBarrier
Definition: action.hpp:178
 
boost::shared_ptr< DifferentialActionDataAbstractTpl< Scalar > > differential
Definition: action.hpp:193
 
StateLPFTpl< Scalar > StateLPF
Definition: action.hpp:38
 
MathBaseTpl< Scalar > MathBase
Definition: action.hpp:170
 
virtual ~IntegratedActionDataLPFTpl()
Definition: action.hpp:191
 
ActionDataAbstractTpl< Scalar > Base
Definition: action.hpp:171
 
Definition: action.hpp:165