def gThanMask(elevationDegrees): settings = initSettings() aboveMaskIndices = [] for i in range(len(elevationDegrees)): if elevationDegrees[i] > settings.elevationMask: aboveMaskIndices.append(i) return np.array(aboveMaskIndices)
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)
(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()
#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:
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)
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."