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)


0%
ETA: --:--:--
PRN  2 SNR 287.38 @ CP  747.3,  -981.60 Hz A
PRN  5 SNR 113.40 @ CP  200.6, +2931.31 Hz A
PRN  6 SNR  28.98 @ CP  999.0, -2856.60 Hz A
PRN 10 SNR  48.24 @ CP  325.9,  -490.81 Hz A
PRN 12 SNR 335.11 @ CP  512.3,  -262.82 Hz A
PRN 24 SNR  30.44 @ CP  759.0, -2886.57 Hz A
PRN 25 SNR 186.86 @ CP  208.3, +2243.54 Hz A
PRN 29 SNR 126.45 @ CP  648.1, +2509.90 Hz A
PRN 46 SNR  72.44 @ CP  523.0,  +273.85 Hz A
PRN 48 SNR  84.74 @ CP  960.8,  +382.31 Hz A
PRN 51 SNR  73.98 @ CP  303.1,  +350.87 Hz A

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))}


Tracking
(CH: -/-)
0%
ETA: --:--:--
---------------------------------------------------------------------------
AttributeError                            Traceback (most recent call last)
<ipython-input-56-6313db0f4618> in <module>()
     21                                         0,               # Carrier loop aiding_igain
     22                                         1540),
---> 23                                      multi=False)} #(prns_to_track > 1))}

/home/henry/swift/peregrine/peregrine/tracking.py in track(samples, channels, ms_to_track, sampling_freq, chipping_rate, IF, show_progress, loop_filter_class, stage1_loop_filter_params, correlator, stage2_coherent_ms, stage2_loop_filter_params, multi)
    282                             show_progress=show_progress, func_progress=show_progress)
    283   else:
--> 284     track_results=map(lambda (n, chan): do_channel(chan, n=n), enumerate(channels))
    285 
    286   if pbar:

/home/henry/swift/peregrine/peregrine/tracking.py in <lambda>((n, chan))
    282                             show_progress=show_progress, func_progress=show_progress)
    283   else:
--> 284     track_results=map(lambda (n, chan): do_channel(chan, n=n), enumerate(channels))
    285 
    286   if pbar:

/home/henry/swift/peregrine/peregrine/tracking.py in do_channel(chan, n, q_progress)
    157                                           cn0_0=cn0_0,
    158                                           cutoff_freq=10,
--> 159                                           loop_freq=1e3)
    160 
    161     # Estimate initial code freq via aiding from acq carrier freq

/home/henry/swift/peregrine/libswiftnav/python/swiftnav/track.so in swiftnav.track.CN0Estimator.__cinit__ (swiftnav/track.c:4891)()

AttributeError: 'dict' object has no attribute 'bw'

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)


---------------------------------------------------------------------------
AttributeError                            Traceback (most recent call last)
<ipython-input-64-bd74cbb90f7e> in <module>()
      3                                           cn0_0=22,
      4                                           cutoff_freq=10,
----> 5                                           loop_freq=1e3)

/home/henry/swift/peregrine/libswiftnav/python/swiftnav/track.so in swiftnav.track.CN0Estimator.__cinit__ (swiftnav/track.c:4891)()

AttributeError: 'dict' object has no attribute 'bw'

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], \
    )


---------------------------------------------------------------------------
ValueError                                Traceback (most recent call last)
<ipython-input-66-8a087ed4ce34> in <module>()
     21     carr_zeta = stage1_loop_filter_params[1][1], \
     22     carr_k = stage1_loop_filter_params[1][2], \
---> 23     carr_freq_b1 = stage1_loop_filter_params[3], \
     24     )

/home/henry/swift/peregrine/libswiftnav/python/swiftnav/track.so in swiftnav.track.AidedTrackingLoop.__cinit__ (swiftnav/track.c:3034)()

/home/henry/swift/peregrine/libswiftnav/python/swiftnav/track.so in FromPyStructUtility.__pyx_convert__from_py_aided_tl_state_t (swiftnav/track.c:8975)()

ValueError: No value specified for struct attribute 'carr_filt'

In [ ]: