RTAB-Map 0.23.10
Loading...
Searching...
No Matches
RtabmapEvent.h
1/*
2Copyright (c) 2010-2016, Mathieu Labbe - IntRoLab - Universite de Sherbrooke
3All rights reserved.
4
5Redistribution and use in source and binary forms, with or without
6modification, are permitted provided that the following conditions are met:
7 * Redistributions of source code must retain the above copyright
8 notice, this list of conditions and the following disclaimer.
9 * Redistributions in binary form must reproduce the above copyright
10 notice, this list of conditions and the following disclaimer in the
11 documentation and/or other materials provided with the distribution.
12 * Neither the name of the Universite de Sherbrooke nor the
13 names of its contributors may be used to endorse or promote products
14 derived from this software without specific prior written permission.
15
16THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
17ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
18WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
19DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY
20DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
21(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
22LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
23ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
24(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
25SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
26*/
27
28#ifndef RTABMAPEVENT_H_
29#define RTABMAPEVENT_H_
30
31
32
33#include <rtabmap/utilite/UEvent.h>
35#include "rtabmap/core/Statistics.h"
36#include "rtabmap/core/Parameters.h"
37
38namespace rtabmap
39{
40
42class RtabmapEvent : public UEvent
43{
44public:
45 RtabmapEvent(const Statistics & stats) :
46 UEvent(0),
47 _stats(stats) {}
48
49 virtual ~RtabmapEvent() {}
50 const Statistics & getStats() const {return _stats;}
51 virtual std::string getClassName() const {return std::string("RtabmapEvent");}
52
53private:
54 Statistics _stats;
55};
56
57class RtabmapEventCmd : public UEvent
58{
59public:
60 enum dummy {d}; // Hack, to fix Eclipse complaining about not defined Cmd enum ?!
61 enum Cmd {
62 kCmdUndef,
63 kCmdInit, // params: [string] database path + ParametersMap
64 kCmdResetMemory,
65 kCmdClose, // params: [bool] database saved (default true), [string] output database path (empty=use same database to save, only work when Db/Sqlite3InMemory=true)
66 kCmdUpdateParams, // params: ParametersMap
67 kCmdDumpMemory,
68 kCmdDumpPrediction,
69 kCmdGenerateDOTGraph, // params: [bool] global, [string] path, if global=false: [int] id, [int] margin
70 kCmdExportPoses, // params: [bool] global, [bool] optimized, [string] path, [int] type (0=raw format, 1=RGBD-SLAM format, 2=KITTI format, 3=TORO, 4=g2o)
71 kCmdCleanDataBuffer,
72 kCmdPublish3DMap, // params: [bool] global, [bool] optimized, [bool] graphOnly
73 kCmdRepublishData, // params: [vector<int>] ids
74 kCmdTriggerNewMap,
75 kCmdPause,
76 kCmdResume,
77 kCmdGoal, // params: [string] label or [int] location ID
78 kCmdCancelGoal,
79 kCmdLabel, // params: [string] label, [int] location ID
80 kCmdRemoveLabel // params: [string] label
81 };
82public:
83 RtabmapEventCmd(Cmd cmd, const ParametersMap & parameters = ParametersMap()) :
84 UEvent(0),
85 cmd_(cmd),
86 parameters_(parameters){}
87 RtabmapEventCmd(Cmd cmd, const UVariant & value1, const ParametersMap & parameters = ParametersMap()) :
88 UEvent(0),
89 cmd_(cmd),
90 value1_(value1),
91 parameters_(parameters){}
92 RtabmapEventCmd(Cmd cmd, const UVariant & value1, const UVariant & value2, const ParametersMap & parameters = ParametersMap()) :
93 UEvent(0),
94 cmd_(cmd),
95 value1_(value1),
96 value2_(value2),
97 parameters_(parameters){}
98 RtabmapEventCmd(Cmd cmd, const UVariant & value1, const UVariant & value2, const UVariant & value3, const ParametersMap & parameters = ParametersMap()) :
99 UEvent(0),
100 cmd_(cmd),
101 value1_(value1),
102 value2_(value2),
103 value3_(value3),
104 parameters_(parameters){}
105 RtabmapEventCmd(Cmd cmd, const UVariant & value1, const UVariant & value2, const UVariant & value3, const UVariant & value4, const ParametersMap & parameters = ParametersMap()) :
106 UEvent(0),
107 cmd_(cmd),
108 value1_(value1),
109 value2_(value2),
110 value3_(value3),
111 value4_(value4),
112 parameters_(parameters){}
113
114 virtual ~RtabmapEventCmd() {}
115 Cmd getCmd() const {return cmd_;}
116
117 const UVariant & value1() const {return value1_;}
118 const UVariant & value2() const {return value2_;}
119 const UVariant & value3() const {return value3_;}
120 const UVariant & value4() const {return value4_;}
121
122 const ParametersMap & getParameters() const {return parameters_;}
123
124 virtual std::string getClassName() const {return std::string("RtabmapEventCmd");}
125
126private:
127 Cmd cmd_;
128 UVariant value1_;
129 UVariant value2_;
130 UVariant value3_;
131 UVariant value4_;
132 ParametersMap parameters_;
133};
134
136{
137public:
138 enum dummy {d}; // Hack, to fix Eclipse complaining about not defined Status enum ?!
139 enum Status {
140 kInitializing,
141 kInitialized,
142 kClosing,
143 kClosed,
144 kInfo,
145 kError
146 };
147
148public:
149 RtabmapEventInit(Status status, const std::string & info = std::string()) :
150 UEvent(0),
151 _status(status),
152 _info(info)
153 {}
154
155 // for convenience
156 RtabmapEventInit(const std::string & info) :
157 UEvent(0),
158 _status(kInfo),
159 _info(info)
160 {}
161
162 Status getStatus() const {return _status;}
163 const std::string & getInfo() const {return _info;}
164
165 virtual ~RtabmapEventInit() {}
166 virtual std::string getClassName() const {return std::string("RtabmapEventInit");}
167private:
168 Status _status;
169 std::string _info; // "Loading signatures", "Loading words" ...
170};
171
173{
174public:
175 RtabmapEvent3DMap(int codeError = 0):
176 UEvent(codeError){}
178 const std::map<int, Signature> & signatures,
179 const std::map<int, Transform> & poses,
180 const std::multimap<int, Link> & constraints) :
181 UEvent(0),
182 _signatures(signatures),
183 _poses(poses),
184 _constraints(constraints)
185 {}
186
187 virtual ~RtabmapEvent3DMap() {}
188
189 const std::map<int, Signature> & getSignatures() const {return _signatures;}
190 const std::map<int, Transform> & getPoses() const {return _poses;}
191 const std::multimap<int, Link> & getConstraints() const {return _constraints;}
192
193 virtual std::string getClassName() const {return std::string("RtabmapEvent3DMap");}
194
195private:
196 std::map<int, Signature> _signatures;
197 std::map<int, Transform> _poses;
198 std::multimap<int, Link> _constraints;
199};
200
202{
203public:
205 UEvent(0),
206 _planningTime(0.0) {}
208 int goalId,
209 const std::vector<std::pair<int, Transform> > & poses,
210 double planningTime) :
211 UEvent(goalId),
212 _poses(poses),
213 _planningTime(planningTime) {}
215 int goalId,
216 const std::string & goalLabel,
217 const std::vector<std::pair<int, Transform> > & poses,
218 double planningTime) :
219 UEvent(goalId),
220 _goalLabel(goalLabel),
221 _poses(poses),
222 _planningTime(planningTime) {}
223
224 virtual ~RtabmapGlobalPathEvent() {}
225 int getGoal() const {return this->getCode();}
226 const std::string & getGoalLabel() const {return _goalLabel;}
227 double getPlanningTime() const {return _planningTime;}
228 const std::vector<std::pair<int, Transform> > & getPoses() const {return _poses;}
229 virtual std::string getClassName() const {return std::string("RtabmapGlobalPathEvent");}
230
231private:
232 std::string _goalLabel;
233 std::vector<std::pair<int, Transform> > _poses;
234 double _planningTime;
235};
236
238{
239public:
240 RtabmapLabelErrorEvent(int id, const std::string & label):
241 UEvent(id),
242 _label(label){}
243
244 virtual ~RtabmapLabelErrorEvent() {}
245 int id() const {return this->getCode();}
246 const std::string & label() const {return _label;}
247 virtual std::string getClassName() const {return std::string("RtabmapLabelErrorEvent");}
248
249private:
250 std::string _label;
251};
252
254{
255public:
256 RtabmapGoalStatusEvent(int status):
257 UEvent(status){}
258
259 virtual ~RtabmapGoalStatusEvent() {}
260 virtual std::string getClassName() const {return std::string("RtabmapGoalStatusEvent");}
261};
262
263} // namespace rtabmap
264
265#endif /* RTABMAPEVENT_H_ */
UVariant class for storing and converting between different data types.
int getCode() const
Definition UEvent.h:74
A variant type that can hold values of different types.
Definition UVariant.h:54
virtual std::string getClassName() const
virtual std::string getClassName() const
virtual std::string getClassName() const
virtual std::string getClassName() const
virtual std::string getClassName() const
virtual std::string getClassName() const
virtual std::string getClassName() const
Collects and manages runtime statistics for RTAB-Map.
Definition Statistics.h:108