Beispiel #1
0
def test_Helper_sineDoppler():
  '''
  Helper method test
  '''
  doppler = sineDoppler(1000., 77., 1e9, 100., 50., 3.)
  assert isinstance(doppler, DopplerSine)
  assert isinstance(doppler, DopplerBase)
  assert doppler.distance0_m == 1000.
  assert doppler.tec_epm2 == 77.
  assert doppler.period_s == 3.
  assert numpy.abs(doppler.speed0_mps - -scipy.constants.c / 1e7) < EPSILON
  assert numpy.abs(doppler.amplutude_mps - -scipy.constants.c / 2e7) < EPSILON
Beispiel #2
0
    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
Beispiel #3
0
        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
Beispiel #4
0
def test_DopplerSine_computeDopplerShiftHz():
  '''
  Test distance for sine doppler
  '''
  doppler = sineDoppler(1000.,                        # Distance
                        45.,                          # TEC
                        GPS.L1CA.CENTER_FREQUENCY_HZ,  # F
                        100.,                         # Offset Hz
                        50.,                          # Amplitude Hz
                        4.)                           # Period s
  userTimeAll_s = numpy.asarray([0., 1., 2., 3.])
  shift = doppler.computeDopplerShiftHz(userTimeAll_s, GPS.L1CA)

  assert abs(100. - shift[0]) < EPSILON
  assert abs(150. - shift[1]) < EPSILON
  assert abs(100. - shift[2]) < EPSILON
  assert abs(50. - shift[3]) < EPSILON