GCC Code Coverage Report
Directory: ./ Exec Total Coverage
File: include/sot/core/task-abstract.hh Lines: 0 2 0.0 %
Date: 2023-03-13 12:09:37 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__ */