EnvironmentalPrimitiveSegment.cpp
Go to the documentation of this file.
1/*
2* This file is part of ArmarX.
3*
4* ArmarX is free software; you can redistribute it and/or modify
5* it under the terms of the GNU General Public License version 2 as
6* published by the Free Software Foundation.
7*
8* ArmarX is distributed in the hope that it will be useful, but
9* WITHOUT ANY WARRANTY; without even the implied warranty of
10* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11* GNU General Public License for more details.
12*
13* You should have received a copy of the GNU General Public License
14* along with this program. If not, see <http://www.gnu.org/licenses/>.
15*
16* @package MemoryX::WorkingMemory
17* @author Peter Kaiser (peter dot kaiser at kit dot edu)
18* @date 2014
19* @copyright http://www.gnu.org/licenses/gpl-2.0.txt
20* GNU General Public License
21*/
22
24
25namespace memoryx
26{
29 EnvironmentalPrimitiveSegmentBase::EnvironmentalPrimitiveSegmentBase()
30 {
31 }
32
33 EnvironmentalPrimitiveBaseList
35 {
36 EnvironmentalPrimitiveBaseList primitives;
37
38 for (auto& id : getAllEntityIds(c))
39 {
40 EnvironmentalPrimitiveBasePtr primitive =
41 EnvironmentalPrimitiveBasePtr::dynamicCast(getEntityById(id, c));
42
43 if (primitive)
44 {
45 primitives.push_back(primitive);
46 }
47 }
48
49 return primitives;
50 }
51
52 PlanePrimitiveBaseList
54 {
55 PlanePrimitiveBaseList primitives;
56
57 for (auto& id : getAllEntityIds(c))
58 {
59 EntityBasePtr primitive = getEntityById(id, c);
60
61 if (primitive->ice_isA(PlanePrimitiveBase::ice_staticId()))
62 {
63 primitives.push_back(PlanePrimitiveBasePtr::dynamicCast(primitive));
64 }
65 }
66
67 return primitives;
68 }
69
70 SpherePrimitiveBaseList
72 {
73 SpherePrimitiveBaseList primitives;
74
75 for (auto& id : getAllEntityIds(c))
76 {
77 EntityBasePtr primitive = getEntityById(id, c);
78
79 if (primitive->ice_isA(SpherePrimitiveBase::ice_staticId()))
80 {
81 primitives.push_back(SpherePrimitiveBasePtr::dynamicCast(primitive));
82 }
83 }
84
85 return primitives;
86 }
87
88 CylinderPrimitiveBaseList
90 {
91 CylinderPrimitiveBaseList primitives;
92
93 for (auto& id : getAllEntityIds(c))
94 {
95 EntityBasePtr primitive = getEntityById(id, c);
96
97 if (primitive->ice_isA(CylinderPrimitiveBase::ice_staticId()))
98 {
99 primitives.push_back(CylinderPrimitiveBasePtr::dynamicCast(primitive));
100 }
101 }
102
103 return primitives;
104 }
105
106 BoxPrimitiveBaseList
108 {
109 BoxPrimitiveBaseList primitives;
110
111 for (auto& id : getAllEntityIds(c))
112 {
113 EntityBasePtr primitive = getEntityById(id, c);
114
115 if (primitive->ice_isA(BoxPrimitiveBase::ice_staticId()))
116 {
117 primitives.push_back(BoxPrimitiveBasePtr::dynamicCast(primitive));
118 }
119 }
120
121 return primitives;
122 }
123
124 EnvironmentalPrimitiveBasePtr
126 const Ice::Current& c) const
127 {
128 return EnvironmentalPrimitiveBasePtr::dynamicCast(getEntityById(id, c));
129 }
130
131 PlanePrimitiveBasePtr
132 EnvironmentalPrimitiveSegment::getPlaneById(const std::string& id, const Ice::Current& c) const
133 {
134 EntityBasePtr primitive = getEntityById(id, c);
135
136 if (primitive->ice_isA(PlanePrimitiveBase::ice_staticId()))
137 {
138 return PlanePrimitiveBasePtr::dynamicCast(primitive);
139 }
140 else
141 {
142 return PlanePrimitiveBasePtr();
143 }
144 }
145
146 SpherePrimitiveBasePtr
147 EnvironmentalPrimitiveSegment::getSphereById(const std::string& id, const Ice::Current& c) const
148 {
149 EntityBasePtr primitive = getEntityById(id, c);
150
151 if (primitive->ice_isA(SpherePrimitiveBase::ice_staticId()))
152 {
153 return SpherePrimitiveBasePtr::dynamicCast(primitive);
154 }
155 else
156 {
157 return SpherePrimitiveBasePtr();
158 }
159 }
160
161 CylinderPrimitiveBasePtr
163 const Ice::Current& c) const
164 {
165 EntityBasePtr primitive = getEntityById(id, c);
166
167 if (primitive->ice_isA(CylinderPrimitiveBase::ice_staticId()))
168 {
169 return CylinderPrimitiveBasePtr::dynamicCast(primitive);
170 }
171 else
172 {
173 return CylinderPrimitiveBasePtr();
174 }
175 }
176
177 BoxPrimitiveBasePtr
178 EnvironmentalPrimitiveSegment::getBoxById(const std::string& id, const Ice::Current&) const
179 {
180 EntityBasePtr primitive = getEntityById(id);
181
182 if (primitive->ice_isA(BoxPrimitiveBase::ice_staticId()))
183 {
184 return BoxPrimitiveBasePtr::dynamicCast(primitive);
185 }
186 else
187 {
188 return BoxPrimitiveBasePtr();
189 }
190 }
191
192 EnvironmentalPrimitiveBaseList
194 const armarx::TimestampBasePtr& timestamp,
195 const Ice::Current& c) const
196 {
197 EnvironmentalPrimitiveBaseList result;
198
199 for (auto& id : getAllEntityIds(c))
200 {
201 EnvironmentalPrimitiveBasePtr primitive = getEnvironmentalPrimitiveById(id, c);
202
203 if (primitive->getTime(c)->timestamp == timestamp->timestamp)
204 {
205 result.push_back(primitive);
206 }
207 }
208
209 return result;
210 }
211
212 PlanePrimitiveBaseList
214 const Ice::Current& c) const
215 {
216 PlanePrimitiveBaseList result;
217
218 for (auto& id : getAllEntityIds(c))
219 {
220 EnvironmentalPrimitiveBasePtr primitive = getEnvironmentalPrimitiveById(id, c);
221
222 if (primitive->ice_isA(PlanePrimitiveBase::ice_staticId()) &&
223 primitive->getTime(c)->timestamp == timestamp->timestamp)
224 {
225 result.push_back(PlanePrimitiveBasePtr::dynamicCast(primitive));
226 }
227 }
228
229 return result;
230 }
231
232 SpherePrimitiveBaseList
234 const Ice::Current& c) const
235 {
236 SpherePrimitiveBaseList result;
237
238 for (auto& id : getAllEntityIds(c))
239 {
240 EnvironmentalPrimitiveBasePtr primitive = getEnvironmentalPrimitiveById(id, c);
241
242 if (primitive->ice_isA(SpherePrimitiveBase::ice_staticId()) &&
243 primitive->getTime(c)->timestamp == timestamp->timestamp)
244 {
245 result.push_back(SpherePrimitiveBasePtr::dynamicCast(primitive));
246 }
247 }
248
249 return result;
250 }
251
252 CylinderPrimitiveBaseList
254 const armarx::TimestampBasePtr& timestamp,
255 const Ice::Current& c) const
256 {
257 CylinderPrimitiveBaseList result;
258
259 for (auto& id : getAllEntityIds(c))
260 {
261 EnvironmentalPrimitiveBasePtr primitive = getEnvironmentalPrimitiveById(id, c);
262
263 if (primitive->ice_isA(CylinderPrimitiveBase::ice_staticId()) &&
264 primitive->getTime(c)->timestamp == timestamp->timestamp)
265 {
266 result.push_back(CylinderPrimitiveBasePtr::dynamicCast(primitive));
267 }
268 }
269
270 return result;
271 }
272
273 BoxPrimitiveBaseList
275 const Ice::Current& c) const
276 {
277 BoxPrimitiveBaseList result;
278
279 for (auto& id : getAllEntityIds(c))
280 {
281 EnvironmentalPrimitiveBasePtr primitive = getEnvironmentalPrimitiveById(id, c);
282
283 if (primitive->ice_isA(BoxPrimitiveBase::ice_staticId()) &&
284 primitive->getTime(c)->timestamp == timestamp->timestamp)
285 {
286 result.push_back(BoxPrimitiveBasePtr::dynamicCast(primitive));
287 }
288 }
289
290 return result;
291 }
292
293 EnvironmentalPrimitiveBaseList
295 {
296 EnvironmentalPrimitiveBaseList primitives = getEnvironmentalPrimitives(c);
298
299 EnvironmentalPrimitiveBaseList result;
300 for (auto& p : primitives)
301 {
302 if (p->getTime()->timestamp == timestamp)
303 {
304 result.push_back(p);
305 }
306 }
307
308 return result;
309 }
310
311 PlanePrimitiveBaseList
313 {
314 PlanePrimitiveBaseList primitives = getPlanes(c);
316
317 PlanePrimitiveBaseList result;
318 for (auto& p : primitives)
319 {
320 if (p->getTime()->timestamp == timestamp)
321 {
322 result.push_back(p);
323 }
324 }
325
326 return result;
327 }
328
329 SpherePrimitiveBaseList
331 {
332 SpherePrimitiveBaseList primitives = getSpheres(c);
334
335 SpherePrimitiveBaseList result;
336 for (auto& p : primitives)
337 {
338 if (p->getTime()->timestamp == timestamp)
339 {
340 result.push_back(p);
341 }
342 }
343
344 return result;
345 }
346
347 CylinderPrimitiveBaseList
349 {
350 CylinderPrimitiveBaseList primitives = getCylinders(c);
352
353 CylinderPrimitiveBaseList result;
354 for (auto& p : primitives)
355 {
356 if (p->getTime()->timestamp == timestamp)
357 {
358 result.push_back(p);
359 }
360 }
361
362 return result;
363 }
364
365 BoxPrimitiveBaseList
367 {
368 BoxPrimitiveBaseList primitives = getBoxes(c);
370
371 BoxPrimitiveBaseList result;
372 for (auto& p : primitives)
373 {
374 if (p->getTime()->timestamp == timestamp)
375 {
376 result.push_back(p);
377 }
378 }
379
380 return result;
381 }
382
383 void
385 const armarx::TimestampBasePtr& timestamp,
386 const Ice::Current& c)
387 {
388 EnvironmentalPrimitiveBaseList primitives = getEnvironmentalPrimitives(c);
389
390 for (auto& p : primitives)
391 {
392 if (p->getTime()->timestamp == timestamp)
393 {
394 removeEntity(p->getId(), c);
395 }
396 }
397 }
398
399 void
400 EnvironmentalPrimitiveSegment::removeOlderPrimitives(const armarx::TimestampBasePtr& olderThan,
401 const Ice::Current& c)
402 {
403 EnvironmentalPrimitiveBaseList primitives = getEnvironmentalPrimitives(c);
404
405 for (auto& p : primitives)
406 {
407 if (p->getTime()->timestamp < olderThan)
408 {
409 removeEntity(p->getId(), c);
410 }
411 }
412 }
413} // namespace memoryx
std::string timestamp()
constexpr T c
Ice::Long getMostRecentTimestamp(const std::vector< EntityPtrType > &primitives, const ::Ice::Current &c=Ice::emptyCurrent) const
EnvironmentalPrimitiveBasePtr getEnvironmentalPrimitiveById(const std::string &id, const ::Ice::Current &c=Ice::emptyCurrent) const override
EnvironmentalPrimitiveBaseList getEnvironmentalPrimitives(const ::Ice::Current &c=Ice::emptyCurrent) const override
CylinderPrimitiveBaseList getMostRecentCylinders(const ::Ice::Current &c=Ice::emptyCurrent) const override
CylinderPrimitiveBasePtr getCylinderById(const std::string &id, const ::Ice::Current &c=Ice::emptyCurrent) const override
SpherePrimitiveBaseList getSpheresByTimestamp(const armarx::TimestampBasePtr &timestamp, const ::Ice::Current &c=Ice::emptyCurrent) const override
PlanePrimitiveBasePtr getPlaneById(const std::string &id, const ::Ice::Current &c=Ice::emptyCurrent) const override
PlanePrimitiveBaseList getPlanesByTimestamp(const armarx::TimestampBasePtr &timestamp, const ::Ice::Current &c=Ice::emptyCurrent) const override
void removeOlderPrimitives(const armarx::TimestampBasePtr &olderThan, const ::Ice::Current &c=Ice::emptyCurrent) override
SpherePrimitiveBaseList getSpheres(const ::Ice::Current &c=Ice::emptyCurrent) const override
EnvironmentalPrimitiveBaseList getMostRecentEnvironmentalPrimitives(const ::Ice::Current &c=Ice::emptyCurrent) const override
CylinderPrimitiveBaseList getCylindersByTimestamp(const armarx::TimestampBasePtr &timestamp, const ::Ice::Current &c=Ice::emptyCurrent) const override
BoxPrimitiveBasePtr getBoxById(const std::string &id, const ::Ice::Current &c=Ice::emptyCurrent) const override
void removePrimitivesByTimestamp(const armarx::TimestampBasePtr &timestamp, const ::Ice::Current &c=Ice::emptyCurrent) override
BoxPrimitiveBaseList getMostRecentBoxes(const ::Ice::Current &c=Ice::emptyCurrent) const override
BoxPrimitiveBaseList getBoxesByTimestamp(const armarx::TimestampBasePtr &timestamp, const ::Ice::Current &c=Ice::emptyCurrent) const override
CylinderPrimitiveBaseList getCylinders(const ::Ice::Current &c=Ice::emptyCurrent) const override
SpherePrimitiveBaseList getMostRecentSpheres(const ::Ice::Current &c=Ice::emptyCurrent) const override
SpherePrimitiveBasePtr getSphereById(const std::string &id, const ::Ice::Current &c=Ice::emptyCurrent) const override
EnvironmentalPrimitiveBaseList getEnvironmentalPrimitivesByTimestamp(const armarx::TimestampBasePtr &timestamp, const ::Ice::Current &c=Ice::emptyCurrent) const override
PlanePrimitiveBaseList getMostRecentPlanes(const ::Ice::Current &c=Ice::emptyCurrent) const override
BoxPrimitiveBaseList getBoxes(const ::Ice::Current &c=Ice::emptyCurrent) const override
PlanePrimitiveBaseList getPlanes(const ::Ice::Current &c=Ice::emptyCurrent) const override
void removeEntity(const ::std::string &id, const ::Ice::Current &c=Ice::emptyCurrent) override
EntityIdList getAllEntityIds(const Ice::Current &c=Ice::emptyCurrent) const override
VirtualRobot headers.