Esempio n. 1
0
def gThanMask(elevationDegrees):
  settings = initSettings()
  aboveMaskIndices = []
  for i in range(len(elevationDegrees)):
    if elevationDegrees[i] > settings.elevationMask:
      aboveMaskIndices.append(i)
  return np.array(aboveMaskIndices)
Esempio n. 2
0
def main():
  default_logging_config()

  # Initialize constants, settings
  settings = initSettings()

  parser = argparse.ArgumentParser()
  parser.add_argument("file",
                      help="the sample data file to process")
  parser.add_argument("-a", "--skip-acquisition",
                      help="use previously saved acquisition results",
                      action="store_true")
  parser.add_argument("-t", "--skip-tracking",
                      help="use previously saved tracking results",
                      action="store_true")
  parser.add_argument("-n", "--skip-navigation",
                      help="use previously saved navigation results",
                      action="store_true")
  args = parser.parse_args()
  settings.fileName = args.file

  samplesPerCode = int(round(settings.samplingFreq /
                             (settings.codeFreqBasis / settings.codeLength)))

  # Do acquisition
  acq_results_file = args.file + ".acq_results"
  if args.skip_acquisition:
    logging.info("Skipping acquisition, loading saved acquisition results.")
    try:
      acq_results = load_acq_results(acq_results_file)
    except IOError:
      logging.critical("Couldn't open acquisition results file '%s'.",
                       acq_results_file)
      sys.exit(1)
  else:
    # Get 11ms of acquisition samples for fine frequency estimation
    acq_samples = load_samples(args.file, 11*samplesPerCode,
                               settings.skipNumberOfBytes)
    acq = Acquisition(acq_samples, settings.samplingFreq, settings.IF,
                      samplesPerCode)
    acq_results = acq.acquisition()

    try:
      save_acq_results(acq_results_file, acq_results)
      logging.debug("Saving acquisition results as '%s'" % acq_results_file)
    except IOError:
      logging.error("Couldn't save acquisition results file '%s'.",
                    acq_results_file)

  # Filter out non-acquired satellites.
  acq_results = [ar for ar in acq_results if ar.status == 'A']

  if len(acq_results) == 0:
    logging.critical("No satellites acquired!")
    sys.exit(1)

  acq_results.sort(key=attrgetter('snr'), reverse=True)

  # Track the acquired satellites
  track_results_file = args.file + ".track_results"
  if args.skip_tracking:
    logging.info("Skipping tracking, loading saved tracking results.")
    try:
      with open(track_results_file, 'rb') as f:
        track_results = pickle.load(f)
    except IOError:
      logging.critical("Couldn't open tracking results file '%s'.",
                       track_results_file)
      sys.exit(1)
  else:
    signal = load_samples(args.file,
                          int(settings.samplingFreq*1e-3*37100))
    track_results = track(signal, acq_results, settings)
    try:
      with open(track_results_file, 'wb') as f:
        pickle.dump(track_results, f)
      logging.debug("Saving tracking results as '%s'" % track_results_file)
    except IOError:
      logging.error("Couldn't save tracking results file '%s'.",
                    track_results_file)

  # Do navigation
  if not args.skip_navigation:
    navSolutions = navigation(track_results, settings)
Esempio n. 3
0
            (0,0.5,0),\
            (0,0.5,0.5),\
            (0.5,0,0),\
            (0.5,0,0.5),\
            (0.5,0.5,0),\
            (0.5,0.5,0.5)]
  pylab.title("Prompt correlation magnitude of each channel")
  pylab.xlabel("Time")
  pylab.hold(True)

  for channelNr in range(len(trackResults)):
    pylab.plot(x_pts,\
             np.sqrt(np.square(trackResults[channelNr].I_P[0:len(x_pts)])\
               + np.square(trackResults[channelNr].Q_P[0:len(x_pts)])),\
             color=colors[channelNr], label=("PRN %2d" % (trackResults[channelNr].PRN)))
  pylab.legend()
  pylab.hold(False)

  return fig

if __name__ == "__main__":
  settings = initSettings.initSettings()
  parser = argparse.ArgumentParser()
  parser.add_argument("file", help="the tracking results file to analyse")
  args = parser.parse_args()
  settings.fileName = args.file
  with open(settings.fileName, "rb") as f:
    trackResults, channel = pickle.load(f)
    fig = plotTrackingHigh(trackResults, settings)
  pylab.show()
