YARP
Yet Another Robot Platform
 
Loading...
Searching...
No Matches
Rangefinder2D_nwc_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_ROS2_RANGEFINDER2D_NWC_ROS2_H
7#define YARP_ROS2_RANGEFINDER2D_NWC_ROS2_H
8
12#include <Ros2Spinner.h>
13
14
15#include <rclcpp/rclcpp.hpp>
16#include <std_msgs/msg/string.hpp>
17#include <sensor_msgs/msg/laser_scan.hpp>
18#include <Ros2Subscriber.h>
19
21
22#include <mutex>
23
36{
37public:
42 Rangefinder2D_nwc_ros2& operator=(Rangefinder2D_nwc_ros2&&) noexcept = delete;
43 ~Rangefinder2D_nwc_ros2() override = default;
44
45 // DeviceDriver
46 bool open(yarp::os::Searchable& config) override;
47 bool close() override;
48
49 // Spinner
51
52 // ROS2 Topic Callback
53 void callback(sensor_msgs::msg::LaserScan::SharedPtr msg, std::string topic);
54
55public:
56 // IRangeFinder2D
57 yarp::dev::ReturnValue getLaserMeasurement(std::vector<yarp::sig::LaserMeasurementData> &data, double* timestamp = nullptr) override;
58 yarp::dev::ReturnValue getRawData(yarp::sig::Vector &data, double* timestamp = nullptr) override;
60 yarp::dev::ReturnValue getDistanceRange(double& min, double& max) override;
61 yarp::dev::ReturnValue setDistanceRange(double min, double max) override;
62 yarp::dev::ReturnValue getScanLimits(double& min, double& max) override;
63 yarp::dev::ReturnValue setScanLimits(double min, double max) override;
66 yarp::dev::ReturnValue getScanRate(double& rate) override;
67 yarp::dev::ReturnValue setScanRate(double rate) override;
68 yarp::dev::ReturnValue getDeviceInfo(std::string &device_info) override;
69
70private:
71 rclcpp::Node::SharedPtr m_node;
73
74 bool m_verbose = false;
75 bool m_data_valid = false;
76 std::mutex m_mutex;
77 double m_minAngle, m_maxAngle;
78 double m_minDistance, m_maxDistance;
79 double m_resolution;
80 double m_period;
81 double m_timestamp;
82 yarp::sig::Vector m_data;
83 std::string m_frame_id;
84};
85
86#endif // YARP_ROS2_RANGEFINDER2D_NWC_ROS2_H
This class is the parameters parser for class Rangefinder2D_nwc_ros2.
Rangefinder2D_nwc_ros2: A Network grabber for 2D Rangefinder devices
Rangefinder2D_nwc_ros2(const Rangefinder2D_nwc_ros2 &)=delete
yarp::dev::ReturnValue setHorizontalResolution(double step) override
get the angular step between two measurements (if available)
yarp::dev::ReturnValue getScanRate(double &rate) override
get the scan rate (scans per seconds)
bool close() override
Close the DeviceDriver.
yarp::dev::ReturnValue setScanRate(double rate) override
set the scan rate (scans per seconds)
void callback(sensor_msgs::msg::LaserScan::SharedPtr msg, std::string topic)
yarp::dev::ReturnValue getRawData(yarp::sig::Vector &data, double *timestamp=nullptr) override
Get the device measurements.
Rangefinder2D_nwc_ros2(Rangefinder2D_nwc_ros2 &&) noexcept=delete
yarp::dev::ReturnValue setScanLimits(double min, double max) override
set the scan angular range.
yarp::dev::ReturnValue getScanLimits(double &min, double &max) override
get the scan angular range.
yarp::dev::ReturnValue getDeviceStatus(Device_status &status) override
get the device status
yarp::dev::ReturnValue getHorizontalResolution(double &step) override
get the angular step between two measurements.
yarp::dev::ReturnValue getLaserMeasurement(std::vector< yarp::sig::LaserMeasurementData > &data, double *timestamp=nullptr) override
Get the device measurements.
yarp::dev::ReturnValue setDistanceRange(double min, double max) override
set the device detection range.
bool open(yarp::os::Searchable &config) override
Open the DeviceDriver.
yarp::dev::ReturnValue getDistanceRange(double &min, double &max) override
get the device detection range
yarp::dev::ReturnValue getDeviceInfo(std::string &device_info) override
get the device hardware characteristics
Interface implemented by all device drivers.
A generic interface for planar laser range finders.
The main, catch-all namespace for YARP.
Definition dirs.h:16