File Exchange

image thumbnail

IERS4m

version 1.0.0.0 (2.06 MB) by Abel Brown
Celestial to Terrestrial transformation (i.e. MJ2000 to ECEF)

5 Downloads

Updated 17 Aug 2015

From GitHub

View license on GitHub

Pure MATLAB implementation of the Celestial to Terrestrial coordinate transformation which can be used to convert position, velocity, and acceleration between MJ2000 and ECEF reference frames.
These classes facilitates the CIO based celestial to terrestrial transformation (see figure). The main function is GCRS2ITRS which provides the 3x3 celestial to terrestrial transformation matrix. In order to obtain the necessary EOP information use helper object USNO.m.
There is a detailed write up in the docs/latex folder which explains this transformation in detail as well as explains the matrix formulation implemented in MATLAB. All relevant references are listed in the References section. Select papers are avaliable in the docs/refs folder.
Default 2010 IERS convention.

Tests:
Run unit tests via: UnitTests.exe()

Example Usage:

% date time UTC: 2004/04/06 07:51:28.386
fMJD_UTC = 53101.3274118751;

% init EOP object
eopobj = USNO();

% pull latest EOP data from USNO servers
eopobj.initWithFinalsHttp();

% interpolate EOP information for date and time
[xp,yp,du,dt] = eopobj.getEOP(fMJD_UTC);

% Vallado et al. 2006, AIAA [meters]
X_itrs = [-1033.4793830, 7901.2952754, 6380.3565958]';

% dx,dy = 0 [meters]
X_gcrs = [5102.5089592, 6123.0114033, 6378.1369247]';

% compute the 3x3 transformation matrix
GC2IT = IERS.GCRS2ITRS(fMJD_UTC,dt,du,xp,yp);

% perform the coordinate/position conversion: C -> T
X = GC2IT*X_gcrs;

% compute the error in meters
err = sum(sqrt((X-X_itrs).^2))

References:

IERS 2010
www.iers.org/IERS/EN/Publications/TechnicalNotes/tn36.html

IERS 2003
www.iers.org/IERS/EN/Publications/TechnicalNotes/tn32.html

IERS FTP
ftp://tai.bipm.org/iers/conv2010/chapter5/
ftp://maia.usno.navy.mil/conv2010/chapter5/

SOFA Library

Main:
http://www.iausofa.org

Time Reference Cookbook:
http://www.iausofa.org/2012_0301_C/sofa/sofa_ts_c.pdf

Validation Routines:

C:
http://www.iausofa.org/2012_0301_C/sofa/t_sofa_c.c

FORTRAN:
http://www.iausofa.org/2012_0301_F/sofa/t_sofa_f.for

Tutorial:
www.iausofa.org/publications/sofa_pn.pdf

NOVAS Comparison:
www.dtic.mil/cgi-bin/GetTRDoc?AD=ADA543243

David Vallado, Seago J., Seidelmann P., Implementation Issues
Surrounding the New IAU Reference Systems for Astrodynamics,
AIAA, AAS 06-134, 2006

Cite As

Abel Brown (2021). IERS4m (https://github.com/softwarespartan/IERS4m), GitHub. Retrieved .

Comments and Ratings (1)

Chaoyang Zhang

it is faster than SOFA matlab.
bugs:
for the velocity rotation, one should not use the DS2R, which is defined by the solar day instead of the sidereal day. The real earth rotation rate is around 7.29e-5 instead of 7.27e-5. A simple way to verify, using the IERS.ERA to calculate epoch t and t+1second and subtract one from another and you can get the earth rotation rate.
The annotation for the EOP parameters are wrong but the code is correct. e.g. du is UT1-UTC.

To make it faster, in USNO
one may add one more line at the end of the function:
function this = initWithFinalsHttp (this,kind)

% save the EOP2000finalall.txt
save('EOP2000finalall.txt','data','-ascii')

end

replace this.bullA=this.initWithFinalsHttp(); in

function this = initWIthEOPdata(this,opt)

this.bullA=load('EOP2000finalall.txt');
end

MATLAB Release Compatibility
Created with R2015a
Compatible with any release
Platform Compatibility
Windows macOS Linux

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

docs