Esempio n. 4
0
#Add ./geofunctions and ./include to search directory for import calls
sys.path.append('./include/')
sys.path.append('./geoFunctions/')
print '\nWelcome to:   softGNSS'
print 'An open source GNSS SDR software project initiated by:'
print '              Danish GPS Center/Aalborg University'
print 'The code was improved by GNSS Laboratory/University of Colorado'
print 'and converted to Python by Colin Beighley ([email protected]).'
print 'The software receiver softGNSS comes with ABSOLUTELY NO WARRANTY;'
print 'for details please read license details in the file license.txt. This'
print 'is free software  you  are  welcome  to  redistribute  it under'
print 'the terms described in the license.'

#Initialize constants, settings
settings = initSettings()

#Generate plot of raw data
if settings.plotSignal:
    print "Plotting data", settings.fileName
    probeFigure = probeData(settings)
    pylab.draw()

#Do acquisition
#Get 11ms of acquisition samples for fine frequency estimation
samplesPerCode = int(
    round(settings.samplingFreq /
          (settings.codeFreqBasis / settings.codeLength)))
acqSamples = getSamples.int8(settings.fileName, 11 * samplesPerCode,
                             settings.skipNumberOfBytes)
if settings.skipAcquisition:
Esempio n. 5
0
def main():
    default_logging_config()

    # Initialize constants, settings
    settings = initSettings()

    parser = argparse.ArgumentParser()
    parser.add_argument("file", help="the sample data file to process")
    parser.add_argument("-a",
                        "--skip-acquisition",
                        help="use previously saved acquisition results",
                        action="store_true")
    parser.add_argument("-t",
                        "--skip-tracking",
                        help="use previously saved tracking results",
                        action="store_true")
    parser.add_argument("-n",
                        "--skip-navigation",
                        help="use previously saved navigation results",
                        action="store_true")
    args = parser.parse_args()
    settings.fileName = args.file

    samplesPerCode = int(
        round(settings.samplingFreq /
              (settings.codeFreqBasis / settings.codeLength)))

    # Do acquisition
    acq_results_file = args.file + ".acq_results"
    if args.skip_acquisition:
        logging.info(
            "Skipping acquisition, loading saved acquisition results.")
        try:
            acq_results = load_acq_results(acq_results_file)
        except IOError:
            logging.critical("Couldn't open acquisition results file '%s'.",
                             acq_results_file)
            sys.exit(1)
    else:
        # Get 11ms of acquisition samples for fine frequency estimation
        acq_samples = load_samples(args.file, 11 * samplesPerCode,
                                   settings.skipNumberOfBytes)
        acq = Acquisition(acq_samples, settings.samplingFreq, settings.IF,
                          samplesPerCode)
        acq_results = acq.acquisition()

        try:
            save_acq_results(acq_results_file, acq_results)
            logging.debug("Saving acquisition results as '%s'" %
                          acq_results_file)
        except IOError:
            logging.error("Couldn't save acquisition results file '%s'.",
                          acq_results_file)

    # Filter out non-acquired satellites.
    acq_results = [ar for ar in acq_results if ar.status == 'A']

    if len(acq_results) == 0:
        logging.critical("No satellites acquired!")
        sys.exit(1)

    acq_results.sort(key=attrgetter('snr'), reverse=True)

    # Track the acquired satellites
    track_results_file = args.file + ".track_results"
    if args.skip_tracking:
        logging.info("Skipping tracking, loading saved tracking results.")
        try:
            with open(track_results_file, 'rb') as f:
                track_results = cPickle.load(f)
        except IOError:
            logging.critical("Couldn't open tracking results file '%s'.",
                             track_results_file)
            sys.exit(1)
    else:
        signal = load_samples(
            args.file,
            int(settings.samplingFreq * 1e-3 * settings.msToProcess))
        track_results = track(signal, acq_results, settings)
        try:
            with open(track_results_file, 'wb') as f:
                cPickle.dump(track_results,
                             f,
                             protocol=cPickle.HIGHEST_PROTOCOL)
            logging.debug("Saving tracking results as '%s'" %
                          track_results_file)
        except IOError:
            logging.error("Couldn't save tracking results file '%s'.",
                          track_results_file)

    # Do navigation
    nav_results_file = args.file + ".nav_results"
    if not args.skip_navigation:
        nav_solns = navigation(track_results, settings)
        nav_results = []
        for s, t in nav_solns:
            nav_results += [(t, s.pos_llh, s.vel_ned)]
        with open(nav_results_file, 'wb') as f:
            cPickle.dump(nav_results, f, protocol=cPickle.HIGHEST_PROTOCOL)
        logging.debug("Saving navigation results as '%s'" % nav_results_file)
