This repository has been archived by the owner on May 29, 2022. It is now read-only.
Releases: SGL-UT/GPSTk
Releases · SGL-UT/GPSTk
GPSTk v2.10.1
GPSTk 2.10.1 Release Notes
Updates since v2.10
Build System and Test Suite
- Remove inadequately explained lib directory override in CMakeLists.txt
- Added line to GPSTKConfig.cmake to allow dependent projects to find header files regardless of implicit or explicit declaration.
Gitlab CI
- Changes to .gitlab-ci.yml to fix SGLTk downstream portion of the GPSTk Gitlab CI/CD pipeline.
Library Changes
- SunEarthSatGeometry: Added OrbitNormalAttitude function back in, which was originally added in commit 78e29c3, but accidentally deleted in commit 148a018.
- Added test in core/lib/Utilities/StringUtils:change() that returns immediately if either input string is empty. REASON: Empty input causes no change, and so the loop (numChanges = max unsigned int) is essentially infinite.
- Added routines to core/lib/Utilities/stl_helpers.hpp that find the intersection of two vectors and the 'non-intersection'. NOTE: While there are STL routines that do this, they require sorting the vectors first, which is not good for my application (at least).
- Make all geomatics tests in ext/tests/geomatics/CMakeLists.txt have the same label.
- In core/lib/Geomatics/Namelist.* - Added operator+=(Namelist) for convenience. Found that randomize() does not do anything on Linux Debian (?!) so just replaced std:: call with simple code. Tiny improvements to the format of matrix/vector output.
- Added debiasing before computing stats in core/lib/PosSol/PRSolution.hpp. REASON: Stats on the full PRS solution, which is an Earth-centered Earth-fixed position[3], often suffers numerically b/c the numbers are so large. This change simply debiases the numbers by the first value, so stats, in particular standard deviation, do not have noticeable numerical error.
- Reverted core/lib/FileHandling/Rinex3NavData.cpp to output the xmitTime in the frame of the toe week (derived output week). REASON: Originally, stored xmitTime in the frame of the Rinex3NavData::weeknum which was the week of sf1 HOWtime. output week was derived from weeknum and the difference between xmitTime and toe. When the review was requested, stored xmitTime in the frame of Rinex3NavData::weeknum which was changed to be the toe week. I checked both the RINEX 2.11 (section 6.8) and 3.03 (section 6.13) specs and they agree with the change.
Modified Test files
- ext/test/geomatics/CMakeLists.txt
Fixes since v2.10
- Fixed a bug in core/lib/Math/Stats.hpp that produced unpredictable results when trying to add an empty object.
- int -> unsigned int changes in ext/lib/Geomatics/StatsFilter.hpp
- Freed memory returned by core/lib/GNSSEph/OrbitEphStore::addToList and updated comments for that method. This fixed memory leaks in core/lib/GNSSEph/GPSEphemerisStore::addToList and core/lib/GNSSEph/Rinex3EphemerisStore::addToList.
GPSTk v2.10
GPSTk 2.10 Release Notes
Updates since v2.9
Build System and Test Suite
- Significant cleanup of Windows Test Suite
- End-of-line Normalization implemented.
- Updated build script for supporting VS 14 2015 install via command line.
- Native Debian package support has been added, using native Debian packaging tools rather than CPack-based support and is more compliant with Debian policy than the CPack version. Debian package is split into multiple packages - gpstk-bin contains the binaries; libgpstkx.x contains the shared library objects; libgpstk-dev contains the headers for development; python-gpstk contains the Python bindings (and swig headers). Supports side-by-side installation of multiple versions of libgpstk.so, so as to facilitate staged upgrades and backward compatibility. Dependencies are computed (and done using native Debian tools), and so will trigger upgrades/conflicts appropriately. Packages are far more Lintian clean (big remaining item is missing man-pages). Work towards supporting more standards-compliant system-wide installations, independent of installation methods (e.g. RPM, Debian, ./build.sh -s).
Gitlab CI
- Core build stage added to detect reverse dependency between core and ext
- Solaris Runner deprecated, only built as nightly
- Redhat Runner added to Gitlab CI platforms
- Major Overhaul of Gitlab CI infrastructure. Originally consisting of only Build and Test stages, the new design takes advantage of artifact passing for better efficiency and faster builds while adding new stages - Deploy (local install), Package, and Downstream (SGLTk) stages. System install, license check, and additional stages are planned in the future.
Documentation
- Documentation across the GPSTk has been revamped. User's Reference Manual has been updated - old application removed, migrated applications moved to SGLTk manual. Documentation.md added for how-tos on building documentation. Application Documentation added to each app directory, in markdown for easy reading and auto-rendering on Gitlab.
Library Changes
- FUTURE DEPRECATION WARNING for CommonTime public accessor/mutator methods. REASON: Discussions for Issue #248 have led to us retaining the internal GPSTk representation of Julian Date, jday, and instead restrict CommonTime use to specific classes as designed.
- Documentation describing the internal GPSTk representation of Julian Date, jday(JD+0.5), was taken from DayTime (deprecated) and added to JulianDate.hpp. REASON: JulianDate.hpp lacked documentation for internal GPSTk representation of Julian Date, jday, which used to exist before the DayTime to CommonTime/TimeTag update.
- EngEphemeris objects now initialize the AODO (Age of Data Offset) upon creation. REASON: The maximum age that the satellites can broadcast is 27900 seconds (5-bit unsigned multiplied by 900. 31*900=27900). After 27900 seconds the offset data is unusable. Since a fresh EngEphemeris object contains ephemeris of an unknown age, it makes sense that AODO is set to 27900 to indicate that the offset data should not be relied upon.
- GPS CNAV added to Navfilter, which entails adding a variety of CNavFilter classes, adding debug print capability to NavFilter and descendants, as well as a variety of additions to the functionality of core/GNSSEph/PackedNavBits. REASON: In order to develop GPS CNAV (L2 and L5) processing for MDH and MDP into RawNavCSV files, we need the capability to compare CNAV messages across receivers (at least).
- Trop Models refactored to have one model per file by refactoring exception throwing. REASON: Preservation of location information.
- Extension of OrbElemBase Hierarchy to Support "Almanac" Data. New LNAV subclasses for virtual OrbSysGPSL, which provides a means to identify contents of the objects by either subframe/page or by Data ID - OrbSysGPL_51 (SV Health for PRN 1-24), OrbSysGPL_52 (Navigation Message Correction Table), OrbSysGPL_53 (Special message), OrbSysGPL_56 (Iono model, UTC correction, Leap second), OrbSysGPL_63 (SV Configuration (all SV) and SV Health for PRN 25-32). CNAV_L2 and CNAV_L5 string IDs changed. REASON: Broaden OrbElemBase coverage to encompass both lower-precision "almanac" orbits and the non-orbit "system-level" data.
- NavID was added to PackedNavBits. REASON: BeiDou ICD was discovered to be incorrect when it states: 1) PRN 1-5 will always be GEO and always broadcast nav ms format D2 2) PRN >=6 will always be MEO/IGSO and always broadcast nav msg format D1. This means the software cannot depend on SatID alone (PRN and system) to determine D1 or D2 format. As the MDH format will eventually include a NAV code, a short-term solution is to examine the nav message data rate to determine D1 or D2 and then initialize the NavID associated with the PackedNavBits (as it stores the bits and other associated meta-data) to keep track of that determination.
- Increased the maximum number of iterations for invChisqCDF, contfracIncompGamma, cfIBeta, and seriesIncompGamma from 100 to 1000. REASON: In LSA, we encountered a problem with a large number of degrees of freedom (26301) and invChisqCDF failed to converge after 100 iterations. Brian Tolman suggested that simply increasing this limit should be sufficient. I bumped up niter from 100 to 1000 for invChisqCDF, and also invNormalCDF, invStudentsCDF for consistency. This is an arbitrary value and I have not determined the number of iterations required to converge for the problem encountered in LSA.
- Updated TropModel to treat humidity values between 100 and 105 as 100 and to throw an exception if above 105. REASON: A Value of more than 100 for humidity will throw an exception in TropModel. However, this does not play well with real humidity values which can be above 100. Two solutions exist: the max humidity can be raised in TropModel or rather than throwing an exception if humidity is above 100, TropModel can treat high humidity as 100 percent.
- OrbAlmGlo modified to use beginValid instead of the Almanac Week number (WNa) Time of Arrival (toa). Originally, it was assumed that the almanac WNa/toa was "in the future" from the curren time by at least a day. Based on observed behavior, it seems that the almanac WNA/toa is actually within a half-day of the current time, although no promises are made on this matter.
- Operator <() added to TimeRange to allow use of TimeRange as key in set/map. Operator test added as well.
- OrbitEphStore find methods return NULL when OrbitEphStore is empty. REASON: Normal circumstances dictate the map for a given satellite would not be emptied, but this can't be guaranteed as soon as edit() is used.
- Fix usage of Position in ORD classes. Modified ClockModel/ObsRngDev.cpp and GNSSEph/EphemerisRange.cpp to use Position with conversions to the appropriate CoordinateSystem. Fixes exceptions when a CoordinateSystem other than the one expected/assumed was passed in. REASON: The ObsRngDev methods are trying to create Geodetic positions from ECEF input.
- Fixed BINEX CRC length and added unit tests to catch incorrect CRC length and other record length problems; updateded unit tests with fancy macros. REASON: BINEX CRC length was incorrect.
- Infrastructure changes made for additional BeiDou support.
- A method was added to OrbSysGpsL_56 to create a TimeSystemCorrelation Object. Also added a new .find( ) method to OrbSysStore that returns the most recently transmitted version of a particular message type across all SVs, which is needed to find most recent UTC Offset data across the constellation. REASON: Given a OrbSysGPSL_56 exists, it should be able to create a TimeSystemCorrection object based on the A0/A1 and related terms. The resulting TimeSystemCorrection object should work exactly as if it was read from a RINEX header "GPUT" record.
- BDS and QZSS support added to SP3c parsins. REASON: SP3c support is incomplete and fails when confronted with GNSS system codes for BeiDou and QZSS. This issue aims to patch this hole and add tests to confirm good operation of the new code.
- Antenna phase center offset calculations added.
- Infrastructure changes made to support analysis of IRNSS data, for example, updating OrbAlmGen.cpp to include capability for creating IRNSS orbit comparisons. REASON: Various infrastructure pieces need to be updated to support analysis of data from the Indian Regional Navigation Satellite System (IRNSS).
- Stream flags are changed and restored as needed in hexDumpData. Additional improvements to hexDumpData as well. REASON: hexDumpData does a bit of stream manipulation and also makes assumptions about the state of the stream to start with. One possible end result is that you may have left justification turned on, in which case index numbers like 0x10 will be printed as "1000", the final 2 "0" characters being the stream fill character. Byte data that is < 16, e.g. 0-f could be printed as, say "c0" instead of "0c".
- RINEX 3 Nav Xmit time output is now actually Xmit time (instead of HOWTime). Fixed Rinex3NavData.toList() including Toc twice and Toe 0 times Rinex3NavHeader output better matches RINEX specifications.
- RINEX 2 header date formatted to match previous RINEX class output.
- RINEX 3.03 (July 2014) support is now complete, which involved completing IRNSS support and updating Beidou frequency B1 to appear as '2' as in Obs ID (as with RINEX 3.00, 3.01) rather than '1' as it does in RINEX 3.02.
- Small update to CommandLine - No args means help as default; verbose, debug, and help added.
- Added message handler for CNAV MT 32, as well as tests for MT32 and MT33. REASON: While working on RFC-354 for the public signal ICWG I run across the need to implement an OrbDataSys class to handle GPS CNAV MT 32. I need to both implement the cracker and add it to the ext/GNSSEph/OrbDataSysFactory class.
- Rationalize...
GPSTk v2.9
Version 2.9 Friday, May 20, 2016
General modifications
- Significant progress resolving failed tests on Windows and Redhat
- CPack update - RPM Packages and NSIS Windows installers added to package suite using build.sh
- Added required files for Gitlab-CI builds
- Updates to SWIG bindings, fully compiles on OSX
- Addes initial set of Python/SWIG tests
- Major Doxygen cleanup and overhaul
- Cleanup of old code and documentation
- This release includes new/modified source code comments for improved readability.
- Various Bug and Compile Warning Fixes
GPSTk v2.8.1
Version 2.8.1 Wednesday, January 27, 2016
General modifications
- Patch for MS VC bug fix and code cleanup
GPSTk v2.8
Version 2.8 Friday, January 15, 2016
General modifications
- Significant progress resolving failed tests on Linux, Solaris, Redhat, and OSX
- New and updated unit tests for Core code base
- Additional test programs and scripts for application testing
- Some applications migrated from Ext to Core
- Application testing for Core applications
- Fixes to eliminate data corruption during encode/decode
- Build script updates
- CDash Scripts removed from repository
- Updated in-source documentation
- Code and old test clean-up
- This release includes new/modified source code comments for improved readability.
- Various Bug and Compile Warning Fixes
GPSTk v2.7
Version 2.7 Friday, October 16, 2015
General modifications
- Supported Platform updated
- Solaris Sparc no longer supported
- XCode no longer supported
- Substantial Clean-up and Updates to build.sh script
- Python bindings now work under Linux, Solaris, & Mac
- CTest Infrastructure Complete - all platforms
- C++ test code tested and works on all platforms
- Linux, Solaris, OSx , Windows (VS2012)
- This include tests for library
- CDash Scripts added to repository
- More Unit Tests code added for Core
- Bug fixes for RINEX tools
- Sinex Bug Fix for Solaris x86
- SVNumXRef moved from /ext/lib/Misc to /core/lig/GNSSCore
- Additional in-source documentation
- This release includes new/modified source code comments for improved readability.
- Various Bug and Compile Warning Fixes
GPSTk v2.6
Version 2.6 Tuesday, May 12, 2015
General modifications
- CTest Infrastructure Complete - Unix, Linux, Mac, Xcode
- C++ & Python test code tested and works - Linux Only
- Suite of Unit-Tests added for Core
- Some Code Migrated from Ext to Core
- Updated build script
- Python Install
- Build Source and Binary Tarball
- This release includes new/modified source code comments for improved readability.
- Various Bug and Compile Warning Fixes
GPSTk v2.5
Version 2.5 Friday, October 10, 2014
General modifications
- Python Bindings Installation Package
- GPSTk Script Changes
- Tweaks and Clean-up
- Build and Install C++ Lib/Apps
- Build and Install Python Lib
- This release includes new/modified source code comments for improved readability.
- Rearrangement and clean-up of various documentation
- Various Bug and Compile Warning Fixes (Thanks Richard Penney!)
GPSTk v2.4
Version 2.4 Tuesday, April 22, 2014
General modifications
- Core & Ext Folder Structure implemented
- Core Folder
- Location of Core GPSTk Code base, fully reviewed and tested.
- Currently, no code resides in this directory, as code review and testing are currently ongoing.
- Ext Folder
- GPSTk Developer Sandbox Code base
- Code that is in development, prototyped, or does not meet criteria for Core Code base.
- Core Folder
- Python Bindings Relocated and Repaired
- Doxygen build Repaired
- New Initial CMake Testing framework
- Currently in Development
- No actual tests are being utilized at this time, only the framework
- New GPSTk Script
- Build and Install GPSTk Code
- Automatically Identifies and Utilizes multiple processors for increased build speed.
- Can be set to build only the Core Code base (Currently broken, as no code resides in Core folder)
- Build Doxygen Documentation
- Build Python Bindings
- Utilize Test Framework
- Build and Install GPSTk Code
- Code Header's have been standardized and updated to include GNU LGPL v3.0
- This release includes new/modified source code comments for improved readability.
- Various Bug Fixes
GPSTk v2.3
Version 2.3 Thursday, December 5, 2013
General modifications
- GPSTk Library merger & Directory Restructure
- Core Library and Auxiliary Libraries have been merged into single GPSTk Library
- Core Library code (src) have been merged into lib directory
- Code has been reorganized into function-oriented directories
- Core Library and Auxiliary Libraries have been merged into single GPSTk Library
- CMake is now the build system of the GPSTk
- Jam and Autotools build files have been deprecated and removed
- Linux 32-bit & Cygwin are no longer supported platforms
- Bug fixes for multiple applications
- This release includes new/modified source code comments for improved readability.
- The next planned release, GPSTk v2.4, will be a major upgrade that will introduce a new testing infrastructure, as well as further code reorganization.