Skip to main content
GNSS Documentation
GitHub Toggle Dark/Light/Auto mode Toggle Dark/Light/Auto mode Toggle Dark/Light/Auto mode Back to homepage

RTK

The RTK HAT (NEO-F9P) supports centimeter-level positioning using RTCM3 corrections.

Note
HAT Compatibility — RTK is available only on the L1/L5 RTK HAT (NEO-F9P).

RtkConfig

Field C++ Type Description
mode ERtkMode Base or Rover
base optional<BaseConfig> Base station configuration. Required when mode = Base

RTK Modes

Value C++ Python Description
Base ERtkMode::Base gnsshat.RtkMode.BASE Generate RTCM3 corrections
Rover ERtkMode::Rover gnsshat.RtkMode.ROVER Consume RTCM3 corrections for cm-level fix

Base Configuration

The base station needs to know its precise position. Two modes:

Survey-In

The module auto-determines its position by observing satellites over a configurable period and accuracy threshold.

Field Type Description
minimumObservationTime_s uint32_t Minimum observation time in seconds
requiredPositionAccuracy_m double Required 3D position accuracy in meters

Fixed Position

Provide known coordinates directly, skipping the survey phase. Supports ECEF or LLA.

ECEF (Earth-Centered, Earth-Fixed):

Field Type Description
x_m double X coordinate in meters
y_m double Y coordinate in meters
z_m double Z coordinate in meters
positionAccuracy_m double Position accuracy in meters

LLA (Latitude, Longitude, Altitude):

Field Type Description
latitude_deg double Latitude in degrees
longitude_deg double Longitude in degrees
height_m double Height above ellipsoid in meters
positionAccuracy_m double Position accuracy in meters

Examples

config.rtk = RtkConfig {
    .mode = ERtkMode::Base,
    .base = BaseConfig {
        .mode = BaseConfig::SurveyIn {
            .minimumObservationTime_s = 60,
            .requiredPositionAccuracy_m = 2.0
        }
    }
};
config.rtk = RtkConfig {
    .mode = ERtkMode::Base,
    .base = BaseConfig {
        .mode = BaseConfig::FixedPosition {
            .position = BaseConfig::FixedPosition::Lla {
                .latitude_deg = 52.2297,
                .longitude_deg = 21.0122,
                .height_m = 120.0
            },
            .positionAccuracy_m = 0.01
        }
    }
};
config['rtk'] = {
    'mode': gnsshat.RtkMode.BASE,
    'base': {
        'base_mode': gnsshat.BaseMode.SURVEY_IN,
        'survey_in': {
            'minimum_observation_time_s': 60,
            'required_position_accuracy_m': 2.0
        }
    }
}
config['rtk'] = {
    'mode': gnsshat.RtkMode.ROVER
}

See RTK Feature for runtime correction flow and NTRIP usage.