Releases: JuliaSpace/SatelliteToolbox.jl
Releases · JuliaSpace/SatelliteToolbox.jl
v0.6.5
SatelliteToolbox v0.6.5
- 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 typeTLE
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:
- Update OptionalData (#36) (@helgee)
- Install TagBot as a GitHub Action (#37) (@JuliaTagBot)
v0.6.4
- 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
- A bug in eclipse time computation was fixed.
- The function
ground_station_visible
now acceptsSVector
. (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 withOrbitPropagatorJ4
. (PR #31) - The function
JDtoDate
now uses the native functionjulian2datetime
to convert between Date to Julian date represented inDateTime
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
v0.6.1
- 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, theREQUIRE
file was removed, and the registration process is now handled by Registrator.jl.
v0.6.0
- 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 functionOrbit
, 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 thatn_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 functionsatsv
. - The satellite state vector can be convert between all the supported reference frames using
svECItoECI
,svECItoECEF
,svECEFtoECI
, andsvECEFtoECEF
. 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 ofOrbit
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
andTLE
. (Issue #21)
v0.5.1
v0.5.0
- The NRLMSISE-00 configuration is not handle by a
Dict
anymore. The configuration is now based on a new structure calledNRLMSISE00_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 anSVector
. This yielded a performance gain of 27%. Theigrf12
function now always returns anSVector
. - All the functions related to the Sun (
sun_position_i
andsun_velocity_i
) now returns anSVector
. - 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 ofM_to_f
. (Issue #16) - The
Orbit
structure returned bypropagate!
function was not being copied before the assignment. Hence, if an array of instants was passed, then all the returned values would have the sameOrbit
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 functionJDtoDate
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
- 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 functionpropagate!
. However, this can break existing code, because the array returned bypropagate!
is now an array ofSVector{3,T}
instead of an array ofVector{T}
.
v0.3.2 - Bug fix release
- Fix compatibility issues with Parameters.jl v0.10.
- Improve performance of
propagate!
functions by fixing type-stability issues. ECEFtoGeodetic
now acceptsAbstractVector
as input.