TRACK: GPS differential phase kinematic positioning program
For further documentation, see http://geoweb.mit.edu/~tah/track_example
TRACK Version 1.31 GPS Kinematic positioning program
% track -f <command file> -a <ambiguity file> -d <day> -w <week> -s <S01> <S02> … <S10>
where is a required file containing a list of commands
to control the program (see below)
is an optional file containing a modified
set of integer bias parameters and settings (see full
the string in this argument replaces in the command
file lines (e.g., bas10.03o will become bas12220.03o if
the -d 222 option is given.
the string here will replace any strings in the
command file (useful for the nav_file name which could be
a week of concatinated sp3 files.)
, .. are upto 10 strings that can be replaced in the command
file i.e. the string in the command file will be replaced by
the first string, by the second and so on. If one the strings
is called space (all lower case), the corresponding entry will
be replaced by a blank character (This provides a means to un-comment
TRACK COMMAND FILES:
General Rules: All commands start with at least one blank character. A non-blank
in column 1 is treated as a comment.
For some commands, the command name is given followed by lines which contain the
information. This list of values should be terminated with at least one blank line.
Commands can be given in any order with one exception. The OBS_FILE command must be
the first command.
(The @ denotes at least one blank in the lines below).
@ Site RX_file Type
@ Site RX_file Type
Command gives the site 4-char codes and the corresponding rinex file name. The
is set to F for a fixed site, and K for a kinematic site.
bish bisha289.97o F
t39a t391a289.97o K
Gives the name of the SP3 or NAV file with orbits and clock information (e.g., igs SP3 files).
When processing 24-hours of data, SP3 files from the preceeding and postceeding
days should be concatinated together (headers removed at the day boundaries).
nav_file igs09274.sp3 SP3
(GAMIT program doy can be used to get GPS week and day number from calender date).
If NAV is used as the type then a broadcast ephemeris file is used.
The above two commands are the only two strictly needed by track. The remaining
commands are optional (although some are needed to get absolute results).
The MODE command allows the setting of defaults for the type of data being
processed. These setting can then be overwritten if desired by use of the
commands below. Three default setting modes are supported for :
AIR — Assumed to be high-sample rate aircraft. Sets the search_type to
L1+L2, and allows gaps of 4-epochs, and minimum data of 120 epochs
(1 minute for 2Hz data).
SHORT — Short baseline static data (<1 km). Sets search and analysis type to L1+L2 and minimum data of 20 epochs (10 minutes of 30 second sampled data). Data is still processed as kinematic data. LONG — Long baseline static data (>1 km). Sets search and analysis type
to LC and mininum data of 20 epochs. Atmospheric delay estimation
is turned on with 0.1 m apriori sigma, and process noise variance
of 1.d-6 m**2/epoch (~1 mm changes every 30 seconds for 30 second
sampled data which accumulates to +-5 cm in a day). These settings
are the same as atm_stats 0.1 0.001
Gives the apriori coordinates of the sites (based on 4 character name). If this
command is not used, the coordinates from the rinex file are used. (If these are
grossly in error then this can cause problems).
bisa -2411875.6155 -4466436.9286 3850994.9249
t39a -2411530.1132 -4466700.4852 3850905.9740
Allows selection of GNSS to process (needs to have a multi-gnss sp3 file). Any
combination of GPS (G), Glonass (R), Galileo (E) and Beidou (C) can be processed.
At Ver 1.31 there are still issues to resolving inter-system ambiguities.
Set the the XYZ coordintes of the point relative to which NEU offsets are
computed. Default is the coordinates of the first site in the obs_file list.
Sets the time unit for process noise. Choices are epoch (default), seconds, minutes
hour or day. Interval command must be used to specify sampling interval before this
command is used. (Even when the interval is given in the rinex files).
Gives statistics to assign to the kinematic station positions. The
are the three sigmas in XYZ for the initial postion and
are the three sigmas in XYZ for the change in position between
epochs of data. Since the motion of the kinematic sites is modeled as random
walk (RW), the sigma of the change in position grows as the sqrt(number of epochs)
Ver 1.21 and later: RW noise is sigmas (m)/sqrt(time unit) where time_unit command
is used to set time unit.
ALL can be used for the station name and the same statistics will be applied
to all kinematic sites (NOTE: the fixed site do not change position).
all 20 20 20 20 20 20
(20 meters apriori sigmas and changes of 20 meters between epochs).
Feature 1.24: Added POST as entry after the Apriori sigma values, to allow
specification aposteroi sigma for position at the end of the data span.
@ Site Sig XYZ (m/sqrt(t)) Start YY MM DD MN Sec End YY MM DD MN Sec
Allows time dependent process noise to be added the statistics of a site or to
all sites. The noise sigmas are addeded (in a variance sense) to the noise
processes specified in the SITE_STATS command. Note only the random walk process
noise is changed.
@ Site [ or SCALE]
Gives the statistics for the atmospheric delays by site. The values
are the initial sigma in meters, RW changes in meters per epoch and (added
verion 1.2) a dH/dt variance term so that during rapid height changes more
process noise can be added to zenith delay estimate. If SCALE is used instead of the
numeric dH/dt term, then and atmospheric scale factor (proportional to height
difference from the base station (first in obs_file list) is estimated. The output files
contain the estimates of the atmospheric delay that is the scale factor is multiplied
by the height difference to yield the estimate and its uncertainty. When SCALE is
used then an offset in the atmospheric delay should be estimated at the base station
since any delay difference will be zero with the SCALE model if the base and plane
start at the same height. If the plane and base station are very close to each other
at the start of the flight then this offset would probably not be needed. (SCALE added
The process noise variance is
(^2 per epoch where dh/dt is m/s. Typical value is 0.00023
t39a 0.1 0.0003 0.00023
Set the apriori sigma as 10cm and allows the delay to change 0.3 mm every epoch (for
1Hz data, this lead to 18 mm noise in 1hr) and 2.3 mm per epoch when height is changing
at 10 m/s (fast ascent or desent)
Allows adjustment to the apriori atmospheric delay model. Value is added
to the nominal delay. In track Version 1.0, only a single offset applied to
all epochs can be specified. Command is most appropriate for static sites
separated by more than 20 km.
Allows the speficiation of file containing total atmospheric delay estimates
at each site. The file format is the same as that obtained by grep’ing
on ‘ATM_ZEN X’ in the o-file from a gamit run.
Set the used of the GPT temperature pressure model and the GPT dry and wet
mapping functions. Optional relative humity added vers 1.27; default 0.00.
Use 0.50 for GAMIT compatabilty. Default is the older MTT atmospheric model.
@ Command modified Version 1.14
Gives the antenna monument to Antenna Reference Point (ARP) offset in North, East and Up
and name of site antenna (maybe unique name for site to allow mutlipath model
to be used. Antenna name is 20 characters long with spaces allowed. First part
of antenna name should not be all numeric. With Ver 1.26, receiver correlation
type (rcv code) could be included. Values are N,C or P and can found in the
rcvant.dat file by grep’ing on the receeiver name,
The antenna name should appear in the antmod_file files.
t39a .0000 .0000 0.0000 AOAD/M_B NONE C
C here denotes a cross-correlating receiver type.
Specifies the type of data-code-bias (DCB) correction needed for the receiver.
Code specifies the type of L1 and L2 ranges being measures. The choices are
P — Pcode, C — C/A and N C/A with cross corelation for L2 range. The codes
can be found in gamit/tables/rcvant.dat. These codes can also be given in the
ante_off command. An up-to-date DCB_FILE command must be used to specify the
DCB biases. The files are available from the MIT ftp site and update once per
Allows specification of the maximum size of gap allowed in data before
a bias flag is inserted, and the number of good data needed to allow
data to be kept. The defaults are 1 and 20 (i.e., any gap is flagged
and at least 20 good phase measurements are needed between bias flags
other wise the data is deleted).
Allows detailed output for debugging problems for the data between
epoch numbers and . Default is no output.
@ DATA_NOISE [PRN]
Allows specificiation of the noise in the L1 phase, L2 phase,
P1 range and P2 range, and the weight given to elevation angle
depepence (at ver 1.20); variance is scale by (1+(W/sin(el))^2)
where W is the .
These values affect the sigmas printed for
the position determinations (Units: m for all, except weight)
Optional: PRN may be added and noise assigned to that PRN (if
non-PRN form is used, this will replace all PRN specific values
so use the non-PRN first followed by specific PRN values
@ DATA_TYPE …
Allows specification of data types to be used in generating position
estimates. The choices are:
L1 — L1 only phase
L2 — L2 only phase
LC — Ionospheric delay corrected phase
P1 — L1 pseudo-range
P2 — L2 pseudo-range
PC — Ionospheric delay corrected pseudo-range.
The data types may be combined in each of the choices, e.g.,
L1+L2 would use both L1 and L2 while assuming that the ionospheric
delay is negligible. Example: data_type l1 l1+l2 lc+p1
Sets the maximum sigma of a position estimate for it to be output.
If pseudorange data types are used, the default value of 1 m needs
to increased to 10-100 meters. (Note restriction on back_type
smooth: Option can not be used with pseudoranges).
Controls postfit editing of data by removing data more than n-times
the RMS scatter of the residuals (Default 3.0)
Allows specification of data to be deleted from the analysis.
The name should correspond to the name given in the
OBS_FILE command. is the numerical PRN number of the
satellite to be deleted. The and
are given as year month day hour min second.
e.g., edit_ssv t39a 13 1998 8 16 20 0 0.0 1998 8 16 20 10 5.00
would deleted data on PRN 13 between the times given.
Allows user to add a bias file at site for PRN at time
. First valid measurement at or after time will be flags.
Allows user to delete a bias file at site for PRN at time
. The time must match within 50% of sampling interval.
Allows specification of file with ambiguity estimates and flags
that are used instead of the values determined by the program.
(This is the same file that can be specified in the command line
for the program). Putting it in the command files allows a record
to be kept of the specific file used. The ambin_file must coincide
exactly with the biases parameter table expected by by track (i.e.,
it usually generated with a grep FINAL of the track screen output
(assumed re-directed to a file). Most importantly, if this
file is to used, the bf_set, edit_ssv, cut_off commands should
not be changed from the run that generated the ambin_file. These
files will probably not be usable by different versions of Track.
Name of ANTEX file containing phase center models for satellites
and stations. Code is dimensioned to all 1-deg zen, azimuth spacing
for site to map phase variations. Command can be issued multiple
times with later values replacing earlier ones.
NOTE: Command MUST be used after obs_file and ante_off commands
to ensure entries for antennas are read.
Set the name of the data-code-bias (DCB) file. This file is part of the
GAMIT tables directory and should be updated regularly. It is used to
remove biases in the Melbourne-Wubbena widelanes. The receiver type can
be specified with the RCV_TYPE or ANTE_OFF commands.
@ FLOAT_TYPE [Rel
Allows specification of the floating point ambiquity limits. It is
through this command that the bias fixing algorithm is controlled.
The main factors to consider are the and values
which default to 1 giving them equal weight with the fit of the LC
data. (For L1+L2 float type, these entries are ignored).
For long baselines (>20 km) the should be reduced
to give less weight to the ionospheric delay constraint. For 100 km
baselines, 0.1 seems to work well. With very good range data (ie.,
WL ambiquities all near integer values), this factor can be
For noisy or systematic range data (can be tested with a P1,P2 or PC
solution), the WL_fact may be reduced.
is the iteration to start the floating point estimation
(default is 1)
is decimation level ie. how often should the data
by sampled in making the estimate (default is 4)
Data type to use for the estimate. Choices are
L1+L2 or LC. Note: for LC ambiquity resolution, the
MW-Widelanes need to be well determined so that the
L1-L2 ambiquities can be resolved from these estimates
Limits in the standard deviation of the
floating point estimate that allows it to be fixed to
an integer value (cycles), and on the maximum sigma
allowed even to attempt resolving biases (Two values
are needed). The sigma of the estimate
will depend on the data noise assumed and the
decimation rate (defaults are 0.25 cycles and 0.5 cycles)
weight to be given to deviation of MW-WL from zero.
Default is 1 (ie., equal weight with LC residuals).
Setting the value smaller will downlweight the contribution
of the MW-WL
weight to be given to deviation of the Ionospheric delay
from zero. Default is 1 (i.e., ionospheric delay is assumed
to be zero and given unit weighting in deterimining how
well a set of integer ambiquities fit the data. On long
baselines, value should be reduced.
Maximum value of (res/sig)**2 allowed for biases to be
fixed. (Default 25).
[RelRank] Relative rank for bias to be fixed (Same as amb_cycle
(Added version 1.20)
@ RM_CSLIP <# MW WL> <# EX WL>
Tries to remove cycle slips by patching slips similar to autcln. The arguments
are <# MW WL> number of Wideline values needed on each side of the slip.
20 is a typical value to use (must be given)
<# EX WL> number of EX widelanes to use (10 default).
Relative rank ratio of slip removal (Default 20)
Additive chi2 to be added (incase fit happens to be very good (Default Minimum chi2 to associate with best chi value (Default
Using RM_CSLIP 20 will invoke the feature and use default values for all others.
This command allows the specification of minimum values that used to be
hardwired in track. Specifying -1 for value will retain the default.
is the minimum sigma to be assigned to the float estimate of
the LC bias estimates (Default 0.01 cycles)
is the correlation time in seconds to be used in computing the sigma
of the mean WL values. (Default 600 sec).
RMS of initial PC position solution that will set a site to
be dynamic. (Defualt 10 m).
Allows specification of the type of solution to run backwards in time.
Current options are (vers 1.02)
BACK — Simply runs a standard KF backwards in time. Write both the
forward and backwards solution to the output file.
Options for vers =>1.03
SMOOTH — runs a smoothing filter. Only the forward running epochs
are written to the output file.
Allows specification of the parameters to be used in fixing the
bias parameters to integers. The options are:
— Number of samples to use. Default is 20. Making
this value larger will slow the program down because
more epochs will be tested
— Relative rank needed for a bias parameter to be
marked as fixed. Default is 5.0. Smaller values will
mean more biases are fixed—to small a value and they
might not be fixed to the correct value.
— Maximum number of values to search at any epoch.
Default is 1million. Setting this value too small
can mean certain biases are never searched over. A
larger value can result in very long times.
Allows specification of the characteristics of the ionosphere. For
all parameters a value less than zero will use the default. The
parameters given are:
– Largest jump in the ion delay allowed before bias
flag introduced. (The delay is L1 – (fL1/fL2)*L2
and therefore a 1/1 L1 L2 slips changes delay by
0.28 cycles. Default is 0.2 cycles. Units: cycles
– Parts-per-million expected for ion contribution.
(Values between 1 and 10 are typical)
– Weight to be given to ion-delay residuals RMS in
computing the RMS of trial search values. Default
is 0.01 (ie., not highly weighted). For short
baselines (<10km) with an LC search, a high weight is recommended (ie., 1) – Height of ionosphere used in computing ion delay
elevation angle dependence (default 350 km).
– Spatial correlation length to used. Larger
values will allow less ionospheric delay differences
between sites (default 300 km). Units: km
Allows specification of the root part of the file names for the
position output files. The file naming scheme generates file names
of the following form: for pos_root = mert_229 the names are:
mert_229.GEOD.tubi.L2 — Kinematic site tubi, GEOD output, data L2
mert_229.GEOD.tubi.LC — Kinematic site tubi, GEOD output, data LC
mert_229.NEU.tubi.L2 — Kinematic site tubi, NEU output, data L2
mert_229.NEU.tubi.LC — Kinematic site tubi, NEU output, data LC
Outpute the postfit residuals for the data type being processed. For
res_root mert_229 then files names generated ar
mert_229.tubi.PRNnn.LC for site tubi with LC data
Outputs a summary file of the run including statistics of the postfit
Outputs the wide lanes corrected for cycle slips and model differences
bwteen L1 and L2 to files (Ver 1.29) whose names start with .
Data not used in the processing are not included.
Outputs the raw wide lanes not corrected for cycle slips to files whose
names start with . (These are the values track uses to flag
cycle slips and add bais flags). All data are output and the elevation
angles are zero since these are not available.
Name of IGS standard format IONEX file to be used. In long baseline
processing, these models should improve the mean and RMS scatter of
the EX widelane (L1-scaled L2 difference).
Name of site (4-char code) and corresponding line of sight ionospheric
delay file. Format of file is .
Data lines start with at least one blank at start of line. The file
must be consistant with the start time and data interval of the track
run using the file. (These LOS files are generated from smoothing the
L1-L2 phase differences in the dump files generated with output type DUMP.
Allows specification of the type of position outputs to be generated.
There are two choices:
GEOD — Geodetic coordinates (Latitude, Longitude and height).
This format is compatible with GITAR output
NEU — Local North, East and height differences between the
first fixed site and the kinematic sites. North, East
and Up are defined by triad of axes at the reference
DHU — Difference in NEU from the initial coordinates of a site.
Differences are in mm.
XYZ — Cartesian XYZ coordinates
DUMP — Dump of L1/L2 phase and range residals along with azimuth
and elevation angles. When a IONEX files is used, the tec
in TECU and the latitude and longitude of the sub-ionospheric
point are also given.
Both types can be output in one run if both strings are given with
no blanks separating them (e.g., geod+neu)
Allows specification of minimum elevation angle of data to be
used in the solutions. Units: Degrees
Allows a specific start time to be specified. Normally the start
time defaults to the first time with overlapping data between at
least two sites.
Allows specification of sampling interval. Must be in integer multiple
of actual sampling interval (Units: seconds)
NOTE: When rinex files have different sampling the largest interval
should be specified. I may also be necessary to give a start_time
to have the epoch line up correct (DISASTER No matching data
Allows specification of number of epochs of data to process. Normally
the number of epochs is choosen to run until the end of overlapping
Excludes satellites from being processed. Useful when a satellite is not
in an SP3 file or not available during the times there are data.
Example: exclude_svs 26 22 13
Command to set a stop/go mode that allows data to processed with small
stochastic variations during intervals when a receiver is static.
(On Trimble receivers this done by changing the receiver from ROVE mode
to STATIC mode).
The rinex records for the two modes are:
| denotes start kinematic mode
04 1 12 17 33 25.0000000 2 2
KINEMATIC MODE COMMENT
| denote start static mode.
04 1 12 17 50 10.0000000 3 1
STATIC MODE COMMENT
By default if no extra argument is given, the variance during
static mode 10^6 times less than the kinematic mode process noise set
in the site_stats command.
Sets the magnitude of a jump the MW widelane that will be flaged as
a slip. (Default is 5 cycles). Increase this value to stop bias flags
STRATEGIES FOR USE OF PROGRAM
Depending on the nature of the data analyzed, track can often not resolve
all the ambiguities in a single pass. Below are some suggested
methods for resolving all of the ambiguties. Both the GEOD and
NEU output files tell the user the number of unresolved ambiguities
at each epoch of data. The start of the NEU output look like:
- YY MM DD HR MIN Sec dNorth +- dEast +- dHeight +- RM
- (m) (m) (m) (m) (m) (m) (mm
1999 8 16 0 5 30.000 -20056.7861 0.0130 125156.5258 0.0126 132.9964 0.0655 10.
1999 8 16 0 31 30.000 -20056.8053 0.0099 125156.5439 0.0104 132.9933 0.0405 16.
The last two entries on each line are the number of ambiguities
needed for the data being analyzed and the number that have not
been fixed to integers. Any entries with the last value not equal
zero should be treated with caution. Ideally, we want to resolve
all biases. No resolved biases in the final processing are estimated
during the run. Since Vers 1.01 is only a forward Kalman filter,
the position estimates when the biases are first being estimated
will be effected by the poorly determined bias at that time. As
more data are added, the bias will be better determined and have
less effect on the position estimate.
The number of biases that can be fixed is effected by choices
in the command file and can altered by editing the AMBIN_FILE.
For short baselines (<10 km), the search_type is best choosen
as L1+L2. With aircraft data that has stationary periods near
the base station before and after the flight, one strategy which
seems to work, is to first process with L1+L2. This should
fix all the biases for satellites visible during the stationary
periods. The ambiguities are extracted from this run (with a
grep FINAL of the screen output). The program is then run with
search_type LC and the ambin_file specified. The LC search
often has enough biases already fixed, that it can resolve
the remaining biases that arise during the flight.
Allowing the atmospheric delay to be estimated, is usually
a good way of detecting bias fixing problems in the flight
data since any problems will cause the atmospheric delay to
When multiple bias flags are added due to gaps, some of the
biases might not be directly resolvable (above the RelRank
tolerances) and these can be forced to be fixed by changing
the Fixd column in the ambin file. (The Fixd value is bit
mapped and so all that is needed is for bit 2 to be set,
i.e., 2,3,6,7,10 .. are all acceptable values. Users might
want to us a value different from that generated by the
program e.g. use 7 to denote a user fixed value). Care should
be taken when setting a bias fixed. For nearby biases, sometime
GPS receivers will have 1/1 slips (i.e., 1 L1 and 1 L2 cycle
change). Such a slip does not change the MW-wide lane but
will effect the ionospheric delay and geodetic solution.
In some cases, after the ambiguity search no ranked list
will be produced. This occurs when none of the values searched
seems acceptable (i.e., the search range is too small). The
search can be increased on each bias parameter by increasing the
sigma values for the MW and EX widelanes (ie., the 2nd and 4th
numerical values following the “WL Res +-” in the bias flag table.
It can also be increased by increasing the ion_ppm value.
For static sites on long baselines (>50 km), fixing the
station coordinates to good apriori values can often be used
to get better ranking in the LC search. This can be done by
using site_stats 0.0001 0.0001 0.0001 1 1 1. In the way
track does its searchs, the apriori sigma of 0.1 mm (in this
case) would be used during the search, but in the final output
the markov process noise of 1 m would be applied at each epoch
(except the first). Once the ambiguities are resolved and an
ambin file generated, the solution could be re-run with loose
Often on long baselines, the biases are not resolved with
sufficient rank to be fixed, but on examination of the
time series of the atmospheric delay estimates and position
estimates, it is clear that the correct values have been found.
Editing the ambin file to show these biases as fixed will often
help resolved other biases.
Increasing or decreasing the ion_ppm value in the ion_stats
command, often will either expand the search enough to allow
the correct ambiguities to be found, or decrease the search
range so that only ambiguities that generate small ionospheric
delays are found. If the maximum number of searchs allowed
is exceeded, reducing the ion_ppm will often reduce this
number (if the MW- and/or EX widelanes are very uncertain, this
might not help).
For static baselines with site separations of >50km, the
differential atmospheric (ie., difference form the apriori
atmospheric delay model) can be large due to water vapor. The
ATM_BIAS command be used to compensate for this difference and
this will often allow the biases to be fixed. (The value choosen
can be based on the part of the data where the biases were
fixed or on another geodetic analysis e.g. a standard gamit
solution.) In static solution, differential atmospheric
delays of 10 cm at zenith (38 cm at 15 deg — equivalent to
2 cycles) are often seen.
Final Advice: Good luck. With perfect data and no ionosphere
this is easy.
PROGRAM track terminating