10 #ifndef CROCODDYL_CORE_NUMDIFF_ACTIVATION_HPP_
11 #define CROCODDYL_CORE_NUMDIFF_ACTIVATION_HPP_
13 #include "crocoddyl/core/activation-base.hpp"
14 #include "crocoddyl/core/fwd.hpp"
18 template <
typename _Scalar>
21 EIGEN_MAKE_ALIGNED_OPERATOR_NEW
24 typedef _Scalar Scalar;
29 typedef typename MathBase::VectorXs VectorXs;
30 typedef typename MathBase::MatrixXs MatrixXs;
47 virtual void calc(
const std::shared_ptr<ActivationDataAbstract>& data,
48 const Eigen::Ref<const VectorXs>& r)
override;
53 virtual void calcDiff(
const std::shared_ptr<ActivationDataAbstract>& data,
54 const Eigen::Ref<const VectorXs>& r)
override;
61 virtual std::shared_ptr<ActivationDataAbstract>
createData()
override;
63 template <
typename NewScalar>
95 template <
typename _Scalar>
97 EIGEN_MAKE_ALIGNED_OPERATOR_NEW
99 typedef _Scalar Scalar;
101 typedef typename MathBase::VectorXs VectorXs;
103 typedef typename MathBase::MatrixXs MatrixXs;
111 template <
template <
typename Scalar>
class Model>
114 dr(model->get_model()->get_nr()),
115 rp(model->get_model()->get_nr()),
116 Arr_(Arr.rows(), Arr.cols()) {
120 data_0 = model->get_model()->createData();
121 const std::size_t nr = model->get_model()->get_nr();
123 for (std::size_t i = 0; i < nr; ++i) {
124 data_rp.push_back(model->get_model()->createData());
128 for (std::size_t i = 0; i < 4; ++i) {
129 data_r2p.push_back(model->get_model()->createData());
137 std::vector<std::shared_ptr<Base> >
139 std::vector<std::shared_ptr<Base> >
153 #include "crocoddyl/core/numdiff/activation.hxx"
const std::shared_ptr< Base > & get_model() const
Get the model_ object.
virtual void calcDiff(const std::shared_ptr< ActivationDataAbstract > &data, const Eigen::Ref< const VectorXs > &r) override
const Scalar get_disturbance() const
Return the disturbance constant used in the numerical differentiation routine.
void set_disturbance(const Scalar disturbance)
Modify the disturbance constant used in the numerical differentiation routine.
virtual std::shared_ptr< ActivationDataAbstract > createData() override
Create a Data object from the given model.
virtual void calc(const std::shared_ptr< ActivationDataAbstract > &data, const Eigen::Ref< const VectorXs > &r) override
ActivationModelNumDiffTpl(std::shared_ptr< Base > model)
Construct a new ActivationModelNumDiff object.
virtual ~ActivationModelNumDiffTpl()
Destroy the ActivationModelNumDiff object.
std::vector< std::shared_ptr< Base > > data_r2p
The temporary data associated with the input variation.
ActivationDataNumDiffTpl(Model< Scalar > *const model)
Construct a new ActivationDataNumDiff object.
std::shared_ptr< Base > data_0
The data that contains the final results.
std::vector< std::shared_ptr< Base > > data_rp
The temporary data associated with the input variation.