event_detector 1.0.0
Loading...
Searching...
No Matches
AnalysisManager.hpp
1
25#pragma once
26
27#include <memory>
28#include <string>
29#include <vector>
30
31#include <pluginlib/class_loader.hpp>
32#include <rclcpp/rclcpp.hpp>
33#include <std_srvs/srv/empty.hpp>
34
35#include "event_detector/AnalysisRule.hpp"
36#include "event_detector/BufferManager.hpp"
37#include "event_detector/common.hpp"
38
39namespace event_detector {
40
41class EventDetector;
42
51 public:
59 AnalysisManager(EventDetector* ed, std::shared_ptr<BufferManager> buffer, const double default_period);
60
67 void toggleAnalysis(const bool enable_periodic, const bool enable_service);
68
69 protected:
76 void loadRules();
77
87 void loadRule(const std::string& rule_name);
88
95 void togglePeriodicAnalysis(const std::string& rule_name, const bool enable);
96
103 void toggleAnalysisByService(const std::string& rule_name, const bool enable);
104
112 bool isRuleEnabled(const std::string& rule_name);
113
120 double loadRuleAnalysisPeriod(const std::string& rule_name);
121
130 void runAnalysis(const std::string& rule_name);
131
132 protected:
137
141 std::shared_ptr<BufferManager> buffer_;
142
146 std::shared_ptr<pluginlib::ClassLoader<AnalysisRule>> rule_loader_;
147
151 double default_period_ = 1.0;
152
156 std::map<std::string, rclcpp::TimerBase::SharedPtr> analysis_timers_;
157
161 std::map<std::string, std::shared_ptr<AnalysisRule>> rules_;
162
166 std::map<std::string, std::shared_ptr<rclcpp::Service<std_srvs::srv::Empty>>> trigger_services_;
167};
168
169} // namespace event_detector
Component of the Event Detector responsible for identifying relevant data.
std::map< std::string, rclcpp::TimerBase::SharedPtr > analysis_timers_
ROS timers triggering rule analysis, mapped to rule name.
void toggleAnalysis(const bool enable_periodic, const bool enable_service)
Toggle analysis on/off for all rules.
void loadRule(const std::string &rule_name)
Loads a rule into the manager.
double default_period_
default analysis interval
void runAnalysis(const std::string &rule_name)
Evaluates a single rule.
void toggleAnalysisByService(const std::string &rule_name, const bool enable)
Toggle service-based analysis for a specific rule.
void loadRules()
Loads all enabled rules into the manager.
double loadRuleAnalysisPeriod(const std::string &rule_name)
Loads analysis interval for a specific rule from the parameter server.
std::map< std::string, std::shared_ptr< rclcpp::Service< std_srvs::srv::Empty > > > trigger_services_
services that can be used to trigger rule evaluation, mapped to rule name
AnalysisManager(EventDetector *ed, std::shared_ptr< BufferManager > buffer, const double default_period)
Creates a new AnalysisManager with pre-defined rules.
void togglePeriodicAnalysis(const std::string &rule_name, const bool enable)
Toggle periodic analysis for a specific rule.
std::shared_ptr< BufferManager > buffer_
BufferManager component.
std::map< std::string, std::shared_ptr< AnalysisRule > > rules_
pre-defined rules to evaluate, mapped to rule name
bool isRuleEnabled(const std::string &rule_name)
Queries the parameter server to determine whether a rule is enabled.
std::shared_ptr< pluginlib::ClassLoader< AnalysisRule > > rule_loader_
pluginlib class loader for AnalysisRule plugins
EventDetector * ed_
EventDetector node.