[ANN] SatelliteToolbox v0.6.3

Hi!

I have just tagged the v0.6.3 of SatelliteToolbox.jl (it should be accepted soon, the PR can be seen here). This is a very interesting release. The modifications were:

  • A bug in eclipse time computation was fixed.
  • The function ground_station_visible now accepts SVector.
  • 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.
  • 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.

The most interesting part was, for sure, the algorithm to compute the ground station access. For example, if you want to know when the Brazilian satellite SCD-1 will have access to the Brazilian ground station at CuiabΓ‘, you just need to:

# Define the ground station.
cuiaba = (deg2rad(-15.55500), deg2rad(-56.0696), 273.03)

# Define the propagator.
tle = tle"""
SCD 1
1 22490U 93009B   19283.72957809  .00000231  00000-0  13179-4 0  9999
2 22490  24.9691 136.4834 0042805 261.1830 162.1761 14.44560213407992
"""

orbp = init_orbit_propagator(Val{:sgp4}, tle[1])

# List the accesses during 2 days.
list_ground_station_accesses(orbp, cuiaba, 2*86400, TEME(), PEF(), ΞΈ = 5*pi/180)

leading to:

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚ Access # β”‚ Beginning (UTC)         β”‚ End (UTC)               β”‚ Duration [min] β”‚
β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€
β”‚        1 β”‚ 2019-10-10T22:57:32.66  β”‚ 2019-10-10T23:05:54.075 β”‚          8.357 β”‚
β”‚        2 β”‚ 2019-10-11T00:41:36.595 β”‚ 2019-10-11T00:53:52.822 β”‚         12.270 β”‚
β”‚        3 β”‚ 2019-10-11T02:27:40.489 β”‚ 2019-10-11T02:40:09.275 β”‚         12.480 β”‚
β”‚        4 β”‚ 2019-10-11T04:14:42.492 β”‚ 2019-10-11T04:26:17.149 β”‚         11.578 β”‚
β”‚        5 β”‚ 2019-10-11T06:01:34.032 β”‚ 2019-10-11T06:13:04.633 β”‚         11.510 β”‚
β”‚        6 β”‚ 2019-10-11T07:47:44.417 β”‚ 2019-10-11T08:00:09.721 β”‚         12.422 β”‚
β”‚        7 β”‚ 2019-10-11T09:33:56.086 β”‚ 2019-10-11T09:46:23.688 β”‚         12.460 β”‚
β”‚        8 β”‚ 2019-10-11T11:21:34.239 β”‚ 2019-10-11T11:30:47.698 β”‚          9.224 β”‚
β”‚    MIN 9 β”‚ 2019-10-11T22:09:51.491 β”‚ 2019-10-11T22:16:30.49  β”‚          6.650 β”‚
β”‚       10 β”‚ 2019-10-11T23:53:14.971 β”‚ 2019-10-12T00:05:14.082 β”‚         11.985 β”‚
β”‚   MAX 11 β”‚ 2019-10-12T01:39:02.105 β”‚ 2019-10-12T01:51:40.532 β”‚         12.640 β”‚
β”‚       12 β”‚ 2019-10-12T03:25:58.731 β”‚ 2019-10-12T03:37:44.508 β”‚         11.763 β”‚
β”‚       13 β”‚ 2019-10-12T05:12:58.174 β”‚ 2019-10-12T05:24:22.434 β”‚         11.404 β”‚
β”‚       14 β”‚ 2019-10-12T06:59:15.646 β”‚ 2019-10-12T07:11:28.356 β”‚         12.212 β”‚
β”‚       15 β”‚ 2019-10-12T08:45:22.226 β”‚ 2019-10-12T08:57:56.066 β”‚         12.564 β”‚
β”‚       16 β”‚ 2019-10-12T10:32:33.561 β”‚ 2019-10-12T10:42:46.681 β”‚         10.219 β”‚
β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€
β”‚          β”‚                         β”‚          Minimum access β”‚          6.650 β”‚
β”‚          β”‚                         β”‚             Mean access β”‚         11.234 β”‚
β”‚          β”‚                         β”‚          Maximum access β”‚         12.640 β”‚
β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€
β”‚          β”‚                         β”‚            Total access β”‚        179.738 β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

It is also possible to compute the accesses to multiple stations and to obtain merged accesses times, i.e. like they are one (see the keyword reduction of the function ground_station_accesses).

There are also another new feature: a way to compute the geomagnetic field using a simplified dipole model geomag_dipole. This is useful for computations that does not require high accuracy, because the model is blazing fast.

4 Likes