GCC Code Coverage Report


Directory: ./
File: include/sot/core/feature-generic.hh
Date: 2024-12-13 12:22:33
Exec Total Coverage
Lines: 2 3 66.7%
Branches: 2 6 33.3%

Line Branch Exec Source
1 /*
2 * Copyright 2010,
3 * François Bleibel,
4 * Olivier Stasse,
5 *
6 * CNRS/AIST
7 *
8 */
9
10 #ifndef __SOT_FEATURE_GENERIC_HH__
11 #define __SOT_FEATURE_GENERIC_HH__
12
13 /* --------------------------------------------------------------------- */
14 /* --- INCLUDE --------------------------------------------------------- */
15 /* --------------------------------------------------------------------- */
16
17 /* SOT */
18 #include <sot/core/exception-task.hh>
19 #include <sot/core/feature-abstract.hh>
20
21 /* --------------------------------------------------------------------- */
22 /* --- API ------------------------------------------------------------- */
23 /* --------------------------------------------------------------------- */
24
25 #if defined(WIN32)
26 #if defined(feature_generic_EXPORTS)
27 #define SOTFEATUREGENERIC_EXPORT __declspec(dllexport)
28 #else
29 #define SOTFEATUREGENERIC_EXPORT __declspec(dllimport)
30 #endif
31 #else
32 #define SOTFEATUREGENERIC_EXPORT
33 #endif
34
35 /* --------------------------------------------------------------------- */
36 /* --- CLASS ----------------------------------------------------------- */
37 /* --------------------------------------------------------------------- */
38
39 namespace dynamicgraph {
40 namespace sot {
41
42 /*!
43 \class FeatureGeneric
44 \brief Class that defines a generic implementation of the abstract interface
45 for features.
46
47 This class is very useful if the feature can be easily computed using
48 the basic operator provided. For instance a free space controller on a
49 end-effector is basically directly computed from the Jacobian provided
50 by dyn and some appropriate addition and soustraction.
51 Instead of building a specific feature for this, it is possible to use the
52 signals and plug the computed error, Jacobian and activation to the input
53 of this generic feature implementation.
54
55 */
56 class SOTFEATUREGENERIC_EXPORT FeatureGeneric
57 : public FeatureAbstract,
58 FeatureReferenceHelper<FeatureGeneric> {
59 public:
60 /*! Field storing the class name. */
61 static const std::string CLASS_NAME;
62 /*! Returns the name of the class. */
63 virtual const std::string &getClassName(void) const { return CLASS_NAME; }
64
65 protected:
66 dynamicgraph::Vector::Index dimensionDefault;
67
68 /* --- SIGNALS ------------------------------------------------------------ */
69 public:
70 /*! \name dynamicgraph::Signals
71 @{
72 */
73 /*! \name Input signals
74 @{
75 */
76 /*! \brief Input for the error. */
77 dynamicgraph::SignalPtr<dynamicgraph::Vector, int> errorSIN;
78
79 /*! \brief Input for the Jacobian. */
80 dynamicgraph::SignalPtr<dynamicgraph::Matrix, int> jacobianSIN;
81
82 /*! @} */
83
84 /*! \name Output signals
85 @{
86 */
87 /*! \brief Publish the jacobian of the feature according to the robot state.
88 */
89 using FeatureAbstract::jacobianSOUT;
90
91 /*! \brief Publish the error between the desired and the current value of the
92 feature. */
93 using FeatureAbstract::errorSOUT;
94
95 public:
96 /*! \brief Default constructor */
97 FeatureGeneric(const std::string &name);
98
99 /*! \brief Default destructor */
100 4 virtual ~FeatureGeneric(void) {}
101
102 /*! \brief Get the dimension of the feature. */
103 virtual unsigned int &getDimension(unsigned int &dim, int time);
104
105 /*! \name Methods to trigger computation related to this feature.
106 @{
107 */
108
109 /*! \brief Compute the error between the desired value and the value itself.
110 */
111 virtual dynamicgraph::Vector &computeError(dynamicgraph::Vector &res,
112 int time);
113
114 /*! \brief Compute the Jacobian of the value according to the robot state.. */
115 virtual dynamicgraph::Matrix &computeJacobian(dynamicgraph::Matrix &res,
116 int time);
117
118 /*! @} */
119
120 /*! \brief Display the information related to this generic implementation. */
121 virtual void display(std::ostream &os) const;
122
123 /*! \name Dealing with the reference value to be reach with this feature.
124 @{
125 */
126
2/6
✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 9 taken 1 times.
✗ Branch 10 not taken.
81 DECLARE_REFERENCE_FUNCTIONS(FeatureGeneric);
127 /*! @} */
128 };
129
130 } /* namespace sot */
131 } /* namespace dynamicgraph */
132
133 #endif // #ifndef __SOT_FEATURE_GENERIC_HH__
134
135 /*
136 * Local variables:
137 * c-basic-offset: 2
138 * End:
139 */
140