GNSS Technology Guide
Table of Contents
- What is GNSS?
- Core Concepts
- Positioning Technologies
- Fix Quality Indicators
- Antenna Types
- CORS Network
- Communication Protocols
- U-Center Configuration
What is GNSS?
GNSS = Global Navigation Satellite System
A constellation of satellites that provide positioning, navigation, and timing services globally.
Major GNSS Systems
| System | Country/Region | Satellites | Coverage |
|---|---|---|---|
| GPS | USA | 31+ | Global |
| GLONASS | Russia | 24+ | Global |
| Galileo | European Union | 30+ | Global |
| BeiDou | China | 35+ | Global |
| NavIC (IRNSS) | India | 7 | India + 1500km |
| QZSS | Japan | 4+ | Asia-Pacific region |
Core Concepts
GNSS Frequency Bands
Satellites transmit signals on different frequency bands:
| Band | Frequency | Used By | Notes |
|---|---|---|---|
| L1 | 1575.42 MHz | GPS, GLONASS, Galileo | Primary civilian signal |
| L2 | 1227.60 MHz | GPS, GLONASS | Military/precise applications |
| L5 | 1176.45 MHz | GPS, Galileo, NavIC | Safety-critical applications |
| S-Band | 2492.028 MHz | NavIC | Regional coverage (India) |
NavIC Specifics
NavIC (Navigation with Indian Constellation) developed by ISRO: - Operates on L5 and S-band frequencies - S-band is prone to interference from cellular and WiFi networks - Satellites orbit at ~35,000 km altitude (geostationary) - Signal strength is weaker due to high altitude
NavIC-01 Receiver: - Developed by ISRO - Supports L1, L5, and S-band frequencies - Any L5-capable receiver can receive NavIC signals
GAGAN (Indian SBAS)
GAGAN = GPS Aided Geo Augmented Navigation
- Satellite-Based Augmentation System (SBAS)
- Uses geostationary satellites
- Provides ionospheric corrections
- Primarily used for aircraft navigation
- Improves GPS accuracy to ~1-3 meters
SBAS Systems
SBAS = Satellite-Based Augmentation System
Uses geostationary satellites to transmit free correction data to improve GPS accuracy.
Global SBAS Systems
| System | Region | Coverage |
|---|---|---|
| GAGAN | India | India and surrounding regions |
| WAAS | USA | North America |
| EGNOS | Europe | Europe and North Africa |
| MSAS | Japan | Japan and East Asia |
| SDCM | Russia | Russia and neighboring countries |
How SBAS Works: 1. Ground stations monitor satellite signals 2. Calculate corrections for errors (ionospheric, clock, orbit) 3. Send corrections via geostationary satellites 4. Receivers apply corrections for better accuracy
Typical Accuracy: 1-3 meters (compared to 5-10 meters for standard GPS)
Positioning Technologies
1. Pseudo Random Code
Method: Measures time delay of satellite signals
Characteristics: - ✅ Low cost - ✅ Simple implementation - ✅ Works with basic GPS receivers - ❌ Lower accuracy (5-10 meters) - ❌ Subject to atmospheric errors
Use Cases: - Consumer GPS devices - Smartphones - Car navigation - Fitness trackers
2. Carrier Phase Measurement
Method: Measures phase of carrier wave (not just the code)
Characteristics: - ✅ Very high accuracy (centimeter-level) - ✅ Used in professional surveying - ❌ More expensive - ❌ Requires more processing - ❌ Needs additional correction data
Use Cases: - RTK (Real-Time Kinematic): Live centimeter accuracy - PPK (Post-Processing Kinematic): Process data later for accuracy - Land surveying - Precision agriculture - Autonomous vehicles
Visual Comparison
Pseudo Random Code:
Measures: [----Code Chips----]
Accuracy: ~5-10 meters
Carrier Phase:
Measures: ~~~Wave Cycles~~~
Accuracy: ~1-2 centimeters
Fix Quality Indicators
GPS receivers report fix quality to indicate positioning accuracy:
| Fix Type | Value | Description | Accuracy | Use Case |
|---|---|---|---|---|
| No Fix | 0 | No satellite lock | N/A | Searching for satellites |
| GPS Fix | 1 | Standard GPS positioning | 5-10m | Consumer devices |
| DGPS Fix | 2 | Differential GPS with corrections | 1-3m | Marine navigation |
| RTK Fixed | 4 | Integer ambiguities resolved | 1-2cm | Professional surveying |
| RTK Float | 5 | Ambiguities not fully resolved | 10-50cm | Transitioning to RTK Fixed |
Understanding RTK
RTK = Real-Time Kinematic
How it works: 1. Base station at known location observes satellite errors 2. Sends corrections to rover (mobile receiver) 3. Rover applies corrections in real-time 4. Achieves centimeter-level accuracy
RTK Fixed vs RTK Float: - Fixed: Integer ambiguities resolved → Best accuracy (1-2cm) - Float: Still calculating → Medium accuracy (10-50cm)
Antenna Types
GPS antenna design affects signal reception quality and frequency support.
Antenna Types Overview
| Type | Form Factor | Frequency Support | Pros | Cons | Use Case |
|---|---|---|---|---|---|
| Helical | Cylindrical coil | Single/multi-band | Good gain, compact | Directional | Handheld devices |
| Patch | Flat rectangular | Usually single-band | Compact, low profile | Lower gain | Embedded systems |
| Ceramic Patch | Stacked squares | Multi-band | Very compact | Expensive | Compact IoT devices |
| Dome | Flying saucer | Multi-band | Excellent performance | Large size | Vehicles, outdoor |
| Thin Film | Ultra-thin | Single-band | Minimal thickness | Limited performance | Wearables |
| Circular Plate | Round disk | Single/dual-band | Omnidirectional | Moderate size | General purpose |
| Rod/Whip | Vertical stick | Single-band | Simple, cheap | Lower performance | Budget devices |
Design Considerations
Ceramic Patch Antennas: - Stack size determines frequency - Larger square = lower frequency (L1) - Smaller square = higher frequency (L5) - Multi-stacked = multi-band support
Dome Antennas: - Best for multi-band reception - Ground plane provides better signal - Weather-resistant housing - Magnetic mount available
Recommended Manufacturer
Taoglas: Excellent collection of GPS antennas in various form factors: - PCB-mounted antennas - Flexible (FPC) antennas - Patch-type antennas - Ceramic antennas - External active antennas
CORS Network
CORS = Continuously Operating Reference Station
What is CORS?
A network of permanent GPS base stations that provide correction data via the internet.
Survey of India CORS Network: - Operates 1500+ stations across India - Provides corrections for weather and GPS - Improves location accuracy to centimeter level - Data transmitted via internet (NTRIP protocol)
How to Use CORS
- Access CORS Portal: cors.surveyofindia.gov.in
- Get Station Details: Find nearest CORS station
- Configure U-Center:
- Add CORS IP address
- Configure NTRIP client
- Enable RTCM3 corrections
- Achieve RTK Fixed: Real-time centimeter accuracy
Benefits: - No need for own base station - Access to professional-grade corrections - Wide coverage across India - Free or low-cost access
Communication Protocols
GPS receivers communicate using different protocols:
| Protocol | Type | Speed | Use Case |
|---|---|---|---|
| NMEA | ASCII text | Slow | Simple parsing, human-readable |
| UBX | Binary | Fast | Configuration, high-rate data |
| RTCM3 | Binary | Fast | RTK corrections |
NMEA Protocol
NMEA = National Marine Electronics Association
Text-based protocol using ASCII characters for marine electronics communication.
NMEA Sentence Structure
$GPGGA,123519,4807.038,N,01131.000,E,1,08,0.9,545.4,M,46.9,M,,*47<CR><LF>
││││││└──────┴───────────────────────────────────────────────┴─┘ └──┘
│││││└─ Data fields (comma-separated)
││││└── Sentence type
│││└─── Talker ID (GP=GPS, GL=GLONASS, GN=Multi)
││└──── Start character
│└───── Checksum (asterisk + 2 hex digits)
└────── End (Carriage Return + Line Feed)
Sentence Components
| Component | Description | Example |
|---|---|---|
| $ | Start character | Always $ |
| Talker ID | Satellite system | GP (GPS), GL (GLONASS), GN (Multi-GNSS) |
| Sentence Type | Data type | GGA, RMC, GSV, etc. |
| Data Fields | Comma-separated values | Position, time, satellites |
| Checksum | Error detection | *47 (asterisk + 2 hex) |
| \<CR>\<LF> | Line terminator | Carriage return + line feed |
Common NMEA Sentences
| Type | Full Name | Contains | Update Rate |
|---|---|---|---|
| GGA | Global Positioning System Fix Data | Position, altitude, time, satellites, fix quality | 1Hz typical |
| RMC | Recommended Minimum Navigation | Position, speed, date, time, validity | 1Hz typical |
| GSA | GPS DOP and Active Satellites | Satellite IDs, PDOP, HDOP, VDOP | 1Hz |
| GSV | GPS Satellites in View | Satellite details, elevation, azimuth, SNR | 1Hz |
| VTG | Track Made Good and Ground Speed | Speed, heading, mode | 1Hz |
| GLL | Geographic Position | Latitude and longitude only | 1Hz |
NMEA Example: GGA Sentence
$GPGGA,123519,4807.038,N,01131.000,E,1,08,0.9,545.4,M,46.9,M,,*47
Decoded:
- 123519: Time = 12:35:19 UTC
- 4807.038,N: Latitude = 48°07.038' North
- 01131.000,E: Longitude = 11°31.000' East
- 1: Fix quality = GPS fix
- 08: Number of satellites = 8
- 0.9: Horizontal dilution of precision (HDOP)
- 545.4,M: Altitude = 545.4 meters above sea level
- 46.9,M: Height of geoid above WGS84 ellipsoid = 46.9m
- *47: Checksum
Parsing NMEA Data
Manual Parsing (complex): - Split by commas - Validate checksum - Convert coordinate formats - Handle missing fields
Using Library (recommended):
#include <TinyGPSPlus.h>
TinyGPSPlus gps;
// Library handles:
// ✅ Parsing
// ✅ Checksum validation
// ✅ Data conversion
// ✅ Multiple sentence types
// Easy access:
double lat = gps.location.lat();
double lng = gps.location.lng();
int satellites = gps.satellites.value();
UBX Protocol
UBX = U-Blox proprietary binary protocol
Binary protocol for efficient, high-speed communication with U-Blox GPS modules.
NMEA vs UBX Comparison
NMEA (Text):
$GPGGA,123519,4807.038,N,01131.000,E,1,08,0.9,545.4,M,46.9,M,,*47
└─ 70+ bytes of ASCII text
UBX (Binary):
0xB5 0x62 0x01 0x07 [20 bytes payload]
└─ 20-30 bytes of binary data
Advantage: 50-70% smaller, faster parsing, more data
UBX Message Structure
[SYNC1][SYNC2][CLASS][ID][LENGTH][PAYLOAD][CHECKSUM]
0xB5 0x62 0x01 0x07 0x0014 [data] [CK_A][CK_B]
| Field | Bytes | Description |
|---|---|---|
| SYNC1 | 1 | Always 0xB5 (181 decimal) |
| SYNC2 | 1 | Always 0x62 (98 decimal) |
| CLASS | 1 | Message category |
| ID | 1 | Specific message type |
| LENGTH | 2 | Payload length (little-endian) |
| PAYLOAD | Variable | Message data |
| CHECKSUM | 2 | CK_A and CK_B checksums |
UBX Message Classes
| Class | Hex | Category | Description |
|---|---|---|---|
| NAV | 0x01 | Navigation | Position, velocity, time |
| RXM | 0x02 | Receiver | Satellite signal info |
| INF | 0x04 | Information | Text messages, warnings |
| ACK | 0x05 | Acknowledge | Command acknowledgment |
| CFG | 0x06 | Configuration | Module settings |
| MON | 0x0A | Monitoring | System health, performance |
| TIM | 0x0D | Timing | Precise timing data |
| MGA | 0x13 | Assistance | Multi-GNSS assistance data |
| LOG | 0x21 | Logging | Data logging control |
NAV Class Messages (Most Common)
| ID | Hex | Message Name | Contains |
|---|---|---|---|
| POSLLH | 0x02 | Position (Lat, Lon, Height) | Latitude, longitude, altitude |
| STATUS | 0x03 | Receiver Status | Fix type, flags, time to fix |
| PVT | 0x07 | Position, Velocity, Time | Everything (most used) |
| TIMEUTC | 0x21 | UTC Time | Date and time |
| SVINFO | 0x30 | Satellite Info | Signal strength per satellite |
Most Useful: NAV-PVT (0x01 0x07)
NAV-PVT = Navigation Position Velocity Time
Contains everything you need in one message: - ✅ Date and time - ✅ Position (lat, lon, altitude) - ✅ Velocity (speed, heading) - ✅ Accuracy estimates - ✅ Number of satellites - ✅ Fix type
Update Rate: Up to 10Hz (10 times per second)
RTCM3 Protocol
RTCM3 = Radio Technical Commission for Maritime Services, Version 3
Binary protocol for transmitting high-precision GPS corrections from base station to rover.
RTK System Architecture
┌─────────────────┐
│ Base Station │ (Knows exact position)
│ (e.g., ZED-F9P)│
└────────┬────────┘
│ Observes satellite errors
↓
┌─────────────────┐
│ RTCM3 Messages │
│ (Corrections) │
└────────┬────────┘
│ Transmitted via:
│ • Radio (LoRa, UHF)
│ • Internet (NTRIP)
│ • WiFi / Bluetooth
↓
┌─────────────────┐
│ Rover/Receiver │ (Mobile GPS)
│ (e.g., ZED-F9P)│
└────────┬────────┘
│ Applies corrections
↓
┌─────────────────┐
│ RTK Fixed │
│ (1-2cm accuracy)│
└─────────────────┘
RTCM3 Message Structure
[PREAMBLE][RESERVED][LENGTH][MESSAGE DATA][CRC]
0xD3 6 bits 10 bits Variable 24 bits
| Field | Size | Description |
|---|---|---|
| Preamble | 1 byte | Always 0xD3 (211 decimal) |
| Reserved | 6 bits | Reserved for future use |
| Length | 10 bits | Message data length (bytes) |
| Message | Variable | Correction data |
| CRC | 3 bytes | 24-bit CRC checksum |
Common RTCM3 Messages
| Message | Description | Update Rate |
|---|---|---|
| 1005 | Stationary RTK base station position | Once/10s |
| 1077 | GPS MSM7 (full carrier phase) | 1Hz |
| 1087 | GLONASS MSM7 | 1Hz |
| 1097 | Galileo MSM7 | 1Hz |
| 1127 | BeiDou MSM7 | 1Hz |
| 1230 | GLONASS code-phase biases | 10s |
MSM7 = Multiple Signal Message type 7 (highest resolution)
RTK Setup Example
Base Station (ZED-F9P):
1. Place at known location (or perform survey-in)
2. Configure to output RTCM3 messages
3. Transmit via radio/internet
Rover (ZED-F9P):
1. Receive RTCM3 corrections
2. Apply to own measurements
3. Achieve RTK Fixed (1-2cm accuracy)
Typical Range: - Radio: 5-10 km - Internet (NTRIP): Unlimited - CORS network: Up to 50 km from base
U-Center Configuration
U-Center is U-Blox's official software for configuring GPS modules.
Basic Navigation
View → Messages View - Shows all received messages (NMEA, UBX, RTCM3) - Live updates as data arrives - Useful for debugging
Port Configuration (CFG-PRT)
CFG → PRT (Port Configuration)
- Select Target Port:
- UART1 (Serial 1)
- UART2 (Serial 2)
- USB
- I2C
-
SPI
-
Configure Baud Rate (UART):
- 9600 bps (default)
- 38400 bps
-
115200 bps (recommended for high-rate)
-
Enable Protocols:
- ☑ UBX (Binary, efficient)
- ☑ NMEA (Text, compatible)
- ☑ RTCM3 (For RTK corrections)
Example Configuration
For RTK Rover:
Port: UART1
Baud Rate: 115200
Input Protocols: UBX + NMEA + RTCM3
Output Protocols: UBX + NMEA
For RTK Base:
Port: UART1
Baud Rate: 115200
Input Protocols: UBX + NMEA
Output Protocols: RTCM3 (corrections to rover)
Other Useful Settings
CFG → RATE (Measurement Rate): - Set update frequency (1Hz, 5Hz, 10Hz) - Higher rates need higher baud rate
CFG → NAV5 (Navigation Engine): - Portable (default) - Stationary (for base station) - Automotive, Airborne, etc.
CFG → MSG (Message Configuration): - Enable/disable specific NMEA sentences - Configure UBX message output rates
Save Configuration: - CFG → CFG (Configuration) - Save to: Flash/EEPROM/Battery-backed RAM
Quick Reference
Protocol Comparison
| Feature | NMEA | UBX | RTCM3 |
|---|---|---|---|
| Format | ASCII text | Binary | Binary |
| Size | Large | Small | Medium |
| Speed | Slow | Fast | Fast |
| Purpose | General positioning | Configuration + data | RTK corrections |
| Human-readable | Yes | No | No |
| Max update rate | ~5Hz | 10Hz+ | N/A |
Fix Quality Quick Reference
| Fix Type | Accuracy | Best For |
|---|---|---|
| GPS Fix | 5-10m | General navigation |
| DGPS | 1-3m | Marine, aviation |
| RTK Float | 10-50cm | Transitioning to fixed |
| RTK Fixed | 1-2cm | Surveying, agriculture |
Frequency Bands
L1 (1575 MHz): Standard GPS signal
L2 (1227 MHz): Precise measurements
L5 (1176 MHz): Safety-critical + NavIC
S-Band (2492 MHz): NavIC regional
Essential Commands (U-Blox)
// Enable NMEA GGA sentence
UBX-CFG-MSG: 0xF0 0x00 (enable)
// Enable UBX NAV-PVT
UBX-CFG-MSG: 0x01 0x07 (enable)
// Set 5Hz update rate
UBX-CFG-RATE: Measurement: 200ms
// Configure RTK mode
UBX-CFG-TMODE3: Survey-in mode
Additional Resources
- U-Blox Documentation: u-blox.com/docs
- NMEA Specification: nmea.org
- Survey of India CORS: cors.surveyofindia.gov.in
- Taoglas Antennas: taoglas.com
- RTK Explained: rtklibexplorer.com
Happy navigating! 🛰️📍