@@ -48,12 +48,12 @@ def resolve_ms_integers(obs_pr, pred_pr, prn_ref, disp = True):
48
48
print "Resolving millisecond integers:"
49
49
50
50
for prn , pr in obs_pr .iteritems ():
51
- pr_int_est = (pred_pr [prn ] - pr ) / gps .code_wavelength
51
+ pr_int_est = (pred_pr [prn ] - pr ) / gps .l1ca_code_wavelength
52
52
pr_int = round (pr_int_est )
53
53
if abs (pr_int - pr_int_est ) > 0.15 :
54
54
logger .warn ("Pseudorange integer for PRN %2d is %.4f" % (
55
55
prn + 1 , pr_int_est ) + ", which isn't very close to an integer." )
56
- pr += pr_int * gps .code_wavelength
56
+ pr += pr_int * gps .l1ca_code_wavelength
57
57
obs_pr [prn ] = pr
58
58
if disp :
59
59
print ("PRN %2d: pred pseudorange = %9.3f km, obs = %9.3f, " + \
@@ -78,9 +78,9 @@ def fill_remainder(n_ms):
78
78
return [k for k ,v in itertools .groupby (sorted (hs ))]
79
79
80
80
def long_correlation (signal , ca_code , code_phase , doppler , settings , plot = False , coherent = 0 , nav_bit_hypoth = None ):
81
- from swiftnav .correlate import track_correlate_
81
+ from swiftnav .correlate import track_correlate
82
82
code_freq_shift = (doppler / gps .l1 ) * gps .chip_rate
83
- samples_per_chip = settings .samplingFreq / (gps .chip_rate + code_freq_shift )
83
+ samples_per_chip = settings .freq_profile [ 'sampling_freq' ] / (gps .chip_rate + code_freq_shift )
84
84
samples_per_code = samples_per_chip * gps .chips_per_code
85
85
numSamplesToSkip = round (code_phase * samples_per_chip )
86
86
remCodePhase = (1.0 * numSamplesToSkip / samples_per_chip ) - code_phase
@@ -94,12 +94,14 @@ def long_correlation(signal, ca_code, code_phase, doppler, settings, plot=False,
94
94
costas_q = 0.0
95
95
for loopCnt in range (n_ms ):
96
96
rawSignal = signal [numSamplesToSkip :]#[:blksize_]
97
- E , P , L , blksize , remCodePhase , remCarrPhase = track_correlate_ (
97
+ E , P , L , blksize , remCodePhase , remCarrPhase = track_correlate (
98
98
rawSignal ,
99
+ 1023 , # Chips to correlate
99
100
code_freq_shift + gps .chip_rate ,
100
101
remCodePhase ,
101
- doppler + settings .IF ,
102
- remCarrPhase , ca_code , settings .samplingFreq )
102
+ doppler + settings .freq_profile ['GPS_L1_IF' ],
103
+ remCarrPhase , ca_code , settings .freq_profile ['sampling_freq' ],
104
+ gps .L1CA )
103
105
104
106
I_E = E .real
105
107
Q_E = E .imag
@@ -149,12 +151,10 @@ def refine_ob(signal, acq_result, settings, print_results = True, return_sweeps
149
151
# TODO: Fit code phase results for better resolution
150
152
from peregrine .include .generateCAcode import caCodes
151
153
from scipy import optimize as opt
152
- samples_per_chip = settings .samplingFreq / gps .chip_rate
154
+ samples_per_chip = settings .freq_profile [ 'sampling_freq' ] / gps .chip_rate
153
155
samples_per_code = samples_per_chip * gps .chips_per_code
154
156
# Get a vector with the C/A code sampled 1x/chip
155
157
ca_code = caCodes [acq_result .prn ]
156
- # Add wrapping to either end to be able to do early/late
157
- ca_code = np .concatenate (([ca_code [1022 ]],ca_code ,[ca_code [0 ]]))
158
158
159
159
dopp_offset_search = 100 # Hz away from acquisition
160
160
code_offsets = np .arange (- 1 ,1 , 1.0 / 16 / 2 )
@@ -296,14 +296,14 @@ def refine_obs(signal, acq_results, settings,
296
296
297
297
return obs_cp , obs_dopp
298
298
299
- def predict_observables (prior_traj , prior_datetime , prns , ephem , window ):
299
+ def predict_observables (prior_traj , prior_datetime , prns , ephem , window , settings ):
300
300
from datetime import timedelta
301
301
from numpy .linalg import norm
302
302
from numpy import dot
303
303
"""Given a list of PRNs, a set of ephemerides, a nominal capture time (datetime) and a
304
304
and a time window (seconds), compute the ranges and dopplers for
305
305
each satellite at 1ms shifts."""
306
- timeres = 50 * gps .code_period # Might be important to keep this an integer number of code periods
306
+ timeres = 50 * settings .code_period # Might be important to keep this an integer number of code periods
307
307
t0 = prior_datetime - timedelta (seconds = window / 2.0 )
308
308
ranges = {}
309
309
dopplers = {}
@@ -360,11 +360,11 @@ def minimize_doppler_error(obs_dopp, times, pred_dopp, plot = False):
360
360
def plot_expected_vs_measured (acqed_prns , prn_ref ,
361
361
obs_pr , obs_dopp ,
362
362
prior_traj , t_better ,
363
- ephem ):
363
+ ephem , settings ):
364
364
import matplotlib .pyplot as plt
365
365
366
366
# Compute predicted observables around this new estimate of capture time
367
- pred_ranges , pred_dopplers , times = predict_observables (prior_traj , t_better , acqed_prns , ephem , 20 )
367
+ pred_ranges , pred_dopplers , times = predict_observables (prior_traj , t_better , acqed_prns , ephem , 20 , settings )
368
368
pred_pr = pseudoranges_from_ranges (pred_ranges , prn_ref )
369
369
370
370
ax = plt .figure (figsize = (12 ,6 )).gca ()
@@ -660,7 +660,7 @@ def postprocess_short_samples(signal, prior_trajectory, t_prior, settings,
660
660
# Improve the time part of the prior estimate by minimizing doppler residuals
661
661
pred_ranges , pred_dopplers , times = predict_observables (prior_traj , t_prior ,
662
662
acqed_prns , ephem ,
663
- 30 )
663
+ 30 , settings )
664
664
i , t_better = minimize_doppler_error (obs_dopp , times , pred_dopplers ,
665
665
plot = plot )
666
666
@@ -671,7 +671,7 @@ def postprocess_short_samples(signal, prior_trajectory, t_prior, settings,
671
671
print "By minimizing doppler residuals, adjusted the prior time and position by %.6s seconds, %.3f km" % (
672
672
delta_t , delta_r / 1e3 )
673
673
pred_ranges , pred_dopplers , times = predict_observables (
674
- prior_traj , t_better , acqed_prns , ephem , 1e-9 )
674
+ prior_traj , t_better , acqed_prns , ephem , 1e-9 , settings )
675
675
676
676
pred_pr_t_better = {prn : pred_ranges [prn ][0 ] for prn in acqed_prns }
677
677
@@ -681,7 +681,7 @@ def postprocess_short_samples(signal, prior_trajectory, t_prior, settings,
681
681
682
682
if plot :
683
683
plot_expected_vs_measured (acqed_prns , prn_ref , obs_pr , obs_dopp ,
684
- prior_traj , t_better , ephem )
684
+ prior_traj , t_better , ephem , settings )
685
685
686
686
# Perform PVT navigation solution
687
687
r_sol , t_sol , los , tot , residuals = pt_solve (r_better , t_better , obs_pr ,
0 commit comments