message_wrapper.h
Go to the documentation of this file.
1 
34 #ifndef SBG_ROS_MESSAGE_WRAPPER_H
35 #define SBG_ROS_MESSAGE_WRAPPER_H
36 
37 // SbgECom headers
38 #include <sbgEComLib.h>
39 #include <sbgEComIds.h>
40 
41 // Sbg header
42 #include <sbg_matrix3.h>
43 
44 // ROS headers
45 #include <geometry_msgs/TwistStamped.h>
46 #include <geometry_msgs/PointStamped.h>
47 #include "ros/ros.h"
48 #include <sensor_msgs/Imu.h>
49 #include <sensor_msgs/Temperature.h>
50 #include <sensor_msgs/MagneticField.h>
51 #include <sensor_msgs/FluidPressure.h>
52 #include <sensor_msgs/TimeReference.h>
53 #include <sensor_msgs/NavSatFix.h>
54 
55 // SbgRos message headers
56 #include "sbg_driver/SbgStatus.h"
57 #include "sbg_driver/SbgUtcTime.h"
58 #include "sbg_driver/SbgImuData.h"
59 #include "sbg_driver/SbgEkfEuler.h"
60 #include "sbg_driver/SbgEkfQuat.h"
61 #include "sbg_driver/SbgEkfNav.h"
62 #include "sbg_driver/SbgShipMotion.h"
63 #include "sbg_driver/SbgMag.h"
64 #include "sbg_driver/SbgMagCalib.h"
65 #include "sbg_driver/SbgGpsVel.h"
66 #include "sbg_driver/SbgGpsPos.h"
67 #include "sbg_driver/SbgGpsHdt.h"
68 #include "sbg_driver/SbgGpsRaw.h"
69 #include "sbg_driver/SbgOdoVel.h"
70 #include "sbg_driver/SbgEvent.h"
71 #include "sbg_driver/SbgImuShort.h"
72 #include "sbg_driver/SbgAirData.h"
73 
74 namespace sbg
75 {
80 {
81 private:
82 
84  sbg_driver::SbgUtcTime m_last_sbg_utc_;
86 
87  //---------------------------------------------------------------------//
88  //- Internal methods -//
89  //---------------------------------------------------------------------//
90 
99  template <typename T>
100  const geometry_msgs::Vector3 createGeometryVector3(const T* p_array, size_t array_size) const
101  {
102  assert(array_size == 3);
103 
104  geometry_msgs::Vector3 geometry_vector;
105 
106  geometry_vector.x = p_array[0];
107  geometry_vector.y = p_array[1];
108  geometry_vector.z = p_array[2];
109 
110  return geometry_vector;
111  };
112 
119  const std_msgs::Header createRosHeader(uint32_t device_timestamp) const;
120 
127  const ros::Time computeCorrectedRosTime(uint32_t device_timestamp) const;
128 
135  const sbg_driver::SbgEkfStatus createEkfStatusMessage(uint32_t ekf_status) const;
136 
143  const sbg_driver::SbgGpsPosStatus createGpsPosStatusMessage(const SbgLogGpsPos& ref_log_gps_pos) const;
144 
151  const sbg_driver::SbgGpsVelStatus createGpsVelStatusMessage(const SbgLogGpsVel& ref_log_gps_vel) const;
152 
159  const sbg_driver::SbgImuStatus createImuStatusMessage(uint16_t sbg_imu_status) const;
160 
167  const sbg_driver::SbgMagStatus createMagStatusMessage(const SbgLogMag& ref_log_mag) const;
168 
175  const sbg_driver::SbgShipMotionStatus createShipMotionStatusMessage(const SbgLogShipMotionData& ref_log_ship_motion) const;
176 
183  const sbg_driver::SbgStatusAiding createStatusAidingMessage(const SbgLogStatusData& ref_log_status) const;
184 
191  const sbg_driver::SbgStatusCom createStatusComMessage(const SbgLogStatusData& ref_log_status) const;
192 
199  const sbg_driver::SbgStatusGeneral createStatusGeneralMessage(const SbgLogStatusData& ref_log_status) const;
200 
207  const sbg_driver::SbgUtcTimeStatus createUtcStatusMessage(const SbgLogUtcData& ref_log_utc) const;
208 
215  uint32_t getNumberOfDaysInYear(uint16_t year) const;
216 
224  uint32_t getNumberOfDaysInMonth(uint16_t year, uint8_t month_index) const;
225 
232  bool isLeapYear(uint16_t year) const;
233 
240  const ros::Time convertUtcTimeToEpoch(const sbg_driver::SbgUtcTime& ref_sbg_utc_msg) const;
241 
248  const sbg_driver::SbgAirDataStatus createAirDataStatusMessage(const SbgLogAirData& ref_sbg_air_data) const;
249 
257  const geometry_msgs::TwistStamped createRosTwistStampedMessage(const sbg::SbgVector3f& body_vel, const sbg_driver::SbgImuData& ref_sbg_imu_msg) const;
258 
259 public:
260 
261  //---------------------------------------------------------------------//
262  //- Constructor -//
263  //---------------------------------------------------------------------//
264 
268  MessageWrapper(void);
269 
270  //---------------------------------------------------------------------//
271  //- Parameters -//
272  //---------------------------------------------------------------------//
273 
280  void setRosProcessingTime(const ros::Time& ref_ros_time);
281 
282  //---------------------------------------------------------------------//
283  //- Operations -//
284  //---------------------------------------------------------------------//
285 
292  const sbg_driver::SbgEkfEuler createSbgEkfEulerMessage(const SbgLogEkfEulerData& ref_log_ekf_euler) const;
293 
300  const sbg_driver::SbgEkfNav createSbgEkfNavMessage(const SbgLogEkfNavData& ref_log_ekf_nav) const;
301 
308  const sbg_driver::SbgEkfQuat createSbgEkfQuatMessage(const SbgLogEkfQuatData& ref_log_ekf_quat) const;
309 
316  const sbg_driver::SbgEvent createSbgEventMessage(const SbgLogEvent& ref_log_event) const;
317 
324  const sbg_driver::SbgGpsHdt createSbgGpsHdtMessage(const SbgLogGpsHdt& ref_log_gps_hdt) const;
325 
332  const sbg_driver::SbgGpsPos createSbgGpsPosMessage(const SbgLogGpsPos& ref_log_gps_pos) const;
333 
340  const sbg_driver::SbgGpsRaw createSbgGpsRawMessage(const SbgLogGpsRaw& ref_log_gps_raw) const;
341 
348  const sbg_driver::SbgGpsVel createSbgGpsVelMessage(const SbgLogGpsVel& ref_log_gps_vel) const;
349 
356  const sbg_driver::SbgImuData createSbgImuDataMessage(const SbgLogImuData& ref_log_imu_data) const;
357 
364  const sbg_driver::SbgMag createSbgMagMessage(const SbgLogMag& ref_log_mag) const;
365 
372  const sbg_driver::SbgMagCalib createSbgMagCalibMessage(const SbgLogMagCalib& ref_log_mag_calib) const;
373 
380  const sbg_driver::SbgOdoVel createSbgOdoVelMessage(const SbgLogOdometerData& ref_log_odo) const;
381 
388  const sbg_driver::SbgShipMotion createSbgShipMotionMessage(const SbgLogShipMotionData& ref_log_ship_motion) const;
389 
396  const sbg_driver::SbgStatus createSbgStatusMessage(const SbgLogStatusData& ref_log_status) const;
397 
404  const sbg_driver::SbgUtcTime createSbgUtcTimeMessage(const SbgLogUtcData& ref_log_utc);
405 
412  const sbg_driver::SbgAirData createSbgAirDataMessage(const SbgLogAirData& ref_air_data_log) const;
413 
420  const sbg_driver::SbgImuShort createSbgImuShortMessage(const SbgLogImuShort& ref_short_imu_log) const;
421 
429  const sensor_msgs::Imu createRosImuMessage(const sbg_driver::SbgImuData& ref_sbg_imu_msg, const sbg_driver::SbgEkfQuat& ref_sbg_quat_msg) const;
430 
437  const sensor_msgs::Temperature createRosTemperatureMessage(const sbg_driver::SbgImuData& ref_sbg_imu_msg) const;
438 
445  const sensor_msgs::MagneticField createRosMagneticMessage(const sbg_driver::SbgMag& ref_sbg_mag_msg) const;
446 
455  const geometry_msgs::TwistStamped createRosTwistStampedMessage(const sbg_driver::SbgEkfEuler& ref_sbg_ekf_vel_msg, const sbg_driver::SbgEkfNav& ref_sbg_ekf_nav_msg, const sbg_driver::SbgImuData& ref_sbg_imu_msg) const;
456 
457 
466  const geometry_msgs::TwistStamped createRosTwistStampedMessage(const sbg_driver::SbgEkfQuat& ref_sbg_ekf_vel_msg, const sbg_driver::SbgEkfNav& ref_sbg_ekf_nav_msg, const sbg_driver::SbgImuData& ref_sbg_imu_msg) const;
467 
468 
475  const geometry_msgs::PointStamped createRosPointStampedMessage(const sbg_driver::SbgEkfNav& ref_sbg_ekf_msg) const;
476 
483  const sensor_msgs::TimeReference createRosUtcTimeReferenceMessage(const sbg_driver::SbgUtcTime& ref_sbg_utc_msg) const;
484 
491  const sensor_msgs::NavSatFix createRosNavSatFixMessage(const sbg_driver::SbgGpsPos& ref_sbg_gps_msg) const;
492 
499  const sensor_msgs::FluidPressure createRosFluidPressureMessage(const sbg_driver::SbgAirData& ref_sbg_air_msg) const;
500 };
501 }
502 
503 #endif // SBG_ROS_MESSAGE_WRAPPER_H
const geometry_msgs::Vector3 createGeometryVector3(const T *p_array, size_t array_size) const
const sensor_msgs::NavSatFix createRosNavSatFixMessage(const sbg_driver::SbgGpsPos &ref_sbg_gps_msg) const
const sbg_driver::SbgEkfEuler createSbgEkfEulerMessage(const SbgLogEkfEulerData &ref_log_ekf_euler) const
const sensor_msgs::Temperature createRosTemperatureMessage(const sbg_driver::SbgImuData &ref_sbg_imu_msg) const
sbg_driver::SbgUtcTime m_last_sbg_utc_
uint32_t getNumberOfDaysInMonth(uint16_t year, uint8_t month_index) const
const sensor_msgs::MagneticField createRosMagneticMessage(const sbg_driver::SbgMag &ref_sbg_mag_msg) const
const sbg_driver::SbgShipMotion createSbgShipMotionMessage(const SbgLogShipMotionData &ref_log_ship_motion) const
const ros::Time convertUtcTimeToEpoch(const sbg_driver::SbgUtcTime &ref_sbg_utc_msg) const
const ros::Time computeCorrectedRosTime(uint32_t device_timestamp) const
const sbg_driver::SbgAirDataStatus createAirDataStatusMessage(const SbgLogAirData &ref_sbg_air_data) const
const sensor_msgs::Imu createRosImuMessage(const sbg_driver::SbgImuData &ref_sbg_imu_msg, const sbg_driver::SbgEkfQuat &ref_sbg_quat_msg) const
const sbg_driver::SbgGpsVelStatus createGpsVelStatusMessage(const SbgLogGpsVel &ref_log_gps_vel) const
const sbg_driver::SbgShipMotionStatus createShipMotionStatusMessage(const SbgLogShipMotionData &ref_log_ship_motion) const
Defines all sbgECom commands identifiers.
const sbg_driver::SbgMagCalib createSbgMagCalibMessage(const SbgLogMagCalib &ref_log_mag_calib) const
const sbg_driver::SbgGpsRaw createSbgGpsRawMessage(const SbgLogGpsRaw &ref_log_gps_raw) const
const sbg_driver::SbgMagStatus createMagStatusMessage(const SbgLogMag &ref_log_mag) const
const sbg_driver::SbgImuShort createSbgImuShortMessage(const SbgLogImuShort &ref_short_imu_log) const
const sbg_driver::SbgOdoVel createSbgOdoVelMessage(const SbgLogOdometerData &ref_log_odo) const
const sbg_driver::SbgUtcTime createSbgUtcTimeMessage(const SbgLogUtcData &ref_log_utc)
const std_msgs::Header createRosHeader(uint32_t device_timestamp) const
const sbg_driver::SbgEkfQuat createSbgEkfQuatMessage(const SbgLogEkfQuatData &ref_log_ekf_quat) const
const sbg_driver::SbgStatus createSbgStatusMessage(const SbgLogStatusData &ref_log_status) const
const sbg_driver::SbgStatusGeneral createStatusGeneralMessage(const SbgLogStatusData &ref_log_status) const
bool isLeapYear(uint16_t year) const
const sbg_driver::SbgGpsHdt createSbgGpsHdtMessage(const SbgLogGpsHdt &ref_log_gps_hdt) const
Handle a 3x3 matrix.
const geometry_msgs::TwistStamped createRosTwistStampedMessage(const sbg::SbgVector3f &body_vel, const sbg_driver::SbgImuData &ref_sbg_imu_msg) const
const sbg_driver::SbgGpsPos createSbgGpsPosMessage(const SbgLogGpsPos &ref_log_gps_pos) const
const sbg_driver::SbgAirData createSbgAirDataMessage(const SbgLogAirData &ref_air_data_log) const
const sbg_driver::SbgImuData createSbgImuDataMessage(const SbgLogImuData &ref_log_imu_data) const
const sbg_driver::SbgEvent createSbgEventMessage(const SbgLogEvent &ref_log_event) const
void setRosProcessingTime(const ros::Time &ref_ros_time)
const sensor_msgs::FluidPressure createRosFluidPressureMessage(const sbg_driver::SbgAirData &ref_sbg_air_msg) const
const geometry_msgs::PointStamped createRosPointStampedMessage(const sbg_driver::SbgEkfNav &ref_sbg_ekf_msg) const
const sbg_driver::SbgUtcTimeStatus createUtcStatusMessage(const SbgLogUtcData &ref_log_utc) const
const sbg_driver::SbgGpsVel createSbgGpsVelMessage(const SbgLogGpsVel &ref_log_gps_vel) const
uint32_t getNumberOfDaysInYear(uint16_t year) const
const sbg_driver::SbgStatusAiding createStatusAidingMessage(const SbgLogStatusData &ref_log_status) const
const sbg_driver::SbgMag createSbgMagMessage(const SbgLogMag &ref_log_mag) const
const sbg_driver::SbgStatusCom createStatusComMessage(const SbgLogStatusData &ref_log_status) const
const sensor_msgs::TimeReference createRosUtcTimeReferenceMessage(const sbg_driver::SbgUtcTime &ref_sbg_utc_msg) const
const sbg_driver::SbgEkfNav createSbgEkfNavMessage(const SbgLogEkfNavData &ref_log_ekf_nav) const
const sbg_driver::SbgEkfStatus createEkfStatusMessage(uint32_t ekf_status) const
ros::Time m_ros_processing_time_
const sbg_driver::SbgImuStatus createImuStatusMessage(uint16_t sbg_imu_status) const
const sbg_driver::SbgGpsPosStatus createGpsPosStatusMessage(const SbgLogGpsPos &ref_log_gps_pos) const
Main header file for the SBG Systems Enhanced Communication Library.


sbg_driver
Author(s): SBG Systems
autogenerated on Thu Oct 22 2020 03:47:22