source: pacpusframework/branches/0.2.x/include/Pacpus/structures/structure_gps.h@ 371

Last change on this file since 371 was 371, checked in by DHERBOMEZ Gérald, 8 years ago

modification of the structure_gps.h file: add structure for spanpvaxa frame (Novatel Span CPT)

File size: 11.2 KB
Line 
1
2
3// donnees NMEA emises par l'ag132 sur la liaison serie
4// revision le 23/08/2004 PhB et GD : trame_gga_dbl
5// revision le 20/05/2005 Maria Alwan et Gerald Dherbomez : 5700
6
7#ifndef STRUCTURE_GPS_H
8#define STRUCTURE_GPS_H
9
10#include <QString>
11#include "Pacpus/kernel/road_time.h"
12
13#define TRAME_CORRIMUDATAA 625 // TODO : Add in kernel enum SpanCptType
14#define TRAME_INSPVAXA 626 // TODO : Add in kernel enum SpanCptType
15
16/// POSITION WGS84
17typedef struct
18{
19 double lat; // radians
20 double lon; // radians
21 double altitude; // meters
22 float sigma_lat; // meters
23 float sigma_lon; // meters
24 float sigma_alt; // meters
25 int32_t gps_week; // GPS week number
26 double gps_time; // seconds
27 int32_t quality; // quality indicator of the position, referred to NMEA standard
28 int32_t nb_sats; // number of satellites used to compute the solution
29} wgs84_position;
30
31typedef struct
32{
33 wgs84_position position;
34 road_time_t time;
35 road_timerange_t timerange;
36} TimestampedWgs84Position;
37
38/// TRAME AVR
39typedef struct
40{
41 int32_t H,Mi,S,Ms;
42 float Yaw,Tilt,Range;
43 int32_t ind_qualite;
44 float pdop;
45 int32_t nb_sat;
46} trame_avr;
47
48/// TRAME GGA, PRECISION FLOAT (30 cm en Lambert93)
49typedef struct{
50 int32_t H ,Mi,S;
51 int32_t nb_sat,ind_qualite;
52 float lon,age,lat,alt_msl,hdop,d_geoidal;
53 int32_t Ms;//modif du 20040121 pour recupere les millisecondes
54} trame_gga;
55
56/// TRAME GGA, A UTILISER
57typedef struct
58{
59 int32_t H,Mi,S,Ms;
60 int32_t nb_sat,ind_qualite;
61 float age,hdop;
62 double lon,lat,alt_msl,d_geoidal;
63 int8_t dir_lat,dir_lon;
64 int32_t ref_station_ID;
65} trame_gga_dbl;
66
67typedef struct DONNEES_GGA_
68{
69 trame_gga_dbl tramegga;
70 road_time_t t;
71 DONNEES_GGA_()
72 {
73 t = 0;
74 tramegga.alt_msl = 0;
75 tramegga.d_geoidal = 0;
76 tramegga.H = 0;
77 tramegga.Mi = 0;
78 tramegga.S = 0;
79 tramegga.Ms = 0;
80 tramegga.lat = 0;
81 tramegga.lon = 0;
82 }
83} DONNEES_GGA;
84
85/// TRAME GLL
86typedef struct
87{
88 int32_t H,Mi,S,Ms;
89 double lat,lon;
90 int8_t dir_lat,dir_lon;
91 int32_t valid_data;
92} trame_gll;
93
94/// TRAME GRS
95typedef struct
96{
97 int32_t H,Mi,S,Ms;
98 int32_t residus_status;
99 float residus[12];
100} trame_grs;
101
102/// TRAME GSA
103typedef struct
104{
105 int32_t mode_select, mode_result;
106 int32_t SV_PRN[12];
107 float pdop,hdop,vdop;
108} trame_gsa;
109
110/// TRAME GST
111typedef struct
112{
113 float a,b,rms,phi,sigma_lat,sigma_lon,sigma_alt;
114 int32_t H,Mi,S,Ms;
115} trame_gst;
116
117/// TRAME GSV
118// Matrice SatellitesInView (36 satellites max) contient :
119// en ligne : les 4 caracteristiques d'un satellite
120// en colonne : SatelliteNumber, ElevationDegrees, AzimuthDegreesTrue, SignalToNoiseRatio
121typedef struct{
122 int32_t NumberOfSatellites;
123 int32_t Totalmessages;
124 int32_t SatellitesInView[36][4];
125} trame_gsv;
126
127/// TRAME HDT
128typedef struct
129{
130 /// in degrees
131 double DegreesTrue;
132} trame_hdt;
133
134/// TRAME MSS
135typedef struct
136{
137 float SS,SNR;
138 float beacon_freq;
139 int32_t beacon_bitrate;
140 int32_t channel;
141} trame_mss;
142
143/// TRAME RMC
144typedef struct
145{
146 int32_t H,Mi,S,Ms,JJ,MM,AA;
147 int32_t valid_data;
148 double lat,lon;
149 int8_t dir_lat, dir_lon;
150 float vitesse;
151 float track_true_north;
152 float magnet_var;
153 int8_t dir_magnet_var;
154 int32_t mode;
155} trame_rmc;
156
157/// TRAME ROT
158typedef struct
159{
160 double RateOfTurn;
161 int32_t valid_data;
162} trame_rot;
163
164/// TRAME VTG
165typedef struct
166{
167 /// meters per second [km/h]
168 float v;
169 float track_true_north, track_magnet_north;
170} trame_vtg;
171
172/// TRAME XTE
173typedef struct
174{
175 int32_t valid_LCBlink;
176 int32_t valid_LCCycleLock;
177 float error;
178 int32_t dir_to_steer;
179} trame_xte;
180
181/// TRAME_ZDA
182typedef struct
183{
184 int32_t H,Mi,S,Ms,JJ,MM,AA;
185 int32_t H_offset,Mi_offset;
186} trame_zda;
187
188/// GPS SYNCHRO FRAME
189typedef struct
190{
191 trame_zda zda; // Data containing GPS time
192 road_timerange_t timeOffset; // Time elapsed between PPS and ZDA
193 road_time_t ppsTime; // timestamp of the last PPS received on the computer
194 road_time_t zdaTime; // timestamp of the ZDA frame
195} GpsSynchroFrame;
196
197
198/// TRAME PTNLEV
199typedef struct
200{
201 int32_t H,Mi,S,Ms;
202 int32_t evt_nb;
203} trame_ptnlev;
204
205/// TRAME PTNLID
206typedef struct
207{
208 int32_t machineID,productID;
209 int32_t maj_FW_nb,min_FW_nb;
210 int32_t JJ_FW,MM_FW,AA_FW;
211} trame_ptnlid;
212
213/// TRAME PTNLDG
214typedef struct
215{
216 float SS,SNR,freq;
217 int32_t bitrate,number,tracking;
218 int32_t rtcm,ind_perf;
219} trame_ptnldg;
220
221/// TRAME PTNLSM
222typedef struct
223{
224 int32_t ref_station_ID;
225 int8_t message[30];
226} trame_ptnlsm;
227
228/// TRAME PTNL,GGK
229typedef struct
230{
231 int32_t H,Mi,S,Ms,JJ,MM,AA;
232 double lat,lon;
233 int8_t dir_lat, dir_lon;
234 int32_t ind_qualite,nb_sat;
235 float dop;
236 /// ellipsoidal height
237 float eht;
238} trame_ptnl_ggk;
239
240/// TRAME PTNL,GGK_SYNC
241typedef struct
242{
243 int32_t H,Mi,S,Ms,JJ,MM,AA;
244 double lat,lon;
245 int8_t dir_lat, dir_lon;
246 int32_t ind_qualite,nb_sat;
247 float dop;
248 /// ellipsoidal height
249 float eht;
250} trame_ptnl_ggk_sync;
251
252/// TRAME PTNL,PJK
253typedef struct
254{
255 int32_t H,Mi,S,Ms,JJ,MM,AA;
256 double northing,easting;
257 int32_t ind_qualite,nb_sat;
258 float dop;
259 /// ellipsoidal height
260 float eht;
261} trame_ptnl_pjk;
262
263/// TRAME PTNL,PJT
264typedef struct
265{
266 int8_t coord_syst_name[30];
267 int8_t projection_name[30];
268} trame_ptnl_pjt;
269
270/// TRAME PTNL,VGK
271typedef struct
272{
273 int32_t H,Mi,S,Ms,JJ,MM,AA;
274 double east_vect,north_vect,up_vect;
275 int32_t ind_qualite,nb_sat;
276 float dop;
277} trame_ptnl_vgk;
278
279/// TRAME PTNL,VHD
280typedef struct
281{
282 int32_t H,Mi,S,Ms,JJ,MM,AA;
283 float azimuth,delta_azimuth;
284 float vert_angle,delta_vert_angle;
285 float range,delta_range;
286 int32_t ind_qualite,nb_sat;
287 float pdop;
288} trame_ptnl_vhd;
289
290/// SPAN CPT SOLUTION STATUS
291enum SolStatus
292{
293 SOL_COMPUTED = 0,
294 INSUFFICIENT_OBS = 1,
295 NO_CONVERGENCE = 2,
296 SINGULARITY = 3,
297 COV_TRACE = 4,
298 TEST_DIST = 5,
299 COLD_START = 6,
300 V_H_LIMIT = 7,
301 VARIANCE = 8,
302 RESIDUALS = 9,
303 DELTA_POS = 10,
304 NEGATIVE_VAR = 11,
305 INTEGRITY_WARNING = 13,
306 IMU_UNPLUGGED = 17,
307 PENDING = 18
308};
309
310/// SPAN CPT POSITION TYPE
311enum PosType
312{
313 NONE = 0,
314 FIXEDPOS = 1,
315 FIXEDHEIGHT = 2,
316 FLOATCONV = 4,
317 WIDELANE = 5,
318 NARROWLANE = 6,
319 DOPPLER_VELOCITY = 8,
320 SINGLE = 16,
321 PSRDIFF = 17,
322 WAAS = 18,
323 PROPAGATED = 19,
324 OMNISTAR = 20,
325 L1_FLOAT = 32,
326 IONOFREE_FLOAT = 33,
327 NARROW_FLOAT = 34,
328 L1_INT = 48,
329 WIDE_INT = 49,
330 NARROW_INT = 50,
331 RTK_DIRECT_INS = 51,
332 INS_SBAS = 52,
333 INS_PSRSP = 53,
334 INS_PSRDIFF = 54,
335 INS_RTKFLOAT = 55,
336 INS_RTKFIXED = 56,
337 INS_OMNISTAR = 57,
338 INS_OMNISTAR_HP = 58,
339 INS_OMNISTAR_XP = 59,
340 OMNISTAR_HP = 64,
341 OMNISTAR_XP = 65,
342 CDGPS = 66
343 PPP_CONVERGING = 68,
344 PPP = 69,
345 INS_PPP_Converging = 73,
346 INS_PPP = 74
347};
348
349/// SPAN CPT Inertial Solution Status
350enum INSStatus
351{
352 INS_INACTIVE = 0,
353 INS_ALIGNING =1,
354 INS_SOLUTION_NOT_GOOD = 2,
355 INS_SOLUTION_GOOD = 3,
356 INS_BAD_GPS_AGREEMENT = 4,
357 INS_ALIGNMENT_COMPLETE = 5
358};
359
360/// TRAME BESTGPSPOSA
361typedef struct
362{
363 SolStatus Status;
364 PosType posType;
365 double Lat;
366 double Lon;
367 double Hgt;
368 float Undulation;
369 float LatStd;
370 float LonStd;
371 float HgtStd;
372 double e;
373 double n;
374 double u;
375} trame_bestgpsposa;
376
377/// TRAME RAWIMUSA
378typedef struct
379{
380 uint32_t Week;
381 int32_t reserved;
382 double Seconds;
383 // FIXME: use a portable type instead of long double (which is 128-bit on Linux and 64-bit on Windows)
384 /*long */double ZAccel;
385 /*long */double YAccel;
386 /*long */double XAccel;
387 /*long */double ZGyro;
388 /*long */double YGyro;
389 /*long */double XGyro;
390} trame_rawimusa;
391
392/// TRAME INSPVAA
393typedef struct
394{
395 uint32_t Week;
396 int32_t reserved;
397 double Seconds;
398 double Lat;
399 double Lon;
400 double Hgt;
401 double NorthVel;
402 double EastVel;
403 double UpVel;
404 double Roll;
405 double Pitch;
406 double Azimuth;
407 INSStatus Status;
408 int32_t reserved1;
409 double e;
410 double n;
411 double u;
412} trame_inspvaa;
413
414/// TRAME INSCOV
415typedef struct
416{
417 uint32_t Week;
418 int32_t reserved;
419 double Seconds;
420 double PosCov[3][3];
421 double AttCov[3][3];
422 double VelCov[3][3];
423} trame_inscov;
424
425/// TRAME CORRIMUDATAA
426typedef struct
427{
428 uint32_t Week;
429 double Seconds;
430 double PitchRate;
431 double RollRate;
432 double YawRate;
433 double LateralAcc;
434 double LongitudinalAcc;
435 double VerticalAcc;
436} trame_corrimudataa;
437
438/// TRAME INSPVAXA
439typedef struct
440{
441 QString Status;
442 QString posType;
443 double Lat;
444 double Lon;
445 double Hgt;
446 float Undulation;
447 double NorthVel;
448 double EastVel;
449 double UpVel;
450 double Roll;
451 double Pitch;
452 double Azimuth;
453 float LatSd;
454 float LonSd;
455 float HgtSd;
456 float NorthVelSd;
457 float EastVelSd;
458 float UpVelSd;
459 float RollSd;
460 float PitchSd;
461 float AzimuthSd;
462} trame_inspvaxa;
463
464/// trame_bestgpsposa structure with timestamping
465struct TimestampedBestgpsposaFrame
466{
467 trame_bestgpsposa frame;
468 road_time_t time;
469 road_timerange_t timerange;
470};
471
472/// trame_rawimusa structure with timestamping
473struct TimestampedRawimusaFrame
474{
475 trame_rawimusa frame;
476 road_time_t time;
477 road_timerange_t timerange;
478};
479
480/// trame_inspvaa structure with timestamping
481struct TimestampedInspvaaFrame
482{
483 trame_inspvaa frame;
484 road_time_t time;
485 road_timerange_t timerange;
486};
487
488/// trame_inscov structure with timestamping
489struct TimestampedInscovFrame
490{
491 trame_inscov frame;
492 road_time_t time;
493 road_timerange_t timerange;
494};
495
496/// trame_corrimudataa structure with timestamping
497struct TimestampedCorrimudataaFrame
498{
499 trame_corrimudataa frame;
500 road_time_t time;
501 road_timerange_t timerange;
502};
503
504/// trame_inspvaxa structure with timestamping
505struct TimestampedInspvaxaFrame
506{
507 trame_inspvaxa frame;
508 road_time_t time;
509 road_timerange_t timerange;
510};
511
512/// trame_gga structure with timestamping
513struct TimestampedGgaFrame
514{
515 trame_gga_dbl frame;
516 road_time_t time;
517 road_timerange_t timerange;
518};
519
520/// trame_gst structure with timestamping
521struct TimestampedGstFrame
522{
523 trame_gst frame;
524 road_time_t time;
525 road_timerange_t timerange;
526};
527
528/// trame_vtg structure with timestamping
529struct TimestampedVtgFrame
530{
531 trame_vtg frame;
532 road_time_t time;
533 road_timerange_t timerange;
534};
535
536#endif // STRUCTURE_GPS_H
Note: See TracBrowser for help on using the repository browser.