16 MessageWrapper::MessageWrapper(
void):
17 m_first_valid_utc_(false)
33 header.frame_id =
"System";
39 std::string frame_header;
44 frame_header +=
" INTERNAL";
50 frame_header +=
" NO LEAP";
57 frame_header +=
" | SYNCHRONIZING";
61 frame_header +=
" | SYNC";
66 frame_header +=
" | NOT SYNC";
70 header.frame_id = frame_header;
83 uint32_t device_timestamp_diff;
89 nanoseconds = utc_to_epoch.
toNSec() +
static_cast<uint64_t
>(device_timestamp_diff) * 1000;
98 sbg_driver::SbgEkfStatus ekf_status_message;
118 return ekf_status_message;
123 sbg_driver::SbgGpsPosStatus gps_pos_status_message;
133 return gps_pos_status_message;
138 sbg_driver::SbgGpsVelStatus gps_vel_status_message;
143 return gps_vel_status_message;
148 sbg_driver::SbgImuStatus imu_status_message;
161 return imu_status_message;
166 sbg_driver::SbgMagStatus mag_status_message;
178 return mag_status_message;
183 sbg_driver::SbgShipMotionStatus ship_motion_status_message;
190 return ship_motion_status_message;
195 sbg_driver::SbgStatusAiding status_aiding_message;
206 return status_aiding_message;
211 sbg_driver::SbgStatusCom status_com_message;
234 return status_com_message;
239 sbg_driver::SbgStatusGeneral status_general_message;
247 return status_general_message;
252 sbg_driver::SbgUtcTimeStatus utc_status_message;
260 return utc_status_message;
277 if ((month_index == 4) || (month_index == 6) || (month_index == 9) || (month_index == 11))
281 else if ((month_index == 2))
300 return ((year % 4 == 0) && (year % 100 != 0)) || (year % 400 == 0);
307 uint64_t nanoseconds;
315 for (uint16_t yearIndex = 1970; yearIndex < ref_sbg_utc_msg.year; yearIndex++)
320 for (uint8_t monthIndex = 1; monthIndex < ref_sbg_utc_msg.month; monthIndex++)
325 days += ref_sbg_utc_msg.day - 1;
327 nanoseconds = days * 24;
328 nanoseconds = (nanoseconds + ref_sbg_utc_msg.hour) * 60;
329 nanoseconds = (nanoseconds + ref_sbg_utc_msg.min) * 60;
330 nanoseconds = nanoseconds + ref_sbg_utc_msg.sec;
331 nanoseconds = nanoseconds * 1000000000 + ref_sbg_utc_msg.nanosec;
340 sbg_driver::SbgAirDataStatus air_data_status_message;
349 return air_data_status_message;
367 sbg_driver::SbgEkfEuler ekf_euler_message;
370 ekf_euler_message.time_stamp = ref_log_ekf_euler.
timeStamp;
372 ekf_euler_message.angle = createGeometryVector3<float>(ref_log_ekf_euler.
euler, 3);
373 ekf_euler_message.accuracy = createGeometryVector3<float>(ref_log_ekf_euler.
eulerStdDev, 3);
375 return ekf_euler_message;
380 sbg_driver::SbgEkfNav ekf_nav_message;
383 ekf_nav_message.time_stamp = ekf_nav_message.time_stamp;
385 ekf_nav_message.undulation = ref_log_ekf_nav.
undulation;
387 ekf_nav_message.velocity = createGeometryVector3<float>(ref_log_ekf_nav.
velocity, 3);
388 ekf_nav_message.velocity_accuracy = createGeometryVector3<float>(ref_log_ekf_nav.
velocityStdDev, 3);
389 ekf_nav_message.position = createGeometryVector3<double>(ref_log_ekf_nav.
position, 3);
391 return ekf_nav_message;
396 sbg_driver::SbgEkfQuat ekf_quat_message;
399 ekf_quat_message.time_stamp = ref_log_ekf_quat.
timeStamp;
401 ekf_quat_message.accuracy = createGeometryVector3<float>(ref_log_ekf_quat.
eulerStdDev, 3);
402 ekf_quat_message.quaternion.w = ref_log_ekf_quat.
quaternion[0];
403 ekf_quat_message.quaternion.x = ref_log_ekf_quat.
quaternion[1];
404 ekf_quat_message.quaternion.y = ref_log_ekf_quat.
quaternion[2];
405 ekf_quat_message.quaternion.z = ref_log_ekf_quat.
quaternion[3];
407 return ekf_quat_message;
412 sbg_driver::SbgEvent event_message;
415 event_message.time_stamp = ref_log_event.
timeStamp;
423 event_message.time_offset_0 = ref_log_event.
timeOffset0;
424 event_message.time_offset_1 = ref_log_event.
timeOffset1;
425 event_message.time_offset_2 = ref_log_event.
timeOffset2;
426 event_message.time_offset_3 = ref_log_event.
timeOffset3;
428 return event_message;
433 sbg_driver::SbgGpsHdt gps_hdt_message;
436 gps_hdt_message.time_stamp = ref_log_gps_hdt.
timeStamp;
438 gps_hdt_message.status = ref_log_gps_hdt.
status;
439 gps_hdt_message.tow = ref_log_gps_hdt.
timeOfWeek;
440 gps_hdt_message.true_heading = ref_log_gps_hdt.
heading;
442 gps_hdt_message.pitch = ref_log_gps_hdt.
pitch;
445 return gps_hdt_message;
450 sbg_driver::SbgGpsPos gps_pos_message;
453 gps_pos_message.time_stamp = ref_log_gps_pos.
timeStamp;
456 gps_pos_message.gps_tow = ref_log_gps_pos.
timeOfWeek;
457 gps_pos_message.position.x = ref_log_gps_pos.
latitude;
458 gps_pos_message.position.y = ref_log_gps_pos.
longitude;
459 gps_pos_message.position.z = ref_log_gps_pos.
altitude;
460 gps_pos_message.undulation = ref_log_gps_pos.
undulation;
464 gps_pos_message.num_sv_used = ref_log_gps_pos.
numSvUsed;
465 gps_pos_message.base_station_id = ref_log_gps_pos.
baseStationId;
468 return gps_pos_message;
473 sbg_driver::SbgGpsRaw gps_raw_message;
477 return gps_raw_message;
482 sbg_driver::SbgGpsVel gps_vel_message;
485 gps_vel_message.time_stamp = ref_log_gps_vel.
timeStamp;
487 gps_vel_message.gps_tow = ref_log_gps_vel.
timeOfWeek;
488 gps_vel_message.course = ref_log_gps_vel.
course;
489 gps_vel_message.course_acc = ref_log_gps_vel.
courseAcc;
490 gps_vel_message.vel = createGeometryVector3<float>(ref_log_gps_vel.
velocity, 3);
491 gps_vel_message.vel_acc = createGeometryVector3<float>(ref_log_gps_vel.
velocityAcc, 3);
493 return gps_vel_message;
498 sbg_driver::SbgImuData imu_data_message;
501 imu_data_message.time_stamp = ref_log_imu_data.
timeStamp;
503 imu_data_message.temp = ref_log_imu_data.
temperature;
504 imu_data_message.accel = createGeometryVector3<float>(ref_log_imu_data.
accelerometers, 3);
505 imu_data_message.gyro = createGeometryVector3<float>(ref_log_imu_data.
gyroscopes, 3);
506 imu_data_message.delta_vel = createGeometryVector3<float>(ref_log_imu_data.
deltaVelocity, 3);
507 imu_data_message.delta_angle = createGeometryVector3<float>(ref_log_imu_data.
deltaAngle, 3);
509 return imu_data_message;
514 sbg_driver::SbgMag mag_message;
517 mag_message.time_stamp = ref_log_mag.
timeStamp;
519 mag_message.mag = createGeometryVector3<float>(ref_log_mag.
magnetometers, 3);
520 mag_message.accel = createGeometryVector3<float>(ref_log_mag.
accelerometers, 3);
527 sbg_driver::SbgMagCalib mag_calib_message;
532 return mag_calib_message;
537 sbg_driver::SbgOdoVel odo_vel_message;
540 odo_vel_message.time_stamp = ref_log_odo.
timeStamp;
542 odo_vel_message.status = ref_log_odo.
status;
543 odo_vel_message.vel = ref_log_odo.
velocity;
545 return odo_vel_message;
550 sbg_driver::SbgShipMotion ship_motion_message;
553 ship_motion_message.time_stamp = ref_log_ship_motion.
timeStamp;
555 ship_motion_message.ship_motion = createGeometryVector3<float>(ref_log_ship_motion.
shipMotion, 3);
556 ship_motion_message.acceleration = createGeometryVector3<float>(ref_log_ship_motion.
shipAccel, 3);
557 ship_motion_message.velocity = createGeometryVector3<float>(ref_log_ship_motion.
shipVel, 3);
559 return ship_motion_message;
564 sbg_driver::SbgStatus status_message;
567 status_message.time_stamp = ref_log_status.
timeStamp;
573 return status_message;
578 sbg_driver::SbgUtcTime utc_time_message;
581 utc_time_message.time_stamp = ref_log_utc.
timeStamp;
584 utc_time_message.year = ref_log_utc.
year;
585 utc_time_message.month = ref_log_utc.
month;
586 utc_time_message.day = ref_log_utc.
day;
587 utc_time_message.hour = ref_log_utc.
hour;
588 utc_time_message.min = ref_log_utc.
minute;
589 utc_time_message.sec = ref_log_utc.
second;
590 utc_time_message.nanosec = ref_log_utc.
nanoSecond;
595 if (utc_time_message.clock_status.clock_stable && utc_time_message.clock_status.clock_utc_sync)
600 ROS_INFO(
"A full valid UTC log has been detected, timestamp will be synchronized with the UTC data.");
610 return utc_time_message;
615 sbg_driver::SbgAirData air_data_message;
618 air_data_message.time_stamp = ref_air_data_log.
timeStamp;
620 air_data_message.pressure_abs = ref_air_data_log.
pressureAbs;
621 air_data_message.altitude = ref_air_data_log.
altitude;
622 air_data_message.pressure_diff = ref_air_data_log.
pressureDiff;
623 air_data_message.true_air_speed = ref_air_data_log.
trueAirspeed;
624 air_data_message.air_temperature = ref_air_data_log.
airTemperature;
626 return air_data_message;
631 sbg_driver::SbgImuShort imu_short_message;
634 imu_short_message.time_stamp = ref_short_imu_log.
timeStamp;
636 imu_short_message.temperature = ref_short_imu_log.
temperature;
637 imu_short_message.delta_velocity = createGeometryVector3<int32_t>(ref_short_imu_log.
deltaVelocity, 3);
638 imu_short_message.delta_angle = createGeometryVector3<int32_t>(ref_short_imu_log.
deltaAngle, 3);
640 return imu_short_message;
645 sensor_msgs::Imu imu_ros_message;
649 imu_ros_message.orientation = ref_sbg_quat_msg.quaternion;
650 imu_ros_message.angular_velocity = ref_sbg_imu_msg.gyro;
651 imu_ros_message.angular_velocity_covariance[0] = -1;
652 imu_ros_message.linear_acceleration = ref_sbg_imu_msg.accel;
653 imu_ros_message.linear_acceleration_covariance[0] = -1;
655 return imu_ros_message;
660 sensor_msgs::Temperature temperature_message;
662 temperature_message.header =
createRosHeader(ref_sbg_imu_msg.time_stamp);
663 temperature_message.temperature = ref_sbg_imu_msg.temp;
664 temperature_message.variance = 0;
666 return temperature_message;
671 sensor_msgs::MagneticField magnetic_message;
674 magnetic_message.magnetic_field = ref_sbg_mag_msg.mag;
676 return magnetic_message;
679 const geometry_msgs::TwistStamped
MessageWrapper::createRosTwistStampedMessage(
const sbg_driver::SbgEkfEuler& ref_sbg_ekf_euler_msg,
const sbg_driver::SbgEkfNav& ref_sbg_ekf_nav_msg,
const sbg_driver::SbgImuData& ref_sbg_imu_msg)
const 682 tdcm.
makeDcm(
sbg::SbgVector3f(ref_sbg_ekf_euler_msg.angle.x, ref_sbg_ekf_euler_msg.angle.y, ref_sbg_ekf_euler_msg.angle.z));
690 const geometry_msgs::TwistStamped
MessageWrapper::createRosTwistStampedMessage(
const sbg_driver::SbgEkfQuat& ref_sbg_ekf_quat_msg,
const sbg_driver::SbgEkfNav& ref_sbg_ekf_nav_msg,
const sbg_driver::SbgImuData& ref_sbg_imu_msg)
const 694 tdcm.
makeDcm(ref_sbg_ekf_quat_msg.quaternion.w, ref_sbg_ekf_quat_msg.quaternion.x, ref_sbg_ekf_quat_msg.quaternion.y, ref_sbg_ekf_quat_msg.quaternion.z);
703 geometry_msgs::TwistStamped twist_stamped_message;
705 twist_stamped_message.header =
createRosHeader(ref_sbg_imu_msg.time_stamp);
706 twist_stamped_message.twist.angular = ref_sbg_imu_msg.gyro;
708 twist_stamped_message.twist.linear.x = body_vel(0);
709 twist_stamped_message.twist.linear.y = body_vel(1);
710 twist_stamped_message.twist.linear.z = body_vel(2);
712 return twist_stamped_message;
717 geometry_msgs::PointStamped point_stamped_message;
719 point_stamped_message.header =
createRosHeader(ref_sbg_ekf_msg.time_stamp);
725 double equatorial_radius;
727 double prime_vertical_radius;
732 equatorial_radius = 6378137.0;
733 polar_radius = 6356752.314245;
734 eccentricity = 1 - pow(polar_radius, 2) / pow(equatorial_radius, 2);
738 prime_vertical_radius = equatorial_radius / sqrt(1.0 - pow(eccentricity, 2) * pow(sin(latitude), 2));
740 point_stamped_message.point.x = (prime_vertical_radius + ref_sbg_ekf_msg.position.z) * cos(latitude) * cos(longitude);
741 point_stamped_message.point.y = (prime_vertical_radius + ref_sbg_ekf_msg.position.z) * cos(latitude) * sin(longitude);
742 point_stamped_message.point.z = ((pow(polar_radius, 2) / pow(equatorial_radius, 2)) * prime_vertical_radius + ref_sbg_ekf_msg.position.z) * sin(latitude);
744 return point_stamped_message;
749 sensor_msgs::TimeReference utc_reference_message;
757 utc_reference_message.source =
"UTC time from device converted to Epoch";
759 return utc_reference_message;
764 sensor_msgs::NavSatFix nav_sat_fix_message;
766 nav_sat_fix_message.header =
createRosHeader(ref_sbg_gps_msg.time_stamp);
770 nav_sat_fix_message.status.status = nav_sat_fix_message.status.STATUS_NO_FIX;
774 nav_sat_fix_message.status.status = nav_sat_fix_message.status.STATUS_SBAS_FIX;
778 nav_sat_fix_message.status.status = nav_sat_fix_message.status.STATUS_FIX;
781 if (ref_sbg_gps_msg.status.glo_l1_used || ref_sbg_gps_msg.status.glo_l2_used)
783 nav_sat_fix_message.status.service = nav_sat_fix_message.status.SERVICE_GLONASS;
787 nav_sat_fix_message.status.service = nav_sat_fix_message.status.SERVICE_GPS;
790 nav_sat_fix_message.latitude = ref_sbg_gps_msg.position.x;
791 nav_sat_fix_message.longitude = ref_sbg_gps_msg.position.y;
792 nav_sat_fix_message.altitude = ref_sbg_gps_msg.position.z;
794 nav_sat_fix_message.position_covariance[0] = pow(ref_sbg_gps_msg.position_accuracy.x, 2);
795 nav_sat_fix_message.position_covariance[4] = pow(ref_sbg_gps_msg.position_accuracy.y, 2);
796 nav_sat_fix_message.position_covariance[8] = pow(ref_sbg_gps_msg.position_accuracy.z, 2);
798 nav_sat_fix_message.position_covariance_type = nav_sat_fix_message.COVARIANCE_TYPE_DIAGONAL_KNOWN;
800 return nav_sat_fix_message;
805 sensor_msgs::FluidPressure fluid_pressure_message;
807 fluid_pressure_message.header =
createRosHeader(ref_sbg_air_msg.time_stamp);
808 fluid_pressure_message.fluid_pressure = ref_sbg_air_msg.pressure_abs;
809 fluid_pressure_message.variance = 0;
811 return fluid_pressure_message;
#define SBG_ECOM_PORTD_RX_OK
#define SBG_ECOM_AIDING_GPS1_VEL_RECV
#define SBG_ECOM_PORTD_TX_OK
#define SBG_ECOM_GPS_POS_GLO_L1_USED
#define SBG_ECOM_CLOCK_STABLE_INPUT
#define SBG_ECOM_GENERAL_MAIN_POWER_OK
SBG_INLINE SbgEComGpsVelType sbgEComLogGpsVelGetType(uint32_t status)
const sensor_msgs::NavSatFix createRosNavSatFixMessage(const sbg_driver::SbgGpsPos &ref_sbg_gps_msg) const
#define SBG_ECOM_AIDING_MAG_RECV
const sbg_driver::SbgEkfEuler createSbgEkfEulerMessage(const SbgLogEkfEulerData &ref_log_ekf_euler) const
#define SBG_ECOM_SOL_GPS1_POS_USED
const sensor_msgs::Temperature createRosTemperatureMessage(const sbg_driver::SbgImuData &ref_sbg_imu_msg) const
#define SBG_ECOM_GPS_POS_GPS_L5_USED
#define SBG_ECOM_IMU_GYRO_Y_BIT
#define SBG_ECOM_EVENT_OFFSET_2_VALID
#define SBG_ECOM_AIR_DATA_PRESSURE_DIFF_VALID
#define SBG_ECOM_SOL_MAG_REF_USED
#define SBG_ECOM_PORTA_VALID
Time & fromNSec(uint64_t t)
#define SBG_ECOM_IMU_GYRO_Z_BIT
sbg_driver::SbgUtcTime m_last_sbg_utc_
#define SBG_ECOM_MAG_CALIBRATION_OK
#define SBG_ECOM_MAG_MAG_Z_BIT
#define SBG_ECOM_EVENT_OVERFLOW
#define SBG_ECOM_EVENT_OFFSET_1_VALID
#define SBG_ECOM_SOL_VERT_REF_USED
#define SBG_ECOM_SOL_HEADING_VALID
#define SBG_ECOM_SOL_GPS2_VEL_USED
SBG_INLINE SbgEComGpsPosStatus sbgEComLogGpsPosGetStatus(uint32_t status)
uint32_t getNumberOfDaysInMonth(uint16_t year, uint8_t month_index) const
#define SBG_ECOM_SOL_GPS2_POS_USED
#define SBG_ECOM_AIDING_DVL_RECV
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
#define SBG_ECOM_AIR_DATA_AIRPSEED_VALID
#define SBG_ECOM_MAG_ACCEL_Y_BIT
#define SBG_ECOM_PORTB_TX_OK
#define SBG_ECOM_PORTE_TX_OK
const sbg_driver::SbgGpsVelStatus createGpsVelStatusMessage(const SbgLogGpsVel &ref_log_gps_vel) const
#define SBG_ECOM_PORTB_VALID
std_msgs::Header * header(M &m)
const sbg_driver::SbgShipMotionStatus createShipMotionStatusMessage(const SbgLogShipMotionData &ref_log_ship_motion) const
#define SBG_ECOM_SOL_POSITION_VALID
#define SBG_ECOM_PORTC_VALID
#define SBG_ECOM_PORTD_VALID
uint8_t rawBuffer[SBG_ECOM_GPS_RAW_MAX_BUFFER_SIZE]
#define SBG_ECOM_HEAVE_PERIOD_INCLUDED
const sbg_driver::SbgMagCalib createSbgMagCalibMessage(const SbgLogMagCalib &ref_log_mag_calib) const
Handle creation of messages.
#define SBG_ECOM_SOL_ODO_USED
#define SBG_ECOM_GENERAL_IMU_POWER_OK
SBG_INLINE SbgEComGpsPosType sbgEComLogGpsPosGetType(uint32_t status)
#define SBG_ECOM_MAG_MAG_Y_BIT
#define SBG_ECOM_IMU_ACCEL_X_BIT
const sbg_driver::SbgGpsRaw createSbgGpsRawMessage(const SbgLogGpsRaw &ref_log_gps_raw) const
SBG_INLINE SbgEComClockStatus sbgEComLogUtcGetClockStatus(uint16_t status)
#define SBG_ECOM_AIR_DATA_ALTITUDE_VALID
SBG_INLINE SbgEComSolutionMode sbgEComLogEkfGetSolutionMode(uint32_t status)
#define SBG_ECOM_GPS_POS_GPS_L2_USED
#define SBG_ECOM_AIDING_ODO_RECV
const sbg_driver::SbgMagStatus createMagStatusMessage(const SbgLogMag &ref_log_mag) const
#define SBG_ECOM_MAG_MAG_X_BIT
const sbg_driver::SbgImuShort createSbgImuShortMessage(const SbgLogImuShort &ref_short_imu_log) const
#define SBG_ECOM_IMU_ACCELS_IN_RANGE
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
#define SBG_ECOM_CAN_VALID
const sbg_driver::SbgEkfQuat createSbgEkfQuatMessage(const SbgLogEkfQuatData &ref_log_ekf_quat) const
#define SBG_ECOM_MAG_ACCEL_X_BIT
#define SBG_ECOM_PORTC_TX_OK
#define SBG_ECOM_GPS_POS_GLO_L2_USED
const sbg_driver::SbgStatus createSbgStatusMessage(const SbgLogStatusData &ref_log_status) const
const sbg_driver::SbgStatusGeneral createStatusGeneralMessage(const SbgLogStatusData &ref_log_status) const
#define SBG_ECOM_PORTB_RX_OK
bool isLeapYear(uint16_t year) const
#define SBG_ECOM_CLOCK_UTC_SYNC
#define SBG_ECOM_MAG_MAGS_IN_RANGE
const sbg_driver::SbgGpsHdt createSbgGpsHdtMessage(const SbgLogGpsHdt &ref_log_gps_hdt) const
SBG_INLINE SbgEComClockUtcStatus sbgEComLogUtcGetClockUtcStatus(uint16_t status)
#define SBG_ECOM_CAN_RX_OK
SbgVector3< float > SbgVector3f
SBG_INLINE double sbgDegToRadD(double angle)
#define SBG_ECOM_PORTE_VALID
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
#define SBG_ECOM_SOL_GPS1_VEL_USED
#define SBG_ECOM_GPS_POS_GPS_L1_USED
const sbg_driver::SbgAirData createSbgAirDataMessage(const SbgLogAirData &ref_air_data_log) const
#define SBG_ECOM_SOL_VELOCITY_VALID
#define SBG_ECOM_AIR_DATA_PRESSURE_ABS_VALID
SBG_INLINE SbgEComGpsVelStatus sbgEComLogGpsVelGetStatus(uint32_t status)
#define SBG_ECOM_MAG_ACCEL_Z_BIT
#define SBG_ECOM_GENERAL_SETTINGS_OK
#define SBG_ECOM_SOL_GPS2_HDT_USED
#define SBG_ECOM_CAN_TX_OK
const sbg_driver::SbgImuData createSbgImuDataMessage(const SbgLogImuData &ref_log_imu_data) const
#define SBG_ECOM_HEAVE_PERIOD_VALID
const sbg_driver::SbgEvent createSbgEventMessage(const SbgLogEvent &ref_log_event) const
#define SBG_ECOM_AIDING_GPS1_UTC_RECV
#define SBG_ECOM_EVENT_OFFSET_0_VALID
#define SBG_ECOM_AIR_DATA_TIME_IS_DELAY
void setRosProcessingTime(const ros::Time &ref_ros_time)
#define SBG_ECOM_MAG_ACCELS_IN_RANGE
#define SBG_ECOM_AIDING_GPS1_POS_RECV
const sensor_msgs::FluidPressure createRosFluidPressureMessage(const sbg_driver::SbgAirData &ref_sbg_air_msg) const
#define SBG_ECOM_GENERAL_TEMPERATURE_OK
#define SBG_ECOM_PORTE_RX_OK
#define SBG_ECOM_HEAVE_VALID
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
#define SBG_ECOM_SOL_GPS1_HDT_USED
void makeDcm(const SbgVector3f &euler)
#define SBG_ECOM_AIDING_GPS1_HDT_RECV
#define SBG_ECOM_IMU_ACCEL_Z_BIT
#define SBG_ECOM_AIR_DATA_TEMPERATURE_VALID
uint32_t getNumberOfDaysInYear(uint16_t year) const
const sbg_driver::SbgStatusAiding createStatusAidingMessage(const SbgLogStatusData &ref_log_status) const
#define SBG_ECOM_GENERAL_GPS_POWER_OK
#define SBG_ECOM_PORTA_RX_OK
#define SBG_ECOM_IMU_GYROS_IN_RANGE
#define SBG_ECOM_PORTC_RX_OK
const sbg_driver::SbgMag createSbgMagMessage(const SbgLogMag &ref_log_mag) const
const sbg_driver::SbgStatusCom createStatusComMessage(const SbgLogStatusData &ref_log_status) const
#define SBG_ECOM_PORTA_TX_OK
const sensor_msgs::TimeReference createRosUtcTimeReferenceMessage(const sbg_driver::SbgUtcTime &ref_sbg_utc_msg) const
Handle a three components vector.
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_
#define SBG_ECOM_SOL_ATTITUDE_VALID
#define SBG_ECOM_EVENT_OFFSET_3_VALID
#define SBG_ECOM_IMU_GYRO_X_BIT
const sbg_driver::SbgImuStatus createImuStatusMessage(uint16_t sbg_imu_status) const
#define SBG_ECOM_IMU_COM_OK
#define SBG_ECOM_IMU_ACCEL_Y_BIT
const sbg_driver::SbgGpsPosStatus createGpsPosStatusMessage(const SbgLogGpsPos &ref_log_gps_pos) const
#define SBG_ECOM_IMU_STATUS_BIT
#define SBG_ECOM_HEAVE_VEL_AIDED