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_DopplerPoly_computeDopplerShiftHz2(): ''' Test phase shift for first order polynomial doppler ''' doppler = linearDoppler(1000., # Distance 45., # TEC GPS.L1CA.CENTER_FREQUENCY_HZ, # F 1., # constant Hz 1.) # acceleration Hz/s userTimeAll_s = numpy.asarray([0., 1., 2., 3.]) shift = doppler.computeDopplerShiftHz(userTimeAll_s, GPS.L1CA) assert abs(1. - shift[0]) < EPSILON assert abs(2. - shift[1]) < EPSILON assert abs(3. - shift[2]) < EPSILON assert abs(4. - shift[3]) < EPSILON
def test_Helper_linearDoppler(): ''' Helper method test ''' doppler = linearDoppler(1000., 77., 1e9, 100., 100.) assert isinstance(doppler, DopplerPoly) assert isinstance(doppler, DopplerBase) assert doppler.distance0_m == 1000. assert doppler.tec_epm2 == 77. assert len(doppler.distancePoly.coeffs) == 3 assert len(doppler.speedPoly.coeffs) == 2 speed_mps = -scipy.constants.c / 1e7 speedCoeffs = numpy.asarray([speed_mps, speed_mps], dtype=numpy.float) distCoeffs = numpy.asarray([speed_mps / 2, speed_mps, 0.], dtype=numpy.float) assert (numpy.abs(doppler.speedPoly.coeffs - speedCoeffs) < EPSILON).all() assert (numpy.abs(doppler.distancePoly.coeffs - distCoeffs) < EPSILON).all()