mirror of
https://github.com/gnss-sdr/gnss-sdr
synced 2025-02-09 07:30:08 +00:00
![Javier Arribas](/assets/img/avatar_default.png)
- The executable file and the default configuration file is now changed from "./install/mercurio" and "./conf/mercurio.conf" to "./install/gnss-sdr" and "./conf/gnss-sdr.conf", respectively. - Configuration file structure changed to define in a single entry the internal sampling frequency (after the signal conditioner). NOTICE that this change affects the all the adapters (acquisition, tracking, telemetry_decoder, observables, and PVT). All the adapters are now modified to work with this feature. - Moved several in-line GPS L1 CA parameters (a.k.a magic numbers..) to ./src/core/system_parameters/GPS_L1_CA.h definition file. - Tracking blocks now uses DOUBLE values in their outputs. - Observables and PVT now are separated. PVT and their associated libraries are moved to ./src/algorithms/PVT - Temporarily disabled the RINEX output (I am working on that!) - GNSS-SDR screen output now gives extended debug information of the receiver status and events. In the future, this output will be redirected to a log file. - Bug fixes: - FILE_SIGNAL_SOURCE now works correctly when the user configures GNSS-SDR to process the entire file. - GPS_L1_CA_DLL_PLL now computes correctly the PRN start values. - GPS_L1_CA_DLL_FLL_PLL now computes correctly the PRN start values. - Several modifications in GPS_L1_CA_Telemetry_Decoder, GPS_L1_CA_Observables, and GPS_L1_CA_PVT modules to fix the GPS position computation. - New features - Tracking blocks perform a signal integrity check against NaN outliers before the correlation process. - Tracking and PVT binary dump options are now documented and we provide MATLAB libraries and sample files to read it. Available in ./utils/matlab" and "./utils/matlab/libs" - Observables output rate can be configured. This option enables the GPS L1 CA PVT computation at a maximum rate of 1ms. - GPS_L1_CA_PVT now can perform a moving average Latitude, Longitude, and Altitude output for each of the Observables output. It is configurable using the configuration file. - Added Google Earth compatible Keyhole Markup Language (KML) output writer class (./src/algorithms/PVT/libs/kml_printer.h and ./src/algorithms/PVT/libs/kml_printer.cc ). You can see the receiver position directly using Google Earth. - We provide a master configuration file which includes an in-line documentation with all the new (and old) options. It can be found in ./conf/master.conf git-svn-id: https://svn.code.sf.net/p/gnss-sdr/code/trunk@84 64b25241-fba3-4117-9849-534c7e92360d
99 lines
2.8 KiB
Matlab
99 lines
2.8 KiB
Matlab
function ddr = tropo(sinel, hsta, p, tkel, hum, hp, htkel, hhum)
|
|
%TROPO Calculation of tropospheric correction.
|
|
% The range correction ddr in m is to be subtracted from
|
|
% pseudo-ranges and carrier phases
|
|
%
|
|
%ddr = tropo(sinel, hsta, p, tkel, hum, hp, htkel, hhum);
|
|
%
|
|
% Inputs:
|
|
% sinel - sin of elevation angle of satellite
|
|
% hsta - height of station in km
|
|
% p - atmospheric pressure in mb at height hp
|
|
% tkel - surface temperature in degrees Kelvin at height htkel
|
|
% hum - humidity in % at height hhum
|
|
% hp - height of pressure measurement in km
|
|
% htkel - height of temperature measurement in km
|
|
% hhum - height of humidity measurement in km
|
|
%
|
|
% Outputs:
|
|
% ddr - range correction (meters)
|
|
%
|
|
% Reference
|
|
% Goad, C.C. & Goodman, L. (1974) A Modified Tropospheric
|
|
% Refraction Correction Model. Paper presented at the
|
|
% American Geophysical Union Annual Fall Meeting, San
|
|
% Francisco, December 12-17
|
|
|
|
% A Matlab reimplementation of a C code from driver.
|
|
% Kai Borre 06-28-95
|
|
%
|
|
% CVS record:
|
|
% $Id: tropo.m,v 1.1.1.1.2.4 2006/08/22 13:46:00 dpl Exp $
|
|
%==========================================================================
|
|
|
|
a_e = 6378.137; % semi-major axis of earth ellipsoid
|
|
b0 = 7.839257e-5;
|
|
tlapse = -6.5;
|
|
tkhum = tkel + tlapse*(hhum-htkel);
|
|
atkel = 7.5*(tkhum-273.15) / (237.3+tkhum-273.15);
|
|
e0 = 0.0611 * hum * 10^atkel;
|
|
tksea = tkel - tlapse*htkel;
|
|
em = -978.77 / (2.8704e6*tlapse*1.0e-5);
|
|
tkelh = tksea + tlapse*hhum;
|
|
e0sea = e0 * (tksea/tkelh)^(4*em);
|
|
tkelp = tksea + tlapse*hp;
|
|
psea = p * (tksea/tkelp)^em;
|
|
|
|
if sinel < 0
|
|
sinel = 0;
|
|
end
|
|
|
|
tropo = 0;
|
|
done = 'FALSE';
|
|
refsea = 77.624e-6 / tksea;
|
|
htop = 1.1385e-5 / refsea;
|
|
refsea = refsea * psea;
|
|
ref = refsea * ((htop-hsta)/htop)^4;
|
|
|
|
while 1
|
|
rtop = (a_e+htop)^2 - (a_e+hsta)^2*(1-sinel^2);
|
|
|
|
% check to see if geometry is crazy
|
|
if rtop < 0
|
|
rtop = 0;
|
|
end
|
|
|
|
rtop = sqrt(rtop) - (a_e+hsta)*sinel;
|
|
a = -sinel/(htop-hsta);
|
|
b = -b0*(1-sinel^2) / (htop-hsta);
|
|
rn = zeros(8,1);
|
|
|
|
for i = 1:8
|
|
rn(i) = rtop^(i+1);
|
|
end
|
|
|
|
alpha = [2*a, 2*a^2+4*b/3, a*(a^2+3*b),...
|
|
a^4/5+2.4*a^2*b+1.2*b^2, 2*a*b*(a^2+3*b)/3,...
|
|
b^2*(6*a^2+4*b)*1.428571e-1, 0, 0];
|
|
|
|
if b^2 > 1.0e-35
|
|
alpha(7) = a*b^3/2;
|
|
alpha(8) = b^4/9;
|
|
end
|
|
|
|
dr = rtop;
|
|
dr = dr + alpha*rn;
|
|
tropo = tropo + dr*ref*1000;
|
|
|
|
if done == 'TRUE '
|
|
ddr = tropo;
|
|
break;
|
|
end
|
|
|
|
done = 'TRUE ';
|
|
refsea = (371900.0e-6/tksea-12.92e-6)/tksea;
|
|
htop = 1.1385e-5 * (1255/tksea+0.05)/refsea;
|
|
ref = refsea * e0sea * ((htop-hsta)/htop)^4;
|
|
end;
|
|
%%%%%%%%% end tropo.m %%%%%%%%%%%%%%%%%%%
|