RTK Base & Rover
Complete RTK setup with NTRIP client for centimeter-level positioning.
Source: examples/CPP/RTK/, examples/Python/rtk_base.py, examples/Python/rtk_rover.py
NoteHAT Compatibility — RTK is available only on the L1/L5 RTK HAT (NEO-F9P).
from jimmypaputto import gnsshat
from pygnssutils import GNSSNTRIPClient
config = {
'measurement_rate_hz': 1,
'dynamic_model': gnsshat.DynamicModel.STATIONARY,
'timepulse_pin_config': {
'active': True,
'fixed_pulse': {'frequency': 1, 'pulse_width': 0.1},
'polarity': gnsshat.TimepulsePolarity.RISING_EDGE
},
'rtk': {'mode': gnsshat.RtkMode.ROVER}
}
hat = gnsshat.GnssHat()
hat.start(config)
# NTRIP client feeds corrections (see full example for setup)
hat.rtk_apply_corrections(corrections)
nav = hat.wait_and_get_fresh_navigation()
# nav.pvt.fix_quality == FixQuality.FIXED_RTK → ~1-2 cm accuracy
// Base station
config.rtk = RtkConfig {
.mode = ERtkMode::Base,
.base = BaseConfig {
.mode = BaseConfig::SurveyIn {
.minimumObservationTime_s = 60,
.requiredPositionAccuracy_m = 2.0
}
}
};
hat_base->start(config);
auto corrections = hat_base->rtk()->base()->getTinyCorrections();
// Rover
config.rtk = RtkConfig { .mode = ERtkMode::Rover };
hat_rover->start(config);
hat_rover->rtk()->rover()->applyCorrections(corrections);
pip install pygnssutils
python3 examples/Python/rtk_rover.py
- GPS 2D/3D — standard fix (~2–5 m)
- Float RTK — corrections applied, ambiguities resolving (~0.2–1 m)
- Fixed RTK — full centimeter accuracy (~1–2 cm)
See RTK Feature and RTK Config.