ed_sensor_integration
src
clearer
clearer_plugin.cpp
Go to the documentation of this file.
1
#include "
clearer_plugin.h
"
2
3
#include <
ed/entity.h
>
4
#include <
ed/world_model.h
>
5
#include <
ed/update_request.h
>
6
7
#include <
vector
>
8
9
// ----------------------------------------------------------------------------------------------------
10
11
ClearerPlugin::ClearerPlugin
()
12
{
13
}
14
15
// ----------------------------------------------------------------------------------------------------
16
17
ClearerPlugin::~ClearerPlugin
()
18
{
19
}
20
21
// ----------------------------------------------------------------------------------------------------
22
23
void
ClearerPlugin::initialize
(
ed::InitData
& init)
24
{
25
tue::Configuration
&
config
= init.
config
;
26
config
.
value
(
"entity_timeout"
,
entity_timeout_
);
27
}
28
29
// ----------------------------------------------------------------------------------------------------
30
31
void
ClearerPlugin::process
(
const
ed::PluginInput
& data,
ed::UpdateRequest
& req)
32
{
33
const
ed::WorldModel
& world = data.world;
34
35
double
current_time = ros::Time::now().toSec();
36
37
for
(
ed::WorldModel::const_iterator
it = world.
begin
(); it != world.
end
(); ++it)
38
{
39
const
ed::EntityConstPtr
& e = *it;
40
41
// If the entity is locked, always keep it (don't delete it)
42
if
(e->hasFlag(
"locked"
) || e->visual())
43
continue
;
44
45
const
std::map<std::string, ed::MeasurementConvexHull>
& chull_map = e->convexHullMap();
46
47
if
(chull_map.
empty
())
48
continue
;
49
50
std::vector<std::string>
removed_sources;
51
for
(
std::map<std::string, ed::MeasurementConvexHull>::const_iterator
it2 = chull_map.
begin
(); it2 != chull_map.
end
(); ++it2)
52
{
53
const
ed::MeasurementConvexHull
& m = it2->second;
54
if
(m.
timestamp
+
entity_timeout_
< current_time)
55
{
56
// too old! Remove this one
57
removed_sources.
push_back
(it2->first);
58
}
59
}
60
61
if
(removed_sources.
size
() == chull_map.
size
())
62
{
63
// All measurement convex hulls are old, so remove the entity!
64
req
.removeEntity(e->id());
65
}
66
else
67
{
68
// Only remove the old measurements
69
for
(
std::vector<std::string>::const_iterator
it_source = removed_sources.
begin
(); it_source != removed_sources.
end
(); ++it_source)
70
{
71
req
.removeConvexHullNew(e->id(), *it_source);
72
}
73
}
74
}
75
}
76
77
// ----------------------------------------------------------------------------------------------------
78
79
ED_REGISTER_PLUGIN
(
ClearerPlugin
)
ClearerPlugin::ClearerPlugin
ClearerPlugin()
Definition:
clearer_plugin.cpp:11
ed::UpdateRequest
update_request.h
ED_REGISTER_PLUGIN
#define ED_REGISTER_PLUGIN(Derived)
vector
std::vector::size
T size(T... args)
ed::InitData
ed::InitData::config
tue::Configuration & config
ClearerPlugin::process
void process(const ed::PluginInput &data, ed::UpdateRequest &req)
Definition:
clearer_plugin.cpp:31
ed::WorldModel::begin
const_iterator begin() const
ed::WorldModel::const_iterator
EntityIterator const_iterator
ed::EntityConstPtr
shared_ptr< const Entity > EntityConstPtr
ed::WorldModel::end
const_iterator end() const
std::vector::push_back
T push_back(T... args)
tue::config::ReaderWriter
ed::MeasurementConvexHull
clearer_plugin.h
ed::PluginInput
req
string req
std::map< std::string, ed::MeasurementConvexHull >
ed::MeasurementConvexHull::timestamp
double timestamp
ed::WorldModel
ClearerPlugin
Definition:
clearer_plugin.h:9
tue::config::ReaderWriter::value
bool value(const std::string &name, T &value, RequiredOrOptional opt=REQUIRED)
world_model.h
std::map::begin
T begin(T... args)
ClearerPlugin::~ClearerPlugin
~ClearerPlugin()
Definition:
clearer_plugin.cpp:17
ClearerPlugin::entity_timeout_
double entity_timeout_
Definition:
clearer_plugin.h:24
std::map::empty
T empty(T... args)
std::map::end
T end(T... args)
entity.h
ed::Plugin::initialize
virtual void initialize()
config
tue::config::ReaderWriter config
Generated on Sun Feb 23 2025 04:34:57 for ed_sensor_integration by
1.8.17