32#include <tf2_ros/transform_listener.h>
33#include <lifecycle_msgs/msg/transition.hpp>
34#include <rclcpp/rclcpp.hpp>
35#include <rclcpp/time.hpp>
36#include <rclcpp/time_source.hpp>
37#include <rclcpp_lifecycle/lifecycle_node.hpp>
38#include <rclcpp_lifecycle/lifecycle_publisher.hpp>
39#include <rosbag2_cpp/reader.hpp>
40#include <rosbag2_cpp/writer.hpp>
42#include "event_detector/AnalysisManager.hpp"
43#include "event_detector/BufferManager.hpp"
69 std::shared_ptr<rclcpp::TimeSource> time_source_;
79 rclcpp_lifecycle::node_interfaces::LifecycleNodeInterface::CallbackReturn
on_configure(
80 const rclcpp_lifecycle::State& state)
override;
89 rclcpp_lifecycle::node_interfaces::LifecycleNodeInterface::CallbackReturn
on_activate(
90 const rclcpp_lifecycle::State& state)
override;
99 rclcpp_lifecycle::node_interfaces::LifecycleNodeInterface::CallbackReturn
on_deactivate(
100 const rclcpp_lifecycle::State& state)
override;
109 rclcpp_lifecycle::node_interfaces::LifecycleNodeInterface::CallbackReturn
on_cleanup(
110 const rclcpp_lifecycle::State& state)
override;
119 rclcpp_lifecycle::node_interfaces::LifecycleNodeInterface::CallbackReturn
on_shutdown(
120 const rclcpp_lifecycle::State& state)
override;
140 const std::string& topic,
141 std::optional<rclcpp::Time> stamp_override = std::optional<rclcpp::Time>());
179 template <
typename T>
180 void insertPassthrough(
const std::shared_ptr<const T>& sample,
const std::string& client_id,
const std::string& topic,
181 std::optional<rclcpp::Time> stamp_override = std::optional<rclcpp::Time>());
186 template <
typename T>
212 rclcpp::Subscription<rcl_interfaces::msg::ParameterEvent>::SharedPtr
param_sub_;
264#define DATATYPE(TYPE, VAR) std::map<std::string, rclcpp::Subscription<TYPE>::ConstSharedPtr> VAR##_subscribers_;
265#include "event_detector/datatypes.macro"
271#include "event_detector/EventDetector.tpp"
std::shared_ptr< BufferManager > buffer_manager_
BufferManager component.
void loadParameters()
Loads ROS parameters used in the node.
rclcpp::Subscription< rcl_interfaces::msg::ParameterEvent >::SharedPtr param_sub_
Subscription to parameter events.
std::vector< ClientConnection > getConnectedClients() const
Returns client connection details.
rclcpp::SyncParametersClient::SharedPtr parameters_client_
Client for receiving parameter changes.
rclcpp_lifecycle::node_interfaces::LifecycleNodeInterface::CallbackReturn on_shutdown(const rclcpp_lifecycle::State &state) override
State transition callback for 'shutdown' transition.
OnSetParametersCallbackHandle::SharedPtr callback_handle_
Callback handle for onParameterSetCallback.
rclcpp_lifecycle::node_interfaces::LifecycleNodeInterface::CallbackReturn on_configure(const rclcpp_lifecycle::State &state) override
State transition callback for 'configure' transition.
void initializeBufferFromBag()
initializes buffer from bag
int default_queue_size
default subscriber queue size
rclcpp_lifecycle::node_interfaces::LifecycleNodeInterface::CallbackReturn on_activate(const rclcpp_lifecycle::State &state) override
State transition callback for 'activate' transition.
void waitForTimeToStart()
Waits until the ROS 2 time has started.
rclcpp_lifecycle::node_interfaces::LifecycleNodeInterface::CallbackReturn on_deactivate(const rclcpp_lifecycle::State &state) override
State transition callback for 'deactivate' transition.
rclcpp::Subscription< tf2_msgs::msg::TFMessage >::SharedPtr static_transforms_subscriber_
struct event_detector::EventDetector::@0 buffer_config_
buffer configuration
void insertTransformPassthrough(const std::shared_ptr< const tf2_msgs::msg::TFMessage > &transforms, const std::string &topic, std::optional< rclcpp::Time > stamp_override=std::optional< rclcpp::Time >())
Callback for tf2_msgs::msg::TFMessage that groups the transforms by clients and passes them to the co...
rclcpp::Subscription< tf2_msgs::msg::TFMessage >::SharedPtr transforms_subscriber_
ROS subscriber for transforms.
rclcpp_lifecycle::node_interfaces::LifecycleNodeInterface::CallbackReturn on_cleanup(const rclcpp_lifecycle::State &state) override
State transition callback for 'cleanup' transition.
void postParameterSetCallback(rcl_interfaces::msg::ParameterEvent::UniquePtr event)
Callback for acting upon parameter changes.
EventDetector(rclcpp::NodeOptions options)
Constructor getting its options e.g. from ComposableNodeContainer.
bool use_msg_stamp
whether to use msg stamp for sorting if possible
void loadClientParameters()
Loads ROS parameters for EventDetector clients.
struct event_detector::EventDetector::@1 analysis_config_
analysis configuration
void insertPassthrough(const std::shared_ptr< const T > &sample, const std::string &client_id, const std::string &topic, std::optional< rclcpp::Time > stamp_override=std::optional< rclcpp::Time >())
Callback template for inserting data into the buffer.
std::vector< std::string > initialization_bags
filepaths used for initializing buffer at startup
void registerClients()
Sets up subscriptions for connected client.
double default_period
default analysis interval
rclcpp::Time getSampleStamp(const T &sample)
Function for retrieving a time stamp to associate with a received message depending on buffer paramet...
double default_time
default buffer time
rcl_interfaces::msg::SetParametersResult onParametersSetCallback(const std::vector< rclcpp::Parameter > ¶ms)
Callback for validating parameter changes.
std::shared_ptr< AnalysisManager > analysis_manager_
AnalysisManager component.
std::shared_mutex reconfigure_mutex_
mutex for connected clients vector
void setup()
Sets up BufferManager, DatabaseInterface, subscribers and registers the clients.
std::vector< ClientConnection > connected_clients_
client connection details