37 #include <rc_genicam_api/config.h> 42 std::function<
void()>& sub_changed)
51 pub = nh.
advertise<rc_common_msgs::CameraParam>(
"left/camera_param", 1,
57 pub = nh.
advertise<rc_common_msgs::CameraParam>(
"right/camera_param", 1,
79 template <
class T>
inline rc_common_msgs::KeyValue getKeyValue(
const char *key, T value)
81 rc_common_msgs::KeyValue ret;
84 ret.value=std::to_string(value);
89 inline rc_common_msgs::KeyValue getKeyValueString(
const char *key,
const std::string &value)
91 rc_common_msgs::KeyValue ret;
108 rc_common_msgs::CameraParam
param;
111 param.header.stamp.sec = time / 1000000000ul;
112 param.header.stamp.nsec = time % 1000000000ul;
117 std::vector<std::string> lines;
119 uint32_t input_mask = 0;
120 uint32_t output_mask = 0;
121 for (
size_t i = 0; i < lines.size(); i++)
128 input_mask |= 1 << i;
133 output_mask |= 1 << i;
137 rc_common_msgs::KeyValue line_source;
138 line_source.key = lines[i];
140 param.line_source.push_back(line_source);
148 param.extra_data.push_back(getKeyValue(
"noise",
rcg::getFloat(
nodemap,
"ChunkRcNoise", 0, 0,
false)));
150 param.extra_data.push_back(getKeyValue(
"brightness",
rcg::getFloat(
nodemap,
"ChunkRcBrightness", 0, 0,
false)));
151 param.extra_data.push_back(getKeyValue(
"input_mask", input_mask));
152 param.extra_data.push_back(getKeyValue(
"output_mask", output_mask));
154 float out1_reduction = 0;
159 catch (
const std::exception&)
164 param.extra_data.push_back(getKeyValue(
"out1_reduction", out1_reduction));
169 param.extra_data.push_back(getKeyValue(
"auto_exposure_adapting", adapting));
171 catch (
const std::exception&)
176 param.extra_data.push_back(getKeyValueString(
"model_name",
rcg::getString(
nodemap,
"DeviceModelName",
false)));
Interface for all publishers relating to images, point clouds or other stereo-camera data...
void requiresComponents(int &components, bool &color) override
Adds components and if color images are required to the given values.
bool getBoolean(const std::shared_ptr< GenApi::CNodeMapRef > &nodemap, const char *name, bool exception=false, bool igncache=false)
bool param(const std::string ¶m_name, T ¶m_val, const T &default_val)
bool used() override
Returns true if there are subscribers to the topic.
std::function< void()> sub_callback
int64_t getInteger(const std::shared_ptr< GenApi::CNodeMapRef > &nodemap, const char *name, int64_t *vmin=0, int64_t *vmax=0, bool exception=false, bool igncache=false)
bool setEnum(const std::shared_ptr< GenApi::CNodeMapRef > &nodemap, const char *name, const char *value, bool exception=false)
static const int ComponentIntensity
void subChanged(const ros::SingleSubscriberPublisher &pub)
Called by publisher if subscription changed.
void publish(const boost::shared_ptr< M > &message) const
std::string getEnum(const std::shared_ptr< GenApi::CNodeMapRef > &nodemap, const char *name, bool exception=false)
uint64_t getTimestampNS() const
Publisher advertise(const std::string &topic, uint32_t queue_size, bool latch=false)
double getFloat(const std::shared_ptr< GenApi::CNodeMapRef > &nodemap, const char *name, double *vmin=0, double *vmax=0, bool exception=false, bool igncache=false)
void publish(const rcg::Buffer *buffer, uint32_t part, uint64_t pixelformat) override
Offers a buffer for publication.
CameraParamPublisher(ros::NodeHandle &nh, const std::string &frame_id, bool left, std::function< void()> &sub_changed)
std::shared_ptr< GenApi::CNodeMapRef > nodemap
uint32_t getNumSubscribers() const
std::string getString(const std::shared_ptr< GenApi::CNodeMapRef > &nodemap, const char *name, bool exception=false, bool igncache=false)