Skip to content

Releases: JuliaSpace/SatelliteToolbox.jl

v0.6.5

22 Feb 18:08
Compare
Choose a tag to compare

SatelliteToolbox v0.6.5

Diff since v0.6.4

  • The FTP address of WDC files was changed. (Issue #38)
  • A test related to an error thrown by the TLE submodule was fixed. (Issue #35)
  • It is now possible to compute the gaps between accesses to the ground stations.
  • Initial version of the algorithm to convert a osculating state vectors (position and velocity) to TLE. This is still in alpha stage and should be used with caution.
  • The function tle_to_str can be used to convert an object of type TLE to a string.
  • Improvements in the documentation of functions and macros.
  • The minimum required version of OptionalData was updated. (PR #36)

Closed issues:

  • Exception type changed on Julia master (1.4) (#35)
  • KP tables do not download (#38)
  • Complex Values Causing Issues in JB2008 (#39)

Merged pull requests:

v0.6.4

07 Dec 14:43
v0.6.4
Compare
Choose a tag to compare
  • The download path of the file fluxtable.txt was changed. (Issue #34)
  • The submodule SatelliteToolboxSGP4 was created, which contains all the low-level functions related to the SGP4 orbit propagator. (PR #33)
  • The submodule SatelliteToolboxTLE was created, which contains all functions related to TLE handling.
  • The TLE parsing algorithm was improved. If the epoch year in TLE is higher than 75, then it will be considered in the past.
  • This version support Julia 1.0 and 1.3. The support for Julia 1.2 has been dropped.

v0.6.3

14 Oct 07:12
v0.6.3
Compare
Choose a tag to compare
  • A bug in eclipse time computation was fixed.
  • The function ground_station_visible now accepts SVector. (Issue #28)
  • The eccentricity was not being printed in TLEs.
  • The function that checks if a satellite is inside the visibility circle of a ground station has been renamed to
    ground_station_visible. The old one is now marked as deprecated.
  • The function that computes the beta angle has been renamed to beta_angle. The old one is now marked as deprecated.
  • The function that computes the eclipse times has been renamed to eclipse_time_summary. The old one is now marked as deprecated.
  • The orbit propagator API now has the function epoch that returns the current epoch of a propagator.
  • The accesses to ground stations can now be computed using the function ground_station_accesses.
  • It is now possible to select what kind of perturbations are desired when computing the beta angle in function
    beta_angle.
  • Add the simplified dipole model to compute the geomagnetic field.
  • The function propagate_to_epoch! can now be used with OrbitPropagatorJ4. (PR #31)
  • The function JDtoDate now uses the native function julian2datetime to convert between Date to Julian date represented in DateTime format.
  • The eclipse time computation algorithm was drastically improved by adding an edge find mechanism, leading to an algorithm 3x faster.
  • This version support Julia 1.0 and 1.2. The support for Julia 1.1 has been dropped.

v0.6.2

21 May 21:09
v0.6.2
Compare
Choose a tag to compare

v0.6.2 (2019-05-21)

Diff since v0.6.1

Closed issues:

  • Integer conversion from Julian Day to DateTime fails when the seconds are 0 (#30)

v0.6.1

22 Apr 16:14
Compare
Choose a tag to compare
  • The EGM-08 coefficients in J2 and J4 orbit propagator algorithm were slightly wrong.
  • It was added an algorithm to compute the Moon position: moon_position_i.
  • The performance of Sun position algorithm was increased by 15%.
  • The J2 and J4 orbit propagator algorithms now have more built-in coefficients: EGM96, JGM02, and JGM03.
  • The Project.toml file was added, the REQUIRE file was removed, and the registration process is now handled by Registrator.jl.

v0.6.0

24 Mar 23:04
Compare
Choose a tag to compare
  • The API initialization functions of all orbit propagators have changed! Please, see the documentation for more details. The analytical propagators Two Body, J2, and J4 are now initialized using the mean orbit elements or TLEs, whereas the analytical orbit propagator SGP4 can now only be initialized with TLEs.
  • Some API functions of [d]legendre were removed to simplify the code.
  • All the orbital elements in the Orbit structure must be of the same type now. This does not affect the initialization function Orbit, which automatically handles the conversion.
  • The user can now select the maximum order that will be used in gravitational models. However, this is a breaking change because selecting the maximum degree as 0 will make the methods use only the first term, leading to the same result as selecting it as 1. To use all the terms, the maximum degree must be set to -1. Notice that this is still the default behavior if the maximum degree is omitted.
  • All deprecations related to the reference frame transformations were removed.
  • The Orbit structure created when SPG4 were being initialized was not converting the semi-major axis from km to m. Notice that this was not affecting the propagation.
  • When using the API to initialize the J2 orbit propagator, the parameter n_0 is the mean motion, i.e. the mean angular velocity between two consecutive passages to the perigee. The algorithm obtained from Vallado's book, on the other hand, seems to consider that n_0 is the rate of change of the mean anomaly. Hence, we must subtract the time-derivative of the perigee in order to make the algorithms compatible.
  • Treat special cases when converting orbital elements to state vector (position and velocity). (Issue #25)
  • The package now supports the entire IAU-2006/2010 theory (CIO approach).
  • It is now possible to compute the satellite ground trace using the function ground_trace.
  • J4 orbit propagator. This new propagator considers the perturbation terms J2, J2², and J4.
  • Many general orbit analysis functions now support perturbation terms up to J4.
  • The function angvel_to_a can be used to convert the orbit mean motion into the semi-major axis.
  • The satellite state vector can now be represented by the structure SatelliteStateVector, which can be initialized by the function satsv.
  • The satellite state vector can be convert between all the supported reference frames using svECItoECI, svECItoECEF, svECEFtoECI, and svECEFtoECEF. Notice that this conversion take into account the Earth rotation rate when applicable.
  • The user can now select the maximum order that will be used when computing the Legendre associated functions or they derivatives.
  • The function kepler_to_rv can now receive an instance of Orbit as input.
  • All colors are now handled by Crayons.jl.
  • Many conversion of reference frames using the API can now be called without the EOP data, leading to the default IAU-76/FK5 theory. (Issue #12)
  • Improve printing functions of Orbit and TLE. (Issue #21)

v0.5.1

08 Feb 19:09
Compare
Choose a tag to compare
  • The gravity model computations were neglecting the input variable n_max and were using always the maximum available degree. (Issue #22)
  • dlegendre function was accessing unallocated data if the maximum degree is 1.
  • New function in the orbit propagators API: propagate_to_epoch!. (Issue #20)

v0.5.0

27 Dec 17:04
Compare
Choose a tag to compare
  • The NRLMSISE-00 configuration is not handle by a Dict anymore. The configuration is now based on a new structure called NRLMSISE00_Flags. This reduced the execution time of the algorithm by 50%.
  • The macro @check_orbit that verifies whether an orbit is valid now returns a boolean instead of throwing an exception. This provided a huge performance gain in the functions that use it.
  • The function GeodetictoECEF now returns an SVector. This yielded a performance gain of 27%. The igrf12 function now always returns an SVector.
  • All the functions related to the Sun (sun_position_i and sun_velocity_i) now returns an SVector.
  • All deprecated functions that were defined prior to this version were removed.
  • The frame transformations API were simplified by removing the variable that specified the model. The IAU2000A theory will be initially implemented using the CIO approach. Hence, the model that must be used can be inferred only by looking the selected frames and the EOP data. The old style functions are now deprecated. (Issue #18)
  • The function satellite_orbit_compute_f is now deprecated in favor of M_to_f. (Issue #16)
  • The Orbit structure returned by propagate! function was not being copied before the assignment. Hence, if an array of instants was passed, then all the returned values would have the same Orbit structure.
  • The low level functions related to the J2 orbit propagator were not being exported.
  • The conversion from ECEF to Geodetic had an bug due to the singularity in the poles.
  • The conversion from Julian Day to DateTime by the function JDtoDate was fixed.
  • The function JDtoDate was not allowing the month to be 12. Hence, when the month was December, then it was returning 0. (Issue #19).
  • The IAU2000A EOP data was not being parsed correctly.
  • The Sun position algorithm was computing a slightly wrong value.
  • The initial version of the package documentation is now available.
  • The EOP data is now downloaded by the package RemoteFiles.jl. This modification was required because the HTTP.jl package was failing to download EOP data for some reason, since the request was returning the 403 error code. This is a temporary workaround until the issue #2 is fixed.
  • A new generic parser to ICGEM files was added. Hence, the user can now load any ICGEM file to compute the gravitational force. (Issue #17)
  • It was added an algorithm to compute the Sun velocity vector.
  • The exponential atmospheric model was added.
  • The Jacchia-Roberts 1971 atmospheric model was added.
  • The Jacchia-Bowman 2008 atmospheric model was added.
  • It was added the support to automatically fetch the necessary files to compute many space indices, like F10.7, Kp, Ap, etc.
  • The macro @evalpoly is now used every time a polynomial must be evaluated, which provides a small performance gain and also uses a more stable algorithm.
  • Huge performance increase. In the following, it is presented the reduction of the computational time in some functions:
    • legendre (conv): 40.6% faster.
    • dlegendre (conv): 42.6% faster.
    • rECEFtoECI (ITRF -> GCRF): 99.5% faster.
    • rECItoECEF (GCRF -> ITRF): 99.5% faster.
    • rECEFtoECEF (ITRF -> PEF): 99.8% faster.
    • rECItoECI (MOD -> GCRF): 99.8% faster.
    • GeodetictoECEF: 71.6% faster.
    • Two body orbit propagator: 99.8% faster.
    • J2 orbit propagator: 99.8% faster.
    • SGP4 orbit propagator: 8.2% faster.
    • compute_g (full EGM96): 18.3% faster.
    • nrlmsise00: 76.3% faster.
    • igrf12 (geocentric): 11.2% faster.
    • igrf12 (geodetic): 98.6% faster.
    • sun_position_i: 20.2% faster.
    • angvel: 59.3% faster.
    • compute_ss_orbit_by_ang_vel: 90.8% faster.
    • list_ss_orbits_by_rep_period: 79.4% faster.
  • The space indices required by the atmospheric models can now be automatically fetched.
  • Improvements in the function documentation.

v0.4.0

09 Oct 01:43
Compare
Choose a tag to compare
  • Fix warnings due to new syntax of the package Interpolations.jl.
  • Fix remaining compatibilities issues with Julia v1.0.
  • Changes in orbit propagators:
    • propagate! can now receive one single epoch.
    • All functions related to the orbit propagators uses SVector. This led to a huge performance gain in API function propagate!. However, this can break existing code, because the array returned by propagate! is now an array of SVector{3,T} instead of an array of Vector{T}.

v0.3.2 - Bug fix release

16 Sep 13:59
Compare
Choose a tag to compare
  • Fix compatibility issues with Parameters.jl v0.10.
  • Improve performance of propagate! functions by fixing type-stability issues.
  • ECEFtoGeodetic now accepts AbstractVector as input.