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 
15 namespace gbxnovatelutilacfr{
16 enum 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
28 typedef 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
50 typedef 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 
61 typedef 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 
86 typedef struct{
87  Oem4BinaryHeader header;
88  BestGpsPosData data;
89 }BestGpsPosLogB;
90 
91 typedef 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 
103 typedef struct{
104  Oem4BinaryHeader header;
105  BestGpsVelData data;
106 }BestGpsVelLogB;
107 
108 typedef 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
129 typedef 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
135 typedef struct{
136  Oem4ShortBinaryHeader header;
137  InsPvaData data;
138 }InsPvaLogSB;
139 
140 typedef 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
158 typedef 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
164 typedef struct{
165  Oem4ShortBinaryHeader header;
166  RawImuData data;
167 }RawImuLogSB;
168 #pragma pack(pop)
169 } //namespace
170 #endif
Definition: gbxnovatelacfr/driver.h:27
 

Generated for GearBox by  doxygen 1.4.5