Per python c’è pyephem… Sono in ferie dalla famiglia, ma magari nel weekend ci faccio un tentativo.
No no, io sono sempre stato Aperol Flight
E chi era Teflon Flight?
Prima che vado avanti, ho calcolato le distanze ogni secondo per 5 minuti, vedi se ci siamo capiti bene su quello che vuoi:
Per farlo per 24 ore devo trovare un formato più intelligente, non posso fare 86400 righe di excel…
Se poi sei soddisfatto ti mando lo script di GMAT e ti dico come ho estratto i dati. Considera che uso questo programma da circa 24 ore, quindi non c’è molta eleganza nelle funzioni.
Yes, è proprio quello che mi serve!
86400 righe in Excel non sono più un problema, da quando Windows è a 64 bit.
Comunque a me basta un punto ogni minuto.
Come hai estratto le posizioni da GMAT?
Non mi ricordo, report file, qualcosa del genere, che figuri negli output. Ma lunedì appena apro il computer di nuovo ti do tutti i dettagli.
Buon weekend
Ah ecco, cliccando col destro nella cartella Output di Resources basta fare add - Report file.
E poi il file esce nel tab “Output” a destra, dopo Resources e Mission dopo che fai un run con F5.
Ho usato due report file diversi che ho unito nel foglio di lavoro, perché le epoche da cui ho preso i dati sono diverse (3 minuti di differenza) e non riesco a fare un unico run con i due satelliti insieme.
Senti, sono a un passo dalla soluzione finale perfetta, ma ne ho una approssimata bene, può andare lo stesso? Ho fatto il 99%, l’ultimo 1% mi richiede troppo tempo.
Ho aggiornato il file condiviso, c’è solo un problema che non riesco a risolvere per l’epoca sfasata: alla fine la distanza tra i due satelliti è tra le posizioni prese a 11 secondi di differenza.
Alla fine è meglio impararsi python per bene e fare come dice il buon vecchio @Mike.
Ho fatto un vago tentativo nel weekend, scoprendo che pyephem è discontinued.
L’alternativa è skyfield, con cui sono riuscito a scaricare i TLE, ad avere coordinate geocentriche di entrambi, ma la differenza tra le due non mi da una distanza (ovviamente posso calcolarla manualmente, ma sembra un lavoro per la libreria )
Non aiuta che non ho familiarità con i vari formati delle coordinate.
Ok ho qualcosa di funzionante, ma la distanza è nello stesso ordine di grandezza, ma diversa (47k vs 48k) del tuo (@vespiacic) in excel.
Che TLE hai usato?
Create Spacecraft EutelSAT9B;
GMAT EutelSAT9B.DateFormat = UTCGregorian;
GMAT EutelSAT9B.Epoch = ‘21 Aug 2019 08:20:26.000’;
GMAT EutelSAT9B.CoordinateSystem = EarthMJ2000Eq;
GMAT EutelSAT9B.DisplayStateType = Keplerian;
GMAT EutelSAT9B.SMA = 42164.00000000003;
GMAT EutelSAT9B.ECC = 0.0002899999999999806;
GMAT EutelSAT9B.INC = 0.06229999999892783;
GMAT EutelSAT9B.RAAN = 5.45060000000001;
GMAT EutelSAT9B.AOP = 170.761699999986;
GMAT EutelSAT9B.TA = 31.77670000001409;
Create Spacecraft Sentinel1A;
GMAT Sentinel1A.DateFormat = UTCGregorian;
GMAT Sentinel1A.Epoch = ‘21 Aug 2019 08:16:15.000’;
GMAT Sentinel1A.CoordinateSystem = EarthMJ2000Eq;
GMAT Sentinel1A.DisplayStateType = Keplerian;
GMAT Sentinel1A.SMA = 7072.999999999997;
GMAT Sentinel1A.ECC = 0.0001199999999990654;
GMAT Sentinel1A.INC = 98.18259999999999;
GMAT Sentinel1A.RAAN = 15.97579999999997;
GMAT Sentinel1A.AOP = 85.91330000020717;
GMAT Sentinel1A.TA = 274.3062999997928;
Ugh, devo riconvertire in TLE per confrontare.
Gli orari nell’excel sono UTC?
Ho preso i dati da qui:
Confido vivamente data la serietà del sito che sono UTC.
Per trovare i TLE ho trovato questo che è molto completo:
https://www.celestrak.com/NORAD/elements/
Allora, per vedere se il vostro tool funziona, approcciamo il problema in maniera “scientifica” e creiamo uno scenario di riferimento, così da poter confrontare i vari risultati.
Prima di tutto bisogna farlo con i TLE aggiornati ad oggi 27.08.2019, perché quelli vecchi non li trovo più.
EUTELSAT 9B:
1 41310U 16005A 19239.13868775 .00000051 00000-0 00000+0 0 9995
2 41310 0.0510 77.7728 0003410 175.8661 140.3653 1.00273690 13180
https://celestrak.com/satcat/tle.php?INTDES=2016-005
SENTINEL-1A:
1 39634U 14016A 19239.17320253 -.00000006 00000-0 84923-5 0 9992
2 39634 98.1822 245.3821 0001288 85.2357 274.8989 14.59198327287509
https://celestrak.com/satcat/tle.php?INTDES=2014-016
Se uso i TLE di oggi per un calcolo per il 21 agosto, è tutto sballato perché i TLE sono troppo imprecisi. Tra l’altro per il 21 agosto STK mi dà un buco tra le 07:55 e le 08:31, quindi non riesco proprio a paragonare i miei dati con quelli del file Excel condiviso sopra, che sono alle 08:21.
Quindi, con STK, ho fatto uno scenario per le seguenti date:
27.08.2019 08:00:00 UTC
28.08.2019 16:00:00 UTC
Questo è l’output che mi dà STK (metto solo la prima mezz’ora e poi allego tutto il file):
Time (UTCG) | Azimuth (deg) | Elevation (deg) | Range (km) |
---|---|---|---|
27 Aug 2019 08:00:00.000 | 255.180 | -80.907 | 39295,83344 |
27 Aug 2019 08:01:00.000 | 252.034 | -81.065 | 39009,23217 |
27 Aug 2019 08:02:00.000 | 248.702 | -81.236 | 38739,13968 |
27 Aug 2019 08:03:00.000 | 245.168 | -81.416 | 38486,94881 |
27 Aug 2019 08:04:00.000 | 241.414 | -81.602 | 38253,97422 |
27 Aug 2019 08:05:00.000 | 237.429 | -81.789 | 38041,4373 |
27 Aug 2019 08:06:00.000 | 233.200 | -81.972 | 37850,45587 |
27 Aug 2019 08:07:00.000 | 228.724 | -82.147 | 37682,02998 |
27 Aug 2019 08:08:00.000 | 224.004 | -82.307 | 37537,03249 |
27 Aug 2019 08:09:00.000 | 219.051 | -82.449 | 37416,19695 |
27 Aug 2019 08:10:00.000 | 213.889 | -82.567 | 37320,1104 |
27 Aug 2019 08:11:00.000 | 208.552 | -82.657 | 37249,20462 |
27 Aug 2019 08:12:00.000 | 203.086 | -82.715 | 37203,75199 |
27 Aug 2019 08:13:00.000 | 197.546 | -82.741 | 37183,86113 |
27 Aug 2019 08:14:00.000 | 191.990 | -82.732 | 37189,47648 |
27 Aug 2019 08:15:00.000 | 186.478 | -82.690 | 37220,37883 |
27 Aug 2019 08:16:00.000 | 181.065 | -82.615 | 37276,18879 |
27 Aug 2019 08:17:00.000 | 175.800 | -82.513 | 37356,37213 |
27 Aug 2019 08:18:00.000 | 170.718 | -82.385 | 37460,24672 |
27 Aug 2019 08:19:00.000 | 165.844 | -82.238 | 37586,99222 |
27 Aug 2019 08:20:00.000 | 161.192 | -82.075 | 37735,65962 |
27 Aug 2019 08:21:00.000 | 156.765 | -81.902 | 37905,18406 |
27 Aug 2019 08:22:00.000 | 152.561 | -81.723 | 38094,39617 |
27 Aug 2019 08:23:00.000 | 148.569 | -81.544 | 38302,03655 |
27 Aug 2019 08:24:00.000 | 144.776 | -81.367 | 38526,76782 |
27 Aug 2019 08:25:00.000 | 141.165 | -81.197 | 38767,18959 |
27 Aug 2019 08:26:00.000 | 137.720 | -81.037 | 39021,85012 |
27 Aug 2019 08:27:00.000 | 134.422 | -80.889 | 39289,26051 |
27 Aug 2019 08:28:00.000 | 131.255 | -80.756 | 39567,90633 |
27 Aug 2019 08:29:00.000 | 128.201 | -80.639 | 39856,2582 |
27 Aug 2019 08:30:00.000 | 125.244 | -80.540 | 40152,78391 |
Satellite-EUTELSAT_9B_41310-To-Satellite-SENTINEL-1A_20190827-28_AER.xlsx (73,5 KB)
Ecco, ho capito perché STK non mi mostra le distanze: hai fatto un calcolo in un periodo in cui i due satelliti non erano in visibilità tra di loro
Ho inserito in STK questi parameteri orbitali che hai postato e ho fatto una simulazione per il 21.08.2019, questo è quello che esce:
Ti metto qui sotto le distanze calcolate da STK, con i tuoi parameteri orbitali e per il passaggio delle 08:35 UTC del 21.08.2019.
Però questi TLE cominciano ad essere vecchiotti. Quindi consiglio di usare il mio post sopra (con i TLE di oggi) per fare ulteriori verifiche.
PS: oggi sono stato a casa con la febbre, quindi ho avuto un sacco di tempo per giocare con le orbite
Time (UTCG) | Azimuth (deg) | Elevation (deg) | Range (km) |
---|---|---|---|
21 Aug 2019 08:35:18.230 | 283.413 | -81.325 | 44768,0219 |
21 Aug 2019 08:36:18.000 | 282.420 | -81.093 | 44369,34822 |
21 Aug 2019 08:37:18.000 | 281.424 | -80.889 | 43959,80509 |
21 Aug 2019 08:38:18.000 | 280.419 | -80.716 | 43542,40034 |
21 Aug 2019 08:39:18.000 | 279.399 | -80.574 | 43118,69264 |
21 Aug 2019 08:40:18.000 | 278.355 | -80.465 | 42690,30578 |
21 Aug 2019 08:41:18.000 | 277.280 | -80.389 | 42258,92476 |
21 Aug 2019 08:42:18.000 | 276.165 | -80.349 | 41826,29291 |
21 Aug 2019 08:43:18.000 | 275.002 | -80.344 | 41394,20791 |
21 Aug 2019 08:44:18.000 | 273.779 | -80.377 | 40964,51692 |
21 Aug 2019 08:45:18.000 | 272.487 | -80.446 | 40539,11066 |
21 Aug 2019 08:46:18.000 | 271.112 | -80.553 | 40119,91639 |
21 Aug 2019 08:47:18.000 | 269.641 | -80.697 | 39708,88974 |
21 Aug 2019 08:48:18.000 | 268.055 | -80.878 | 39308,00509 |
21 Aug 2019 08:49:18.000 | 266.334 | -81.095 | 38919,24427 |
21 Aug 2019 08:50:18.000 | 264.455 | -81.347 | 38544,58578 |
21 Aug 2019 08:51:18.000 | 262.386 | -81.633 | 38185,98833 |
21 Aug 2019 08:52:18.000 | 260.094 | -81.949 | 37845,37851 |
21 Aug 2019 08:53:18.000 | 257.533 | -82.292 | 37524,6317 |
21 Aug 2019 08:54:18.000 | 254.650 | -82.659 | 37225,55726 |
21 Aug 2019 08:55:18.000 | 251.380 | -83.044 | 36949,87734 |
21 Aug 2019 08:56:18.000 | 247.643 | -83.440 | 36699,21081 |
21 Aug 2019 08:57:18.000 | 243.345 | -83.839 | 36475,05139 |
21 Aug 2019 08:58:18.000 | 238.379 | -84.230 | 36278,75169 |
21 Aug 2019 08:59:18.000 | 232.635 | -84.602 | 36111,50264 |
21 Aug 2019 09:00:18.000 | 226.013 | -84.939 | 35974,3193 |
21 Aug 2019 09:01:18.000 | 218.461 | -85.224 | 35868,02447 |
21 Aug 2019 09:02:18.000 | 210.026 | -85.439 | 35793,23719 |
21 Aug 2019 09:03:18.000 | 200.893 | -85.569 | 35750,36305 |
21 Aug 2019 09:04:18.000 | 191.403 | -85.603 | 35739,58794 |
21 Aug 2019 09:05:18.000 | 181.985 | -85.537 | 35760,87521 |
21 Aug 2019 09:06:18.000 | 173.047 | -85.378 | 35813,96636 |
21 Aug 2019 09:07:18.000 | 164.873 | -85.140 | 35898,38529 |
21 Aug 2019 09:08:18.000 | 157.594 | -84.839 | 36013,44593 |
21 Aug 2019 09:09:18.000 | 151.211 | -84.494 | 36158,26286 |
21 Aug 2019 09:10:18.000 | 145.651 | -84.120 | 36331,76534 |
21 Aug 2019 09:11:18.000 | 140.805 | -83.731 | 36532,71171 |
21 Aug 2019 09:12:18.000 | 136.563 | -83.339 | 36759,70867 |
21 Aug 2019 09:13:18.000 | 132.821 | -82.953 | 37011,2277 |
21 Aug 2019 09:14:18.000 | 129.491 | -82.581 | 37285,62674 |
21 Aug 2019 09:15:18.000 | 126.497 | -82.227 | 37581,16706 |
21 Aug 2019 09:16:18.000 | 123.779 | -81.898 | 37896,03503 |
21 Aug 2019 09:17:18.000 | 121.285 | -81.595 | 38228,35797 |
21 Aug 2019 09:18:18.000 | 118.974 | -81.323 | 38576,22423 |
21 Aug 2019 09:19:18.000 | 116.812 | -81.082 | 38937,69704 |
21 Aug 2019 09:20:18.000 | 114.770 | -80.875 | 39310,83155 |
21 Aug 2019 09:21:18.000 | 112.823 | -80.701 | 39693,68754 |
21 Aug 2019 09:22:18.000 | 110.951 | -80.562 | 40084,34033 |
21 Aug 2019 09:23:18.000 | 109.137 | -80.457 | 40480,89345 |
21 Aug 2019 09:24:18.000 | 107.364 | -80.385 | 40881,48639 |
21 Aug 2019 09:25:18.000 | 105.619 | -80.347 | 41284,30282 |
21 Aug 2019 09:26:18.000 | 103.888 | -80.342 | 41687,57712 |
21 Aug 2019 09:27:18.000 | 102.159 | -80.367 | 42089,59988 |
21 Aug 2019 09:28:18.000 | 100.422 | -80.423 | 42488,72236 |
21 Aug 2019 09:29:18.000 | 98.664 | -80.507 | 42883,36003 |
21 Aug 2019 09:30:18.000 | 96.874 | -80.619 | 43271,99538 |
21 Aug 2019 09:31:18.000 | 95.040 | -80.756 | 43653,18004 |
21 Aug 2019 09:32:18.000 | 93.152 | -80.917 | 44025,5363 |
21 Aug 2019 09:33:18.000 | 91.196 | -81.100 | 44387,75822 |
21 Aug 2019 09:34:18.000 | 89.158 | -81.303 | 44738,61185 |
21 Aug 2019 09:34:24.582 | 88.929 | -81.327 | 44776,35979 |
Confermo che il mio metodo ritorna esattamente la stessa distanza (al km, dopo la virgola cambia).
L’az/el è dal punto di vista del Sentinel?
Quello riesco a calcolarlo solo per punti sulla superficie terrestre…
Ma hai implementato anche una libreria che propaga i TLE?
Cioè dai TLE hai estratto le coordinate in base a data/ora e poi hai calcolato le distanze?
E cosa hai usato?
Sono curioso
Dipende da come è settato in STK.
In questo caso, visto che l’elevation è -80° direi che è quella di E9B (che dalla GEO guarda in basso verso la LEO).
Ho usato Skyfield.
import skyfield
import numpy
from skyfield.api import Topos, load
ts = load.timescale()
satellites = load.tle('https://celestrak.com/NORAD/elements/geo.txt')
eutelsat9b = satellites['EUTELSAT 9B']
print(eutelsat9b)
satellites = load.tle('https://celestrak.com/NORAD/elements/resource.txt')
sentinel1a = satellites['SENTINEL-1A']
print(sentinel1a)
eut=eutelsat9b.at(ts.utc(2019,8,27,8,0,0)).position.km
sen=sentinel1a.at(ts.utc(2019,8,27,8,0,0)).position.km
print(numpy.linalg.norm(eut-sen))
def dist(x,y):
return numpy.sqrt(numpy.sum((x-y)**2))
print(dist(eut,sen))
Risultato
EarthSatellite 'EUTELSAT 9B' number=41310 epoch=2019-08-24T20:45:41Z
EarthSatellite 'SENTINEL-1A' number=39634 epoch=2019-08-25T11:00:50Z
39295.57437764145
39295.57437764145
(provavo 2 metodi diversi per calcolare la distanza euclidea tra i due vettori, ma sono identiche, come si vede)
Ho trovato come fare per avere azimuth e elevazione (in questo caso da Sentinel a Eutelsat, mi pare che sia più utile no? Chi fa il tracking?)
subpoint = sentinel1a.at(ts.utc(2019,8,27,8,0,0)).subpoint()
difference = eutelsat9b - subpoint
az, el, distance = difference.at(ts.utc(2019,8,27,8,0,0)).altaz()
print('Azimuth:', az)
print('Elevation:', el)
print('Distance:', distance.km)
Output
Azimuth: 19deg 17' 06.8"
Elevation: 150deg 54' 38.9"
Distance: 39295.57437756731
edit: Temo che az ed el siano invertiti