sot-core  4.11.4
Hierarchical task solver plug-in for dynamic-graph.
memory-task-sot.hh
Go to the documentation of this file.
1 /*
2  * Copyright 2010,
3  * François Bleibel,
4  * Olivier Stasse,
5  *
6  * CNRS/AIST
7  *
8  */
9 
10 #ifndef __SOT_MEMORY_TASK_HH
11 #define __SOT_MEMORY_TASK_HH
12 
13 #include "sot/core/api.hh"
14 #include <sot/core/matrix-svd.hh>
16 
17 /* --------------------------------------------------------------------- */
18 /* --- CLASS ----------------------------------------------------------- */
19 /* --------------------------------------------------------------------- */
20 
21 namespace dynamicgraph {
22 namespace sot {
23 
25 public: // protected:
26  typedef Eigen::Map<Matrix, Eigen::internal::traits<Matrix>::Alignment>
28  typedef Eigen::Map<const Matrix, Eigen::internal::traits<Matrix>::Alignment>
30 
31  /* Internal memory to reduce the dynamic allocation at task resolution. */
32  dynamicgraph::Vector err, tmpTask, tmpVar, tmpControl;
33  dynamicgraph::Matrix Jt; //( nJ,mJ );
34 
35  dynamicgraph::Matrix JK; //(nJ,mJ);
36 
39 
40  void resizeKernel(const Matrix::Index r, const Matrix::Index c) {
41  if (kernel.rows() != r || kernel.cols() != c) {
42  if (kernelMem.size() < r * c)
43  kernelMem.resize(r, c);
44  new (&kernel) Kernel_t(kernelMem.data(), r, c);
45  }
46  }
47 
49  resizeKernel(r, c);
50  return kernel;
51  }
52 
53 public:
58  MemoryTaskSOT(const Matrix::Index nJ = 0, const Matrix::Index mJ = 0);
59 
60  void display(std::ostream &os) const;
61 
62 private:
63  void initMemory(const Matrix::Index nJ, const Matrix::Index mJ);
64 
65  Matrix kernelMem;
66 };
67 
68 } /* namespace sot */
69 } /* namespace dynamicgraph */
70 
71 #endif // __SOT_MEMORY_TASK_HH
dynamicgraph::sot::MemoryTaskSOT::JK
dynamicgraph::Matrix JK
Definition: memory-task-sot.hh:35
SOT_CORE_EXPORT
#define SOT_CORE_EXPORT
Definition: api.hh:20
dynamicgraph::sot::TaskAbstract::MemoryTaskAbstract
Definition: task-abstract.hh:51
dynamicgraph
Definition: abstract-sot-external-interface.hh:17
dynamicgraph::SVD_t
Eigen::JacobiSVD< Matrix > SVD_t
Definition: matrix-svd.hh:22
dynamicgraph::sot::Index
Eigen::VectorXd::Index Index
Definition: robot-utils.hh:39
dynamicgraph::sot::MemoryTaskSOT::getKernel
Kernel_t & getKernel(const Matrix::Index r, const Matrix::Index c)
Definition: memory-task-sot.hh:48
dynamicgraph::sot::MemoryTaskSOT::tmpVar
dynamicgraph::Vector tmpVar
Definition: memory-task-sot.hh:32
dynamicgraph::sot::MemoryTaskSOT::svd
SVD_t svd
Definition: memory-task-sot.hh:37
api.hh
dynamicgraph::sot::MemoryTaskSOT::kernel
Kernel_t kernel
Definition: memory-task-sot.hh:38
dynamicgraph::sot::MemoryTaskSOT::Kernel_t
Eigen::Map< Matrix, Eigen::internal::traits< Matrix >::Alignment > Kernel_t
Definition: memory-task-sot.hh:27
dynamicgraph::sot::MemoryTaskSOT::Jt
dynamicgraph::Matrix Jt
Definition: memory-task-sot.hh:33
dynamicgraph::sot::MemoryTaskSOT
Definition: memory-task-sot.hh:24
matrix-svd.hh
task-abstract.hh
dynamicgraph::sot::MemoryTaskSOT::KernelConst_t
Eigen::Map< const Matrix, Eigen::internal::traits< Matrix >::Alignment > KernelConst_t
Definition: memory-task-sot.hh:29
dynamicgraph::sot::MemoryTaskSOT::resizeKernel
void resizeKernel(const Matrix::Index r, const Matrix::Index c)
Definition: memory-task-sot.hh:40