YARP
Yet Another Robot Platform
 
Loading...
Searching...
No Matches
RgbdSensor_nws_ros2.h
Go to the documentation of this file.
1/*
2 * SPDX-FileCopyrightText: 2023 Istituto Italiano di Tecnologia (IIT)
3 * SPDX-License-Identifier: BSD-3-Clause
4 */
5
6#ifndef YARP_DEV_RANGEFINDER2D_NWS_ROS2_H
7#define YARP_DEV_RANGEFINDER2D_NWS_ROS2_H
8
12
15
16#include <rclcpp/rclcpp.hpp>
17#include <std_msgs/msg/string.hpp>
18#include <sensor_msgs/msg/image.hpp>
19#include <sensor_msgs/msg/camera_info.hpp>
20
22
23#include <mutex>
24
34 sensor_msgs::msg::CameraInfo colorCamInfo;
35 sensor_msgs::msg::CameraInfo depthCamInfo;
36};
37
43{
44public:
48 RgbdSensor_nws_ros2& operator=(const RgbdSensor_nws_ros2&) = delete;
49 RgbdSensor_nws_ros2& operator=(RgbdSensor_nws_ros2&&) noexcept = delete;
50 ~RgbdSensor_nws_ros2() override = default;
51
52 // WrapperSingle
53 bool attach(yarp::dev::PolyDriver *poly) override;
54 bool detach() override;
55
56 // DeviceDriver
57 bool open(yarp::os::Searchable& config) override;
58 bool close() override;
59
60 // PeriodicThread
61 void run() override;
62
63private:
64 enum SensorType
65 {
66 COLOR_SENSOR,
67 DEPTH_SENSOR
68 };
69
70 template <class T>
71 struct param
72 {
73 param(T& inVar, std::string inName)
74 {
75 var = &inVar;
76 parname = inName;
77 }
78 T* var;
79 std::string parname;
80 };
81
82 rclcpp::Node::SharedPtr m_node;
83 rclcpp::Publisher<sensor_msgs::msg::Image>::SharedPtr rosPublisher_color;
84 rclcpp::Publisher<sensor_msgs::msg::Image>::SharedPtr rosPublisher_depth;
85 rclcpp::Publisher<sensor_msgs::msg::CameraInfo>::SharedPtr rosPublisher_colorCaminfo;
86 rclcpp::Publisher<sensor_msgs::msg::CameraInfo>::SharedPtr rosPublisher_depthCaminfo;
87
88 std::string m_depth_info_topic_name;
89 std::string m_color_info_topic_name;
90
91 yarp::dev::IRGBDSensor* sensor_p {nullptr};
92 yarp::dev::IFrameGrabberControls* fgCtrl {nullptr};
93 bool m_forceInfoSync {true};
94 bool m_firstTime {true};
95
96 CameraInfoData m_camInfoData;
97
98 bool writeData();
99 bool setCamInfo(sensor_msgs::msg::CameraInfo& cameraInfo,
100 const std::string& frame_id,
101 const SensorType& sensorType);
102 bool fromConfig(yarp::os::Searchable &config);
103 bool initialize_ROS2(yarp::os::Searchable& config);
104
105 bool read(yarp::os::ConnectionReader& connection);
106
108
109};
110
111
112
113#endif // YARP_DEV_RANGEFINDER2D_NWS_ROS2_H
This class is the parameters parser for class RgbdSensor_nws_ros2.
bool detach() override
Detach the object (you must have first called attach).
RgbdSensor_nws_ros2(RgbdSensor_nws_ros2 &&) noexcept=delete
RgbdSensor_nws_ros2(const RgbdSensor_nws_ros2 &)=delete
bool attach(yarp::dev::PolyDriver *poly) override
Attach to another object.
bool open(yarp::os::Searchable &config) override
Open the DeviceDriver.
void run() override
Loop function.
bool close() override
Close the DeviceDriver.
Interface implemented by all device drivers.
Control interface for frame grabber devices.
A generic interface for cameras that have both color camera as well as depth camera sensor,...
Definition IRGBDSensor.h:39
Helper interface for an object that can wrap/or "attach" to a single other device.
An interface for reading from a network connection.
An abstraction for a periodic thread.
A base class for nested structures that can be searched.
Definition Searchable.h:31
The main, catch-all namespace for YARP.
Definition dirs.h:16
RgbdSensor_nws_ros2: A Network grabber for kinect-like devices.
sensor_msgs::msg::CameraInfo depthCamInfo
sensor_msgs::msg::CameraInfo colorCamInfo