tf2_server.h
Go to the documentation of this file.
1 #ifndef TF2_SERVER_TF2_SERVER_H
2 #define TF2_SERVER_TF2_SERVER_H
3 
4 #include <map>
5 #include <memory>
6 #include <mutex>
7 #include <unordered_set>
8 
11 #include <tf2_server/RequestTransformStream.h>
12 #include <ros/ros.h>
13 
14 namespace tf2_server
15 {
16 
18 {
19  bool operator()(const tf2_server::RequestTransformStreamRequest& r1,
20  const tf2_server::RequestTransformStreamRequest& r2) const;
21  bool equals(const tf2_server::RequestTransformStreamRequest& r1,
22  const tf2_server::RequestTransformStreamRequest& r2) const;
23 };
24 
26 {
27  bool operator()(const tf2_server::RequestTransformStreamRequest& r1,
28  const tf2_server::RequestTransformStreamRequest& r2) const;
29  bool equals(const tf2_server::RequestTransformStreamRequest& r1,
30  const tf2_server::RequestTransformStreamRequest& r2) const;
31 };
32 
33 class TF2Server
34 {
35 
36  protected: ros::NodeHandle& nh;
37  protected: ros::NodeHandle& pnh;
38 
39  protected: std::unique_ptr<tf2_ros::Buffer> buffer;
40  protected: std::unique_ptr<tf2_ros::BufferServer> server;
41  protected: std::unique_ptr<tf2_ros::TransformListener> listener;
42  protected: std::mutex mutex;
43  protected: std::mutex subscriberMutex;
44  protected: std::mutex streamsMutex;
45 
47 
48  protected: std::unordered_set<std::string> topicNames;
49  protected: std::map<std::string, ros::Publisher> publishers;
50  protected: std::map<std::string, ros::Publisher> staticPublishers;
51  protected: std::map<std::string, tf2_msgs::TFMessage> lastStaticTransforms;
52 
53  protected: typedef std::pair<std::string, std::string> FrameSpec;
54  protected: typedef std::vector<FrameSpec> FramesList;
55  protected: std::map<RequestTransformStreamRequest, std::unique_ptr<FramesList>, RequestComparatorByFrames> frames;
56 
57  protected: typedef std::pair<std::string, std::string> TopicsSpec;
58  protected: std::map<TopicsSpec, ros::Timer> timers;
59  protected: std::map<TopicsSpec, size_t> subscriberNumbers;
60  protected: std::map<TopicsSpec, RequestTransformStreamRequest> streams;
61 
62  protected: std::vector<RequestTransformStreamRequest> initialStreams;
65 
68 
69  protected: bool started = false;
70 
71  public: explicit TF2Server(ros::NodeHandle& nh, ros::NodeHandle& pnh);
72 
73  public: virtual void start();
74 
75  protected: void registerInitialStreams();
76 
77  protected: virtual bool onRequestTransformStream(RequestTransformStreamRequest& req, RequestTransformStreamResponse& resp);
78 
79  protected: virtual void streamTransform(const ros::TimerEvent& event, const RequestTransformStreamRequest& request, const TopicsSpec& topics);
80 
81  protected: virtual std::unique_ptr<FramesList> getFramesList(const RequestTransformStreamRequest& req) const;
82 
83  protected: virtual TopicsSpec getTopicsNames(const RequestTransformStreamRequest& request);
84 
85  protected: virtual void updateFramesLists();
86 
87  protected: virtual void onSubscriberConnected(const TopicsSpec& topics);
88  protected: virtual void onSubscriberDisconnected(const TopicsSpec& topics);
89 
90 };
91 
92 }
93 
94 #endif //TF2_SERVER_TF2_SERVER_H
tf2_server::TF2Server::frames
std::map< RequestTransformStreamRequest, std::unique_ptr< FramesList >, RequestComparatorByFrames > frames
Definition: tf2_server.h:55
tf2_server::RequestComparator::equals
bool equals(const tf2_server::RequestTransformStreamRequest &r1, const tf2_server::RequestTransformStreamRequest &r2) const
Definition: tf2_server.cpp:609
tf2_server::TF2Server::transformsUpdatePeriod
ros::Duration transformsUpdatePeriod
Definition: tf2_server.h:67
tf2_server::TF2Server::onSubscriberConnected
virtual void onSubscriberConnected(const TopicsSpec &topics)
Definition: tf2_server.cpp:508
tf2_server::TF2Server::FrameSpec
std::pair< std::string, std::string > FrameSpec
Definition: tf2_server.h:53
tf2_server::TF2Server::TopicsSpec
std::pair< std::string, std::string > TopicsSpec
Definition: tf2_server.h:57
ros.h
tf2_server::TF2Server::getTopicsNames
virtual TopicsSpec getTopicsNames(const RequestTransformStreamRequest &request)
Definition: tf2_server.cpp:265
buffer_server.h
tf2_server::TF2Server::buffer
std::unique_ptr< tf2_ros::Buffer > buffer
Definition: tf2_server.h:39
tf2_server::TF2Server::started
bool started
Definition: tf2_server.h:69
tf2_server::TF2Server::lastStaticTransforms
std::map< std::string, tf2_msgs::TFMessage > lastStaticTransforms
Definition: tf2_server.h:51
tf2_server::TF2Server::server
std::unique_ptr< tf2_ros::BufferServer > server
Definition: tf2_server.h:40
tf2_server::TF2Server
Definition: tf2_server.h:33
tf2_server::TF2Server::streamTransform
virtual void streamTransform(const ros::TimerEvent &event, const RequestTransformStreamRequest &request, const TopicsSpec &topics)
Definition: tf2_server.cpp:228
ros::ServiceServer
tf2_server::TF2Server::initialStreams
std::vector< RequestTransformStreamRequest > initialStreams
Definition: tf2_server.h:62
tf2_server::RequestComparator::operator()
bool operator()(const tf2_server::RequestTransformStreamRequest &r1, const tf2_server::RequestTransformStreamRequest &r2) const
Definition: tf2_server.cpp:581
tf2_server::TF2Server::streamsMutex
std::mutex streamsMutex
Definition: tf2_server.h:44
tf2_server::TF2Server::requestTransformStreamServer
ros::ServiceServer requestTransformStreamServer
Definition: tf2_server.h:46
tf2_server::TF2Server::timers
std::map< TopicsSpec, ros::Timer > timers
Definition: tf2_server.h:58
tf2_server::RequestComparatorByFrames::equals
bool equals(const tf2_server::RequestTransformStreamRequest &r1, const tf2_server::RequestTransformStreamRequest &r2) const
Definition: tf2_server.cpp:574
tf2_server::TF2Server::subscriberMutex
std::mutex subscriberMutex
Definition: tf2_server.h:43
tf2_server::TF2Server::mutex
std::mutex mutex
Definition: tf2_server.h:42
tf2_server::TF2Server::start
virtual void start()
Definition: tf2_server.cpp:127
tf2_server::RequestComparatorByFrames::operator()
bool operator()(const tf2_server::RequestTransformStreamRequest &r1, const tf2_server::RequestTransformStreamRequest &r2) const
Definition: tf2_server.cpp:551
tf2_server::TF2Server::listener
std::unique_ptr< tf2_ros::TransformListener > listener
Definition: tf2_server.h:41
tf2_server::TF2Server::onRequestTransformStream
virtual bool onRequestTransformStream(RequestTransformStreamRequest &req, RequestTransformStreamResponse &resp)
Definition: tf2_server.cpp:172
ros::TimerEvent
tf2_server::TF2Server::initialStreamsWaitTime
ros::Duration initialStreamsWaitTime
Definition: tf2_server.h:63
tf2_server::TF2Server::initialStreamsTimer
ros::Timer initialStreamsTimer
Definition: tf2_server.h:64
tf2_server::TF2Server::registerInitialStreams
void registerInitialStreams()
Definition: tf2_server.cpp:531
transform_listener.h
tf2_server::RequestComparatorByFrames
Definition: tf2_server.h:17
tf2_server::TF2Server::getFramesList
virtual std::unique_ptr< FramesList > getFramesList(const RequestTransformStreamRequest &req) const
Definition: tf2_server.cpp:384
ros::Time
tf2_server::TF2Server::subscriberNumbers
std::map< TopicsSpec, size_t > subscriberNumbers
Definition: tf2_server.h:59
tf2_server::TF2Server::TF2Server
TF2Server(ros::NodeHandle &nh, ros::NodeHandle &pnh)
Definition: tf2_server.cpp:26
tf2_server::TF2Server::onSubscriberDisconnected
virtual void onSubscriberDisconnected(const TopicsSpec &topics)
Definition: tf2_server.cpp:519
tf2_server::TF2Server::staticPublishers
std::map< std::string, ros::Publisher > staticPublishers
Definition: tf2_server.h:50
tf2_server::TF2Server::nh
ros::NodeHandle & nh
Definition: tf2_server.h:36
tf2_server::TF2Server::pnh
ros::NodeHandle & pnh
Definition: tf2_server.h:37
tf2_server::TF2Server::lastTransformsUpdateTime
ros::Time lastTransformsUpdateTime
Definition: tf2_server.h:66
tf2_server::RequestComparator
Definition: tf2_server.h:25
tf2_server
Definition: tf2_server.h:14
tf2_server::TF2Server::publishers
std::map< std::string, ros::Publisher > publishers
Definition: tf2_server.h:49
tf2_server::TF2Server::streams
std::map< TopicsSpec, RequestTransformStreamRequest > streams
Definition: tf2_server.h:60
tf2_server::TF2Server::updateFramesLists
virtual void updateFramesLists()
Definition: tf2_server.cpp:486
ros::Duration
ros::Timer
tf2_server::TF2Server::topicNames
std::unordered_set< std::string > topicNames
Definition: tf2_server.h:48
tf2_server::TF2Server::FramesList
std::vector< FrameSpec > FramesList
Definition: tf2_server.h:54
ros::NodeHandle


tf2_server
Author(s): Martin Pecka
autogenerated on Fri Jan 12 2024 03:42:13