def test_Helper_zeroDoppler(): ''' Helper method test ''' doppler = zeroDoppler(1000., 77., 1e9) assert isinstance(doppler, DopplerPoly) assert isinstance(doppler, DopplerBase) assert doppler.distance0_m == 1000. assert doppler.tec_epm2 == 77. assert doppler.distanceCoeffs is None assert doppler.speedPoly is None
def __init__(self, svName): ''' Constructor. Parameters ---------- svName : string Satellite name ''' super(Satellite, self).__init__() self.svName = svName self.doppler = zeroDoppler(0., 0., 1.) self.amplitude = AmplitudePoly(AmplitudeBase.UNITS_AMPLITUDE, ())
def doUpdate(self, sv, parser, namespace, values, option_string): if isinstance(sv, GPSSatellite): if sv.l1caEnabled: signal = signals.GPS.L1CA elif sv.l2cEnabled: signal = signals.GPS.L2C else: raise ValueError("Signal band must be specified before doppler") elif isinstance(sv, GLOSatellite): if sv.isL1Enabled(): frequency_hz = signals.GLONASS.L1S[sv.prn].CENTER_FREQUENCY_HZ elif sv.isL2Enabled(): frequency_hz = signals.GLONASS.L2S[sv.prn].CENTER_FREQUENCY_HZ else: raise ValueError("Signal band must be specified before doppler") else: raise ValueError("Signal band must be specified before doppler") frequency_hz = signal.CENTER_FREQUENCY_HZ # Select distance: either from a distance parameter or from delays if namespace.symbol_delay is not None or namespace.chip_delay is not None: distance = computeDistanceDelay(namespace.symbol_delay, namespace.chip_delay, signal) else: distance = namespace.distance if namespace.distance is not None else 0. if namespace.doppler_type == "zero": doppler = zeroDoppler(distance, namespace.tec, frequency_hz) elif namespace.doppler_type == "const": doppler = constDoppler(distance, namespace.tec, frequency_hz, namespace.doppler_value) elif namespace.doppler_type == "linear": doppler = linearDoppler(distance, namespace.tec, frequency_hz, namespace.doppler_value, namespace.doppler_speed) elif namespace.doppler_type == "sine": doppler = sineDoppler(distance, namespace.tec, frequency_hz, namespace.doppler_value, namespace.doppler_amplitude, namespace.doppler_period) else: raise ValueError("Unsupported doppler type") sv.doppler = doppler
def doUpdate(self, sv, parser, namespace, values, option_string): if isinstance(sv, GPSSatellite): if sv.l1caEnabled: signal = signals.GPS.L1CA elif sv.l2cEnabled: signal = signals.GPS.L2C else: raise ValueError( "Signal band must be specified before doppler") elif isinstance(sv, GLOSatellite): if sv.isL1Enabled(): frequency_hz = signals.GLONASS.L1S[ sv.prn].CENTER_FREQUENCY_HZ elif sv.isL2Enabled(): frequency_hz = signals.GLONASS.L2S[ sv.prn].CENTER_FREQUENCY_HZ else: raise ValueError( "Signal band must be specified before doppler") else: raise ValueError( "Signal band must be specified before doppler") frequency_hz = signal.CENTER_FREQUENCY_HZ # Select distance: either from a distance parameter or from delays if namespace.symbol_delay is not None or namespace.chip_delay is not None: distance = computeDistanceDelay(namespace.symbol_delay, namespace.chip_delay, signal) else: distance = namespace.distance if namespace.distance is not None else 0. if namespace.doppler_type == "zero": doppler = zeroDoppler(distance, namespace.tec, frequency_hz) elif namespace.doppler_type == "const": doppler = constDoppler(distance, namespace.tec, frequency_hz, namespace.doppler_value) elif namespace.doppler_type == "linear": doppler = linearDoppler(distance, namespace.tec, frequency_hz, namespace.doppler_value, namespace.doppler_speed) elif namespace.doppler_type == "sine": doppler = sineDoppler(distance, namespace.tec, frequency_hz, namespace.doppler_value, namespace.doppler_amplitude, namespace.doppler_period) else: raise ValueError("Unsupported doppler type") sv.doppler = doppler
def test_DopplerZero_batch(): ''' Verifies execution of the batch computation with zero doppler. ''' doppler = zeroDoppler(1000., 50., GPS.L1CA.CENTER_FREQUENCY_HZ) userTimeAll_s = numpy.linspace(0., NormalRateConfig.SAMPLE_BATCH_SIZE / NormalRateConfig.SAMPLE_RATE_HZ, NormalRateConfig.SAMPLE_BATCH_SIZE, endpoint=False) amplitude = AmplitudePoly(AmplitudeBase.UNITS_AMPLITUDE, ()) noiseParams = NoiseParameters(GPS.L1CA.CENTER_FREQUENCY_HZ, 0.) message = Message(1) code = PrnCode(1) res = doppler.computeBatch(userTimeAll_s, amplitude, noiseParams, GPS.L1CA, NormalRateConfig.GPS.L1.INTERMEDIATE_FREQUENCY_HZ, message, code, NormalRateConfig, True) signal1, doppler1 = res doppler.setCodeDopplerIgnored(True) res = doppler.computeBatch(userTimeAll_s, amplitude, noiseParams, GPS.L1CA, NormalRateConfig.GPS.L1.INTERMEDIATE_FREQUENCY_HZ, message, code, NormalRateConfig, True) signal2, doppler2 = res assert (signal1 == signal2).all() assert (doppler1 == doppler2).all()