Overview -------- NoPi, yet another baseline processing tool, is intended, eventually, to produce similar results to load_pi but without the Matlab memory limitations. It is also intended to extend functionality to perform automated analysis of the re- sults to capture problems more quickly. The program reads the Base & Rover files and processes each epoch as it comes in rather than loading all epochs into memory first. The difference data is later saved to disk before secondary tools are used to plot data etc. This means that it is slower than load_pi for small files but should be quicker for larger files. It also avoids memory limitations by maintaining only a single epoch of data and any one time. CAUTION CAUTION CAUTION CAUTION It is work in progress, so don't rely on it just yet, and load_pi is still the reference standard. There's more to come later, such as Matlab display utilities and the data ana- lysis tools. CAUTION CAUTION CAUTION CAUTION It should, however, work on: - non-zero baselines, although its range is limited (as no atmospheric model- ling is done); - on both rec17 and rec27 files, including mixed between Base & Rover, but it's not been tested; - any data file size and high data rates without decimation. Features: - selectable reference satellite on a per-epoch basis via a configuration file; - processing between different signal types i.e. double difference L2E <-> L2C; - for zero-baseline, can apply clock steering to avoid use of ephemeris i.e. for Compass or unhealthy satellites; - disable satellites from being reference via command line; - disable satellites from being processed via command line; To Compile ---------- Check-out NoPi (cvs co -d NoPi GPSTools/NoPi), t01 and StingerNavPC all at the same directory level. Compile the T01 library using the instructions in the t01 directory. StingerNavPC is used to supply a few ephemeris handling libraries used by the RTK engine. You don't need to do anything in that directory. To compile on Linux run: ./cmake_NoPi.sh Make Or to clean the build directory on Linux run ./cmake_NoPi.sh Clean One-time setup on Linux (if not using cmake_NoPi) or Windows: mkdir build cd build cmake .. To build the program under Linux (if not using cmake_NoPi) from build/: make To build the program under Windows from build/: Option #1 - use Visual Studio to open the generated project and build it. Option #2 - build on the command-line: cmake --build . (or "cmake --build . --config Release" but make sure you have also built the Release t01 library) Basic Configuration ------------------- Configuration occurs in the following order: 1) It loads piline.ini, as used by load_pi; 2) It always tries to load NoPi_Default.cfg. This should be in CVS and contains a default configuration to enable GPS/GLN and disable GPS 1 and GLN 9 as reference satellites; 3) Almost everything else is done via command line options. You can load these from a configuration file by using, for example: nopi.exe @test.cfg Note that options writen later can overwrite previous options. The program runs on signal 'combos' (i.e. signal type combinations) supplied by the user. The signal combinations to process can be provided using a file: NoPi_Combos.cfg See the copy of this file in CVS for more details on the format. If the file is not found then the default signal combos are used. These are: GPS L1CA <-> GPS L1CA GPS L2E <-> GPS L2E GLN L1CA <-> GLN L1CA GLN L1P <-> GLN L1P GLN L2P <-> GLN L2P In theory, any signal type can be combined, although ambiguity resolution a- cross different frequency bands will be dubious. Another currently hard-coded feature is the selection of reference satellite via a file. This is also found in NoPi_Config.c. Output ------ The single/double difference data is saved in files diffs_out_combo_X.mtb, and are loadable directly into Matlab. Currently, the NaN in the double difference column is used to indicate the reference satellite. This is all subject to change but for now: (default -o1 output, also -o2 binary format) Column 1: [U32] Timetag (extended ToW) Column 2: [U8] SV Id (sat. type known from combo. information) Column 3: [U16] Azimuth (at Base) Column 4: [U8] Elevation (at Base) Column 5: [U16] CNo (at Base) x10 Column 6: [S8] Single difference CNo x10 Column 7: [DBL] Double difference pseudorange Column 8: [DBL] Double difference carrier phase Column 9: [U16] Status Info. Bit 0: SV was reference Bit 1: Integer ambiguity solved is epoch Bit 2: D.D. carrier phase valid Bit 3: D.D. pseudorange valid Bit 4: S.D. CNo valid Bit 5: BASE/REF using L2E (only valid for L2E_OR_C combos) Bit 6: BASE/TST using L2E (only valid for L2E_OR_C combos) Bit 7: ROVR/REF using L2E (only valid for L2E_OR_C combos) Bit 8: ROVR/TST using L2E (only valid for L2E_OR_C combos) Bit 15: Additional Status Info. block exits (using the -o0 option, original minimal format) Column 1: Timetag (extended ToW) Column 2: SV Id (sat. type known from combo. information) Column 3: Single difference CNo x10 Column 4: Double difference pseudorange (can be NaN) Column 5: Double difference carrier phase (can be NaN) Column 6: Status byte for L2E/C mode (optional column) The program also creates a NoPi_Status.txt file where it dumps general informa- tion on the processing. For example, cycle slip information and ambiguity reso- lution values are saved here. Example Files ------------- piline.ini - Example of file, same as used for load_pi test.cfg - Example of command line options loaded via a file ref_sv_info.txt - Example of reference satellite selection via a file