How to propagate orbits on a non-rotating axesm globe

8 ビュー (過去 30 日間)
Kurt
Kurt 2024 年 9 月 6 日
編集済み: Kurt 2024 年 9 月 26 日
I used as my foundation the example found here:
As described, I plotted a radar dome on a axesm globe.
Now I want to display satellite orbits. For that, I used the orbital propagation model found here:
This model uses a TLE file to generate a set of ephemeris tables containing XYZ coordinates for a satellite at 60-second intervals.
[positionSGP4,velocitySGP4] = states(satSGP4);
positionSGP4 = 3x2881
10^7 x
-2.5292 -2.5313 -2.5334 -2.5353 -2.5373 ...
0.6924 0.6848 0.6772 0.6695 0.6619
3.1681 3.1583 3.1484 3.1384 3.1284
I took this XYZ coordinate data and rotated it sideways, and added a time column to create an ephemeris table. I converted it to latitude and longitude, then I used it to plot satellite coordinates on my axesm earth globe.
What I found was that the satSGP4 orbit propagator model has a built-in rotating Earth model, while my axesm Earth model does not. A precessing, Sun-synchronous polar orbit works its way around the satSGP4 model every 24 hours, while with my axesm Earth model, it just keeps retracing the same path in longitude. Mind you, there is nothing in the positionSGP4 data to account for orbital precession. Something else is making it happen.
I tried biasing the longitude values based on time and got a reasonable-looking, precessing plot, but it is still out of phase with the SGP4 propagator model.
Question: is there something built into the propagator model that takes into account Earth's siderial rotation? How do I apply that to my non-rotating Earth model?
I don't want to go down the Satellite Communications Toolkit approach. I already have a working radar system, up to this point.
  1 件のコメント
Kurt
Kurt 2024 年 9 月 9 日
編集済み: Kurt 2024 年 9 月 26 日
Does this require an ECI to ECEF coordinate transformation, or is there some other issue? I think the positionSGP4 data is in the GCRS reference frame.
Answer: Yes. You must convert the ephemeris data using the eci2ecef function, then ecef2aer.

サインインしてコメントする。

回答 (1 件)

Kurt
Kurt 2024 年 9 月 26 日
SOLUTION:
In order to convert a TLE set to ephemeris data, you must first read a TLE file and perform several coordinate transformations on the propagated output. In general terms, you must transform the TLE output from ECI (Earth Coordinates Inertial) to ECEF (Earth Coordinates Earth Frame), and then to Az/El/Range local coordinates. It is also possible to convert ECI directly to Lat/Lon/Alt.
% lat0 = site latitude (degrees)
% lon0 = site longitude (degrees)
% h0m = site altitude (meters)
propTime = datetime('2024:241:13:26:00.000'); % year, day of year, hours minutes seconds
spheroid = referenceEllipsoid('wgs84');
tleStruct = tleread('TLEfile.tle'); % read a TLE file
% Dissect the propagation time into its individual components
utc = [propTime.Year propTime.Month propTime.Day propTime.Hour propTime.Minute propTime.Second];
% Propagate the TLE data forward to the specified time
[r,v] = propagateOrbit(propTime, tleStruct);
% Convert the ECI data to ECEF
[r_ecef,v_ecef,a_ecef] = eci2ecef(utc,r,v);
% Convert the ECEF data to Az/El/Range
[az, el, range] = ecef2aer(r_ecef,v_ecef,a_ecef, lat0, lon0, h0m, spheroid, 'degrees' );
% Convert the ECI data to Lat/Lon/Alt
lla = eci2lla([r_ecef,v_ecef,a_ecef],utc);
This example will propagate an entire TLE file forward to the specified time. In order to propagate a single satellite, create a .tle file with just that one satellite and run the code. You can also propagate over an elapsed time by adding a loop and repeatedly propagating on the initial time plus some delta time. This will create an ephemeris table which you can use to plot orbits.

カテゴリ

Help Center および File ExchangeEarth and Planetary Science についてさらに検索

製品


リリース

R2023b

Community Treasure Hunt

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

Start Hunting!

Translated by