rgbd
server_rgbd.h
Go to the documentation of this file.
1 #ifndef RGBD_SERVER_RGBD_H_
2 #define RGBD_SERVER_RGBD_H_
3 
4 #include "rgbd/image.h"
5 #include "rgbd_msgs/GetRGBD.h"
6 
7 #include <ros/callback_queue.h>
8 #include <ros/node_handle.h>
9 #include <ros/publisher.h>
10 #include <ros/service_server.h>
11 
12 #include <mutex>
13 #include <thread>
14 
15 namespace rgbd {
16 
20 class ServerRGBD {
21 
22 public:
23 
27  ServerRGBD(ros::NodeHandle nh=ros::NodeHandle());
28 
34  virtual ~ServerRGBD();
35 
43  void initialize(const std::string& name, RGBStorageType rgb_type = RGB_STORAGE_LOSSLESS, DepthStorageType depth_type = DEPTH_STORAGE_LOSSLESS, const float service_freq = 10);
44 
49  void send(const Image& image);
50 
54  const static int MESSAGE_VERSION;
55 
56 protected:
57 
58  ros::NodeHandle nh_;
59  ros::Publisher pub_image_;
60  ros::ServiceServer service_server_;
61  ros::CallbackQueue cb_queue_;
62 
65 
68 
69  // Service thread
71 
78  bool serviceCallback(rgbd_msgs::GetRGBDRequest& req, rgbd_msgs::GetRGBDResponse& resp);
79 
84  void serviceThreadFunc(const float frequency);
85 
86 };
87 
88 }
89 
90 #endif // RGBD_SERVER_RGBD_H_
rgbd::ServerRGBD::service_server_
ros::ServiceServer service_server_
Definition: server_rgbd.h:60
rgbd::ServerRGBD::initialize
void initialize(const std::string &name, RGBStorageType rgb_type=RGB_STORAGE_LOSSLESS, DepthStorageType depth_type=DEPTH_STORAGE_LOSSLESS, const float service_freq=10)
Initialize server.
Definition: server_rgbd.cpp:43
std::string
rgbd::ServerRGBD::ServerRGBD
ServerRGBD(ros::NodeHandle nh=ros::NodeHandle())
Constructor.
Definition: server_rgbd.cpp:28
rgbd::ServerRGBD::image_
rgbd::Image image_
Definition: server_rgbd.h:66
rgbd::ServerRGBD::~ServerRGBD
virtual ~ServerRGBD()
Destructor.
Definition: server_rgbd.cpp:34
rgbd::ServerRGBD::image_mutex_
std::mutex image_mutex_
Definition: server_rgbd.h:67
rgbd::DepthStorageType
DepthStorageType
Definition: image.h:36
rgbd::Image
Definition: image.h:43
rgbd::ServerRGBD::serviceThreadFunc
void serviceThreadFunc(const float frequency)
Function to be called in the thread proving the service.
Definition: server_rgbd.cpp:118
thread
rgbd
Definition: client.h:24
rgbd::RGBStorageType
RGBStorageType
Definition: image.h:29
rgbd::ServerRGBD::rgb_type_
RGBStorageType rgb_type_
Definition: server_rgbd.h:63
image.h
rgbd::ServerRGBD::service_thread_
std::thread service_thread_
Definition: server_rgbd.h:70
rgbd::ServerRGBD::MESSAGE_VERSION
const static int MESSAGE_VERSION
version of the RGBD message being used
Definition: server_rgbd.h:54
rgbd::RGB_STORAGE_LOSSLESS
@ RGB_STORAGE_LOSSLESS
Definition: image.h:32
rgbd::ServerRGBD::depth_type_
DepthStorageType depth_type_
Definition: server_rgbd.h:64
rgbd::ServerRGBD::cb_queue_
ros::CallbackQueue cb_queue_
Definition: server_rgbd.h:61
rgbd::ServerRGBD::nh_
ros::NodeHandle nh_
Definition: server_rgbd.h:58
mutex
rgbd::DEPTH_STORAGE_LOSSLESS
@ DEPTH_STORAGE_LOSSLESS
Definition: image.h:39
rgbd::ServerRGBD::serviceCallback
bool serviceCallback(rgbd_msgs::GetRGBDRequest &req, rgbd_msgs::GetRGBDResponse &resp)
serviceCallback
Definition: server_rgbd.cpp:83
rgbd::ServerRGBD
Server which provides RGBD topic and RGBD service.
Definition: server_rgbd.h:20
rgbd::ServerRGBD::pub_image_
ros::Publisher pub_image_
Definition: server_rgbd.h:59
rgbd::ServerRGBD::send
void send(const Image &image)
Write a new image to all interfaces.
Definition: server_rgbd.cpp:56