-
public class PseudorangeCalculatorPseudorange Calculator
Calculates pseudoranges from raw GNSS measurements. Based on Google's GPS Tools best practices and ICD-GPS-200 specification.
Pseudorange is the distance from receiver to satellite, calculated from:
Receiver time (from GnssClock)
Satellite transmit time (from GnssMeasurement)
Speed of light
Includes:
Week rollover correction
Clock bias handling
State filtering for quality control
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description public final classPseudorangeCalculator.MeasurementQualityData class for measurement quality metrics.
-
Field Summary
Fields Modifier and Type Field Description public final static PseudorangeCalculatorINSTANCE
-
Method Summary
Modifier and Type Method Description final Pair<Double, Double>calculatePseudorange(GnssMeasurement measurement, GnssClock clock)Calculate pseudorange from GNSS measurement and clock. final BooleanisMeasurementValid(GnssMeasurement measurement)Check if a measurement is valid for pseudorange calculation. final DoublecalculateGpsTime(GnssMeasurement measurement, GnssClock clock)Calculate GPS time from measurement and clock. final Pair<Integer, Double>calculateGpsWeekAndTow(GnssClock clock)Calculate GPS week and time-of-week from clock. final Pair<Double, Double>calculatePseudorangeRate(GnssMeasurement measurement)Calculate pseudorange rate (Doppler-derived velocity). final DoublecalculateCarrierPhase(GnssMeasurement measurement)Calculate carrier phase if available. final Pair<Double, Double>calculateAccumulatedDeltaRange(GnssMeasurement measurement)Calculate accumulated delta range (integrated carrier phase). final BooleanisAccumulatedDeltaRangeValid(GnssMeasurement measurement)Check if accumulated delta range state is valid. final DoublecalculateGeometricRange(Vector3D satPos, Vector3D userPos)Calculate geometric range from satellite position to user position. final DoublecalculatePseudorangeResidual(Double measuredPseudorange, Double geometricRange, Double receiverClockBias, Double satelliteClockBias)Calculate pseudorange residual. final PseudorangeCalculator.MeasurementQualitygetMeasurementQuality(GnssMeasurement measurement)Get quality metrics for a measurement. -
-
Method Detail
-
calculatePseudorange
@RequiresApi(value = 24) final Pair<Double, Double> calculatePseudorange(GnssMeasurement measurement, GnssClock clock)
Calculate pseudorange from GNSS measurement and clock.
- Parameters:
measurement- GnssMeasurement from Android APIclock- GnssClock from Android API
-
isMeasurementValid
@RequiresApi(value = 24) final Boolean isMeasurementValid(GnssMeasurement measurement)
Check if a measurement is valid for pseudorange calculation.
Requirements:
Code lock acquired
Time reference decoded (TOW for GPS/Galileo/BeiDou, TOD for GLONASS, or known from previous fix)
Sufficient signal strength (CN0)
-
calculateGpsTime
@RequiresApi(value = 24) final Double calculateGpsTime(GnssMeasurement measurement, GnssClock clock)
Calculate GPS time from measurement and clock.
- Parameters:
measurement- GnssMeasurementclock- GnssClock
-
calculateGpsWeekAndTow
@RequiresApi(value = 24) final Pair<Integer, Double> calculateGpsWeekAndTow(GnssClock clock)
Calculate GPS week and time-of-week from clock.
- Parameters:
clock- GnssClock
-
calculatePseudorangeRate
@RequiresApi(value = 24) final Pair<Double, Double> calculatePseudorangeRate(GnssMeasurement measurement)
Calculate pseudorange rate (Doppler-derived velocity). This is directly available from GnssMeasurement.
- Parameters:
measurement- GnssMeasurement
-
calculateCarrierPhase
@RequiresApi(value = 24) final Double calculateCarrierPhase(GnssMeasurement measurement)
Calculate carrier phase if available. Carrier phase is more accurate than code phase for positioning.
- Parameters:
measurement- GnssMeasurement
-
calculateAccumulatedDeltaRange
@RequiresApi(value = 24) final Pair<Double, Double> calculateAccumulatedDeltaRange(GnssMeasurement measurement)
Calculate accumulated delta range (integrated carrier phase). Useful for precise positioning.
- Parameters:
measurement- GnssMeasurement
-
isAccumulatedDeltaRangeValid
@RequiresApi(value = 24) final Boolean isAccumulatedDeltaRangeValid(GnssMeasurement measurement)
Check if accumulated delta range state is valid. Valid ADR can be used for carrier phase positioning.
-
calculateGeometricRange
final Double calculateGeometricRange(Vector3D satPos, Vector3D userPos)
Calculate geometric range from satellite position to user position. Used for residual calculation and quality control.
- Parameters:
satPos- Satellite position ECEF (meters)userPos- User position ECEF (meters)
-
calculatePseudorangeResidual
final Double calculatePseudorangeResidual(Double measuredPseudorange, Double geometricRange, Double receiverClockBias, Double satelliteClockBias)
Calculate pseudorange residual. Residual = measured pseudorange - (geometric range + clock bias + satellite clock error)
- Parameters:
measuredPseudorange- Measured pseudorange in metersgeometricRange- Calculated geometric range in metersreceiverClockBias- Receiver clock bias in meterssatelliteClockBias- Satellite clock bias in seconds
-
getMeasurementQuality
@RequiresApi(value = 24) final PseudorangeCalculator.MeasurementQuality getMeasurementQuality(GnssMeasurement measurement)
Get quality metrics for a measurement.
-
-
-
-