cost-base.hxx
1 // BSD 3-Clause License
3 //
4 // Copyright (C) 2018-2020, LAAS-CNRS, University of Edinburgh
5 // Copyright note valid unless otherwise stated in individual files.
6 // All rights reserved.
8 
9 namespace crocoddyl {
10 
11 template <typename Scalar>
12 CostModelAbstractTpl<Scalar>::CostModelAbstractTpl(boost::shared_ptr<StateMultibody> state,
13  boost::shared_ptr<ActivationModelAbstract> activation,
14  const std::size_t& nu)
15  : state_(state), activation_(activation), nu_(nu), unone_(VectorXs::Zero(nu)) {}
16 
17 template <typename Scalar>
18 CostModelAbstractTpl<Scalar>::CostModelAbstractTpl(boost::shared_ptr<StateMultibody> state,
19  boost::shared_ptr<ActivationModelAbstract> activation)
20  : state_(state), activation_(activation), nu_(state->get_nv()), unone_(VectorXs::Zero(state->get_nv())) {}
21 
22 template <typename Scalar>
23 CostModelAbstractTpl<Scalar>::CostModelAbstractTpl(boost::shared_ptr<StateMultibody> state, const std::size_t& nr,
24  const std::size_t& nu)
25  : state_(state), activation_(boost::make_shared<ActivationModelQuad>(nr)), nu_(nu), unone_(VectorXs::Zero(nu)) {}
26 
27 template <typename Scalar>
28 CostModelAbstractTpl<Scalar>::CostModelAbstractTpl(boost::shared_ptr<StateMultibody> state, const std::size_t& nr)
29  : state_(state),
30  activation_(boost::make_shared<ActivationModelQuad>(nr)),
31  nu_(state->get_nv()),
32  unone_(VectorXs::Zero(state->get_nv())) {}
33 
34 template <typename Scalar>
35 CostModelAbstractTpl<Scalar>::~CostModelAbstractTpl() {}
36 
37 template <typename Scalar>
38 void CostModelAbstractTpl<Scalar>::calc(const boost::shared_ptr<CostDataAbstract>& data,
39  const Eigen::Ref<const VectorXs>& x) {
40  calc(data, x, unone_);
41 }
42 
43 template <typename Scalar>
44 void CostModelAbstractTpl<Scalar>::calcDiff(const boost::shared_ptr<CostDataAbstract>& data,
45  const Eigen::Ref<const VectorXs>& x) {
46  calcDiff(data, x, unone_);
47 }
48 
49 template <typename Scalar>
50 boost::shared_ptr<CostDataAbstractTpl<Scalar> > CostModelAbstractTpl<Scalar>::createData(
51  DataCollectorAbstract* const data) {
52  return boost::make_shared<CostDataAbstract>(this, data);
53 }
54 
55 template <typename Scalar>
56 const boost::shared_ptr<StateMultibodyTpl<Scalar> >& CostModelAbstractTpl<Scalar>::get_state() const {
57  return state_;
58 }
59 
60 template <typename Scalar>
61 const boost::shared_ptr<ActivationModelAbstractTpl<Scalar> >& CostModelAbstractTpl<Scalar>::get_activation() const {
62  return activation_;
63 }
64 
65 template <typename Scalar>
66 const std::size_t& CostModelAbstractTpl<Scalar>::get_nu() const {
67  return nu_;
68 }
69 
70 template <typename Scalar>
71 template <class T>
72 void CostModelAbstractTpl<Scalar>::set_reference(T ref) {
73  set_referenceImpl(typeid(ref), &ref);
74 }
75 
76 template <typename Scalar>
77 void CostModelAbstractTpl<Scalar>::set_referenceImpl(const std::type_info&, const void*) {
78  throw_pretty("It has not been implemented the set_referenceImpl() function");
79 }
80 
81 template <typename Scalar>
82 template <class T>
83 void CostModelAbstractTpl<Scalar>::get_reference(T& ref) {
84  get_referenceImpl(typeid(ref), &ref);
85 }
86 
87 template <typename Scalar>
88 void CostModelAbstractTpl<Scalar>::get_referenceImpl(const std::type_info&, void*) {
89  throw_pretty("It has not been implemented the set_referenceImpl() function");
90 }
91 
92 } // namespace crocoddyl
Definition: action-base.hxx:11