Go to the documentation of this file.
9 #ifndef SOBEC_ACTIVATION_QUAD_REF_HPP_
10 #define SOBEC_ACTIVATION_QUAD_REF_HPP_
12 #include <crocoddyl/core/activation-base.hpp>
13 #include <crocoddyl/core/fwd.hpp>
14 #include <crocoddyl/core/utils/exception.hpp>
20 using namespace crocoddyl;
22 template <
typename _Scalar>
25 EIGEN_MAKE_ALIGNED_OPERATOR_NEW
29 typedef ActivationModelAbstractTpl<Scalar>
Base;
35 :
Base(static_cast<std::size_t>(reference.size())), ref(reference){};
38 virtual void calc(
const boost::shared_ptr<ActivationDataAbstract>& data,
39 const Eigen::Ref<const VectorXs>& r) {
40 if (
static_cast<std::size_t
>(r.size()) != nr_) {
41 throw_pretty(
"Invalid argument: "
42 <<
"r has wrong dimension (it should be " +
43 std::to_string(nr_) +
")");
45 data->a_value = (Scalar(0.5) * (r - ref).transpose() * (r - ref))[0];
48 virtual void calcDiff(
const boost::shared_ptr<ActivationDataAbstract>& data,
49 const Eigen::Ref<const VectorXs>& r) {
50 if (
static_cast<std::size_t
>(r.size()) != nr_) {
51 throw_pretty(
"Invalid argument: "
52 <<
"r has wrong dimension (it should be " +
53 std::to_string(nr_) +
")");
59 MatrixXs(data->Arr.diagonal().asDiagonal())
60 .isApprox(MatrixXs::Identity(
static_cast<Eigen::Index
>(nr_),
61 static_cast<Eigen::Index
>(nr_))),
62 "Arr has wrong value");
65 virtual boost::shared_ptr<ActivationDataAbstract>
createData() {
66 boost::shared_ptr<ActivationDataAbstract> data =
67 boost::allocate_shared<ActivationDataAbstract>(
68 Eigen::aligned_allocator<ActivationDataAbstract>(),
this);
69 data->Arr.diagonal().fill((Scalar)1.);
75 if (ref.size() != reference.size()) {
76 throw_pretty(
"Invalid argument: "
77 <<
"weight vector has wrong dimension (it should be " +
78 std::to_string(ref.size()) +
")");
93 #endif // SOBEC_ACTIVATION_QUAD_REF_HPP_
Definition: activation-quad-ref.hpp:23
virtual void calc(const boost::shared_ptr< ActivationDataAbstract > &data, const Eigen::Ref< const VectorXs > &r)
Definition: activation-quad-ref.hpp:38
ActivationModelQuadRefTpl(const VectorXs &reference)
Definition: activation-quad-ref.hpp:34
MathBaseTpl< Scalar > MathBase
Definition: activation-quad-ref.hpp:28
const VectorXs & get_reference() const
Definition: activation-quad-ref.hpp:73
void set_reference(const VectorXs &reference)
Definition: activation-quad-ref.hpp:74
virtual void calcDiff(const boost::shared_ptr< ActivationDataAbstract > &data, const Eigen::Ref< const VectorXs > &r)
Definition: activation-quad-ref.hpp:48
EIGEN_MAKE_ALIGNED_OPERATOR_NEW typedef _Scalar Scalar
Definition: activation-quad-ref.hpp:27
Definition: activation-quad-ref.hpp:19
MathBase::VectorXs VectorXs
Definition: activation-quad-ref.hpp:31
virtual ~ActivationModelQuadRefTpl()
Definition: activation-quad-ref.hpp:36
ActivationModelAbstractTpl< Scalar > Base
Definition: activation-quad-ref.hpp:29
MathBase::MatrixXs MatrixXs
Definition: activation-quad-ref.hpp:32
ActivationDataAbstractTpl< Scalar > ActivationDataAbstract
Definition: activation-quad-ref.hpp:30
virtual boost::shared_ptr< ActivationDataAbstract > createData()
Definition: activation-quad-ref.hpp:65