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 'https://datacenter.iers.org/data/latestVersion/224_EOP_C04_14.62-NOW.IAU2000A224.txt'.
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))
Quaternion{Float64}:
+ 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