mars_lib 0.1.0.2abe2576fe7f
Modular and Robust Sensor-Fusion
Loading...
Searching...
No Matches
sensor_manager.h
Go to the documentation of this file.
1// Copyright (C) 2024 Christian Brommer and Thomas Jantos, Control of Networked Systems, University of Klagenfurt,
2// Austria.
3//
4// All rights reserved.
5//
6// This software is licensed under the terms of the BSD-2-Clause-License with
7// no commercial use allowed, the full terms of which are made available
8// in the LICENSE file. No license in patents is granted.
9//
10// You can contact the author at <christian.brommer@ieee.org>
11
12#ifndef SENSORMANAGER_HPP
13#define SENSORMANAGER_HPP
14
16#include <memory>
17#include <vector>
18
19namespace mars
20{
22{
23public:
24 std::vector<std::shared_ptr<SensorAbsClass>> sensor_list_;
25 SensorManager() = default;
26
32 bool register_sensor(std::shared_ptr<SensorAbsClass> sensor)
33 {
34 // Check if sensor already exists
35 if (std::find(sensor_list_.begin(), sensor_list_.end(), sensor) != sensor_list_.end())
36 {
37 // Sensor is already registered
38 return false;
39 }
40
41 sensor_list_.push_back(sensor);
42 std::cout << "Registered sensor [" << sensor->name_ << "] with Sensor Manager" << std::endl;
43 return true;
44 }
45
52 bool remove_sensor(Buffer& buffer, std::shared_ptr<SensorAbsClass> sensor)
53 {
54 if (!does_sensor_exist(sensor))
55 {
56 // Sensor is not registered
57 return false;
58 }
59 // Deactive the sensor
60 this->deactivate_sensor(buffer, sensor);
61 // Remove the sensor from the list
62 sensor_list_.erase(std::remove(sensor_list_.begin(), sensor_list_.end(), sensor), sensor_list_.end());
63 std::cout << "Removed sensor [" << sensor->name_ << "] from Sensor Manager" << std::endl;
64 return true;
65 }
66
71 {
72 std::cout << "Sensor Manager contains " << sensor_list_.size() << " sensors" << std::endl;
73 for (auto& sensor : sensor_list_)
74 {
75 std::cout << *sensor << std::endl;
76 }
77 }
78
84 bool does_sensor_exist(std::shared_ptr<SensorAbsClass> sensor)
85 {
86 if (std::find(sensor_list_.begin(), sensor_list_.end(), sensor) != sensor_list_.end())
87 {
88 return true;
89 }
90 return false;
91 }
92
99 bool deactivate_sensor(Buffer& buffer, std::shared_ptr<SensorAbsClass> sensor)
100 {
101 if (!does_sensor_exist(sensor))
102 {
103 // Sensor is not registered
104 return false;
105 }
106
107 // Reset the sensor
108 sensor->do_update_ = false;
109 sensor->is_initialized_ = false;
110 sensor->ref_to_nav_given_ = false;
111
112 // Call buffer to clear all entries of the sensor
113 if (buffer.RemoveSensorFromBuffer(sensor))
114 {
115 std::cout << "Removed sensor [" << sensor->name_ << "] from buffer" << std::endl;
116 }
117 else
118 {
119 std::cout << "Could not remove sensor [" << sensor->name_ << "] from buffer as buffer is empty" << std::endl;
120 return false;
121 }
122 return true;
123 }
124
130 bool activate_sensor(std::shared_ptr<SensorAbsClass> sensor)
131 {
132 if (!does_sensor_exist(sensor))
133 {
134 // Sensor is not registered
135 return false;
136 }
137
138 sensor->do_update_ = true;
139 std::cout << "Activated sensor [" << sensor->name_ << "]" << std::endl;
140 return true;
141 }
142};
143} // namespace mars
144
145#endif // SENSORMANAGER_HPP
BufferClass that holds mars::BufferEntryType elements and provides access methods.
Definition buffer.h:35
bool RemoveSensorFromBuffer(const std::shared_ptr< SensorAbsClass > &sensor_handle)
RemoveSensorFromBuffer Removes all entrys that are associated with the given sensor handle.
Definition sensor_manager.h:22
std::vector< std::shared_ptr< SensorAbsClass > > sensor_list_
Vector containing all registered sensors.
Definition sensor_manager.h:24
void list_sensors()
list_sensors Print the information of all registered sensors
Definition sensor_manager.h:70
SensorManager()=default
bool deactivate_sensor(Buffer &buffer, std::shared_ptr< SensorAbsClass > sensor)
deactivate_sensor Deactivate a sensor
Definition sensor_manager.h:99
bool does_sensor_exist(std::shared_ptr< SensorAbsClass > sensor)
does_sensor_exist Check if a sensor is registered
Definition sensor_manager.h:84
bool activate_sensor(std::shared_ptr< SensorAbsClass > sensor)
activate_sensor Activate a sensor
Definition sensor_manager.h:130
bool register_sensor(std::shared_ptr< SensorAbsClass > sensor)
register_sensor Register a sensor with the sensor manager
Definition sensor_manager.h:32
bool remove_sensor(Buffer &buffer, std::shared_ptr< SensorAbsClass > sensor)
remove_sensor Remove a sensor from the sensor manager
Definition sensor_manager.h:52
Definition buffer.h:27