23 #include <core/plugin.h> 25 #include "laser-cluster-thread.h" 42 std::set<std::string> configs;
43 std::set<std::string> ignored_configs;
45 std::string prefix =
"/laser-cluster/";
48 #if __cplusplus >= 201103L 49 std::unique_ptr<Configuration::ValueIterator> i(config->
search(prefix.c_str()));
51 std::auto_ptr<Configuration::ValueIterator> i(config->
search(prefix.c_str()));
54 std::string cfg_name = std::string(i->
path()).substr(prefix.length());
55 cfg_name = cfg_name.substr(0, cfg_name.find(
"/"));
57 if ( (configs.find(cfg_name) == configs.end()) &&
58 (ignored_configs.find(cfg_name) == ignored_configs.end()) ) {
60 std::string cfg_prefix = prefix + cfg_name +
"/";
64 active = config->
get_bool((cfg_prefix +
"active").c_str());
70 thread_list.push_back(thread);
71 configs.insert(cfg_name);
74 ignored_configs.insert(cfg_name);
77 for (ThreadList::iterator i = thread_list.begin();
78 i != thread_list.end(); ++i) {
86 if ( thread_list.empty() ) {
87 throw Exception(
"No active laser filters configured, aborting");
92 PLUGIN_DESCRIPTION(
"Detect cluster in 2D laser data")
Fawkes library namespace.
virtual bool get_bool(const char *path)=0
Get value from configuration which is of type bool.
Plugin to detect a cluster in 2D laser data.
virtual ValueIterator * search(const char *path)=0
Iterator with search results.
Main thread of laser-cluster plugin.
virtual bool next()=0
Check if there is another element and advance to this if possible.
Base class for exceptions in Fawkes.
virtual const char * path() const =0
Path of value.
LaserClusterPlugin(Configuration *config)
Constructor.
Interface for configuration handling.