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 fieldThe 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

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 fieldThe 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 fieldThe 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]

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