INTRODUCTION
Overview
Download and Install
Documentation
Publications

REPOSITORY
Libraries

DEVELOPER
Dev Guide
Dashboard

PEOPLE
Contributors
Users

SourceForge.net Logo
Project
Download
Mailing lists

 

         
novatelmessages.h
1/*
2 * GearBox Project: Peer-Reviewed Open-Source Libraries for Robotics
3 * http://gearbox.sf.net/
4 * Copyright (c) 2004-2010 Michael Moser
5 *
6 * This distribution is licensed to you under the terms described in
7 * the LICENSE file included in this distribution.
8 *
9 */
10#ifndef GBX_NOVATEL_MESSAGES_H
11#define GBX_NOVATEL_MESSAGES_H
12
13#include <stdint.h> // for uint8_t and friends
14
15namespace gbxnovatelutilacfr{
16enum BinaryLogType{
17 RawImuSBLogType = 325,
18 BestGpsPosBLogType = 423,
19 BestGpsVelBLogType = 506,
20 InsPvaSBLogType = 508,
21 InvalidLogType
22};
23
24#pragma pack(push,1)
25// binary packet header; long version, mostly used for GPS gear
26// according to:
27// OEM4 Family Firmware Version 2.300 Command and Log Reference Rev 16; Table 4; Page 17
28typedef struct Oem4BinaryHeader{ //offs, size, comment
29 uint8_t sb1; //0 1 0xaa
30 uint8_t sb2; //1 1 0x44
31 uint8_t sb3; //2 1 0x12/0x13 , depending on long/short format
32 uint8_t headerLength; //3 1
33 uint16_t msgId; //4 2 which log we have
34 uint8_t msgType; //6 1 binary, ascii ...
35 uint8_t portAddress; //7 1
36 uint16_t msgLength; //8 2 _without_ header or CRC
37 uint16_t seqNr; //10 2 for multiple related messages at a time (i.e. one per satellite)
38 uint8_t idleTime; //12 1
39 uint8_t timeStatus; //13 1
40 uint16_t gpsWeekNr; //14 2
41 uint32_t msIntoWeek; //16 4 milliseconds from beginning of week
42 uint32_t receiverStatus; //20 4
43 uint16_t reserved; //24 2
44 uint16_t swVersion; //26 2
45}Oem4BinaryHeader;
46
47// binary packet header; short version, mostly used for (higher rate) INS gear
48// according to:
49// SPAN Technology for OEMV User Manual Rev 3; Table 17; Page 74
50typedef struct Oem4ShortBinaryHeader{ //offs, size, comment
51 uint8_t sb1; //0 1 0xaa
52 uint8_t sb2; //1 1 0x44
53 uint8_t sb3; //2 1 0x12
54 uint8_t msgLength; //3 1 _without_ header or CRC
55 uint16_t msgId; //4 2 which log we have
56 uint16_t GpsWeekNr; //6 2
57 uint32_t msIntoWeek; //8 4 milliseconds from beginning of week
58}Oem4ShortBinaryHeader;
59
60
61typedef struct{ //offs size comment
62 uint32_t solutionStatus; //0 4
63 uint32_t positionType; //4 4
64 double latitude; //8 8 [deg] north positive
65 double longitude; //16 8 [deg] east positive
66 double heightAMSL; //24 8 [m] AMSL == above mean sea level (geoid)
67 float undulation; //32 4 [m] aka geoidal seperation: undulation == heigth_ellipsoid - height_geoid/AMSL
68 uint32_t datumId; //36 4
69 float sigmaLatitude; //40 4 [m] 1 standard deviation error estimate
70 float sigmaLongitude; //44 4 [m] 1 standard deviation error estimate
71 float sigmaHeight; //48 4 [m] 1 standard deviation error estimate
72 int8_t baseStationId[4]; //52 4
73 float diffAge; //56 4 [s]
74 float solutionAge; //60 4 [s]
75 uint8_t numObservations; //64 1 number of observations tracked (?) L1 code/carrier/doppler + L2 code/carrier/doppler?
76 uint8_t numL1Ranges; //65 1 number of L1 ranges used in computation (?)
77 uint8_t numL1RangesRTK; //66 1 number of L1 ranges above the RTK mask angle (??) number of L1 carrier ranges used?
78 uint8_t numL2RangesRTK; //67 1 number of L2 ranges above the RTK mask angle (??) number of L2 carrier ranges used?
79 uint8_t reserved0; //68 1
80 uint8_t reserved1; //69 1
81 uint8_t reserved2; //70 1
82 uint8_t reserved3; //71 1
83 uint32_t crc; //72 4
84}BestGpsPosData;
85
86typedef struct{
87 Oem4BinaryHeader header;
88 BestGpsPosData data;
89}BestGpsPosLogB;
90
91typedef struct{ //offs size comment
92 uint32_t solutionStatus; //0 4
93 uint32_t velocityType; //4 4
94 float latency; //8 4 [s]
95 float diffAge; //12 4 [s]
96 double horizontalSpeed; //16 8 [m/s]
97 double trackOverGround; //24 8 [deg] w respect to true North
98 double verticalSpeed; //32 8 [m/s]
99 float reserved; //40 4
100 uint32_t crc; //44 4
101}BestGpsVelData;
102
103typedef struct{
104 Oem4BinaryHeader header;
105 BestGpsVelData data;
106}BestGpsVelLogB;
107
108typedef struct{ //offs size comment
109 uint32_t gpsWeekNr; //0 4
110 double secIntoWeek; //4 8
111 double latitude; //12 8 [deg] north positive WGS84
112 double longitude; //20 8 [deg] east positive WGS84
113 double height; //28 8 [m] above ellipsoid WGS84 (heigth_ellipsoid - undulation == height_geoid/AMSL)
114 double northVelocity; //36 8 [m/s] south is negative; true north?
115 double eastVelocity; //44 8 [m/s] west is negative; true east?
116 double upVelocity; //52 8 [m/s] down is negative; geoid/ellipsoid vertical?
117 //The default IMU axis definitions are:
118 // Y - forward
119 // Z - up
120 // X - right hand side
121 double roll; //60 8 [degree] right handed rotation from local level around y-axes
122 double pitch; //68 8 [degree] right handed rotation from local level around x-axes
123 double azimuth; //60 8 [degree] left handed around z-axes rotation from (true?) north clockwise
124 uint32_t insStatus; //68 4
125 uint32_t crc; //72 4
126}InsPvaData;
127
128//binary log with full headers
129typedef struct{
130 Oem4BinaryHeader header;
131 InsPvaData data;
132}InsPvaLogB;
133
134//binary log with short header; *preferred*, since this log is usually done at high rate
135typedef struct{
136 Oem4ShortBinaryHeader header;
137 InsPvaData data;
138}InsPvaLogSB;
139
140typedef struct{ //offs size comment
141 uint32_t gpsWeekNr; //0 4
142 double secIntoWeek; //4 8
143 uint32_t imuStatus; //12 4
144 //The default IMU axis definitions are:
145 // Y - forward
146 // Z - up
147 // X - out the right hand side
148 int32_t zAccelCnt; //16 4
149 int32_t yNegativAccelCnt ; //20 4
150 int32_t xAccelCnt; //24 4
151 int32_t zGyroCnt; //28 4
152 int32_t yNegativGyroCnt; //32 4
153 int32_t xGyroCnt; //36 4
154 int32_t crc; //40 4
155}RawImuData;
156
157//binary log with full headers
158typedef struct{
159 Oem4BinaryHeader header;
160 RawImuData data;
161}RawImuLogB;
162
163//binary log with short header; *preferred*, since this log is done at high rate
164typedef struct{
165 Oem4ShortBinaryHeader header;
166 RawImuData data;
167}RawImuLogSB;
168#pragma pack(pop)
169} //namespace
170#endif
 

Generated for GearBox by  doxygen 1.4.5