NMEA Solution Output Format

The sensor fusion solution provides two different output-streams for the position, attitude, velocity and many more states of solution and quality of solution.
By default it’s possible to configure the hardware to write to a file and/or to broadcast the solution per TCP on a customizable port (standardt-port: 6001). To stream the solution per WLAN or Ethernet, you need additionally to the defined port-number the IP-adress of your MSRTK Module, which is by default 192.168.42.1 (in case you are connected with WLAN-AP “ANavS_MSRTK_AP”).

The ANavS sensor fusion framework provides two different protocols for the solution output, the standardized NMEA-Format and a proprietary binary protocol. In the following the standardized NMEA-Format is described.

 

NMEA-Format

This protocol is based on the international standard for maritime navigation and radio communication, equipment and systems and digital interfaces (IEC 61161-1) [1]. This standard adopted the de-facto standards for interfacing marine electronic devices, known as NMEA 0183.
The data is transmitted in sentences of variable length with a specified sentence structure.

Sentence structure
* Address field
* Data fields
* Checksum field
* Terminating field
* All sentences contain only ASCII characters
* The maximum length of a sentence is 82 characters
* All fields are separated by delimiters

Address field
The address field starts with “$” followed by the talker ID and a sentence identifier. The used talker IDs are:
* GP for GPS only solutions
* GL for GLONASS only solutions
* GA for GALILEO only solutions
* GN for multi GNSS solutions

The used sentence identifiers are:
* GGA – Global Positioning System Fix Data
* VTG – Course over Ground and Ground Speed
* GSA – GNSS DOP and Active Satellites
* GSV – GNSS Satellites in View
* RMC – Recommended Minimum Specific GNSS Data
* ZDA – Time and Date
* PASHR – Attitude Data

Data fields
Data fields must always be separated by “,”. They can contain alpha, numeric and alphanumeric values all coded in ASCII characters. The length of a data field can be constant, variable or can contain a fixed and variable portion. This differs for each sentence.

Checksum field
The Checksum field starts with “*” followed by the checksum of the sentence.
The Checksum is generated with a bitwise exclusive OR of all fields including the “,” delimiters, between but not including the “$” and the “*” characters.
The hexadecimal value of the checksum is then converted to two ASCII characters.

Terminating field
The terminating sequence contains the two ASCII characters <CR> and <LF> without any delimiter.

Satellite Numbering
GPS: 1-32
– GLONASS: 33-96
– GALILEO: 301-336*
*currently no standard way to number Galileo satellites. The numbering is therefore in the same way as [2]

 

Sentence specification

GGA – Global positioning system (GPS) fix data

TALKER ID XX All talker IDs usable
SENTECE ID GGA
UTC of position hhmmss.ss Fixed length
2 digits after dot
Latitude llll.lllllll Fixed length
4 digits before and 7 after dot
Hemisphere of latitude N/S N if value of latitude is positive
Longitude lllll.lllllll Fixed length
5 digits before and 7 after dot
Hemisphere of longitude E/W E if value of longitude is positive
GPS quality indicator X 0: GNSS fix not available
1: GNSS fix valid
4: RTK fixed ambiguities
5: RTK float ambiguities
Number of satellites used for positioning XX Fixed length
01 for single digits
HDOP XX.X Variable/fixed length
1 digit after dot, variable before
Altitude geoid height (-)X.XX Variable/fixed length
2 digits after dot, variable before
Unit of altitude M
Geoidal separation (-)X.XX Variable/fixed length
2 digits after dot, variable before
Unit of geoidal separation M
Age of differential data Empty field
Differential reference station ID Empty field

Example:
$GNGGA,185833.80,4808.7402397,N,01133.9325039,E,5,15,1.1,470.50,M,45.65,M,,*75

 

VTG – Course over ground and ground speed

TALKER ID XX All talker IDs usable
SENTENCE ID VTG
Course over ground X.XX Variable/fixed length
2 digits after dot, variable before
Values from 0 to 359.99
Degrees T True course
Course over ground X.XX Variable/fixes length
2 digits after dot, variable before
Values from 0 to 359.99
Degrees M Magnetic course
Speed over ground X.XX Variable/fixed length
2 digits after dot, variable before
Unit N knots
Speed over ground X.XX Variable/fixed length
2 digits after dot, variable before
Unit K Km/h
Mode indicator X A: Autonomous mode

The VTG sentence is empty ( $GNVTG,,T,,M,,N,,K,A*3D ) until attitude baseline is valid. Course over ground equals heading.
Example:
$GNVTG,112.99,T,109.99,M,0.15,N,0.08,K,A*3B

 

GSA – GNSS DOP and active satellites

TALKER ID XX All talker IDs usable*
SENTENCE ID GSA
MODE X 1: GNSS fix not available
3: 3D
MODE XX M: forced to operate in 3D
ID number XX Fixed length: 01 for single digit
Up to 12 satellites per constellation
Empty field if not used for positioning
GPS: ID is PRN (1-32)
GLONASS: ID is slot number + 64
GALILEO: PRN + 300
XX
XX
XX
XX
XX
XX
XX
XX
XX
XX
XX
PDOP XX.XX Fixed length
2 digits before and after dot
HDOP
VDOP

