SLAM
datastructures.h
1 #ifndef DATASTRUCTURES
2 #define DATASTRUCTURES
3 
4 
5 #include <QPointF>
6 #include <QLineF>
7 #include <armadillo>
8 #include <QVector>
9 
13 struct measure_t {
14  qreal angle;
15  qreal distance;
16  int quality;
17 };
18 
22 struct data_t {
25 };
26 
30 struct line_t {
31  QLineF line;
32  qreal error;
33 };
34 
38 struct lineParams_t {
39  int indexStart;
40  int indexEnd;
41  qreal m;
42  qreal b;
43  qreal error;
44  qreal fitsR2;
45 };
46 
51  int indexFirst;
53  qreal angle;
54  QPointF intersection;
55 };
56 
61  int indexFirst;
63  qreal len;
64 };
65 
71 struct area_t {
72 
76  area_t() {
77  pointCount = 0;
78  cornerCount = 0;
79  lineCount = 0;
80  sigma2 = 0;
81  scale = 0;
82  transformableToIndex = 0;
83  nextAreaIndex = 0;
84  intersectionCount = 0;
85  transformable = false;
86  landmarkFinished = false;
87  }
88 
89  int pointCount;
90  QPointF *points;
91  qreal *distanceCoef;
93  QPointF *corners;
94  int lineCount;
95  QLineF *lines;
101  arma::mat rotationMatrix;
102  arma::vec translationVector;
103  double sigma2;
104  double scale;
108 };
109 
114  double scale;
115  arma::mat xd, yd;
116 };
117 
126  position = arma::zeros<arma::mat>(1, 2);
127  zero = arma::zeros<arma::mat>(1, 2);
128  }
129 
135  void addNext(area_t *area, int start) {
136  firstPoint.append(start);
137  position.resize(position.n_rows + 1, 2);
138  position = position * area->rotationMatrix - repmat(area->translationVector.t(), position.n_rows, 1);
139  position.submat(position.n_rows - 1, 0, position.n_rows - 1, 1) = zero;
140  }
141 
142  arma::mat position;
143  QVector<int> firstPoint;
144 
145 private:
146  arma::mat zero;
147 };
148 
152 struct landmark_t {
153  landmark_t() {
154  this->truthFactor = 0;
155  this->type = 0;
156  }
157 
158  qreal truthFactor;
159  int type;
160 };
161 
162 
163 #endif // DATASTRUCTURES
164 
Struktura k ukládání přímek.
Definition: datastructures.h:30
int intersectionCount
Definition: datastructures.h:97
qreal len
Definition: datastructures.h:63
qreal * distanceCoef
Definition: datastructures.h:91
int pointCount
Definition: datastructures.h:89
int indexEnd
Definition: datastructures.h:40
qreal distance
Definition: datastructures.h:15
qreal b
Definition: datastructures.h:42
int quality
Definition: datastructures.h:16
bool landmarkFinished
Definition: datastructures.h:100
Struktura k ukládání průsečíku dvou přímek.
Definition: datastructures.h:50
area_t()
Kontruktor nastavující defaultní hodnoty.
Definition: datastructures.h:76
intersectionParams_t * inParams
Definition: datastructures.h:99
Hlavní struktura aplikace. V této struktůře jsou uložena všechna naměřená data a představuje jednu ot...
Definition: datastructures.h:71
int lineCount
Definition: datastructures.h:94
intersections_t * intersections
Definition: datastructures.h:98
Struktura k ukládání jednoho souboru měření (celá otáčka).
Definition: datastructures.h:22
int indexFirst
Definition: datastructures.h:61
int transformableToIndex
Definition: datastructures.h:106
QPointF * corners
Definition: datastructures.h:93
qreal fitsR2
Definition: datastructures.h:44
QLineF line
Definition: datastructures.h:31
arma::vec translationVector
Definition: datastructures.h:102
double sigma2
Definition: datastructures.h:103
int nextAreaIndex
Definition: datastructures.h:107
qreal error
Definition: datastructures.h:43
bool transformable
Definition: datastructures.h:105
Struktura k ukládání parametrů normalizace mračna bodů.
Definition: datastructures.h:113
Struktura k ukládání důležitých objektů jako rohy a hrany.
Definition: datastructures.h:152
qreal error
Definition: datastructures.h:32
QLineF * lines
Definition: datastructures.h:95
QPointF * points
Definition: datastructures.h:90
lineParams_t * lineParams
Definition: datastructures.h:96
qreal truthFactor
Definition: datastructures.h:158
int indexSecond
Definition: datastructures.h:52
arma::mat rotationMatrix
Definition: datastructures.h:101
Struktura, do které se ukládají nezpracované měření.
Definition: datastructures.h:13
robotPosition_t()
Kontruktor, inicializace výchozí pozice.
Definition: datastructures.h:125
Ukládání parametrů k přímce.
Definition: datastructures.h:38
int cornerCount
Definition: datastructures.h:92
void addNext(area_t *area, int start)
Přidá aktuální pozici do historie a její hodnotu aktualizuje.
Definition: datastructures.h:135
int indexStart
Definition: datastructures.h:39
int indexSecond
Definition: datastructures.h:62
Struktura k ukládáná pozice robota. Aktuální pozice je vždy [0, 0].
Definition: datastructures.h:121
double scale
Definition: datastructures.h:104
int measureCount
Definition: datastructures.h:23
QPointF intersection
Definition: datastructures.h:54
qreal angle
Definition: datastructures.h:53
int type
Definition: datastructures.h:159
Parametry průsečíku.
Definition: datastructures.h:60
measure_t * measure
Definition: datastructures.h:24
int indexFirst
Definition: datastructures.h:51
qreal angle
Definition: datastructures.h:14
qreal m
Definition: datastructures.h:41