impulse-base.hxx
1 // BSD 3-Clause License
3 //
4 // Copyright (C) 2018-2019, LAAS-CNRS
5 // Copyright note valid unless otherwise stated in individual files.
6 // All rights reserved.
8 
9 #include "crocoddyl/core/utils/exception.hpp"
10 #include "crocoddyl/multibody/impulse-base.hpp"
11 
12 namespace crocoddyl {
13 
14 template <typename Scalar>
15 ImpulseModelAbstractTpl<Scalar>::ImpulseModelAbstractTpl(boost::shared_ptr<StateMultibody> state,
16  const std::size_t& ni)
17  : state_(state), ni_(ni) {}
18 
19 template <typename Scalar>
20 ImpulseModelAbstractTpl<Scalar>::~ImpulseModelAbstractTpl() {}
21 
22 template <typename Scalar>
23 void ImpulseModelAbstractTpl<Scalar>::updateForceDiff(const boost::shared_ptr<ImpulseDataAbstract>& data,
24  const MatrixXs& df_dq) const {
25  assert_pretty(
26  (static_cast<std::size_t>(df_dq.rows()) == ni_ || static_cast<std::size_t>(df_dq.cols()) == state_->get_nv()),
27  "df_dq has wrong dimension");
28  data->df_dq = df_dq;
29 }
30 
31 template <typename Scalar>
32 boost::shared_ptr<ImpulseDataAbstractTpl<Scalar> > ImpulseModelAbstractTpl<Scalar>::createData(
33  pinocchio::DataTpl<Scalar>* const data) {
34  return boost::make_shared<ImpulseDataAbstract>(this, data);
35 }
36 
37 template <typename Scalar>
38 const boost::shared_ptr<StateMultibodyTpl<Scalar> >& ImpulseModelAbstractTpl<Scalar>::get_state() const {
39  return state_;
40 }
41 
42 template <typename Scalar>
43 const std::size_t& ImpulseModelAbstractTpl<Scalar>::get_ni() const {
44  return ni_;
45 }
46 
47 } // namespace crocoddyl
Definition: action-base.hxx:11