3#include <spdlog/spdlog.h>
5#include <rosbag/message_instance.h>
6#include <glim/util/extension_module.hpp>
15 using Ptr = std::shared_ptr<GenericTopicSubscription>;
42template <
typename Msg>
49 template <
typename Callback>
56 const auto msg = m.instantiate<Msg>();
58 spdlog::warn(
"failed to instantiate message on {}",
topic);
65 const std::function<void(
const std::shared_ptr<const Msg>&)> callback;
77 virtual std::vector<GenericTopicSubscription::Ptr> create_subscriptions() = 0;
Extension module with ROS1 topic subscription.
Definition extension_module_ros.hpp:72
Extension module to be dynamically loaded via dynamic linking.
Definition extension_module.hpp:10
Generic topic subscription that allows transparently subscribes to a topic through glim_rosnode and g...
Definition extension_module_ros.hpp:13
GenericTopicSubscription(const std::string &topic)
Constructor.
Definition extension_module_ros.hpp:21
virtual void insert_message_instance(const rosbag::MessageInstance &m)=0
Parse a rosbag message instance and feed the msg to the callback.
virtual void create_subscriber(ros::NodeHandle &nh)=0
Create a ROS subscriber.
const std::string topic
Topic name.
Definition extension_module_ros.hpp:36
Specialized topic subscription for type erasure.
Definition extension_module_ros.hpp:43
virtual void insert_message_instance(const rosbag::MessageInstance &m) override
Parse a rosbag message instance and feed the msg to the callback.
Definition extension_module_ros.hpp:55
TopicSubscription(const std::string &topic, const Callback &callback)
topic Topic name
Definition extension_module_ros.hpp:50
virtual void create_subscriber(ros::NodeHandle &nh) override
Create a ROS subscriber.
Definition extension_module_ros.hpp:53