message_publisher.cpp
Go to the documentation of this file.
1 #include "message_publisher.h"
2 
4 
8 //---------------------------------------------------------------------//
9 //- Constructor -//
10 //---------------------------------------------------------------------//
11 
12 MessagePublisher::MessagePublisher():
13 max_messages_(10)
14 {
15 }
16 
17 //---------------------------------------------------------------------//
18 //- Private methods -//
19 //---------------------------------------------------------------------//
20 
21 std::string MessagePublisher::getOutputTopicName(SbgEComMsgId sbg_message_id) const
22 {
23  std::string sbg_node_name;
24  std::string name;
25 
26  sbg_node_name = ros::names::resolve("sbg");
27 
28  switch (sbg_message_id)
29  {
31  name = "/status";
32  break;
34  name = "/utc_time";
35  break;
37  name = "/imu_data";
38  break;
39  case SBG_ECOM_LOG_MAG:
40  name = "/mag";
41  break;
43  name = "/mag_calib";
44  break;
46  name = "/ekf_euler";
47  break;
49  name = "/ekf_quat";
50  break;
52  name = "/ekf_nav";
53  break;
55  name = "/ship_motion";
56  break;
58  name = "/gps_vel";
59  break;
61  name = "/gps_pos";
62  break;
64  name = "/gps_hdt";
65  break;
67  name = "/gps_raw";
68  break;
70  name = "/odo_vel";
71  break;
73  name = "/eventA";
74  break;
76  name = "/eventB";
77  break;
79  name = "/eventC";
80  break;
82  name = "/eventD";
83  break;
85  name = "/eventE";
86  break;
88  name = "/air_data";
89  break;
91  name = "/imu_short";
92  break;
93  default:
94  return "undefined";
95  }
96 
97  return sbg_node_name + name;
98 }
99 
100 void MessagePublisher::initPublisher(ros::NodeHandle& ref_ros_node_handle, SbgEComMsgId sbg_msg_id, SbgEComOutputMode output_conf, const std::string &ref_output_topic)
101 {
102  //
103  // Check if the publisher has to be initialized.
104  //
105  if (output_conf != SBG_ECOM_OUTPUT_MODE_DISABLED)
106  {
107  switch (sbg_msg_id)
108  {
109  case SBG_ECOM_LOG_STATUS:
110  sbg_status_pub_ = ref_ros_node_handle.advertise<sbg_driver::SbgStatus>(ref_output_topic, max_messages_);
111  break;
112 
114  sbg_utc_time_pub_ = ref_ros_node_handle.advertise<sbg_driver::SbgUtcTime>(ref_output_topic, max_messages_);
115  break;
116 
118  sbg_imu_data_pub_ = ref_ros_node_handle.advertise<sbg_driver::SbgImuData>(ref_output_topic, max_messages_);
119  break;
120 
121  case SBG_ECOM_LOG_MAG:
122  sbg_mag_pub_ = ref_ros_node_handle.advertise<sbg_driver::SbgMag>(ref_output_topic, max_messages_);
123  break;
124 
126  sbg_mag_calib_pub_ = ref_ros_node_handle.advertise<sbg_driver::SbgMagCalib>(ref_output_topic, max_messages_);
127  break;
128 
130  sbg_ekf_ruler_pub_ = ref_ros_node_handle.advertise<sbg_driver::SbgEkfEuler>(ref_output_topic, max_messages_);
131  break;
132 
134  sbg_ekf_quat_pub_ = ref_ros_node_handle.advertise<sbg_driver::SbgEkfQuat>(ref_output_topic, max_messages_);
135  break;
136 
138  sbg_ekf_nav_pub_ = ref_ros_node_handle.advertise<sbg_driver::SbgEkfNav>(ref_output_topic, max_messages_);
139  break;
140 
142  sbg_ship_motion_pub_ = ref_ros_node_handle.advertise<sbg_driver::SbgShipMotion>(ref_output_topic, max_messages_);
143  break;
144 
147  sbg_gps_vel_pub_ = ref_ros_node_handle.advertise<sbg_driver::SbgGpsVel>(ref_output_topic, max_messages_);
148  break;
149 
152  sbg_gps_pos_pub_ = ref_ros_node_handle.advertise<sbg_driver::SbgGpsPos>(ref_output_topic, max_messages_);
153  break;
154 
157  sbg_gps_hdt_pub_ = ref_ros_node_handle.advertise<sbg_driver::SbgGpsHdt>(ref_output_topic, max_messages_);
158  break;
159 
162  sbg_gps_raw_pub_ = ref_ros_node_handle.advertise<sbg_driver::SbgGpsRaw>(ref_output_topic, max_messages_);
163  break;
164 
166  sbg_odo_vel_pub_ = ref_ros_node_handle.advertise<sbg_driver::SbgOdoVel>(ref_output_topic, max_messages_);
167  break;
168 
170  sbg_event_A_pub_ = ref_ros_node_handle.advertise<sbg_driver::SbgEvent>(ref_output_topic, max_messages_);
171  break;
172 
174  sbg_event_B_pub_ = ref_ros_node_handle.advertise<sbg_driver::SbgEvent>(ref_output_topic, max_messages_);
175  break;
176 
178  sbg_event_C_pub_ = ref_ros_node_handle.advertise<sbg_driver::SbgEvent>(ref_output_topic, max_messages_);
179  break;
180 
182  sbg_event_D_pub_ = ref_ros_node_handle.advertise<sbg_driver::SbgEvent>(ref_output_topic, max_messages_);
183  break;
184 
186  sbg_event_E_pub_ = ref_ros_node_handle.advertise<sbg_driver::SbgEvent>(ref_output_topic, max_messages_);
187  break;
188 
190  sbg_imu_short_pub_ = ref_ros_node_handle.advertise<sbg_driver::SbgImuShort>(ref_output_topic, max_messages_);
191  break;
192 
194  sbg_air_data_pub_ = ref_ros_node_handle.advertise<sbg_driver::SbgAirData>(ref_output_topic, max_messages_);
195  break;
196 
197  default:
198  break;
199  }
200  }
201 }
202 
203 void MessagePublisher::defineRosStandardPublishers(ros::NodeHandle& ref_ros_node_handle, bool odom_enable, bool enu_enable)
204 {
205  std::string imu_node_name;
206 
207  imu_node_name = ros::names::resolve("imu");
208 
209  if (!enu_enable)
210  {
211  ROS_WARN("SBG_DRIVER - [Publisher] Driver is configured in NED frame convention, ROS standard message are disabled.");
212  return;
213  }
214 
216  {
217  imu_pub_ = ref_ros_node_handle.advertise<sensor_msgs::Imu>(imu_node_name + "/data", max_messages_);
218  }
219  else
220  {
221  ROS_WARN("SBG_DRIVER - [Publisher] SBG Imu and/or Quat output are not configured, the standard IMU can not be defined.");
222  }
223 
224  if (sbg_imu_data_pub_)
225  {
226  temp_pub_ = ref_ros_node_handle.advertise<sensor_msgs::Temperature>(imu_node_name + "/temp", max_messages_);
227  }
228  else
229  {
230  ROS_WARN("SBG_DRIVER - [Publisher] SBG Imu data output are not configured, the standard Temperature publisher can not be defined.");
231  }
232 
233  if (sbg_mag_pub_)
234  {
235  mag_pub_ = ref_ros_node_handle.advertise<sensor_msgs::MagneticField>(imu_node_name + "/mag", max_messages_);
236  }
237  else
238  {
239  ROS_WARN("SBG_DRIVER - [Publisher] SBG Mag data output are not configured, the standard Magnetic publisher can not be defined.");
240  }
241 
242  //
243  // We need either Euler or quat angles, and we must have Nav and IMU data to
244  // compute Body and angular velocity.
245  //
247  {
248  velocity_pub_ = ref_ros_node_handle.advertise<geometry_msgs::TwistStamped>(imu_node_name + "/velocity", max_messages_);
249  }
250  else
251  {
252  ROS_WARN("SBG_DRIVER - [Publisher] SBG Imu, Nav or Angles data outputs are not configured, the standard Velocity publisher can not be defined.");
253  }
254 
255  if (sbg_air_data_pub_)
256  {
257  fluid_pub_ = ref_ros_node_handle.advertise<sensor_msgs::FluidPressure>(imu_node_name + "/pres", max_messages_);
258  }
259  else
260  {
261  ROS_WARN("SBG_DRIVER - [Publisher] SBG AirData output are not configured, the standard FluidPressure publisher can not be defined.");
262  }
263 
264  if (sbg_ekf_nav_pub_)
265  {
266  pos_ecef_pub_ = ref_ros_node_handle.advertise<geometry_msgs::PointStamped>(imu_node_name + "/pos_ecef", max_messages_);
267  }
268  else
269  {
270  ROS_WARN("SBG_DRIVER - [Publisher] SBG Ekf data output are not configured, the standard ECEF position publisher can not be defined.");
271  }
272 
273  if (sbg_utc_time_pub_)
274  {
275  utc_reference_pub_ = ref_ros_node_handle.advertise<sensor_msgs::TimeReference>(imu_node_name + "/utc_ref", max_messages_);
276  }
277  else
278  {
279  ROS_WARN("SBG_DRIVER - [Publisher] SBG Utc data output are not configured, the UTC time reference publisher can not be defined.");
280  }
281 
282  if (sbg_gps_pos_pub_)
283  {
284  nav_sat_fix_pub_ = ref_ros_node_handle.advertise<sensor_msgs::NavSatFix>(imu_node_name + "/nav_sat_fix", max_messages_);
285  }
286  else
287  {
288  ROS_WARN("SBG_DRIVER - [Publisher] SBG GPS Pos data output are not configured, the NavSatFix publisher can not be defined.");
289  }
290 
291  if (odom_enable)
292  {
294  {
295  odometry_pub_ = ref_ros_node_handle.advertise<nav_msgs::Odometry>(imu_node_name + "/odometry", max_messages_);
296  }
297  else
298  {
299  ROS_WARN("SBG_DRIVER - [Publisher] SBG IMU, NAV and Quaternion (or Euler) outputs are not configured, the odometry publisher can not be defined.");
300  }
301  }
302 }
303 
305 {
306  if (sbg_imu_data_pub_)
307  {
310  }
311  if (temp_pub_)
312  {
314  }
315 
319 }
320 
322 {
323  if (velocity_pub_)
324  {
325  if (sbg_ekf_quat_pub_)
326  {
328  }
329  else if (sbg_ekf_ruler_pub_)
330  {
332  }
333  }
334 }
335 
337 {
338  if (imu_pub_)
339  {
340  if (sbg_imu_message_.time_stamp == sbg_ekf_quat_message_.time_stamp)
341  {
343  }
344  }
345 }
346 
348 {
349  if (odometry_pub_)
350  {
351  if (sbg_ekf_nav_message_.status.position_valid)
352  {
353  if (sbg_imu_message_.time_stamp == sbg_ekf_nav_message_.time_stamp)
354  {
355  /*
356  * Odometry message can be generated from quaternion or euler angles.
357  * Quaternion is prefered if they are available.
358  */
359  if (sbg_ekf_quat_pub_)
360  {
361  if (sbg_imu_message_.time_stamp == sbg_ekf_quat_message_.time_stamp)
362  {
364  }
365  }
366  else
367  {
368  if (sbg_imu_message_.time_stamp == sbg_ekf_euler_message_.time_stamp)
369  {
371  }
372  }
373  }
374  }
375  }
376 }
377 
379 {
380  sbg_driver::SbgMag sbg_mag_message;
381  sbg_mag_message = message_wrapper_.createSbgMagMessage(ref_sbg_log.magData);
382 
383  if (sbg_mag_pub_)
384  {
385  sbg_mag_pub_.publish(sbg_mag_message);
386  }
387  if (mag_pub_)
388  {
390  }
391 }
392 
394 {
395  sbg_driver::SbgAirData sbg_air_data_message;
396  sbg_air_data_message = message_wrapper_.createSbgAirDataMessage(ref_sbg_log.airData);
397 
398  if (sbg_air_data_pub_)
399  {
400  sbg_air_data_pub_.publish(sbg_air_data_message);
401  }
402  if (fluid_pub_)
403  {
405  }
406 }
407 
409 {
411 
412  if (sbg_ekf_nav_pub_)
413  {
415  }
416  if (pos_ecef_pub_)
417  {
419  }
421 }
422 
424 {
425  sbg_driver::SbgUtcTime sbg_utc_message;
426 
427  sbg_utc_message = message_wrapper_.createSbgUtcTimeMessage(ref_sbg_log.utcData);
428 
429  if (sbg_utc_time_pub_)
430  {
431  sbg_utc_time_pub_.publish(sbg_utc_message);
432  }
433  if (utc_reference_pub_)
434  {
435  if (sbg_utc_message.clock_status.clock_utc_status != SBG_ECOM_UTC_INVALID)
436  {
438  }
439  }
440 }
441 
443 {
444  sbg_driver::SbgGpsPos sbg_gps_pos_message;
445 
446  sbg_gps_pos_message = message_wrapper_.createSbgGpsPosMessage(ref_sbg_log.gpsPosData);
447 
448  if (sbg_gps_pos_pub_)
449  {
450  sbg_gps_pos_pub_.publish(sbg_gps_pos_message);
451  }
452  if (nav_sat_fix_pub_)
453  {
455  }
456  if (nmea_gga_pub_ && sbg_msg_id == SBG_ECOM_LOG_GPS1_POS)
457  {
458  const nmea_msgs::Sentence nmea_gga_msg = message_wrapper_.createNmeaGGAMessageForNtrip(ref_sbg_log.gpsPosData);
459 
460  // Only publish if a valid NMEA GGA message has been generated
461  if (nmea_gga_msg.sentence.size() > 0)
462  {
463  nmea_gga_pub_.publish(nmea_gga_msg);
464  }
465  }
466 }
467 
468 //---------------------------------------------------------------------//
469 //- Operations -//
470 //---------------------------------------------------------------------//
471 
472 void MessagePublisher::initPublishers(ros::NodeHandle& ref_ros_node_handle, const ConfigStore &ref_config_store)
473 {
474  //
475  // Initialize all the publishers with the defined SBG output from the config store.
476  //
477  const std::vector<ConfigStore::SbgLogOutput> &ref_output_modes = ref_config_store.getOutputModes();
478 
480 
481  message_wrapper_.setFrameId(ref_config_store.getFrameId());
482 
483  message_wrapper_.setUseEnu(ref_config_store.getUseEnu());
484 
485  message_wrapper_.setOdomEnable(ref_config_store.getOdomEnable());
487  message_wrapper_.setOdomFrameId(ref_config_store.getOdomFrameId());
490 
491  for (const ConfigStore::SbgLogOutput &ref_output : ref_output_modes)
492  {
493  initPublisher(ref_ros_node_handle, ref_output.message_id, ref_output.output_mode, getOutputTopicName(ref_output.message_id));
494  }
495 
496  if (ref_config_store.shouldPublishNmea())
497  {
498  nmea_gga_pub_ = ref_ros_node_handle.advertise<nmea_msgs::Sentence>(ref_config_store.getNmeaFullTopic(), max_messages_);
499  }
500 
501  if (ref_config_store.checkRosStandardMessages())
502  {
503  defineRosStandardPublishers(ref_ros_node_handle, ref_config_store.getOdomEnable(), ref_config_store.getUseEnu());
504  }
505 }
506 
507 void MessagePublisher::publish(SbgEComClass sbg_msg_class, SbgEComMsgId sbg_msg_id, const SbgBinaryLogData &ref_sbg_log)
508 {
509  //
510  // Publish the message with the corresponding publisher and SBG message ID.
511  // For each log, check if the publisher has been initialized.
512  //
513  if(sbg_msg_class == SBG_ECOM_CLASS_LOG_ECOM_0)
514  {
515  switch (sbg_msg_id)
516  {
517  case SBG_ECOM_LOG_STATUS:
518  if (sbg_status_pub_)
519  {
521  }
522  break;
523 
525  publishUtcData(ref_sbg_log);
526  break;
527 
529  publishIMUData(ref_sbg_log);
530  break;
531 
532  case SBG_ECOM_LOG_MAG:
533  publishMagData(ref_sbg_log);
534  break;
535 
537  if (sbg_mag_calib_pub_)
538  {
540  }
541  break;
542 
544  if (sbg_ekf_ruler_pub_)
545  {
550  }
551  break;
552 
554  if (sbg_ekf_quat_pub_)
555  {
560  }
561  break;
562 
564  publishEkfNavigationData(ref_sbg_log);
566  break;
567 
570  {
572  }
573  break;
574 
577  if (sbg_gps_vel_pub_)
578  {
580  }
581  break;
582 
585  publishGpsPosData(ref_sbg_log, sbg_msg_id);
586  break;
587 
590  if (sbg_gps_hdt_pub_)
591  {
593  }
594  break;
595 
598  if (sbg_gps_raw_pub_)
599  {
601  }
602  break;
603 
605  if (sbg_odo_vel_pub_)
606  {
608  }
609  break;
610 
612  if (sbg_event_A_pub_)
613  {
615  }
616  break;
617 
619  if (sbg_event_B_pub_)
620  {
622  }
623  break;
624 
626  if (sbg_event_C_pub_)
627  {
629  }
630  break;
631 
633  if (sbg_event_D_pub_)
634  {
636  }
637  break;
638 
640  if (sbg_event_E_pub_)
641  {
643  }
644  break;
645 
647  if (sbg_imu_short_pub_)
648  {
650  }
651  break;
652 
654  publishFluidPressureData(ref_sbg_log);
655  break;
656 
657  default:
658  break;
659  }
660  }
661  else if (sbg_msg_class == SBG_ECOM_CLASS_LOG_ECOM_1)
662  {
663  switch (sbg_msg_id)
664  {
665  default:
666  break;
667  }
668  }
669 }
sbg::MessagePublisher::message_wrapper_
MessageWrapper message_wrapper_
Definition: message_publisher.h:87
SBG_ECOM_OUTPUT_MODE_DISABLED
@ SBG_ECOM_OUTPUT_MODE_DISABLED
Definition: sbgEComCmdOutput.h:63
sbg::MessagePublisher::sbg_event_B_pub_
ros::Publisher sbg_event_B_pub_
Definition: message_publisher.h:63
sbg::ConfigStore::getOdomFrameId
const std::string & getOdomFrameId() const
Definition: config_store.cpp:384
_SbgBinaryLogData::gpsHdtData
SbgLogGpsHdt gpsHdtData
Definition: sbgEComBinaryLogs.h:62
_SbgBinaryLogData::shipMotionData
SbgLogShipMotionData shipMotionData
Definition: sbgEComBinaryLogs.h:57
SBG_ECOM_LOG_UTC_TIME
@ SBG_ECOM_LOG_UTC_TIME
Definition: sbgEComIds.h:73
sbg::MessagePublisher::sbg_ship_motion_pub_
ros::Publisher sbg_ship_motion_pub_
Definition: message_publisher.h:54
sbg::MessagePublisher::sbg_event_A_pub_
ros::Publisher sbg_event_A_pub_
Definition: message_publisher.h:62
SBG_ECOM_LOG_GPS1_RAW
@ SBG_ECOM_LOG_GPS1_RAW
Definition: sbgEComIds.h:89
SBG_ECOM_LOG_GPS1_POS
@ SBG_ECOM_LOG_GPS1_POS
Definition: sbgEComIds.h:87
sbg::MessagePublisher::sbg_imu_message_
sbg_driver::SbgImuData sbg_imu_message_
Definition: message_publisher.h:71
sbg::MessagePublisher::nmea_gga_pub_
ros::Publisher nmea_gga_pub_
Definition: message_publisher.h:85
sbg::MessagePublisher::sbg_ekf_nav_message_
sbg_driver::SbgEkfNav sbg_ekf_nav_message_
Definition: message_publisher.h:73
sbg::MessagePublisher::sbg_odo_vel_pub_
ros::Publisher sbg_odo_vel_pub_
Definition: message_publisher.h:61
sbg::MessagePublisher::sbg_ekf_quat_message_
sbg_driver::SbgEkfQuat sbg_ekf_quat_message_
Definition: message_publisher.h:72
SBG_ECOM_LOG_EVENT_C
@ SBG_ECOM_LOG_EVENT_C
Definition: sbgEComIds.h:100
sbg::MessagePublisher::sbg_mag_pub_
ros::Publisher sbg_mag_pub_
Definition: message_publisher.h:55
SBG_ECOM_LOG_GPS1_HDT
@ SBG_ECOM_LOG_GPS1_HDT
Definition: sbgEComIds.h:88
sbg::MessageWrapper::setOdomEnable
void setOdomEnable(bool odom_enable)
Definition: message_wrapper.cpp:314
sbg::MessagePublisher::sbg_imu_short_pub_
ros::Publisher sbg_imu_short_pub_
Definition: message_publisher.h:67
sbg::MessagePublisher::getOutputTopicName
std::string getOutputTopicName(SbgEComMsgId sbg_message_id) const
Definition: message_publisher.cpp:21
sbg::MessagePublisher::sbg_gps_vel_pub_
ros::Publisher sbg_gps_vel_pub_
Definition: message_publisher.h:57
SbgEComOutputMode
enum _SbgEComOutputMode SbgEComOutputMode
sbg::MessageWrapper::createSbgEkfNavMessage
const sbg_driver::SbgEkfNav createSbgEkfNavMessage(const SbgLogEkfNavData &ref_log_ekf_nav) const
Definition: message_wrapper.cpp:371
sbg::ConfigStore::getNmeaFullTopic
const std::string & getNmeaFullTopic() const
Definition: config_store.cpp:414
SBG_ECOM_LOG_GPS1_VEL
@ SBG_ECOM_LOG_GPS1_VEL
Definition: sbgEComIds.h:86
SBG_ECOM_LOG_EKF_NAV
@ SBG_ECOM_LOG_EKF_NAV
Definition: sbgEComIds.h:82
sbg::MessageWrapper::setOdomFrameId
void setOdomFrameId(const std::string &ref_frame_id)
Definition: message_wrapper.cpp:324
sbg::MessageWrapper::createSbgGpsHdtMessage
const sbg_driver::SbgGpsHdt createSbgGpsHdtMessage(const SbgLogGpsHdt &ref_log_gps_hdt) const
Definition: message_wrapper.cpp:472
SBG_ECOM_LOG_AIR_DATA
@ SBG_ECOM_LOG_AIR_DATA
Definition: sbgEComIds.h:109
sbg::MessagePublisher::processRosVelMessage
void processRosVelMessage()
Definition: message_publisher.cpp:321
_SbgBinaryLogData::ekfEulerData
SbgLogEkfEulerData ekfEulerData
Definition: sbgEComBinaryLogs.h:54
sbg::MessagePublisher::sbg_utc_time_pub_
ros::Publisher sbg_utc_time_pub_
Definition: message_publisher.h:49
sbg::MessageWrapper::createSbgUtcTimeMessage
const sbg_driver::SbgUtcTime createSbgUtcTimeMessage(const SbgLogUtcData &ref_log_utc)
Definition: message_wrapper.cpp:720
sbg::MessageWrapper::createSbgStatusMessage
const sbg_driver::SbgStatus createSbgStatusMessage(const SbgLogStatusData &ref_log_status) const
Definition: message_wrapper.cpp:706
sbg::MessagePublisher::fluid_pub_
ros::Publisher fluid_pub_
Definition: message_publisher.h:78
SBG_ECOM_LOG_EVENT_E
@ SBG_ECOM_LOG_EVENT_E
Definition: sbgEComIds.h:102
sbg::MessagePublisher::publishIMUData
void publishIMUData(const SbgBinaryLogData &ref_sbg_log)
Definition: message_publisher.cpp:304
sbg::MessageWrapper::setTimeReference
void setTimeReference(TimeReference time_reference)
Definition: message_wrapper.cpp:299
sbg::MessagePublisher::temp_pub_
ros::Publisher temp_pub_
Definition: message_publisher.h:76
sbg::MessagePublisher::sbg_gps_pos_pub_
ros::Publisher sbg_gps_pos_pub_
Definition: message_publisher.h:58
ros::Publisher::publish
void publish(const boost::shared_ptr< M > &message) const
sbg::MessagePublisher::publishMagData
void publishMagData(const SbgBinaryLogData &ref_sbg_log)
Definition: message_publisher.cpp:378
sbg::MessagePublisher::processRosImuMessage
void processRosImuMessage()
Definition: message_publisher.cpp:336
sbg::MessagePublisher::sbg_event_E_pub_
ros::Publisher sbg_event_E_pub_
Definition: message_publisher.h:66
ros::NodeHandle::advertise
Publisher advertise(AdvertiseOptions &ops)
sbg::MessagePublisher::max_messages_
uint32_t max_messages_
Definition: message_publisher.h:88
SBG_ECOM_CLASS_LOG_ECOM_1
@ SBG_ECOM_CLASS_LOG_ECOM_1
Definition: sbgEComIds.h:50
sbg::MessageWrapper::createRosTwistStampedMessage
const geometry_msgs::TwistStamped createRosTwistStampedMessage(const sbg::SbgVector3f &body_vel, const sbg_driver::SbgImuData &ref_sbg_imu_msg) const
Definition: message_wrapper.cpp:995
SBG_ECOM_UTC_INVALID
@ SBG_ECOM_UTC_INVALID
Definition: sbgEComBinaryLogUtc.h:60
sbg::MessageWrapper::createRosNavSatFixMessage
const sensor_msgs::NavSatFix createRosNavSatFixMessage(const sbg_driver::SbgGpsPos &ref_sbg_gps_msg) const
Definition: message_wrapper.cpp:1038
ros::names::resolve
ROSCPP_DECL std::string resolve(const std::string &name, bool remap=true)
_SbgBinaryLogData::odometerData
SbgLogOdometerData odometerData
Definition: sbgEComBinaryLogs.h:58
sbg::MessagePublisher::velocity_pub_
ros::Publisher velocity_pub_
Definition: message_publisher.h:80
message_publisher.h
Manage publishing of messages from logs.
sbg::ConfigStore
Definition: config_store.h:60
sbg::MessagePublisher
Definition: message_publisher.h:44
_SbgBinaryLogData::magCalibData
SbgLogMagCalib magCalibData
Definition: sbgEComBinaryLogs.h:65
sbg::ConfigStore::getOdomPublishTf
bool getOdomPublishTf() const
Definition: config_store.cpp:379
_SbgBinaryLogData::magData
SbgLogMag magData
Definition: sbgEComBinaryLogs.h:64
SBG_ECOM_LOG_SHIP_MOTION
@ SBG_ECOM_LOG_SHIP_MOTION
Definition: sbgEComIds.h:84
sbg::MessagePublisher::sbg_event_C_pub_
ros::Publisher sbg_event_C_pub_
Definition: message_publisher.h:64
sbg::MessageWrapper::createSbgEventMessage
const sbg_driver::SbgEvent createSbgEventMessage(const SbgLogEvent &ref_log_event) const
Definition: message_wrapper.cpp:451
SBG_ECOM_LOG_EKF_EULER
@ SBG_ECOM_LOG_EKF_EULER
Definition: sbgEComIds.h:80
sbg::MessagePublisher::publishEkfNavigationData
void publishEkfNavigationData(const SbgBinaryLogData &ref_sbg_log)
Definition: message_publisher.cpp:408
sbg::MessageWrapper::createSbgAirDataMessage
const sbg_driver::SbgAirData createSbgAirDataMessage(const SbgLogAirData &ref_air_data_log) const
Definition: message_wrapper.cpp:757
sbg::MessagePublisher::publish
void publish(SbgEComClass sbg_msg_class, SbgEComMsgId sbg_msg_id, const SbgBinaryLogData &ref_sbg_log)
Definition: message_publisher.cpp:507
sbg::MessagePublisher::sbg_air_data_pub_
ros::Publisher sbg_air_data_pub_
Definition: message_publisher.h:68
sbg::MessagePublisher::sbg_gps_raw_pub_
ros::Publisher sbg_gps_raw_pub_
Definition: message_publisher.h:60
sbg::ConfigStore::getFrameId
const std::string & getFrameId() const
Definition: config_store.cpp:359
sbg::MessagePublisher::nav_sat_fix_pub_
ros::Publisher nav_sat_fix_pub_
Definition: message_publisher.h:82
sbg::MessagePublisher::sbg_mag_calib_pub_
ros::Publisher sbg_mag_calib_pub_
Definition: message_publisher.h:56
sbg::MessagePublisher::sbg_event_D_pub_
ros::Publisher sbg_event_D_pub_
Definition: message_publisher.h:65
sbg::TimeReference
TimeReference
Definition: config_store.h:51
SbgEComClass
enum _SbgEComClass SbgEComClass
sbg::MessagePublisher::imu_pub_
ros::Publisher imu_pub_
Definition: message_publisher.h:70
sbg::MessagePublisher::publishUtcData
void publishUtcData(const SbgBinaryLogData &ref_sbg_log)
Definition: message_publisher.cpp:423
sbg::MessageWrapper::setUseEnu
void setUseEnu(bool enu)
Definition: message_wrapper.cpp:309
sbg::MessageWrapper::createSbgGpsPosMessage
const sbg_driver::SbgGpsPos createSbgGpsPosMessage(const SbgLogGpsPos &ref_log_gps_pos) const
Definition: message_wrapper.cpp:498
sbg::MessagePublisher::initPublisher
void initPublisher(ros::NodeHandle &ref_ros_node_handle, SbgEComMsgId sbg_msg_id, SbgEComOutputMode output_conf, const std::string &ref_output_topic)
Definition: message_publisher.cpp:100
sbg::MessagePublisher::pos_ecef_pub_
ros::Publisher pos_ecef_pub_
Definition: message_publisher.h:79
_SbgBinaryLogData::ekfQuatData
SbgLogEkfQuatData ekfQuatData
Definition: sbgEComBinaryLogs.h:55
_SbgBinaryLogData::imuShort
SbgLogImuShort imuShort
Definition: sbgEComBinaryLogs.h:53
SBG_ECOM_CLASS_LOG_ECOM_0
@ SBG_ECOM_CLASS_LOG_ECOM_0
Definition: sbgEComIds.h:48
sbg::MessageWrapper::setFrameId
void setFrameId(const std::string &frame_id)
Definition: message_wrapper.cpp:304
_SbgBinaryLogData
This file is used to parse received binary logs.
Definition: sbgEComBinaryLogs.h:49
_SbgBinaryLogData::ekfNavData
SbgLogEkfNavData ekfNavData
Definition: sbgEComBinaryLogs.h:56
sbg::MessagePublisher::defineRosStandardPublishers
void defineRosStandardPublishers(ros::NodeHandle &ref_ros_node_handle, bool odom_enable, bool enu_enable)
Definition: message_publisher.cpp:203
sbg::MessageWrapper::setOdomBaseFrameId
void setOdomBaseFrameId(const std::string &ref_frame_id)
Definition: message_wrapper.cpp:329
sbg::ConfigStore::getTimeReference
TimeReference getTimeReference() const
Definition: config_store.cpp:369
_SbgBinaryLogData::gpsVelData
SbgLogGpsVel gpsVelData
Definition: sbgEComBinaryLogs.h:61
sbg::MessagePublisher::sbg_ekf_ruler_pub_
ros::Publisher sbg_ekf_ruler_pub_
Definition: message_publisher.h:51
ROS_WARN
#define ROS_WARN(...)
sbg::MessageWrapper::createRosOdoMessage
const nav_msgs::Odometry createRosOdoMessage(const sbg_driver::SbgImuData &ref_sbg_imu_msg, const sbg_driver::SbgEkfNav &ref_sbg_ekf_nav_msg, const sbg_driver::SbgEkfQuat &ref_sbg_ekf_quat_msg, const sbg_driver::SbgEkfEuler &ref_sbg_ekf_euler_msg)
Definition: message_wrapper.cpp:847
SBG_ECOM_LOG_EVENT_A
@ SBG_ECOM_LOG_EVENT_A
Definition: sbgEComIds.h:98
SBG_ECOM_LOG_MAG
@ SBG_ECOM_LOG_MAG
Definition: sbgEComIds.h:77
sbg::MessagePublisher::publishGpsPosData
void publishGpsPosData(const SbgBinaryLogData &ref_sbg_log, SbgEComMsgId sbg_msg_id)
Definition: message_publisher.cpp:442
SBG_ECOM_LOG_GPS2_HDT
@ SBG_ECOM_LOG_GPS2_HDT
Definition: sbgEComIds.h:93
sbg::MessagePublisher::sbg_ekf_quat_pub_
ros::Publisher sbg_ekf_quat_pub_
Definition: message_publisher.h:52
sbg::ConfigStore::SbgLogOutput
Definition: config_store.h:67
sbg::MessagePublisher::sbg_gps_hdt_pub_
ros::Publisher sbg_gps_hdt_pub_
Definition: message_publisher.h:59
_SbgBinaryLogData::utcData
SbgLogUtcData utcData
Definition: sbgEComBinaryLogs.h:59
_SbgBinaryLogData::imuData
SbgLogImuData imuData
Definition: sbgEComBinaryLogs.h:52
sbg::MessageWrapper::createSbgMagCalibMessage
const sbg_driver::SbgMagCalib createSbgMagCalibMessage(const SbgLogMagCalib &ref_log_mag_calib) const
Definition: message_wrapper.cpp:660
SBG_ECOM_LOG_EVENT_D
@ SBG_ECOM_LOG_EVENT_D
Definition: sbgEComIds.h:101
SBG_ECOM_LOG_EVENT_B
@ SBG_ECOM_LOG_EVENT_B
Definition: sbgEComIds.h:99
sbg::MessageWrapper::createSbgImuDataMessage
const sbg_driver::SbgImuData createSbgImuDataMessage(const SbgLogImuData &ref_log_imu_data) const
Definition: message_wrapper.cpp:579
SBG_ECOM_LOG_MAG_CALIB
@ SBG_ECOM_LOG_MAG_CALIB
Definition: sbgEComIds.h:78
_SbgBinaryLogData::airData
SbgLogAirData airData
Definition: sbgEComBinaryLogs.h:67
sbg::ConfigStore::checkRosStandardMessages
bool checkRosStandardMessages() const
Definition: config_store.cpp:349
SBG_ECOM_LOG_IMU_DATA
@ SBG_ECOM_LOG_IMU_DATA
Definition: sbgEComIds.h:75
SBG_ECOM_LOG_GPS2_RAW
@ SBG_ECOM_LOG_GPS2_RAW
Definition: sbgEComIds.h:94
sbg::MessageWrapper::createSbgGpsVelMessage
const sbg_driver::SbgGpsVel createSbgGpsVelMessage(const SbgLogGpsVel &ref_log_gps_vel) const
Definition: message_wrapper.cpp:541
_SbgBinaryLogData::gpsRawData
SbgLogGpsRaw gpsRawData
Definition: sbgEComBinaryLogs.h:63
sbg::ConfigStore::getOutputModes
const std::vector< SbgLogOutput > & getOutputModes() const
Definition: config_store.cpp:344
sbg::MessagePublisher::sbg_status_pub_
ros::Publisher sbg_status_pub_
Definition: message_publisher.h:48
sbg::MessagePublisher::mag_pub_
ros::Publisher mag_pub_
Definition: message_publisher.h:77
SBG_ECOM_LOG_EKF_QUAT
@ SBG_ECOM_LOG_EKF_QUAT
Definition: sbgEComIds.h:81
sbg::MessagePublisher::odometry_pub_
ros::Publisher odometry_pub_
Definition: message_publisher.h:83
SBG_ECOM_LOG_STATUS
@ SBG_ECOM_LOG_STATUS
Definition: sbgEComIds.h:71
sbg::MessagePublisher::sbg_ekf_nav_pub_
ros::Publisher sbg_ekf_nav_pub_
Definition: message_publisher.h:53
sbg::MessageWrapper::createRosImuMessage
const sensor_msgs::Imu createRosImuMessage(const sbg_driver::SbgImuData &ref_sbg_imu_msg, const sbg_driver::SbgEkfQuat &ref_sbg_quat_msg) const
Definition: message_wrapper.cpp:806
sbg::MessagePublisher::processRosOdoMessage
void processRosOdoMessage()
Definition: message_publisher.cpp:347
sbg::MessageWrapper::createRosMagneticMessage
const sensor_msgs::MagneticField createRosMagneticMessage(const sbg_driver::SbgMag &ref_sbg_mag_msg) const
Definition: message_wrapper.cpp:964
SBG_ECOM_LOG_GPS2_POS
@ SBG_ECOM_LOG_GPS2_POS
Definition: sbgEComIds.h:92
SBG_ECOM_LOG_ODO_VEL
@ SBG_ECOM_LOG_ODO_VEL
Definition: sbgEComIds.h:96
sbg::MessageWrapper::createRosTemperatureMessage
const sensor_msgs::Temperature createRosTemperatureMessage(const sbg_driver::SbgImuData &ref_sbg_imu_msg) const
Definition: message_wrapper.cpp:953
sbg::ConfigStore::getUseEnu
bool getUseEnu() const
Definition: config_store.cpp:364
sbg::MessagePublisher::sbg_ekf_euler_message_
sbg_driver::SbgEkfEuler sbg_ekf_euler_message_
Definition: message_publisher.h:74
sbg::MessageWrapper::setOdomInitFrameId
void setOdomInitFrameId(const std::string &ref_frame_id)
Definition: message_wrapper.cpp:334
sbg::MessageWrapper::createSbgMagMessage
const sbg_driver::SbgMag createSbgMagMessage(const SbgLogMag &ref_log_mag) const
Definition: message_wrapper.cpp:628
_SbgBinaryLogData::statusData
SbgLogStatusData statusData
Definition: sbgEComBinaryLogs.h:51
SbgEComMsgId
uint8_t SbgEComMsgId
Definition: sbgEComIds.h:289
sbg::MessageWrapper::createSbgOdoVelMessage
const sbg_driver::SbgOdoVel createSbgOdoVelMessage(const SbgLogOdometerData &ref_log_odo) const
Definition: message_wrapper.cpp:670
sbg::MessageWrapper::createSbgShipMotionMessage
const sbg_driver::SbgShipMotion createSbgShipMotionMessage(const SbgLogShipMotionData &ref_log_ship_motion) const
Definition: message_wrapper.cpp:683
sbg::MessagePublisher::publishFluidPressureData
void publishFluidPressureData(const SbgBinaryLogData &ref_sbg_log)
Definition: message_publisher.cpp:393
_SbgBinaryLogData::eventMarker
SbgLogEvent eventMarker
Definition: sbgEComBinaryLogs.h:70
sbg::MessageWrapper::createSbgGpsRawMessage
const sbg_driver::SbgGpsRaw createSbgGpsRawMessage(const SbgLogGpsRaw &ref_log_gps_raw) const
Definition: message_wrapper.cpp:532
sbg::MessageWrapper::createSbgEkfQuatMessage
const sbg_driver::SbgEkfQuat createSbgEkfQuatMessage(const SbgLogEkfQuatData &ref_log_ekf_quat) const
Definition: message_wrapper.cpp:416
sbg::ConfigStore::getOdomEnable
bool getOdomEnable() const
Definition: config_store.cpp:374
_SbgBinaryLogData::gpsPosData
SbgLogGpsPos gpsPosData
Definition: sbgEComBinaryLogs.h:60
sbg::MessagePublisher::initPublishers
void initPublishers(ros::NodeHandle &ref_ros_node_handle, const ConfigStore &ref_config_store)
Definition: message_publisher.cpp:472
sbg::MessageWrapper::createNmeaGGAMessageForNtrip
const nmea_msgs::Sentence createNmeaGGAMessageForNtrip(const SbgLogGpsPos &ref_log_gps_pos) const
Definition: message_wrapper.cpp:1090
SBG_ECOM_LOG_GPS2_VEL
@ SBG_ECOM_LOG_GPS2_VEL
Definition: sbgEComIds.h:91
sbg::MessageWrapper::createSbgEkfEulerMessage
const sbg_driver::SbgEkfEuler createSbgEkfEulerMessage(const SbgLogEkfEulerData &ref_log_ekf_euler) const
Definition: message_wrapper.cpp:343
sbg::MessagePublisher::sbg_imu_data_pub_
ros::Publisher sbg_imu_data_pub_
Definition: message_publisher.h:50
sbg::MessageWrapper::setOdomPublishTf
void setOdomPublishTf(bool publish_tf)
Definition: message_wrapper.cpp:319
sbg::MessageWrapper::createRosFluidPressureMessage
const sensor_msgs::FluidPressure createRosFluidPressureMessage(const sbg_driver::SbgAirData &ref_sbg_air_msg) const
Definition: message_wrapper.cpp:1079
sbg::ConfigStore::getOdomInitFrameId
const std::string & getOdomInitFrameId() const
Definition: config_store.cpp:394
sbg::MessageWrapper::createSbgImuShortMessage
const sbg_driver::SbgImuShort createSbgImuShortMessage(const SbgLogImuShort &ref_short_imu_log) const
Definition: message_wrapper.cpp:773
sbg::ConfigStore::shouldPublishNmea
bool shouldPublishNmea() const
Definition: config_store.cpp:409
sbg::MessagePublisher::utc_reference_pub_
ros::Publisher utc_reference_pub_
Definition: message_publisher.h:81
ros::NodeHandle
SBG_ECOM_LOG_IMU_SHORT
@ SBG_ECOM_LOG_IMU_SHORT
Definition: sbgEComIds.h:119
sbg::MessageWrapper::createRosPointStampedMessage
const geometry_msgs::PointStamped createRosPointStampedMessage(const sbg_driver::SbgEkfNav &ref_sbg_ekf_msg) const
Definition: message_wrapper.cpp:1009
sbg::ConfigStore::getOdomBaseFrameId
const std::string & getOdomBaseFrameId() const
Definition: config_store.cpp:389
sbg::MessageWrapper::createRosUtcTimeReferenceMessage
const sensor_msgs::TimeReference createRosUtcTimeReferenceMessage(const sbg_driver::SbgUtcTime &ref_sbg_utc_msg) const
Definition: message_wrapper.cpp:1023


sbg_driver
Author(s): SBG Systems
autogenerated on Fri Oct 11 2024 02:13:40