genicam2ros_publisher.h
Go to the documentation of this file.
1 /*
2  * Copyright (c) 2017 Roboception GmbH
3  * All rights reserved
4  *
5  * Author: Heiko Hirschmueller
6  *
7  * Redistribution and use in source and binary forms, with or without
8  * modification, are permitted provided that the following conditions are met:
9  *
10  * 1. Redistributions of source code must retain the above copyright notice,
11  * this list of conditions and the following disclaimer.
12  *
13  * 2. Redistributions in binary form must reproduce the above copyright notice,
14  * this list of conditions and the following disclaimer in the documentation
15  * and/or other materials provided with the distribution.
16  *
17  * 3. Neither the name of the copyright holder nor the names of its contributors
18  * may be used to endorse or promote products derived from this software without
19  * specific prior written permission.
20  *
21  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
22  * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
23  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
24  * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
25  * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
26  * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
27  * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
28  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
29  * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
30  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
31  * POSSIBILITY OF SUCH DAMAGE.
32  */
33 
34 #ifndef RC_VISARD_ROS_GENICAM2ROS_PUBLISHER_H
35 #define RC_VISARD_ROS_GENICAM2ROS_PUBLISHER_H
36 
37 #include <string>
38 #include <functional>
39 
40 #include <GenApi/GenApi.h>
41 #include <rc_genicam_api/buffer.h>
42 
43 #include <ros/ros.h>
45 
46 namespace rc
47 {
54 {
55 public:
56  /*
57  Flags for components to be enabled.
58  */
59 
60  const static int ComponentIntensity = 1;
61  const static int ComponentIntensityCombined = 2;
62  const static int ComponentDisparity = 4;
63  const static int ComponentConfidence = 8;
64  const static int ComponentError = 16;
65 
70  GenICam2RosPublisher(const std::string& _frame_id) : frame_id(_frame_id)
71  {
72  }
73 
75  {
76  }
77 
82  void setNodemap(const std::shared_ptr<GenApi::CNodeMapRef>& _nodemap)
83  {
84  nodemap = _nodemap;
85  }
86 
91  void clearNodemap()
92  {
93  nodemap.reset();
94  }
95 
108  virtual void publish(const rcg::Buffer* buffer, uint32_t part, uint64_t pixelformat) = 0;
109 
116  virtual bool used() = 0;
117 
127  virtual void requiresComponents(int& components, bool& color) = 0;
128 
134  {
135  if (sub_callback)
136  {
137  sub_callback();
138  }
139  }
140 
146  {
147  if (sub_callback)
148  {
149  sub_callback();
150  }
151  }
152 
153 protected:
154  std::string frame_id;
155  std::function<void()> sub_callback;
156  std::shared_ptr<GenApi::CNodeMapRef> nodemap;
157 
158 private:
160 };
161 
162 } // namespace rc
163 
164 #endif
Interface for all publishers relating to images, point clouds or other stereo-camera data...
virtual void requiresComponents(int &components, bool &color)=0
Adds components and if color images are required to the given values.
static const int ComponentDisparity
std::function< void()> sub_callback
static const int ComponentConfidence
GenICam2RosPublisher & operator=(const GenICam2RosPublisher &)
static const int ComponentIntensity
void subChanged(const ros::SingleSubscriberPublisher &pub)
Called by publisher if subscription changed.
void setNodemap(const std::shared_ptr< GenApi::CNodeMapRef > &_nodemap)
Set nodemap to be used.
virtual void publish(const rcg::Buffer *buffer, uint32_t part, uint64_t pixelformat)=0
Offers a buffer for publication.
virtual bool used()=0
Returns true if there are subscribers to the topic.
GenICam2RosPublisher(const std::string &_frame_id)
void clearNodemap()
Clear nodemap.
void subChangedIt(const image_transport::SingleSubscriberPublisher &pub)
Called by publisher if subscription changed.
std::shared_ptr< GenApi::CNodeMapRef > nodemap
static const int ComponentIntensityCombined


rc_genicam_driver
Author(s): Heiko Hirschmueller , Felix Ruess
autogenerated on Sat Feb 13 2021 03:55:07