Pull the latest raPPPid version from GitHub in case of bugs or errors. If this does not help, please send a short report, the RINEX file, and settings.mat to raPPPid@geo.tuwien.ac.at
Order of frequencies and RINEX number (observation code)
GPS
L1
L2
L3
1
2
5
GLONASS
G1
G2
G3
1
2
3
Galileo
E1
E5a
E5b
E5
E6
1
5
7
8
6
BeiDou
B1
B2
B3
B1AC
B2a
B2ab
2
7
6
1
5
8
QZSS
L1
L2
L5
L6
1
2
5
6
Comment regarding Beidou: B2 = B2 + B2b (1207.140 MHz) B3 = B3 + B3A (1268.52 MHz) B1AC = B1C + B1A (1575.42 MHz) As these signals share the same frequency number in the RINEX specification (middle character, see table above) and are transmitted on the same frequency, they are merged in the GUI for simplicity. Please check the observation ranking to define the processed signals. Furthermore, the expression B2ab corresponds to B2(B2a+B2b) (1191.795 MHz).
Many variables are vectors with lengths equal to the number of satellites in the current epoch or 410. Matrices often have the size (number of epochs) x (410). There are a few essential variables, which are all structs.
settings: processing settings from GUI, created when processing is started.
Epoch: epoch-specific data for current epoch, cleared at the beginning of each new epoch. The variable Epoch.sat_status gives info about the status of a satellite or why the satellite is excluded:
0
1
2
3
4
5
6
7
8
9
not observed
healthy
cutoff angle
cycle slip
multipath
no satellite clock
no satellite orbit
SNR threshold
SSR digit
10
11
12
13
14
15
16
17
18
19
not fixable
omc check
excluded (GUI)
eclipsing
multipath cooldown
no BRDC ephemeris
faulty code observations
Use the command printSatelliteStatus(Epoch) to print the status of all satellites of the current epoch easily understandable to the command window.
Epoch.obs contains the raw observation from the input observation file (e.g., RINEX) as a matrix and the units correspond to the units in the input file. Therefore, in the case of a RINEX file, the code observations are in [m], phase observations in [cy], and the Doppler shift in [Hz]. When processing the raw sensor data from Android devices the phase observations are in [m] and the Doppler shift in [m/s]. In any case, Epoch.C1/C2/C3 contains the code observations in [m], Epoch.L1/L2/L3 contains the phase observations in [m], and Epoch.D1/D2/D3 contains the Doppler observations in [Hz]. Additionally, several biases are applied to these variables and the values most likely do not correspond to the values from the input file (e.g., observation biases or a phase shift from the RINEX header).
Adjust: adjustment data and matrices for the current epoch
satellites: satellite-specific data (e.g., elevation, azimuth)
input: input data in an internal format (e.g., ephemerides, ionosphere model)
obs: observation-specific data (e.g., which signals are processed). The variable obs.use_column is created in find_obs_column.m and describes which column of observations is taken from the RINEX file (considering the observation ranking) in the following order:
L1
L2
L3
C1
C2
C3
S1
S2
S3
D1
D2
D3
storeData: stores data of the processing. Mainly used after the processing for all kinds of visualization.
raPPPid has a pre-defined folder structure. Notably, the folder WORK contains raPPPid.m used to start the program and GUI. The sub-folders of WORK are used for saving, for example, tables from the GUI (Batch Processing Table and Multi Plot Table) and parameter files. Furthermore, the folder RESULTS collects all processing results.
The folder DATA contains OceanLoading.blq and all input data, divided into the following subfolders. Usually, these subfolders contain further subfolders (year and day of year (e.g., /2022/65/)).
ANTEX contains Antex files and myAntex.atx used to correct satellite and receiver PCOs and PCVs.
BIASES contains satellite bias files.
BROADCAST contains the broadcasted navigation message.
CLOCK contains satellite clock files.
COORDS contains coordinate files.
ERP contains *.erp files used for the polar tide correction.
raPPPid supports pseudocode in the text-fields of the processing name and the manual data sources (e.g., orbits, clock, biases). This pseudocode allows, for example using manual data sources in batch processing over multiple days. For example: TUG0R03FIN_$yyyy$doy0000_01D_05M_ORB.SP3 will look for the file TUG0R03FIN_20203650000_01D_05M_ORB.SP3 in the corresponding data folder (/DATA/ORBIT/2020/365/). Furthermore, the processing name can be designed based on the processed RINEX file. For example, the processing name $gnss-STATIC/$rec might result in the results folder /RESULTS/GREC-STATIC/SEPT POLARX5-21-Oct-2021_21h51m57s. The following list contains the available shortcuts:
Data sources:
$dd = day of month, 2-digit
$mm = month, 2-digit
$yyyy = 4-digit year (e.g., 2021)
$yy = 2-digit year (e.g., 21)
$doy = day of year, 3-digit
$gpsw = GPS week, 4-digit
$gpsd = day of GPS week, 1-digit
Processing name (in addition to above)
$stat = station, marker name (Rinex header), 4-digit
$rec = receiver type (Rinex header)
$int = observation interval
$gnss = abbreviation of processed GNSS (e.g., GE or REC)
$f = number of input frequencies (e.g., 2 for the conventional PPP model with the IF LC)
$iono = ionosphere model used in the processing (e.g., iflc, 3iflc, constr, est, correct)
raPPPid provides some convenient functions. These are mainly started from the Command Window. Please note that some of these functions are only experimental. Some very experimental functions can be found in /CODE/PLAYGROUND/ (e.g., for manipulating RINEX files). To download GNSS observation data (e.g., from the IGS or EUREF), please check the function located in the following folder: /CODE/OBSERVATIONS/ObservationDownload/
OpenWiki: Opens the raPPPid wiki in the browser.
OpenCodeFolder: Opens the folder which contains the source code of raPPPid.
OpenDataFolder: Opens the raPPPid data folder.
OpenWorkFolder: Opens the raPPPid WORK folder.
OpenObsFolder: Opens the folder containing all Rinex observation files.
OpenResultsFolder: Opens the folder where raPPPid saves processing results.
CopyData2Folders: This opens a window where you can select files. This data is then copied to the correct raPPPid subfolder and not deleted from the source folder. The output in the command window indicates which files were moved successfully.
copy_all_files: Copies all input files from settings to another folder and creates the file settings_new.mat where the settings with the new file paths are saved
check_sp3.m: Allows to select an sp3 file and create a plot showing potential data gaps or satellites lacking data in the precise orbit product.
check_clk.m: Allows to select a clk file and creates a plot showing potential data gaps or satellites lacking data in the precise clock product.
plot_model_save: Save the variable model_save into data4plot.mat during processing (Panel: Run - Export Options). Use this function for plotting all modeled error sources, which is useful for error detection.
\CODE\PLAYGROUND\SatWorldPlots offers functions to plot the mean number of visible GNSS satellites on a world map.
printSatelliteConstellation: Select data4plot.mat and the function prints the satellite constellation and its changes of the selected processing.
Satellite products proved to change their filename occasionally. Furthermore, some FTP servers are not completely stable and are not accessible sometimes. Therefore, the automatic download might fail. Please consider manually downloading the data from CDDIS and using the function CopyData2Folders() in such a case.
modelErrorSources.m should be vectorized to improve the performance
End-of-day-problem: some precise products have no data for 24h (e.g., IGS or CNES MGEX). Therefore, the satellite position is not interpolated but extrapolated in the last, for example, 15min of the day. That is why the coordinates might drift away during, for example, the last 10min of the day. A solution can be to manually copy the next day's first epoch as the current day's last epoch. However, there might be issues at the day boundary.
Currently, only daily processing is possible. Multi-day RINEX files have to splitted.