*if GN is used for Talker ID a separate sentence must to created for each GNSS constellation all starting with the Talker ID for multi GNSS.
Example:
$GNGSA,2,M,06,12,15,17,19,24,25,32,1.34,0.96,0.93*1D
$GNGSA,2,M,70,71,79,80,81,82,88,1.34,0.96,0.93*3A

 

GSV – GNSS satellites in view

TALKER ID XX GN must not be used*
SENTENCE ID GSV
Total number of messages X 1-9
Message number X 1-9
Total number of satellites in view XX Fixed length: 01 for single digit
Satellite ID number XX Fixed length: 01 for single digit
Empty field if not used for positioning
GPS: ID is PRN (1-32)
GLONASS: ID is slot number + 64
GALILEO: PRN + 300
Elevation XX Fixed length: 00 for 0° elevation
Values from 0 to 90
Empty if not used
Azimuth XXX Fixed length: 000 for 0° azimuth
Values from 000 to 360
Empty if not used
SNR XX Fixed length: 05 for 5 db/Hz
Values from 0-99
Empty if not used

*if multi GNSS is used a separate GSV sentence must be created for each constellation starting with the constellation specific talker ID.

This block is repeated 4 times per sentence in total. For more than multiples of 4 a new sentence is started each time. Blocks are left empty if the number of satellites in view is lower than a multiple of 4.
Example:
$GPGSV,6,1,10,02,3.6,133.2,26,10,06,11.7,100.7,39,10,10,9.6,281.5,35,10,12,63.1,256.5,46*58
$GPGSV,6,2,10,15,26.5,186.0,43,10,17,30.5,48.7,42,10,19,43.9,65.3,46,10,24,86.5,103.6,46*5E
$GPGSV,6,3,10,25,21.6,250.8,43,10,32,21.7,316.0,41,,,,,,,,,,*5E
$GLGSV,6,4,09,69,7.0,215.9,30,09,70,30.8,267.4,44,09,71,23.0,324.4,46,09,73,13.0,286.8,33*72
$GLGSV,6,5,09,79,47.8,70.6,43,09,80,54.9,314.5,38,09,81,48.6,86.8,43,09,82,28.4,150.8,46*49
$GLGSV,6,6,09,88,21.3,28.0,40,,,,,,,,,,,,,,,*4E

 

RMC – Recommended minimum specific GNSS data

TALKER ID XX All talker IDs usable
SENTENCE ID RMC
UTC time hhmmss.ss Fixed length
Status X A: data valid
Latitude llll.lllll11 Fixed length
4 digits before and 7 after dot
Hemisphere of latitude N/S N if value of latitude is positive
Longitude lllll.lllllll Fixed length
5 digits before and 7 after dot
Hemisphere of longitude E/W E if value of longitude is positive
Speed over ground X.XX Variable/fixed length
2 digits after dot, variable before
Unit N knots
Course over ground X.XX Variable/fixed length
2 digits after dot, variable before
Values from 0 to 359.99
T True course
Date ddmmyy
Magnetic variation X.XX Variable/fixed length:
2 digits after dot, variable before
E/W E if variation positive
Mode indicator A: Autonomous
D: Differential

Example:
$GNRMC,185823.40,A,4808.7402374,N,01133.9324760,E,0.00,N,112.64,T,130117,3.00,E,A*14

ZDA – Time and date

TALKER ID XX All talker Ids usable
SENTECE ID ZDA
UTC time hhmmss.ss Fixed length
Day XX Fixed length
01 to 31
Month XX Fixed length
01 to 12
Year XXXX
Local zone hours Empty field
Local zone minutes Empty field

Example:
$GNZDA,185823.40,13,01,2017,,*7E

 

PASHR  – Attitude Data

TALKER ID No talker ID
SENTENCE ID PASHR
UTC time hhmmss.ss Fixed length
Heading* XXX.XX Fixed value: 000.00 for 0°
3 digits before dot, 2 after
T True heading
Roll angle* (-)XXX.XX Fixed value: 000.00 for 0°
3 digits before dot, 2 after
Pitch angle* (-)XXX.XX
Heave Empty field
Roll standard deviation* XX.XXX Fixed value
2 digits before dot 3 after
Pitch standard deviation* XX.XXX
Heading standard deviation* XX.XXX
Quality flag X 0: No position
1: RTK float position
2: RTK fixed position

* attitude angles and corresponding deviation values are only filled for defined setup (3D, 2D)
Example:
$PASHR,190558.56,107.09,T,,-0.16,,,0.067,0.056,2*34

References

[1]        IEC 61162-1 ed.2
http://read.pudn.com/downloads151/ebook/657722/IEC%2061162-1%20ed.2%20(2000).pdf