示例#1
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
示例#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
示例#3
0
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
示例#4
0
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()