Main MRPT website > C++ reference for MRPT 1.4.0
gnss_messages_novatel.h
Go to the documentation of this file.
1/* +---------------------------------------------------------------------------+
2 | Mobile Robot Programming Toolkit (MRPT) |
3 | http://www.mrpt.org/ |
4 | |
5 | Copyright (c) 2005-2016, Individual contributors, see AUTHORS file |
6 | See: http://www.mrpt.org/Authors - All rights reserved. |
7 | Released under BSD License. See details in http://www.mrpt.org/License |
8 +---------------------------------------------------------------------------+ */
9#pragma once
10
12
13namespace mrpt {
14namespace obs {
15namespace gnss {
16
17// Pragma to ensure we can safely serialize some of these structures
18#pragma pack(push,1)
19
20/** Novatel OEM6 regular header structure \sa mrpt::obs::CObservationGPS */
22{
23 enum {
24 SYNCH0 = 0xAA,
25 SYNCH1 = 0X44,
26 SYNCH2 = 0x12
27 };
28
29 uint8_t synch[3];
43
45};
46
47/** Novatel OEM6 short header structure \sa mrpt::obs::CObservationGPS */
49{
50 enum {
51 SYNCH0 = 0xAA,
52 SYNCH1 = 0X44,
53 SYNCH2 = 0x13
54 };
55 uint8_t synch[3];
60
62};
63
64
65namespace nv_oem6_position_type {
66/** Novatel OEM6 firmware reference, table 84; Novatel SPAN on OEM6 firmware manual, table 26. */
68 NONE = 0,
76 SINGLE = 16,
77 PSRDIFF = 17,
78 WAAS = 18,
84 L1_INT = 48,
88 INS = 52,
95 CDGPS = 66
96};
97 const std::string OBS_IMPEXP & enum2str(int val); //!< for nv_position_type_t
98}
99
100namespace nv_oem6_solution_status {
101/** Novatel OEM6 firmware reference, table 85 */
103 SOL_COMPUTED = 0, //!< solution computed
104 INSUFFICIENT_OBS, //!< insufficient observations
105 NO_CONVERGENCE, //!< noconvergence
106 SINGULARITY, //!< singularity at parameters matrix
107 COV_TRACE, //!< covariance trace exceeds maximum (trace>1000m)
108 TEST_DIST, //!< test distance exceeded (max of 3 rejections if distance > 10km)
109 COLD_START, //!< not yet converged from cold start
110 V_H_LIMIT, //!< height or velocity limits exceeded
111 VARIANCE, //!< variance exceeds limits
112 RESIDUALS, //!< residuals are too large
113 DELTA_POS, //!< delta position is too large
114 NEGATIVE_VAR, //!< negative variance
115 INTEGRITY_WARNING=13, //!< large residuals make position unreliable
116 INS_INACTIVE, //!< ins has not started yet
117 INS_ALIGNING, //!< ins doing its coarse alignment
118 INS_BAD, //!< ins position is bad
119 IMU_UNPLUGGED, //!< no imu detected
120 PENDING = 18, //!< when a fix position command is entered, the receiver computes its own position and determines if the fixed position is valid
121 INVALID_FIX //!< the fixed position entered using the fix position command is not valid
123 const std::string OBS_IMPEXP & enum2str(int val); //!< for nv_solution_status_t
124}
125namespace nv_oem6_ins_status_type {
126/** Novatel SPAN on OEM6 firmware reference, table 33 */
128 INS_INACTIVE = 0, //IMU logs are present, but the alignment routine has not started; INS is inactive.
129 INS_ALIGNING = 1, // INS is in alignment mode.
130 INS_HIGH_VARIANCE = 2, // The INS solution is in navigation mode but the azimuth solution uncertainty has exceeded the threshold.
131 INS_SOLUTION_GOOD = 3, // The INS filter is in navigation mode and the INS solution is good.
132 INS_SOLUTION_FREE = 6, // The INS filter is in navigation mode and the GNSS solution is suspected to be in error.
133 INS_ALIGNMENT_COMPLETE = 7, // The INS filter is in navigation mode, but not enough vehicle dynamics have been experienced for the system to be within specifications.
134 DETERMINING_ORIENTATION = 8, // INS is determining the IMU axis aligned with gravity.
135 WAITING_INITIALPOS = 9 // The INS filter has determined the IMU orientation and is awaiting an initial position estimate to begin the alignment process.
137 const std::string OBS_IMPEXP & enum2str(int val); //!< for nv_ins_status_type_t
138}
139
140/** Novatel generic frame (to store frames without a parser at the present time). \sa mrpt::obs::CObservationGPS */
142{
144 {}
145 nv_oem6_header_t header; //!< Frame header
146 std::vector<uint8_t> msg_body;
147
148 void dumpToStream( mrpt::utils::CStream &out ) const MRPT_OVERRIDE; // See docs in base
149protected:
152};
153
154/** Novatel generic short-header frame (to store frames without a parser at the present time). \sa mrpt::obs::CObservationGPS */
156{
158 {}
160 std::vector<uint8_t> msg_body;
161
162 void dumpToStream( mrpt::utils::CStream &out ) const MRPT_OVERRIDE; // See docs in base
163protected:
166};
167
168
169/** Novatel frame: NV_OEM6_BESTPOS. \sa mrpt::obs::CObservationGPS */
171 nv_oem6_header_t header; //!< Frame header
172 uint32_t solution_stat; //!< nv_oem6_solution_status::nv_solution_status_t
173 uint32_t position_type; //!< nv_oem6_position_type::nv_position_type_t
174 double lat,lon,hgt; //!< [deg], [deg], hgt over sea level[m]
177 float lat_sigma, lon_sigma, hgt_sigma; //!< Uncertainties (all in [m])
187 /** Return the geodetic coords as a mrpt::topography::TGeodeticCoords structure (requires linking against mrpt-topography)
188 * Call as: getAsStruct<TGeodeticCoords>(); */
189 template <class TGEODETICCOORDS>
190 inline TGEODETICCOORDS getAsStruct() const {
191 return TGEODETICCOORDS(fields.lat,fields.lon,fields.hgt);
192 }
193 bool getAllFieldDescriptions( std::ostream &o ) const MRPT_OVERRIDE;
194 bool getAllFieldValues( std::ostream &o ) const MRPT_OVERRIDE;
196
197/** Novatel frame: NV_OEM6_INSPVAS. \sa mrpt::obs::CObservationGPS */
199 nv_oem6_short_header_t header; //!< Frame header
202 double lat,lon,hgt;
205 uint32_t ins_status; //!< nv_oem6_ins_status_type::nv_ins_status_type_t
208 /** Return the geodetic coords as a mrpt::topography::TGeodeticCoords structure (requires linking against mrpt-topography)
209 * Call as: getAsStruct<TGeodeticCoords>(); */
210 template <class TGEODETICCOORDS>
211 inline TGEODETICCOORDS getAsStruct() const {
212 return TGEODETICCOORDS(fields.lat,fields.lon,fields.hgt);
213 }
214 bool getAllFieldDescriptions( std::ostream &o ) const MRPT_OVERRIDE;
215 bool getAllFieldValues( std::ostream &o ) const MRPT_OVERRIDE;
217
218
219/** Novatel frame: NV_OEM6_INSCOVS. \sa mrpt::obs::CObservationGPS */
221 nv_oem6_short_header_t header; //!< Frame header
223 double seconds_in_week;
224 double pos_cov[9]; //!< Position covariance matrix in local level frame (metres squared) xx,xy,xz,yx,yy,yz,zx,zy,zz
225 double att_cov[9]; //!< Attitude covariance matrix of the SPAN frame to the local level frame. (deg sq) xx,xy,xz,yx,yy,yz,zx,zy,zz
226 double vel_cov[9]; //!< Velocity covariance matrix in local level frame. (metres/second squared) xx,xy,xz,yx,yy,yz,zx,zy,zz
229 bool getAllFieldDescriptions( std::ostream &o ) const MRPT_OVERRIDE;
230 bool getAllFieldValues( std::ostream &o ) const MRPT_OVERRIDE;
232
233/** Novatel frame: NV_OEM6_RANGECMP. \sa mrpt::obs::CObservationGPS */
235{
237 {}
239 uint8_t data[24];
240 };
241
242 nv_oem6_header_t header; //!< Frame header
244 std::vector<TCompressedRangeLog> obs_data;
246
247 void dumpToStream( mrpt::utils::CStream &out ) const MRPT_OVERRIDE; // See docs in base
248protected:
251};
252
253/** Novatel frame: NV_OEM6_RXSTATUS. \sa mrpt::obs::CObservationGPS */
255 nv_oem6_header_t header; //!< Frame header
263
264/** Novatel frame: NV_OEM6_RAWEPHEM. \sa mrpt::obs::CObservationGPS */
266 nv_oem6_header_t header; //!< Frame header
271
272/** Novatel frame: NV_OEM6_VERSION. \sa mrpt::obs::CObservationGPS */
274{
276 {}
279 char model[16], serial[16];
280 char hwversion[16], swversion[16],bootversion[16];
281 char compdate[12], comptime[12];
282 };
283
284 nv_oem6_header_t header; //!< Frame header
286 std::vector<TComponentVersion> components;
288
289 void dumpToStream( mrpt::utils::CStream &out ) const MRPT_OVERRIDE; // See docs in base
290protected:
293};
294
295
296/** Novatel frame: NV_OEM6_RAWIMUS. \sa mrpt::obs::CObservationGPS */
298 nv_oem6_short_header_t header; //!< Frame header
306 bool getAllFieldDescriptions( std::ostream &o ) const MRPT_OVERRIDE;
307 bool getAllFieldValues( std::ostream &o ) const MRPT_OVERRIDE;
309
310/** Novatel frame: NV_OEM6_MARKPOS. \sa mrpt::obs::CObservationGPS */
312 nv_oem6_header_t header; //!< Frame header
313 uint32_t solution_stat; //!< nv_oem6_solution_status::nv_solution_status_t
314 uint32_t position_type; //!< nv_oem6_position_type::nv_position_type_t
315 double lat,lon,hgt; //!< [deg], [deg], hgt over sea level[m]
316 float undulation;
319 char base_station_id[4];
320 float diff_age, sol_age;
328 /** Return the geodetic coords as a mrpt::topography::TGeodeticCoords structure (requires linking against mrpt-topography)
329 * Call as: getAsStruct<TGeodeticCoords>(); */
330 template <class TGEODETICCOORDS>
331 inline TGEODETICCOORDS getAsStruct() const {
332 return TGEODETICCOORDS(fields.lat,fields.lon,fields.hgt);
333 }
335
336/** Novatel frame: NV_OEM6_MARKTIME. \sa mrpt::obs::CObservationGPS */
338 nv_oem6_header_t header; //!< Frame header
340 double week_seconds;
346 bool getAllFieldDescriptions( std::ostream &o ) const MRPT_OVERRIDE;
347 bool getAllFieldValues( std::ostream &o ) const MRPT_OVERRIDE;
349
350/** Novatel frame: NV_OEM6_MARK2TIME. \sa mrpt::obs::CObservationGPS */
352 nv_oem6_header_t header; //!< Frame header
354 double week_seconds;
356 double utc_offset;
360 bool getAllFieldDescriptions( std::ostream &o ) const MRPT_OVERRIDE;
361 bool getAllFieldValues( std::ostream &o ) const MRPT_OVERRIDE;
363
364/** Novatel frame: NV_OEM6_IONUTC. \sa mrpt::obs::CObservationGPS */
366 nv_oem6_header_t header; //!< Frame header
367 double a0,a1,a2,a3,b0,b1,b2,b3; // Ionospheric alpha and beta constant terms parameters
368 uint32_t utc_wn; //!< UTC reference week number
369 uint32_t tot; //!< Reference time of UTC params
370 double A0,A1; //!< UTC constant and 1st order terms
371 uint32_t wn_lsf; //!< Future week number
372 uint32_t dn; //!< Day number (1=sunday, 7=saturday)
373 uint32_t deltat_ls; //!< Delta time due to leap seconds
374 uint32_t deltat_lsf; //!< Delta time due to leap seconds (future)
378
379
380#pragma pack(pop) // End of pack = 1
381} } } // End of namespaces
This base class is used to provide a unified interface to files,memory buffers,..Please see the deriv...
Definition CStream.h:39
#define GNSS_BINARY_MSG_DEFINITION_START(_MSG_ID)
#define GNSS_BINARY_MSG_DEFINITION_MID_END
#define GNSS_BINARY_MSG_DEFINITION_MID
#define GNSS_BINARY_MSG_DEFINITION_END
#define MRPT_OVERRIDE
C++11 "override" for virtuals:
Definition mrpt_macros.h:28
nv_ins_status_type_t
Novatel SPAN on OEM6 firmware reference, table 33.
const std::string OBS_IMPEXP & enum2str(int val)
for nv_ins_status_type_t
const std::string OBS_IMPEXP & enum2str(int val)
for nv_position_type_t
nv_position_type_t
Novatel OEM6 firmware reference, table 84; Novatel SPAN on OEM6 firmware manual, table 26.
nv_solution_status_t
Novatel OEM6 firmware reference, table 85.
@ INVALID_FIX
the fixed position entered using the fix position command is not valid
@ COLD_START
not yet converged from cold start
@ INTEGRITY_WARNING
large residuals make position unreliable
@ PENDING
when a fix position command is entered, the receiver computes its own position and determines if the ...
@ V_H_LIMIT
height or velocity limits exceeded
@ SINGULARITY
singularity at parameters matrix
@ TEST_DIST
test distance exceeded (max of 3 rejections if distance > 10km)
@ INS_ALIGNING
ins doing its coarse alignment
@ COV_TRACE
covariance trace exceeds maximum (trace>1000m)
const std::string OBS_IMPEXP & enum2str(int val)
for nv_solution_status_t
uint32_t tot
Reference time of UTC params.
bool getAllFieldDescriptions(std::ostream &o) const MRPT_OVERRIDE
GNSS_BINARY_MSG_DEFINITION_MID TGEODETICCOORDS getAsStruct() const
Return the geodetic coords as a mrpt::topography::TGeodeticCoords structure (requires linking against...
double att_cov[9]
Attitude covariance matrix of the SPAN frame to the local level frame. (deg sq) xx,...
double A1
UTC constant and 1st order terms.
float hgt_sigma
Uncertainties (all in [m])
uint32_t dn
Day number (1=sunday, 7=saturday)
uint32_t deltat_ls
Delta time due to leap seconds.
gnss_message_type_t
List of all known GNSS message types.
uint32_t solution_stat
nv_oem6_solution_status::nv_solution_status_t
uint32_t wn_lsf
Future week number.
double pos_cov[9]
Position covariance matrix in local level frame (metres squared) xx,xy,xz,yx,yy,yz,...
uint32_t ins_status
nv_oem6_ins_status_type::nv_ins_status_type_t
double vel_cov[9]
Velocity covariance matrix in local level frame. (metres/second squared) xx,xy,xz,...
uint32_t position_type
nv_oem6_position_type::nv_position_type_t
bool getAllFieldValues(std::ostream &o) const MRPT_OVERRIDE
uint32_t deltat_lsf
Delta time due to leap seconds (future)
nv_oem6_header_t header
Novatel frame: NV_OEM6_BESTPOS.
double hgt
[deg], [deg], hgt over sea level[m]
uint32_t utc_wn
UTC reference week number.
This is the global namespace for all Mobile Robot Programming Toolkit (MRPT) libraries.
unsigned long uint32_t
Definition pstdint.h:216
unsigned int uint16_t
Definition pstdint.h:170
signed long int32_t
Definition pstdint.h:247
unsigned char uint8_t
Definition pstdint.h:143
Novatel generic frame (to store frames without a parser at the present time).
void dumpToStream(mrpt::utils::CStream &out) const MRPT_OVERRIDE
Dumps the contents of the observation in a human-readable form to a given output stream.
void internal_writeToStream(mrpt::utils::CStream &out) const MRPT_OVERRIDE
Save to binary stream. Launches an exception upon error.
void internal_readFromStream(mrpt::utils::CStream &in) MRPT_OVERRIDE
Save to binary stream. Launches an exception upon error.
Novatel generic short-header frame (to store frames without a parser at the present time).
void internal_readFromStream(mrpt::utils::CStream &in) MRPT_OVERRIDE
Save to binary stream. Launches an exception upon error.
void internal_writeToStream(mrpt::utils::CStream &out) const MRPT_OVERRIDE
Save to binary stream. Launches an exception upon error.
void dumpToStream(mrpt::utils::CStream &out) const MRPT_OVERRIDE
Dumps the contents of the observation in a human-readable form to a given output stream.
void dumpToStream(mrpt::utils::CStream &out) const MRPT_OVERRIDE
Dumps the contents of the observation in a human-readable form to a given output stream.
std::vector< TCompressedRangeLog > obs_data
void internal_writeToStream(mrpt::utils::CStream &out) const MRPT_OVERRIDE
Save to binary stream. Launches an exception upon error.
void internal_readFromStream(mrpt::utils::CStream &in) MRPT_OVERRIDE
Save to binary stream. Launches an exception upon error.
void internal_writeToStream(mrpt::utils::CStream &out) const MRPT_OVERRIDE
Save to binary stream. Launches an exception upon error.
void internal_readFromStream(mrpt::utils::CStream &in) MRPT_OVERRIDE
Save to binary stream. Launches an exception upon error.
std::vector< TComponentVersion > components
void dumpToStream(mrpt::utils::CStream &out) const MRPT_OVERRIDE
Dumps the contents of the observation in a human-readable form to a given output stream.
Pure virtual base for all message types.
Novatel OEM6 regular header structure.
Novatel OEM6 short header structure.



Page generated by Doxygen 1.9.7 for MRPT 1.4.0 SVN: at Tue Jun 13 14:27:49 UTC 2023