ed
update_request.h
Go to the documentation of this file.
1 #ifndef ED_UPDATE_REQUEST_H_
2 #define ED_UPDATE_REQUEST_H_
3 
4 #include "ed/types.h"
5 #include "ed/uuid.h"
6 #include "ed/property.h"
7 #include "ed/property_key.h"
8 #include "ed/property_key_db.h"
9 
11 
12 #include <map>
13 #include <set>
14 #include <vector>
15 #include <geolib/datatypes.h>
16 
17 #include "ed/convex_hull_2d.h"
18 #include "ed/convex_hull.h"
20 
21 namespace ed
22 {
23 
25 {
26 
27 public:
28 
30 
31 
32  // MEASUREMENTS
33 
35  void addMeasurement(const UUID& id, const MeasurementConstPtr& m) { measurements[id].push_back(m); flagUpdated(id); }
36 
37  void addMeasurements(const UUID& id, const std::vector<MeasurementConstPtr>& measurements_)
38  {
39  if (measurements_.empty())
40  return;
41 
43  v.insert(v.end(), measurements_.begin(), measurements_.end());
44 
45  flagUpdated(id);
46  }
47 
48 
49  // VISUALS
51  [[deprecated("Use setVisual() or setCollision() instead.")]]
52  void setShape(const UUID& id, const geo::ShapeConstPtr& shape) { setVisual(id, shape); }
53  void setVisual(const UUID& id, const geo::ShapeConstPtr& visual) { visuals[id] = visual; flagUpdated(id); }
54 
55  // COLLISIONS
57  void setCollision(const UUID& id, const geo::ShapeConstPtr& collision) { collisions[id] = collision; flagUpdated(id); }
58 
59  // VOLUMES
61  void addVolume(const UUID& id, const std::string Volume_name, const geo::ShapeConstPtr& Volume_shape)
63  if (it != volumes_added.end())
64  {
65  std::map<std::string, geo::ShapeConstPtr>::iterator it2 = it->second.find(Volume_name);
66  if (it2 != it->second.end())
67  it2->second = Volume_shape;
68  else
69  it->second[Volume_name] = Volume_shape;
70  }
71  else
72  {
74  volume_map[Volume_name] = Volume_shape;
75  volumes_added[id] = volume_map;
76  }
77  flagUpdated(id);
78  }
79 
81  void removeVolume(const UUID& id, const std::string Volume_name) { volumes_removed[id].insert(Volume_name); flagUpdated(id); }
82 
83 
84  // CONVEX HULLS NEW
85 
87  void setConvexHullNew(const UUID& id, const ed::ConvexHull& convex_hull, const geo::Pose3D& pose, double time, std::string source = "")
88  {
90  m.convex_hull = convex_hull;
91  m.pose = pose;
92  m.timestamp = time;
93  flagUpdated(id);
94  }
95 
96  void removeConvexHullNew(const UUID& id, const std::string& source)
97  {
98  // For now, signal that the convex hull must be removed by setting an empty chull
100  }
101 
102 
103  // TYPES
104 
106  void setType(const UUID& id, const std::string& type) { types[id] = type; flagUpdated(id); }
107 
109  void addType(const UUID& id, const std::string& type) { type_sets_added[id].insert(type); flagUpdated(id); }
110 
112  void removeType(const UUID& id, const std::string& type) { type_sets_removed[id].insert(type); flagUpdated(id); }
113 
114 
115  // PROBABILITY OF EXISTENCE
116 
118 
119  void setExistenceProbability(const UUID& id, double prob) { existence_probabilities[id] = prob; }
120 
121 
122  // LAST UPDATE TIMESTAMP
123 
125 
126  void setLastUpdateTimestamp(const UUID& id, double t) { last_update_timestamps[id] = t; }
127 
128 
129  // POSES
130 
132  void setPose(const UUID& id, const geo::Pose3D& pose) { poses[id] = pose; flagUpdated(id); }
133 
135  void removePose(const UUID& id) { poses_removed.push_back(id); flagUpdated(id); }
136 
137 
138  // RELATIONS
139 
141  void setRelation(const UUID& id1, const UUID& id2, const RelationConstPtr& r) { relations[id1][id2] = r; flagUpdated(id1); flagUpdated(id2);}
142 
143 
144  // DATA
145 
147 
148  void addData(const UUID& id, const tue::config::DataConstPointer& data)
149  {
151  if (it == datas.end())
152  {
153  datas[id] = data;
154  }
155  else
156  {
157  tue::config::DataPointer data_total;
158  data_total.add(it->second);
159  data_total.add(data);
160 
161  it->second = data_total;
162  }
163 
164  flagUpdated(id);
165  }
166 
168 
169  template<typename T>
170  void setProperty(const UUID& id, const PropertyKey<T>& key, const T& value)
171  {
172  if (!key.valid())
173  return;
174 
175  Property& p = properties[id][key.idx];
176  p.entry = key.entry;
177  p.value = value;
178  flagUpdated(id);
179  }
180 
181  void setProperty(const UUID& id, const PropertyKeyDBEntry* entry, const ed::Variant& v)
182  {
183  Property& p = properties[id][entry->idx];
184  p.entry = entry;
185  p.value = v;
186  flagUpdated(id);
187  }
188 
189 
190  // REMOVED ENTITIES
191 
193 
194  void removeEntity(const UUID& id) { removed_entities.insert(id); flagUpdated(id); }
195 
196 
197  // FLAGS
198 
200 
201  void setFlag(const UUID& id, const std::string& flag) { added_flags[id] = flag; flagUpdated(id); }
202 
204 
205  void removeFlag(const UUID& id, const std::string& flag) { removed_flags[id] = flag; flagUpdated(id); }
206 
207 
208 
209  // UPDATED (AND REMOVED) ENTITIES
210 
212 
213  bool empty() const { return updated_entities.empty(); }
214 
215 
216  // Is true if the update was created for synchronization only (used by ed_cloud)
217 
219 
220  void setSyncUpdate(bool b = true) { is_sync_update = b; }
221 
222 
223 private:
224 
225  void flagUpdated(const ed::UUID& id) { updated_entities.insert(id); }
226 
227 };
228 
229 }
230 
231 #endif
ed::UpdateRequest::setSyncUpdate
void setSyncUpdate(bool b=true)
Definition: update_request.h:220
datatypes.h
ed::UpdateRequest::measurements
std::map< UUID, std::vector< MeasurementConstPtr > > measurements
Definition: update_request.h:34
ed::UpdateRequest::types
std::map< UUID, std::string > types
Definition: update_request.h:105
ed::UpdateRequest
Definition: update_request.h:24
convex_hull.h
ed::PropertyKey::idx
Idx idx
Definition: property_key.h:15
ed::UpdateRequest::visuals
std::map< UUID, geo::ShapeConstPtr > visuals
Definition: update_request.h:50
convex_hull_2d.h
std::string
std::shared_ptr
ed::UpdateRequest::setExistenceProbability
void setExistenceProbability(const UUID &id, double prob)
Definition: update_request.h:119
ed::ConvexHull
Definition: convex_hull.h:11
ed::UpdateRequest::addData
void addData(const UUID &id, const tue::config::DataConstPointer &data)
Definition: update_request.h:148
types.h
ed::UpdateRequest::addType
void addType(const UUID &id, const std::string &type)
Definition: update_request.h:109
ed::UpdateRequest::flagUpdated
void flagUpdated(const ed::UUID &id)
Definition: update_request.h:225
t
Timer t
ed::UpdateRequest::removeConvexHullNew
void removeConvexHullNew(const UUID &id, const std::string &source)
Definition: update_request.h:96
ed::UpdateRequest::is_sync_update
bool is_sync_update
Definition: update_request.h:218
measurement_convex_hull.h
vector
std::map::find
T find(T... args)
property.h
ed::PropertyKey::entry
const PropertyKeyDBEntry * entry
Definition: property_key.h:17
property_key_db.h
tue::config::DataPointer
ed::UpdateRequest::properties
std::map< UUID, std::map< Idx, Property > > properties
Definition: update_request.h:167
ed::UpdateRequest::setShape
void setShape(const UUID &id, const geo::ShapeConstPtr &shape)
Definition: update_request.h:52
ed::Property::entry
const PropertyKeyDBEntry * entry
Definition: property.h:17
geo::Transform3T
ed::UpdateRequest::removeEntity
void removeEntity(const UUID &id)
Definition: update_request.h:194
ed::UpdateRequest::removeType
void removeType(const UUID &id, const std::string &type)
Definition: update_request.h:112
ed::UpdateRequest::type_sets_removed
std::map< UUID, std::set< std::string > > type_sets_removed
Definition: update_request.h:111
ed::UpdateRequest::last_update_timestamps
std::map< UUID, double > last_update_timestamps
Definition: update_request.h:124
ed::UpdateRequest::volumes_added
std::map< UUID, std::map< std::string, geo::ShapeConstPtr > > volumes_added
Definition: update_request.h:60
ed::UpdateRequest::setLastUpdateTimestamp
void setLastUpdateTimestamp(const UUID &id, double t)
Definition: update_request.h:126
ed::MeasurementConvexHull::convex_hull
ConvexHull convex_hull
Definition: measurement_convex_hull.h:12
ed::Property::value
Variant value
Definition: property.h:16
ed::PropertyKeyDBEntry::idx
Idx idx
Definition: property_key_db.h:25
ed::UpdateRequest::removePose
void removePose(const UUID &id)
Definition: update_request.h:135
ed::UpdateRequest::relations
std::map< UUID, std::map< UUID, RelationConstPtr > > relations
Definition: update_request.h:140
ed::UpdateRequest::setProperty
void setProperty(const UUID &id, const PropertyKeyDBEntry *entry, const ed::Variant &v)
Definition: update_request.h:181
ed::UpdateRequest::setFlag
void setFlag(const UUID &id, const std::string &flag)
Definition: update_request.h:201
ed::UpdateRequest::updated_entities
std::set< UUID > updated_entities
Definition: update_request.h:211
ed::UpdateRequest::type_sets_added
std::map< UUID, std::set< std::string > > type_sets_added
Definition: update_request.h:108
ed::UpdateRequest::setPose
void setPose(const UUID &id, const geo::Pose3D &pose)
Definition: update_request.h:132
ed::MeasurementConvexHull
Definition: measurement_convex_hull.h:10
ed::UpdateRequest::added_flags
std::map< ed::UUID, std::string > added_flags
Definition: update_request.h:199
ed::Variant
Definition: variant.h:49
ed::PropertyKeyDBEntry
Definition: property_key_db.h:13
ed::PropertyKey::valid
bool valid() const
Definition: property_key.h:19
ed::UpdateRequest::setCollision
void setCollision(const UUID &id, const geo::ShapeConstPtr &collision)
Definition: update_request.h:57
ed::UpdateRequest::convex_hulls_new
std::map< UUID, std::map< std::string, ed::MeasurementConvexHull > > convex_hulls_new
Definition: update_request.h:86
ed::UUID
Definition: uuid.h:10
uuid.h
ed::UpdateRequest::setConvexHullNew
void setConvexHullNew(const UUID &id, const ed::ConvexHull &convex_hull, const geo::Pose3D &pose, double time, std::string source="")
Definition: update_request.h:87
map
data_pointer.h
ed::UpdateRequest::removed_entities
std::set< UUID > removed_entities
Definition: update_request.h:192
ed::MeasurementConvexHull::timestamp
double timestamp
Definition: measurement_convex_hull.h:14
ed::UpdateRequest::setType
void setType(const UUID &id, const std::string &type)
Definition: update_request.h:106
ed::UpdateRequest::addMeasurements
void addMeasurements(const UUID &id, const std::vector< MeasurementConstPtr > &measurements_)
Definition: update_request.h:37
ed::MeasurementConstPtr
shared_ptr< const Measurement > MeasurementConstPtr
Definition: types.h:33
ed::UpdateRequest::setVisual
void setVisual(const UUID &id, const geo::ShapeConstPtr &visual)
Definition: update_request.h:53
b
void b()
ed::UpdateRequest::setRelation
void setRelation(const UUID &id1, const UUID &id2, const RelationConstPtr &r)
Definition: update_request.h:141
ed::UpdateRequest::poses
std::map< UUID, geo::Pose3D > poses
Definition: update_request.h:131
std::vector::begin
T begin(T... args)
property_key.h
std::vector::insert
T insert(T... args)
ed::UpdateRequest::removeFlag
void removeFlag(const UUID &id, const std::string &flag)
Definition: update_request.h:205
ed::MeasurementConvexHull::pose
geo::Pose3D pose
Definition: measurement_convex_hull.h:13
ed::UpdateRequest::addMeasurement
void addMeasurement(const UUID &id, const MeasurementConstPtr &m)
Definition: update_request.h:35
tue::config::DataConstPointer
tue::config::DataPointer::add
bool add(const DataConstPointer &ptr)
ed::UpdateRequest::removeVolume
void removeVolume(const UUID &id, const std::string Volume_name)
Definition: update_request.h:81
ed::UpdateRequest::removed_flags
std::map< ed::UUID, std::string > removed_flags
Definition: update_request.h:203
ed::UpdateRequest::empty
bool empty() const
Definition: update_request.h:213
std::vector::empty
T empty(T... args)
ed
Definition: convex_hull.h:8
ed::RelationConstPtr
shared_ptr< const Relation > RelationConstPtr
Definition: types.h:73
ed::UpdateRequest::setProperty
void setProperty(const UUID &id, const PropertyKey< T > &key, const T &value)
Definition: update_request.h:170
std::vector::end
T end(T... args)
ed::UpdateRequest::volumes_removed
std::map< UUID, std::set< std::string > > volumes_removed
Definition: update_request.h:80
ed::PropertyKey
Definition: property_key.h:12
ed::UpdateRequest::collisions
std::map< UUID, geo::ShapeConstPtr > collisions
Definition: update_request.h:56
ed::UpdateRequest::existence_probabilities
std::map< UUID, double > existence_probabilities
Definition: update_request.h:117
ed::UpdateRequest::poses_removed
std::vector< UUID > poses_removed
Definition: update_request.h:134
ed::UpdateRequest::datas
std::map< UUID, tue::config::DataConstPointer > datas
Definition: update_request.h:146
set
ed::UpdateRequest::UpdateRequest
UpdateRequest()
Definition: update_request.h:29
ed::Property
Definition: property.h:12
ed::UpdateRequest::addVolume
void addVolume(const UUID &id, const std::string Volume_name, const geo::ShapeConstPtr &Volume_shape)
Definition: update_request.h:61