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 
25 namespace 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
53  EnvironmentalPrimitiveSegment::getPlanes(const Ice::Current& c) const
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
71  EnvironmentalPrimitiveSegment::getSpheres(const Ice::Current& c) const
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
107  EnvironmentalPrimitiveSegment::getBoxes(const Ice::Current& c) const
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
213  EnvironmentalPrimitiveSegment::getPlanesByTimestamp(const armarx::TimestampBasePtr& timestamp,
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
233  EnvironmentalPrimitiveSegment::getSpheresByTimestamp(const armarx::TimestampBasePtr& timestamp,
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
274  EnvironmentalPrimitiveSegment::getBoxesByTimestamp(const armarx::TimestampBasePtr& timestamp,
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);
297  Ice::Long timestamp = getMostRecentTimestamp<EnvironmentalPrimitiveBasePtr>(primitives, 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);
315  Ice::Long timestamp = getMostRecentTimestamp<PlanePrimitiveBasePtr>(primitives, 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);
333  Ice::Long timestamp = getMostRecentTimestamp<SpherePrimitiveBasePtr>(primitives, 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);
351  Ice::Long timestamp = getMostRecentTimestamp<CylinderPrimitiveBasePtr>(primitives, 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);
369  Ice::Long timestamp = getMostRecentTimestamp<BoxPrimitiveBasePtr>(primitives, 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
memoryx::EnvironmentalPrimitiveSegment::getEnvironmentalPrimitivesByTimestamp
EnvironmentalPrimitiveBaseList getEnvironmentalPrimitivesByTimestamp(const armarx::TimestampBasePtr &timestamp, const ::Ice::Current &c=Ice::emptyCurrent) const override
Definition: EnvironmentalPrimitiveSegment.cpp:193
memoryx::EnvironmentalPrimitiveSegment::getPlanes
PlanePrimitiveBaseList getPlanes(const ::Ice::Current &c=Ice::emptyCurrent) const override
Definition: EnvironmentalPrimitiveSegment.cpp:53
memoryx::EnvironmentalPrimitiveSegment::getPlanesByTimestamp
PlanePrimitiveBaseList getPlanesByTimestamp(const armarx::TimestampBasePtr &timestamp, const ::Ice::Current &c=Ice::emptyCurrent) const override
Definition: EnvironmentalPrimitiveSegment.cpp:213
memoryx::EnvironmentalPrimitiveSegment::getSpheres
SpherePrimitiveBaseList getSpheres(const ::Ice::Current &c=Ice::emptyCurrent) const override
Definition: EnvironmentalPrimitiveSegment.cpp:71
memoryx::EnvironmentalPrimitiveSegment::getMostRecentBoxes
BoxPrimitiveBaseList getMostRecentBoxes(const ::Ice::Current &c=Ice::emptyCurrent) const override
Definition: EnvironmentalPrimitiveSegment.cpp:366
memoryx
VirtualRobot headers.
Definition: CommonPlacesTester.cpp:48
c
constexpr T c
Definition: UnscentedKalmanFilterTest.cpp:46
memoryx::EnvironmentalPrimitiveSegment::getSpheresByTimestamp
SpherePrimitiveBaseList getSpheresByTimestamp(const armarx::TimestampBasePtr &timestamp, const ::Ice::Current &c=Ice::emptyCurrent) const override
Definition: EnvironmentalPrimitiveSegment.cpp:233
EnvironmentalPrimitiveSegment.h
memoryx::EnvironmentalPrimitiveSegment::getMostRecentPlanes
PlanePrimitiveBaseList getMostRecentPlanes(const ::Ice::Current &c=Ice::emptyCurrent) const override
Definition: EnvironmentalPrimitiveSegment.cpp:312
memoryx::EnvironmentalPrimitiveSegment::getMostRecentCylinders
CylinderPrimitiveBaseList getMostRecentCylinders(const ::Ice::Current &c=Ice::emptyCurrent) const override
Definition: EnvironmentalPrimitiveSegment.cpp:348
memoryx::WorkingMemoryEntitySegment< EnvironmentalPrimitive >::getAllEntityIds
EntityIdList getAllEntityIds(const Ice::Current &c=Ice::emptyCurrent) const override
Definition: WorkingMemoryEntitySegment.h:629
memoryx::EnvironmentalPrimitive
Definition: EnvironmentalPrimitive.h:57
memoryx::EnvironmentalPrimitiveSegment::getMostRecentSpheres
SpherePrimitiveBaseList getMostRecentSpheres(const ::Ice::Current &c=Ice::emptyCurrent) const override
Definition: EnvironmentalPrimitiveSegment.cpp:330
memoryx::WorkingMemoryEntitySegment
Definition: WorkingMemoryEntitySegment.h:45
memoryx::EnvironmentalPrimitiveSegment::getMostRecentEnvironmentalPrimitives
EnvironmentalPrimitiveBaseList getMostRecentEnvironmentalPrimitives(const ::Ice::Current &c=Ice::emptyCurrent) const override
Definition: EnvironmentalPrimitiveSegment.cpp:294
memoryx::EnvironmentalPrimitiveSegment::getCylindersByTimestamp
CylinderPrimitiveBaseList getCylindersByTimestamp(const armarx::TimestampBasePtr &timestamp, const ::Ice::Current &c=Ice::emptyCurrent) const override
Definition: EnvironmentalPrimitiveSegment.cpp:253
memoryx::WorkingMemoryEntitySegment< EnvironmentalPrimitive >::removeEntity
void removeEntity(const ::std::string &id, const ::Ice::Current &c=Ice::emptyCurrent) override
Definition: WorkingMemoryEntitySegment.h:336
memoryx::EnvironmentalPrimitiveSegment::getCylinders
CylinderPrimitiveBaseList getCylinders(const ::Ice::Current &c=Ice::emptyCurrent) const override
Definition: EnvironmentalPrimitiveSegment.cpp:89
memoryx::EnvironmentalPrimitiveSegment::removePrimitivesByTimestamp
void removePrimitivesByTimestamp(const armarx::TimestampBasePtr &timestamp, const ::Ice::Current &c=Ice::emptyCurrent) override
Definition: EnvironmentalPrimitiveSegment.cpp:384
armarx::VariantType::Long
const VariantTypeId Long
Definition: Variant.h:918
memoryx::EnvironmentalPrimitiveSegment::getEnvironmentalPrimitives
EnvironmentalPrimitiveBaseList getEnvironmentalPrimitives(const ::Ice::Current &c=Ice::emptyCurrent) const override
Definition: EnvironmentalPrimitiveSegment.cpp:34
memoryx::EnvironmentalPrimitiveSegment::getCylinderById
CylinderPrimitiveBasePtr getCylinderById(const std::string &id, const ::Ice::Current &c=Ice::emptyCurrent) const override
Definition: EnvironmentalPrimitiveSegment.cpp:162
memoryx::EnvironmentalPrimitiveSegment::getEnvironmentalPrimitiveById
EnvironmentalPrimitiveBasePtr getEnvironmentalPrimitiveById(const std::string &id, const ::Ice::Current &c=Ice::emptyCurrent) const override
Definition: EnvironmentalPrimitiveSegment.cpp:125
memoryx::EnvironmentalPrimitiveSegment::getBoxById
BoxPrimitiveBasePtr getBoxById(const std::string &id, const ::Ice::Current &c=Ice::emptyCurrent) const override
Definition: EnvironmentalPrimitiveSegment.cpp:178
memoryx::EnvironmentalPrimitiveSegment::getPlaneById
PlanePrimitiveBasePtr getPlaneById(const std::string &id, const ::Ice::Current &c=Ice::emptyCurrent) const override
Definition: EnvironmentalPrimitiveSegment.cpp:132
memoryx::EnvironmentalPrimitiveSegment::getBoxesByTimestamp
BoxPrimitiveBaseList getBoxesByTimestamp(const armarx::TimestampBasePtr &timestamp, const ::Ice::Current &c=Ice::emptyCurrent) const override
Definition: EnvironmentalPrimitiveSegment.cpp:274
memoryx::EnvironmentalPrimitiveSegment::EnvironmentalPrimitiveSegment
EnvironmentalPrimitiveSegment()
Definition: EnvironmentalPrimitiveSegment.cpp:27
memoryx::EnvironmentalPrimitiveSegment::getSphereById
SpherePrimitiveBasePtr getSphereById(const std::string &id, const ::Ice::Current &c=Ice::emptyCurrent) const override
Definition: EnvironmentalPrimitiveSegment.cpp:147
memoryx::WorkingMemoryEntitySegment< EnvironmentalPrimitive >::getEntityById
EntityBasePtr getEntityById(const ::std::string &id) const
Definition: WorkingMemoryEntitySegment.h:463
memoryx::EnvironmentalPrimitiveSegment::getBoxes
BoxPrimitiveBaseList getBoxes(const ::Ice::Current &c=Ice::emptyCurrent) const override
Definition: EnvironmentalPrimitiveSegment.cpp:107
memoryx::EnvironmentalPrimitiveSegment::removeOlderPrimitives
void removeOlderPrimitives(const armarx::TimestampBasePtr &olderThan, const ::Ice::Current &c=Ice::emptyCurrent) override
Definition: EnvironmentalPrimitiveSegment.cpp:400