SickSafetyscannersRos.h
Go to the documentation of this file.
1 // this is for emacs file handling -*- mode: c++; indent-tabs-mode: nil -*-
2 
3 // -- BEGIN LICENSE BLOCK ----------------------------------------------
4 
24 // -- END LICENSE BLOCK ------------------------------------------------
25 
26 //----------------------------------------------------------------------
33 //----------------------------------------------------------------------
34 
35 #ifndef SICK_SAFETYSCANNERS_SICKSAFETYSCANNERSROS_H
36 #define SICK_SAFETYSCANNERS_SICKSAFETYSCANNERSROS_H
37 
38 
39 // ROS
42 #include <ros/ros.h>
43 #include <sensor_msgs/JointState.h>
44 #include <sensor_msgs/LaserScan.h>
45 
46 // STD
47 #include <string>
48 #include <vector>
49 
50 // Package
51 #include <sick_safetyscanners/ConfigMetadata.h>
52 #include <sick_safetyscanners/ExtendedLaserScanMsg.h>
53 #include <sick_safetyscanners/FieldData.h>
54 #include <sick_safetyscanners/OutputPathsMsg.h>
55 #include <sick_safetyscanners/RawMicroScanDataMsg.h>
57 #include <sick_safetyscanners/SickSafetyscannersConfigurationConfig.h>
58 #include <sick_safetyscanners/StatusOverview.h>
61 
62 #include <dynamic_reconfigure/server.h>
63 
64 #include <cmath>
65 
66 namespace sick {
67 
73 inline float degToRad(float deg)
74 {
75  return deg * M_PI / 180.0f;
76 }
77 
83 inline float radToDeg(float rad)
84 {
85  return rad * 180.0f / M_PI;
86 }
87 
95 inline uint16_t skipToPublishFrequency(int skip)
96 {
97  return skip + 1;
98 }
99 
101 
108 {
109 public:
118 
123  virtual ~SickSafetyscannersRos();
124 
125 private:
128 
131 
137 
138  // Diagnostics
140  std::shared_ptr<DiagnosedLaserScanPublisher> m_diagnosed_laser_scan_publisher;
141  sick_safetyscanners::RawMicroScanDataMsg m_last_raw_data;
145 
149 
151 
152  std::shared_ptr<sick::SickSafetyscanners> m_device;
153 
155  boost::asio::ip::address_v4 m_interface_ip;
156 
157  dynamic_reconfigure::Server<sick_safetyscanners::SickSafetyscannersConfigurationConfig>
159 
160  std::string m_frame_id;
162  double m_range_min;
163  double m_range_max;
164  double m_frequency_tolerance = 0.1;
165  double m_expected_frequency = 20.0;
168  double m_min_intensities = 0.0;
173 
178  bool readParameters();
179 
184  void receivedUDPPacket(const datastructure::Data& data);
185 
191  void reconfigureCallback(const sick_safetyscanners::SickSafetyscannersConfigurationConfig& config,
192  const uint32_t& level);
193 
194  bool isInitialised();
195 
196  sensor_msgs::LaserScan createLaserScanMessage(const sick::datastructure::Data& data);
197  sick_safetyscanners::ExtendedLaserScanMsg
199  std::vector<bool>
200  getMedianReflectors(const std::vector<sick::datastructure::ScanPoint> scan_points);
201  sick_safetyscanners::OutputPathsMsg
203  sick_safetyscanners::RawMicroScanDataMsg
205  sick_safetyscanners::DataHeaderMsg createDataHeaderMessage(const sick::datastructure::Data& data);
206  sick_safetyscanners::DerivedValuesMsg
208  sick_safetyscanners::GeneralSystemStateMsg
210  sick_safetyscanners::MeasurementDataMsg
212  std::vector<sick_safetyscanners::ScanPointMsg>
214  sick_safetyscanners::IntrusionDataMsg
216  std::vector<sick_safetyscanners::IntrusionDatumMsg>
218  sick_safetyscanners::ApplicationDataMsg
220  sick_safetyscanners::ApplicationInputsMsg
222  sick_safetyscanners::ApplicationOutputsMsg
224  void readTypeCodeSettings();
225  void readPersistentConfig();
226 
227  bool getFieldData(sick_safetyscanners::FieldData::Request& req,
228  sick_safetyscanners::FieldData::Response& res);
229 
230  bool getConfigMetadata(sick_safetyscanners::ConfigMetadata::Request& req,
231  sick_safetyscanners::ConfigMetadata::Response& res);
232 
233  bool getStatusOverview(sick_safetyscanners::StatusOverview::Request& req,
234  sick_safetyscanners::StatusOverview::Response& res);
235 
243  std::string getCheckSumString(uint32_t checksum);
244 
252  std::string getDateString(uint32_t days_since_1972, uint32_t milli_seconds);
253 };
254 
255 } // namespace sick
256 
257 #endif // SICK_SAFETYSCANNERS_SICKSAFETYSCANNERSROS_H
sick::SickSafetyscannersRos::m_frame_id
std::string m_frame_id
Definition: SickSafetyscannersRos.h:160
sick::SickSafetyscannersRos::m_nh
ros::NodeHandle m_nh
ROS node handle.
Definition: SickSafetyscannersRos.h:127
sick::SickSafetyscannersRos
The SickSafetyscannersRos class.
Definition: SickSafetyscannersRos.h:107
FieldData.h
sick::SickSafetyscannersRos::createGeneralSystemStateMessage
sick_safetyscanners::GeneralSystemStateMsg createGeneralSystemStateMessage(const sick::datastructure::Data &data)
Definition: SickSafetyscannersRos.cpp:572
ros::Publisher
sick::SickSafetyscannersRos::createMeasurementDataMessage
sick_safetyscanners::MeasurementDataMsg createMeasurementDataMessage(const sick::datastructure::Data &data)
Definition: SickSafetyscannersRos.cpp:623
sick::SickSafetyscannersRos::createScanPointMessageVector
std::vector< sick_safetyscanners::ScanPointMsg > createScanPointMessageVector(const sick::datastructure::Data &data)
Definition: SickSafetyscannersRos.cpp:636
sick::datastructure::ConfigMetadata
Class containing the serial number of a laser scanner.
Definition: ConfigMetadata.h:48
sick::SickSafetyscannersRos::m_min_intensities
double m_min_intensities
Definition: SickSafetyscannersRos.h:168
sick::SickSafetyscannersRos::SickSafetyscannersRos
SickSafetyscannersRos()
Constructor of the SickSafetyscannersRos.
Definition: SickSafetyscannersRos.cpp:41
sick::SickSafetyscannersRos::m_config_metadata_server
ros::ServiceServer m_config_metadata_server
Definition: SickSafetyscannersRos.h:147
sick
Definition: ApplicationNameVariableCommand.h:43
sick::SickSafetyscannersRos::m_use_sick_angles
bool m_use_sick_angles
Definition: SickSafetyscannersRos.h:170
sick::SickSafetyscannersRos::m_field_service_server
ros::ServiceServer m_field_service_server
Definition: SickSafetyscannersRos.h:146
ros.h
sick::datastructure::CommSettings
Containing the communication settings for the sensor which can be changed on runtime.
Definition: CommSettings.h:48
sick::SickSafetyscannersRos::createApplicationDataMessage
sick_safetyscanners::ApplicationDataMsg createApplicationDataMessage(const sick::datastructure::Data &data)
Definition: SickSafetyscannersRos.cpp:701
sick::SickSafetyscannersRos::m_diagnostic_updater
diagnostic_updater::Updater m_diagnostic_updater
Definition: SickSafetyscannersRos.h:139
sick::SickSafetyscannersRos::createDataHeaderMessage
sick_safetyscanners::DataHeaderMsg createDataHeaderMessage(const sick::datastructure::Data &data)
Definition: SickSafetyscannersRos.cpp:525
sick::SickSafetyscannersRos::m_dynamic_reconfiguration_server
dynamic_reconfigure::Server< sick_safetyscanners::SickSafetyscannersConfigurationConfig > m_dynamic_reconfiguration_server
Definition: SickSafetyscannersRos.h:158
diagnostic_updater::Updater
sick::datastructure::Data
The data class containing all data blocks of a measurement.
Definition: Data.h:55
sick::SickSafetyscannersRos::reconfigureCallback
void reconfigureCallback(const sick_safetyscanners::SickSafetyscannersConfigurationConfig &config, const uint32_t &level)
Function which is triggered when a dynamic reconfiguration is performed.
Definition: SickSafetyscannersRos.cpp:125
CommSettings.h
sick::SickSafetyscannersRos::m_use_pers_conf
bool m_use_pers_conf
Definition: SickSafetyscannersRos.h:172
sick::SickSafetyscannersRos::createDerivedValuesMessage
sick_safetyscanners::DerivedValuesMsg createDerivedValuesMessage(const sick::datastructure::Data &data)
Definition: SickSafetyscannersRos.cpp:553
sick::SickSafetyscannersRos::createIntrusionDatumMessageVector
std::vector< sick_safetyscanners::IntrusionDatumMsg > createIntrusionDatumMessageVector(const sick::datastructure::Data &data)
Definition: SickSafetyscannersRos.cpp:677
sick::SickSafetyscannersRos::m_diagnosed_laser_scan_publisher
std::shared_ptr< DiagnosedLaserScanPublisher > m_diagnosed_laser_scan_publisher
Definition: SickSafetyscannersRos.h:140
sick::SickSafetyscannersRos::firmware_version
sick::datastructure::FirmwareVersion firmware_version
Definition: SickSafetyscannersRos.h:143
publisher.h
diagnostic_updater.h
sick::skipToPublishFrequency
uint16_t skipToPublishFrequency(int skip)
Converts a skip value into a "publish frequency" value.
Definition: SickSafetyscannersRos.h:95
ros::ServiceServer
sick::SickSafetyscannersRos::createRawDataMessage
sick_safetyscanners::RawMicroScanDataMsg createRawDataMessage(const sick::datastructure::Data &data)
Definition: SickSafetyscannersRos.cpp:510
sick::SickSafetyscannersRos::m_laser_scan_publisher
ros::Publisher m_laser_scan_publisher
ROS topic publisher.
Definition: SickSafetyscannersRos.h:133
sick::SickSafetyscannersRos::m_private_nh
ros::NodeHandle m_private_nh
ROS private node handle.
Definition: SickSafetyscannersRos.h:130
sick::SickSafetyscannersRos::getFieldData
bool getFieldData(sick_safetyscanners::FieldData::Request &req, sick_safetyscanners::FieldData::Response &res)
Definition: SickSafetyscannersRos.cpp:805
sick::SickSafetyscannersRos::m_time_offset
double m_time_offset
Definition: SickSafetyscannersRos.h:161
sick::SickSafetyscannersRos::m_output_path_publisher
ros::Publisher m_output_path_publisher
Definition: SickSafetyscannersRos.h:136
sick::SickSafetyscannersRos::getMedianReflectors
std::vector< bool > getMedianReflectors(const std::vector< sick::datastructure::ScanPoint > scan_points)
Definition: SickSafetyscannersRos.cpp:392
sick::SickSafetyscannersRos::m_status_overview_server
ros::ServiceServer m_status_overview_server
Definition: SickSafetyscannersRos.h:148
sick::SickSafetyscannersRos::m_frequency_tolerance
double m_frequency_tolerance
Definition: SickSafetyscannersRos.h:164
sick::SickSafetyscannersRos::sensorDiagnostics
void sensorDiagnostics(diagnostic_updater::DiagnosticStatusWrapper &diagnostic_status)
Definition: SickSafetyscannersRos.cpp:298
sick::SickSafetyscannersRos::m_communication_settings
sick::datastructure::CommSettings m_communication_settings
Definition: SickSafetyscannersRos.h:154
sick::SickSafetyscannersRos::isInitialised
bool isInitialised()
Definition: SickSafetyscannersRos.cpp:159
sick::SickSafetyscannersRos::createExtendedLaserScanMessage
sick_safetyscanners::ExtendedLaserScanMsg createExtendedLaserScanMessage(const sick::datastructure::Data &data)
Definition: SickSafetyscannersRos.cpp:367
diagnostic_updater::DiagnosedPublisher
sick::degToRad
float degToRad(float deg)
Converts degrees to radians.
Definition: SickSafetyscannersRos.h:73
sick::radToDeg
float radToDeg(float rad)
Converts radians to degrees.
Definition: SickSafetyscannersRos.h:83
sick::SickSafetyscannersRos::m_raw_data_publisher
ros::Publisher m_raw_data_publisher
Definition: SickSafetyscannersRos.h:135
sick::SickSafetyscannersRos::m_device
std::shared_ptr< sick::SickSafetyscanners > m_device
Definition: SickSafetyscannersRos.h:152
sick::SickSafetyscannersRos::getConfigMetadata
bool getConfigMetadata(sick_safetyscanners::ConfigMetadata::Request &req, sick_safetyscanners::ConfigMetadata::Response &res)
Definition: SickSafetyscannersRos.cpp:856
sick::SickSafetyscannersRos::createIntrusionDataMessage
sick_safetyscanners::IntrusionDataMsg createIntrusionDataMessage(const sick::datastructure::Data &data)
Definition: SickSafetyscannersRos.cpp:665
sick::SickSafetyscannersRos::receivedUDPPacket
void receivedUDPPacket(const datastructure::Data &data)
Function which is called when a new complete UDP Packet is received.
Definition: SickSafetyscannersRos.cpp:267
sick::SickSafetyscannersRos::m_timestamp_max_acceptable
double m_timestamp_max_acceptable
Definition: SickSafetyscannersRos.h:167
sick::DiagnosedLaserScanPublisher
diagnostic_updater::DiagnosedPublisher< sensor_msgs::LaserScan > DiagnosedLaserScanPublisher
Definition: SickSafetyscannersRos.h:100
sick::SickSafetyscannersRos::m_range_max
double m_range_max
Definition: SickSafetyscannersRos.h:163
sick::SickSafetyscannersRos::createApplicationInputsMessage
sick_safetyscanners::ApplicationInputsMsg createApplicationInputsMessage(const sick::datastructure::Data &data)
Definition: SickSafetyscannersRos.cpp:714
sick::SickSafetyscannersRos::createOutputPathsMessage
sick_safetyscanners::OutputPathsMsg createOutputPathsMessage(const sick::datastructure::Data &data)
Definition: SickSafetyscannersRos.cpp:476
sick::SickSafetyscannersRos::m_expected_frequency
double m_expected_frequency
Definition: SickSafetyscannersRos.h:165
sick::SickSafetyscannersRos::createLaserScanMessage
sensor_msgs::LaserScan createLaserScanMessage(const sick::datastructure::Data &data)
Definition: SickSafetyscannersRos.cpp:418
sick::SickSafetyscannersRos::m_angle_offset
float m_angle_offset
Definition: SickSafetyscannersRos.h:171
sick::SickSafetyscannersRos::m_extended_laser_scan_publisher
ros::Publisher m_extended_laser_scan_publisher
Definition: SickSafetyscannersRos.h:134
sick::SickSafetyscannersRos::getStatusOverview
bool getStatusOverview(sick_safetyscanners::StatusOverview::Request &req, sick_safetyscanners::StatusOverview::Response &res)
Definition: SickSafetyscannersRos.cpp:885
sick::SickSafetyscannersRos::config_meta_data
sick::datastructure::ConfigMetadata config_meta_data
Definition: SickSafetyscannersRos.h:142
sick::SickSafetyscannersRos::m_last_raw_data
sick_safetyscanners::RawMicroScanDataMsg m_last_raw_data
Definition: SickSafetyscannersRos.h:141
sick::SickSafetyscannersRos::readTypeCodeSettings
void readTypeCodeSettings()
Definition: SickSafetyscannersRos.cpp:106
sick::SickSafetyscannersRos::m_timestamp_min_acceptable
double m_timestamp_min_acceptable
Definition: SickSafetyscannersRos.h:166
sick::SickSafetyscannersRos::m_initialised
bool m_initialised
Definition: SickSafetyscannersRos.h:150
sick::SickSafetyscannersRos::m_range_min
double m_range_min
Definition: SickSafetyscannersRos.h:162
diagnostic_updater::DiagnosticStatusWrapper
sick::SickSafetyscannersRos::m_interface_ip
boost::asio::ip::address_v4 m_interface_ip
Definition: SickSafetyscannersRos.h:155
sick::SickSafetyscannersRos::createApplicationOutputsMessage
sick_safetyscanners::ApplicationOutputsMsg createApplicationOutputsMessage(const sick::datastructure::Data &data)
Definition: SickSafetyscannersRos.cpp:747
sick::SickSafetyscannersRos::~SickSafetyscannersRos
virtual ~SickSafetyscannersRos()
~SickSafetyscannersRos Destructor if the SickSafetyscanners ROS
Definition: SickSafetyscannersRos.cpp:165
sick::datastructure::FirmwareVersion
Class containing the firmware version of a laser scanner.
Definition: FirmwareVersion.h:47
SickSafetyscanners.h
sick::SickSafetyscannersRos::getDateString
std::string getDateString(uint32_t days_since_1972, uint32_t milli_seconds)
getDateString converts the date representation received as days since 1972-01-01 and milliseconds sin...
Definition: SickSafetyscannersRos.cpp:924
sick::SickSafetyscannersRos::readPersistentConfig
void readPersistentConfig()
Definition: SickSafetyscannersRos.cpp:116
ros::NodeHandle
sick::SickSafetyscannersRos::getCheckSumString
std::string getCheckSumString(uint32_t checksum)
getCheckSumString converts the uint32 value received as checksum such that the hexadecimal representa...
Definition: SickSafetyscannersRos.cpp:916
sick::SickSafetyscannersRos::readParameters
bool readParameters()
Reads and verifies the ROS parameters.
Definition: SickSafetyscannersRos.cpp:167


sick_safetyscanners
Author(s): Lennart Puck
autogenerated on Thu Aug 3 2023 02:39:53