SatelliteToolbox.jl now supports IAU-2006/2010 model

Hi guys!

Just want to announce that with the latest set of commits, SatelliteToolbox.jl now supports the entire IAU-2006/2010 theory (CIO approach). The code is 100% written in Julia without requiring external libraries. Hence, we can now convert between the ITRF (International Terrestrial Reference Frame), TIRS (Terrestrial Intermediate Reference System), CIRS (Celestial Intermediate Reference System), and GCRF (Geocentric Celestial Reference Frame):

julia> using SatelliteToolbox

julia> eop_IAU2000A = get_iers_eop(:IAU2000A);
[ Info: Downloading file 'EOP_IAU2000A.TXT' from ''.

julia> rECEFtoECI(ITRF(), GCRF(), DatetoJD(2019,01,06,19,19,19), eop_IAU2000A)
3×3 StaticArrays.SArray{Tuple{3,3},Float64,2,9}:
  0.812412    -0.583082     0.00181818
  0.583083     0.812413    -2.58543e-5
 -0.00146204   0.00108116   0.999998

julia> rECEFtoECI(TIRS(), GCRF(), DatetoJD(2019,01,06,19,19,19))
3×3 StaticArrays.SArray{Tuple{3,3},Float64,2,9}:
  0.81241     -0.583084     0.00181924
  0.583085     0.812411    -2.67249e-5
 -0.00146239   0.00108248   0.999998

julia> rECEFtoECI(Quaternion, TIRS(), GCRF(), DatetoJD(2019,01,06,19,19,19))
  + 0.9519479180208995 - 0.0002912996378267129.i - 0.0008618194548032777.j - 0.3062586060626267.k

As usual, the rotations can be represented by DCMs or Quaternions. I did not tag a new version yet because I need to check the performance first (type stability, etc.). I also did not provide a way to convert between frames from different models, e.g. from TOD to CIRS. Help is welcome :slight_smile:


I am working on the conversions between arbitrary frames in AstroBase.jl :+1: