NMEA Input
To simplify integration of many different GNSS receivers with the 3DM-CV7-GNSS/INS, in addition to the MIP external Aiding (0x13) commands, the 3DM-CV7-GNSS/INS accepts standard NMEA-0183 protocol sentences directly via the Main port
Supported NMEA Sentences
The following sentences are supported. The talker ID is ignored.
-
RMC - Recommended Minimum Specific GNSS Data
-
ZDA - Time and Date
-
HDT - Heading, True
-
GGA - Global Positioning System Fix Data
-
VTG - Course Over Ground and Ground Speed
-
GLL - Geographic Position Latitude / Longitude
-
GSV - GNSS Satellites in View
External Receiver Data
NMEA data from an external GNSS receiver can be streamed out from the 3DM-CV7-GNSS/INS in the MIP GNSS External (0x94) descriptor set. This data will mirror the contents of the NMEA data as closely as possible, given the differences in available information. Some MIP fields require data from more than one NMEA sentence to be valid, and some contain data not available in NMEA. If the associated NMEA data is not available, the MIP parameter will have the corresponding valid flag set to 0.
Timing
Latency
For NMEA data to be processed, it must be received with a timestamp that is different from the previous sentence. This means there is a delay of T seconds between message reception and corresponding MIP data output, where T is the period between NMEA updates, plus some processing time. At least two NMEA updates must have been received for the corresponding MIP data to be transmitted on the GNSS External (0x94) descriptor set.
Timestamps
Timestamps emitted from the device via the MIP GNSS External (0x94) descriptor set will match those from the corresponding NMEA sentences.
Port Configuration
NMEA Input via the Main Port
Without any configuration, NMEA data can be input via the Main port (either USB or serial, but not both simultaneously) by interleaving NMEA sentences between any MIP command packets. The device will separate the two protocols as long as the packets are not fragmented. It is recommended that a single application be responsible for communicating with the 3DM-CV7-GNSS/INS over the Main port, rather than two programs which could interfere with each other while trying to send data at the same time (e.g. MIP commands and NMEA).
MIP and NMEA packets may be interleaved, but must not be fragmented: [7565...][$GNGGA,...*XX][7565...][$GNGLL,...*XX][$GNZDA,...*XX] ...
NMEA Input via the Aux Port
In some applications, it may be advantageous to connect an external GNSS receiver or other equipment directly to the 3DM-CV7-GNSS/INS. To do this, one of the User GPIO pins must be configured as a UART port using the GPIO Configuration (0x0C,0x41) command. This is easily configured in SensorConnect's Configure tile, or via MIP API commands. Instructions for both interfaces are provided below:
Configure the 3DM-CV7-GNSS/INS GPIO pins:
SensorConnect:
-
Plug the 3DM-CV7-GNSS/INS into a computer running SensorConnect
-
Enter the Configure tile
-
Configure the GNSS Antenna Offset:
-
In the Mounting Setup section, enter the GNSS antenna offset in the NMEA Frame Offset field. Be sure to measure the antenna offset in the Vehicle Frame, even if a Sensor to Vehicle Frame Transformation is applied to the 3DM-CV7-GNSS/INS.
-
-
Specify the GPIO pin for PPS input:
-
Scroll down to the PPS Configuration section
-
Click the Source drop-down and select GPIO
-
In the GPIO Configuration section, select the desired GPIO pin to receive PPS input
-
Click the Feature drop-down and select PPS
-
Click the Behavior drop-down and select Input
-
-
-
-
Specify the GPIO pin for NMEA Input:
-
In the same GPIO section, select the desired GPIO pin to receive NMEA input data
-
Click the Feature drop-down and select NMEA (UART)
-
Click the Behavior drop-down and select Receive
-
It is not required to select Pullup, Pulldown, or Open drain for options
-
-
-
-
MIP API:
-
Configure the GNSS Antenna Offset:
-
Be sure to measure the antenna offset in the Vehicle Frame, even if a Sensor to Vehicle Frame Transformation is applied to the 3DM-CV7-GNSS/INS.
-
Input the GNSS Antenna Offset using the GNSS Offset Control (0x0D,0x13) command.
-
IMPORTANT: This command should only be used for GNSS data via NMEA input, not MIP API input.
-
-
-
Configure the desired GPIO pin for UART input:
-
Using the GPIO Configuration (0x0C,0x41) command:
-
Specify the GPIO pin desired
-
Select UART (5) as the feature
-
Select and UART_PORT2_RX (0x22) or UART_PORT3_RX (0x32) as the behavior.
-
More information on Port definitions and supported functionality can be found on the Ports page.
-
-
Select Pin Mode as open drain (0)
-
-
The baud rate of the 3DM-CV7-GNSS/INS can be set using the Comm Port Speed (0x01,0x09) command with port=2.
-
NOTE: The baud rate of the selected GPIO pin on the 3DM-CV7-GNSS/INS must match the baud rate of the UART output of the external GNSS receiver.
-
-
NOTE: Once an Aux port pin is configured, NMEA data will ONLY be accepted on the Aux port instead of the Main port.
-
Configure Filter Initialization Conditions
WARNING: A known bug exists for NMEA input. See Errata Sheet
SensorConnect:
-
Specify Filter Initialization Conditions:
-
Enter the Configure tile
-
If the user wishes to initialize position and velocity from the external GNSS receiver solution, they should enable Auto-Initialize Filter and send GGA and optionally VTG messages from the receiver.
-
If the user wishes to have the device Auto-Initialize Heading, enable that mode and select one of the following options:
-
GNSS Kinematic: The VTG message is used as the GNSS Velocity Vector to initialize heading.
-
If a VTG sentence is not provided, the 3DM-CV7-GNSS/INS will use successive position measurements to approximate an initial velocity.
-
NOTE: Special care must be taken with this initialization mode as described on the Filter Initialization page.
-
-
Magnetometer Heading: The on-board magnetometer is used to initialize heading
-
External Heading: the HDT sentence is used to initialize heading External Heading
-
-
-
-
Configure the Filter Aiding Measurement sources to include at a minimum for NMEA Input:
-
GNSS Position and Velocity Aiding: GNSS_POS_VEL
-
If using the HDT message, configure External Heading: EXTERNAL_HEADING
-
NOTE: Additional Filter Aiding Measurements can be used when providing NMEA Input but are not required.
-
MIP API:
-
Specify Filter Initialization Conditions:
-
If the user wishes to initialize position and velocity from the external GNSS receiver solution, they should enable an Auto-Initialization option for position and velocity with Navigation Filter Initialization (0x0D,0x52) command and then provide (GGA or GLL) and optionally a VTG sentence.
-
If a VTG sentence is not provided, the 3DM-CV7-GNSS/INS will use successive position measurements to approximate an initial velocity.
-
If the user wishes to initialize the heading using Kinematic Alignment, this option should be enabled using the Navigation Filter Initialization (0x0D,0x52) command.
-
If the user wishes to initialize heading automatically from the HDT sentence, they should enable the External Heading initialization option using the Navigation Filter Initialization (0x0D,0x52) command then provide the HDT sentence.
-
-
Configure the Filter Aiding Measurement sources using the Aiding Measurement Control (0x0D,0x50) command to include at a minimum for NMEA Input:
-
GNSS Position and Velocity Aiding: GNSS_POS_VEL
-
If using the HDT message, configure External Heading: EXTERNAL_HEADING
-
NOTE: Additional Filter Aiding Measurements can be used when providing NMEA Input but are not required.
-
Save Settings to Non-Volatile Memory:
If you want this configuration to be persistent through power cycles, or if the device will be power-cycled before connecting to the external GNSS receiver, it is recommended to "save as startup settings" before removing power. This can be performed using the Device Settings (0x0C,0x30) command with the SAVE function selector. For instructions using other interface methods, refer to the FAQ: Do settings get erased from the 3DM-CV7-GNSS/INS if I unplug it?
Configure the External GNSS Receiver
The NMEA Input with u-blox ZED-F9P application note provides detailed instructions on how to easily configure the popular GNSS receiver, to provide these messages.
Configure the external GNSS receiver to output the desired NMEA messages.
The following NMEA messages are recommended to provide sufficient GNSS data to the 3DM-CV7-GNSS/INS:
-
ZDA - Sets the time on the 3DM-CV7-GNSS/INS to UTC time in the shared GPS Timestamp (0xFF,0xD3). If GPS time is desired, a manual update of the TOW and Week Number can be provided via the Time Broadcast Command (0x01,0x72) as described on the PPS page.
-
GGA - Provides Lat, Lon, Height and GNSS Fix data with timestamp
-
GSV - Provides GNSS sky view information
-
VTG - Provides GNSS velocity
-
HDT - (optional) Provides True Heading in case External Heading is used for Navigation Filter Heading Alignment Method (see Filter Initialization)
-
Note: Dual Antenna is required to compute an HDT message
-
2. Save the settings of the receiver to its non-volatile memory.
Connect External GNSS Receiver to 3DM-CV7-GNSS/INS
-
See User GPIO and Electrical pages for relevant specifications.
-
Follow the wiring schematic below:
Monitor the Navigation Filter Output
-
Monitor the Navigation Filter health check data channels:
-
Reference: FAQ: How do I know when I can trust the Navigation Filter solution? and ensure the Navigation Filter has achieved: Full Navigation Filter State, Converged Filter Status Flags, and the LLH Position Uncertainty (0x82,0x08) desired.
-
Additionally, ensure Aiding Measurement Summary Indicates some of the following measurements are enabled, used, and ideally not reporting any errors (2-5):
-
GNSS
-
POS_ECEF / POS_LLH
-
VEL_ECEF / VEL_NED
-
HEADING_TRUE (for HDT)
-
When the correct Initialization Conditions are provided, the Navigation Filter will typically initialize in less than 5 seconds. If the 3DM-CV7-GNSS/INS hasn't converged in 1 minute, review the FAQ: Why is the filter stuck in Vertical Gyro Mode?.
-
Note: GPIO pins use TTL level signals. Please see the Electrical specifications for details. To use it with an RS232 signal, an external level shifter must be used.
If a GPIO port pin is configured for NMEA, NMEA will only be accepted on the GPIO port; NMEA input to the Main port will be ignored while the GPIO port is configured.