In [1]:
%matplotlib inline
%load_ext autoreload
%autoreload 2
In [20]:
import os
import numpy as np
import peregrine
import peregrine.acquisition as acq
import peregrine.analysis.samples
import peregrine.analysis.acquisition
import peregrine.include.generateCAcode as CAcode
import peregrine.samples
import peregrine.tracking as track
import peregrine.initSettings
import peregrine.ephemeris as eph
import peregrine.gps_constants as gps
In [69]:
# Load the sample file (available at http://downloads.swiftnav.com/baseband_samples/)
s = peregrine.samples.load_samples("/tmp/20150616T013307Z.1bit", file_format='1bit',
num_samples=-1, num_skip=0)
# Specify the sampling and intermediate frequencies
fs = 16.368e6; fi = fs / 4
# Plot histogram and power spectral density (note: this only analyzes the first 2M samples)
peregrine.analysis.samples.summary(s, sampling_freq = fs)
In [43]:
prns_search = range(51)
A = peregrine.acquisition.Acquisition(s, fs, fi, (gps.chips_per_code * fs / gps.chip_rate),
n_codes_integrate=4)
acq = A.acquisition(prns=prns_search, show_progress=True, doppler_search=7000, threshold=24)
acqed = [a for a in acq if a.status=='A']
peregrine.analysis.acquisition.snr_bars(acq)
peregrine.analysis.acquisition.acq_table(acq)
In [56]:
prns_to_track = [2]#, 5, 10, 25, 29]
coherent_len = 1; s2bw = 20
ms_to_track = None #100 * 1000
chans = [a for a in acqed if a.prn+1 in prns_to_track]
track_res={tr.prn: tr for tr in peregrine.tracking.track(s, chans,
ms_to_track=ms_to_track,
sampling_freq=fs,
stage1_loop_filter_params=(
(1, 0.7, 1), # Code loop parameters
(15, 0.7, 1), # Carrier loop parameters
1e3, # Loop frequency
5, # Carrier loop aiding_igain
1540),
stage2_coherent_ms=coherent_len,
stage2_loop_filter_params=(
(1, 0.7, 1), # Code loop parameters
(s2bw, 0.7, 1), # Carrier loop parameters
1e3/coherent_len,# Loop frequency
0, # Carrier loop aiding_igain
1540),
multi=False)} #(prns_to_track > 1))}
In [64]:
# Debugging: need to fix this in swiftnav bindings, and then update in tracking.py if needed
cn0_est = swiftnav.track.CN0Estimator(bw=1e3,
cn0_0=22,
cutoff_freq=10,
loop_freq=1e3)
In [66]:
# Debugging: need to fix this in swiftnav bindings, and then update in tracking.py if needed
stage1_loop_filter_params=(
(1, 0.7, 1), # Code loop parameters
(15, 0.7, 1), # Carrier loop parameters
1e3, # Loop frequency
5, # Carrier loop aiding_igain
1540)
loop_filter_class=swiftnav.track.AidedTrackingLoop
code_freq_init = 1023
carr_freq_init = 0
loop_filter = loop_filter_class(
loop_freq = stage1_loop_filter_params[2], \
code_freq = code_freq_init, \
code_bw = stage1_loop_filter_params[0][0], \
code_zeta = stage1_loop_filter_params[0][1], \
code_k = stage1_loop_filter_params[0][2], \
carr_to_code = stage1_loop_filter_params[4], \
carr_freq = carr_freq_init, \
carr_bw = stage1_loop_filter_params[1][0], \
carr_zeta = stage1_loop_filter_params[1][1], \
carr_k = stage1_loop_filter_params[1][2], \
carr_freq_b1 = stage1_loop_filter_params[3], \
)
In [ ]: