GCC Code Coverage Report


Directory: ./
File: include/sot/core/task-abstract.hh
Date: 2024-12-13 12:22:33
Exec Total Coverage
Lines: 0 2 0.0%
Branches: 0 0 -%

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_TASKABSTRACT_H__
11 #define __SOT_TASKABSTRACT_H__
12
13 /* --------------------------------------------------------------------- */
14 /* --- INCLUDE --------------------------------------------------------- */
15 /* --------------------------------------------------------------------- */
16
17 /* Matrix */
18 #include <dynamic-graph/linear-algebra.h>
19
20 #include <Eigen/SVD>
21
22 /* STD */
23 #include <string>
24
25 /* SOT */
26 #include <dynamic-graph/all-signals.h>
27 #include <dynamic-graph/entity.h>
28
29 #include <sot/core/multi-bound.hh>
30
31 #include "sot/core/api.hh"
32
33 /* --------------------------------------------------------------------- */
34 /* --- CLASS ----------------------------------------------------------- */
35 /* --------------------------------------------------------------------- */
36
37 namespace dynamicgraph {
38 namespace sot {
39
40 /// Hierarchical element of the stack of tasks.
41 ///
42 /// A task computes a value and a Jacobian as output signals.
43 /// Once stacked into a solver, the solver will compute the control
44 /// vector that makes the task values converge toward zero in the
45 /// order defined by the priority levels.
46 ///
47 /// \image html pictures/task.png "Task diagram: Task types derive from
48 /// TaskAbstract. The value and Jacobian of a Task are computed from the
49 /// features that are stored in the task.
50
51 class SOT_CORE_EXPORT TaskAbstract : public dynamicgraph::Entity {
52 public:
53 /* Use a derivative of this class to store computational memory. */
54 class MemoryTaskAbstract {
55 public:
56 int timeLastChange;
57
58 public:
59 MemoryTaskAbstract(void) : timeLastChange(0){};
60 virtual ~MemoryTaskAbstract(void){};
61
62 public:
63 virtual void display(std::ostream &os) const = 0;
64 friend std::ostream &operator<<(std::ostream &os,
65 const MemoryTaskAbstract &tcm) {
66 tcm.display(os);
67 return os;
68 }
69 };
70
71 public:
72 MemoryTaskAbstract *memoryInternal;
73
74 protected:
75 void taskRegistration(void);
76
77 public:
78 TaskAbstract(const std::string &n);
79
80 public: /* --- SIGNALS --- */
81 dynamicgraph::SignalTimeDependent<VectorMultiBound, int> taskSOUT;
82 dynamicgraph::SignalTimeDependent<dynamicgraph::Matrix, int> jacobianSOUT;
83 };
84
85 } /* namespace sot */
86 } /* namespace dynamicgraph */
87
88 #endif /* #ifndef __SOT_TASKABSTRACT_H__ */
89