Esempio n. 6
0
def main():
  default_logging_config()

  # Initialize constants, settings
  settings = initSettings()

  parser = argparse.ArgumentParser()
  parser.add_argument("file",
                      help="the sample data file to process")
  parser.add_argument("-a", "--skip-acquisition",
                      help="use previously saved acquisition results",
                      action="store_true")
  parser.add_argument("-t", "--skip-tracking",
                      help="use previously saved tracking results",
                      action="store_true")
  parser.add_argument("-n", "--skip-navigation",
                      help="use previously saved navigation results",
                      action="store_true")
  parser.add_argument("-f", "--file-format", default=defaults.file_format,
                      help="the format of the sample data file "
                      "(e.g. 'piksi', 'int8', '1bit', '1bitrev')")
  args = parser.parse_args()
  settings.fileName = args.file

  samplesPerCode = int(round(settings.samplingFreq /
                             (settings.codeFreqBasis / settings.codeLength)))

  # Do acquisition
  acq_results_file = args.file + ".acq_results"
  if args.skip_acquisition:
    logging.info("Skipping acquisition, loading saved acquisition results.")
    try:
      acq_results = load_acq_results(acq_results_file)
    except IOError:
      logging.critical("Couldn't open acquisition results file '%s'.",
                       acq_results_file)
      sys.exit(1)
  else:
    # Get 11ms of acquisition samples for fine frequency estimation
    acq_samples = load_samples(args.file, 11*samplesPerCode,
                               settings.skipNumberOfBytes,
                               file_format=args.file_format)
    acq = Acquisition(acq_samples)
    acq_results = acq.acquisition()

    try:
      save_acq_results(acq_results_file, acq_results)
      logging.debug("Saving acquisition results as '%s'" % acq_results_file)
    except IOError:
      logging.error("Couldn't save acquisition results file '%s'.",
                    acq_results_file)

  # Filter out non-acquired satellites.
  acq_results = [ar for ar in acq_results if ar.status == 'A']

  if len(acq_results) == 0:
    logging.critical("No satellites acquired!")
    sys.exit(1)

  acq_results.sort(key=attrgetter('snr'), reverse=True)

  # Track the acquired satellites
  track_results_file = args.file + ".track_results"
  if args.skip_tracking:
    logging.info("Skipping tracking, loading saved tracking results.")
    try:
      with open(track_results_file, 'rb') as f:
        track_results = cPickle.load(f)
    except IOError:
      logging.critical("Couldn't open tracking results file '%s'.",
                       track_results_file)
      sys.exit(1)
  else:
    signal = load_samples(args.file,
                          int(settings.samplingFreq*1e-3*(settings.msToProcess+22)),
                          settings.skipNumberOfBytes,
                          file_format=args.file_format)
    track_results = track(signal, acq_results, settings.msToProcess)
    try:
      with open(track_results_file, 'wb') as f:
        cPickle.dump(track_results, f, protocol=cPickle.HIGHEST_PROTOCOL)
      logging.debug("Saving tracking results as '%s'" % track_results_file)
    except IOError:
      logging.error("Couldn't save tracking results file '%s'.",
                    track_results_file)

  # Do navigation
  nav_results_file = args.file + ".nav_results"
  if not args.skip_navigation:
    nav_solns = navigation(track_results, settings)
    nav_results = []
    for s, t in nav_solns:
      nav_results += [(t, s.pos_llh, s.vel_ned)]
    if len(nav_results):
      print "First nav solution: t=%s lat=%.5f lon=%.5f h=%.1f vel_ned=(%.2f, %.2f, %.2f)" % (
        nav_results[0][0],
        np.degrees(nav_results[0][1][0]), np.degrees(nav_results[0][1][1]), nav_results[0][1][2],
        nav_results[0][2][0], nav_results[0][2][1], nav_results[0][2][2])
      with open(nav_results_file, 'wb') as f:
        cPickle.dump(nav_results, f, protocol=cPickle.HIGHEST_PROTOCOL)
      print "and %d more are cPickled in '%s'." % (len(nav_results)-1, nav_results_file)
    else:
      print "No navigation results."