33 #ifndef GNSSPUBLISHER_H
34 #define GNSSPUBLISHER_H
37 #include <sensor_msgs/NavSatFix.h>
39 #define FIX_TYPE_2D_FIX (2)
40 #define FIX_TYPE_3D_FIX (3)
41 #define FIX_TYPE_GNSS_AND_DEAD_RECKONING (4)
50 int pub_queue_size = 5;
52 pub = node.
advertise<sensor_msgs::NavSatFix>(
"gnss", pub_queue_size);
58 if (packet.containsRawGnssPvtData())
60 sensor_msgs::NavSatFix
msg;
62 msg.header.stamp = timestamp;
67 msg.latitude = (double)gnss.
m_lat * 1e-7;
68 msg.longitude = (
double)gnss.
m_lon * 1e-7;
71 double sh = ((
double)gnss.
m_hAcc * 1e-3);
72 double sv = ((double)gnss.
m_vAcc * 1e-3);
73 msg.position_covariance = {sh * sh, 0, 0, 0, sh * sh, 0, 0, 0, sv * sv};
74 msg.position_covariance_type = sensor_msgs::NavSatFix::COVARIANCE_TYPE_DIAGONAL_KNOWN;
81 msg.status.status = sensor_msgs::NavSatStatus::STATUS_FIX;
84 msg.status.status = sensor_msgs::NavSatStatus::STATUS_NO_FIX;
86 msg.status.service = 0;