Formeln für Sateliten-Tracking

Status
Es sind keine weiteren Antworten möglich.

circushund

Aktives Mitglied
Hi,
Titel sag's schon, kennt jemand eine Seite, wo man Formeln für Sateliten-Tracking bekommt, sprich das man mittels TLE-Daten zB. ISS Überlfüge bestimmen könnte?

As usual any help greatly appreciated :)


 
Hallo Donald,

Suche mal nach "Satellitenbahnelement" in der Wikipedia. Die Quelle Nr. 2 enthält den ganzen Formelapparat, inklusive Testfälle. Laut der Wikipedia-Seite wird am häufigtsen das SGP4-Modell verwendet.

Hierfür gibt es sogar fertige Sourcecodes --> Link

Viele Grüße und Erfolg,
Tom
 
Hallo Thomas,
ja danke für link und Tips,
wichtigste ist erstmal die TLE Daten einzulesen.
Dann lässt sich daraus die Bahnelemente errechnen(Orbit im Raum) doch dann muss das Ganze in topozentrische RA/dec Daten umgerechnet werden, damit ich es auf eine Sternkarte abbilden kann.

 
Hallo Donald,

ich denke, dass Du mit einer Keplerbahn alleine keine ausreichende Genauigkeit erreichen kannst. Die Bahnebene einer Satellitenbahn dreht sich aufgrund der Abplattung der Erde, was einige Grade pro Tag ausmachen kann. Denke an einen präzedierenden Kreisel, das ist ein ganz gutes Bild dafür. Der Effekt ist nicht mehr zu vernachlässigen wennn es halbwegs passen soll!

Viele Grüße,
Tom
 
aha!
ja, aber die Excentrität ist ja pro Epoche in den TLE Daten mit angegeben.
Ich weiss schon, das eine Satellitenbahn nicht perfekt ein Kreis ist :).
Nach dem SGP4-Modell, was ich ja von dir hab, lässt sich die Bahn für Satelliten unter 225.Min UZ in etwa auf 1km genau angeben. Bei einem Satelliten in 300m Höhe sind das dann in etwa 0.2 deg/Grad.

Für mich ist in erster Linie interessant, welche Berechnungs-Schritte ich gehe?
Vor allen das Umrechnen der verschiedenen Grössen ist immer lästig finde ich, m/s -> km/h usw. usw.





 
Hi Donald,

ich meinte nicht die Exzentrizität der Bahn. Durch die Abplattung der Erde dreht sich die Bahnebene des Satelliten --> die Länge des aufsteigenden Knotens verändert sich von Tag zu Tag sehr deutlich! Diese Knotenwanderung tritt auch bei einer Kreisbahn auf.

Gruß,
Tom
 
Hallo Thomas,
..aha, der Knoten wandert.
Zum Verständnis: Die Bahn-, Orbitform eines Satelliten wird ja durch die Exzentrität geschrieben. Dann gibt es den Perigäum = nächster Punkt zur Erde und Apogäum=Erfernster Punkt.
Der Orbit des Satelliten wird ja nun bezgl. des Äquators bzw. Himmelsäquator beschrieben, wobei der aufsteigende Knoten der Punkt ist, wo sich die Inklination des Satelliten mit dem Horizont schneidet. Sie wird glaub ich gegen den Uhrzeigersinn vom Frühlingspunkt aus in Winkelmass gemessen.
Und du meinst nun, das sich durch die Perputation(Bahnstörung) sich nun der Knoten verschiebt oder rumwackelt?.
Eine nächste Sache die ich mir noch nicht genau erklären kann, ist der Radiusvektor. Angeblich ist das ja die Entfernung zum Erdmittelpunkt(bzw. Brennpunkt), die ein Satellit zur Zeit t hat. Aber die Erde ist ja keine genaue Kugel, weshalb ja die topozentrische Entfernung (Erdoberfläche-Satellit) demnach nicht durch Erdradius-Radiusvektor beschrieben werden kann -oder?





 
Zitat von circushund:
Und du meinst nun, das sich durch die Perputation(Bahnstörung) sich nun der Knoten verschiebt oder rumwackelt?.
Ja, genau das. Der Knoten bewegt sich aber nicht vor und zurück, sondern monoton in eine Richtung.
Eine nächste Sache die ich mir noch nicht genau erklären kann, ist der Radiusvektor. Angeblich ist das ja die Entfernung zum Erdmittelpunkt(bzw. Brennpunkt), die ein Satellit zur Zeit t hat. Aber die Erde ist ja keine genaue Kugel, weshalb ja die topozentrische Entfernung (Erdoberfläche-Satellit) demnach nicht durch Erdradius-Radiusvektor beschrieben werden kann -oder?
Auch das stimmt. Den topozentrischen Ortsvektor (Beobachter-Satellit) bekommst Du, wenn Du vom Radiusvektor den geozentrischen Orts des Beobachters abziehst. Beim geozentrischen Ort des Beobachters geht die Erdabplattung ein.

Inzwischen müsste ich mich selbst wieder in die ganze Thematik einlesen. Da habe ich den Faden wirklich verloren. Du weißt ja, was inzwischen meine Themen sind. Wenn ich die Satellitengeschichte verstehen wollte, würde ich mir den Code von Bill Gray runterladen, das Programm bauen und mich im Debugger durchwühlen, Schritt für Schritt. Alles mit dem Dokument für die "Propagation" aus der Wikipedia (Link 2) vergleichen und die gewonnenen Erkenntnisse gleich als Kommentare in den Sourcecode aufnehmen. Bei Bills Programm würde ich davon ausgehen, dass es korrekt rechnet - damit ist der Ausgangspunkt ja viel besser als eine eigene Implementierung, der man zunächst einmal noch nicht trauen kann.

Gruß,
Tom
 
Hi Donald und Thomas,

ein Blick auf "Satellite Orbits" von Oliver Montenbruck kann hierbei auch nicht schaden. Grandioses Buch :super: .
Allerdings darf man sich nicht von Differenzial und Integralrechnung erschrecken lassen ;)

Gruß Alex (VectorSCOPE)

P.S @Thomas, mittlerweile habe ich den "SkyMapViewer" mit Teleskopmodulen á la Eigenbau versorgt. War zwar mühselig aber dafür konnte ich mal wieder was lernen ;)
 
Hi Donald,

Zitat von circushund:
Dort ist auch FORTRAN-Code, kann den aber nicht wirklich lesen..?
In meiner ersten Antwort habe ich zu C++ Sourcecode von Bill Gray verlinkt. Dort gibt's auch ein Hauptprogramm und TLE-Beispieldaten, mit denen Du testen kannst. Nach Bills Erklärung auf der Webseite hat er den FORTRAN-Kram portiert und ein paar kleine, dokumentierte Korrekturen vorgenommen.

Bei dem FORTRAN-Code in der Originalquelle handelt es sich um FORTRAN 4 oder FORTRAN 77. Damit musste ich mich früher auch mal rumschlagen. Als Kenner aktueller Programmiersprachen hat man damit wirklich keine Freude, denn diese alten Versionen lassen die Lochkartenära sehr deutlich durchschimmern. Am schlimmsten sind die auf sechs Zeichen begrenzten Namen für Variablen und Subroutines. Damit müssen Quelltexte immer mehr oder weniger kryptisch bleiben. Neuere FORTRAN-Versionen haben solche Nachteile natürlich längst behoben.

Gruß,
Tom
 
Hallo Thomas,

meinst Du mit "Teleskopmodul" eine Teleskopansteuerung?
Jawollja ;) .Ich konnte mittlerweile LX200 und NexSTAR Protokoll implementieren und mit diversen Teleskopen durchtesten. Funktioniert recht ordentlich. Ich habe mir einige Zeit überlegt "Ascom" einzubauen, habe mich aber dann doch für den "harten Weg" entschieden :cool: Wenn ich kann, brat ich mir lieber "eine eigene Wurst" dann weiß ich wenigstens wenn ich prügeln muß, wenn etwas mal nicht funktioniert. Und greifbar bin ich dann sogar auch noch :D

Auf jeden Fall vielen Dank für Deine Unterstützung!
Die "Satellitensache" interessiert mich auch ich werde hier im Thread weiterlesen :super:

Gruß Alex (VectorSCOPE)
 
Hallo Thomas,

hmm, bzgl. des Fortran-code, ist evtl. nicht soooo schwer.
Müsste bloss die Syntax ein bisschen verstehen.

** ist wohl die Potenz ?
bei den "if" Statements
.EQ. = equals;
.LT. = less then?
.GE. = greater equals?? weiss nicht
.GT. = greater then?
mit den "GO TO" springt man ja zu der Zeile, lässt dann alles dazwischen aus oder?

hmm, im grunde rattert das eh so runter, mal schaun ob ich das hinbekomme..

 
Hi Donald,

ja, ist alles wie Du vermutest. Wenn ich mich recht erinnere, gibt im Uralt-Fortran irgendeinen GOTO-Befehl, der drei Sprungmarken (Zeilennummern) als Parameter nahm. Bei < geht der Sprung zur ersten Marke, bei = zur zweiten und bei > zur dritten. Ich meine, das heisst "Arithmetic If" oder so ähnlich.

Aber warum schaust Du Dir nicht den C++ Code von Bill Gray an? Ich glaube der ist viel leichter zu verstehen. Oder findest Du C/C++ noch schlimmer als Fortran?

Ich lerne grade Objective-C (für's iPhone), das ist echt eine vogelwilde Syntax >>:-0 Wie ein Mischmasch aus C und Smalltalk, garniert mit Elementen die wie C++ aussehen, aber damit nix zu tun haben.

Gruß,
Tom
 
Hi ihr Zwei ;)

Wenn ich mir meinen "Compilerschrank" ansehe dann sind die Pakete mit den C-Entwicklungsumgebungen diejenigen, die noch wie neu aussehen :D

vogelwilde Syntax >>:-0 Wie ein Mischmasch aus C und Smalltalk
DAS ist genau das Problem. Jede Hardwarebude (ob die nun Apple oder Siemens oder sonstwie heißt) konstruiert sich einen Compiler für ihr neues Spielzeug (Handy ;) ) und gibt die Entwicklungsumgebung an ein paar "Freaks" raus die sich dann die Zähne daran ausbeißen dürfen. Allerdings sind diese dann zumindest eine Zeitlang "unentbehrlich". Lesbarkeit und Wartungsfreundlichkeit? Hä, was ist das?. Getreu dem Motto:Mein Code gehört mir, den hat gefälligst auch sonst niemand zu verstehen ;) Witzig wird es dann, wenn man selber nach 5 Jahren aufgefordert wird eine Änderung am eigenen Code durchführen zu dürfen und man festellt das das "Objektive C" mehr nach "Subjective C" aussieht und man den eigenen Code nicht mehr entziffern kann ;) By the way: Da fällt mir grade das hardgecodete URL-Problem eines Telekom Router/Modems für die Dyndns Update Funktion beim Dienstleister Dyndns.ORG ein.In irgendeinem Speedport Modem/Router der Telekom (glaube 700W) gibt es jetzt ein drastisches Problem da Dyndns.ORG ein Änderung des Zugangs durchgeführt hat. Das ist so ein Fall wo etliche Tausend User jetzt abgehängt sind und 100% kein Mensch mehr dafür zuständig ist... (siehe Heise-Forum)

Zurück zur Astronomie:
Habt ihr mal geguckt wie lange das Air Force Space Command "CelesTRAK" noch authorisiert TLE Daten unters Volk bringen zu dürfen?. ;)
Ich habe schon seit Jahren einen Space-Track Account beim AFSC, der verbietet aber explizit die Nutzung und Verbreitung von TLE Daten, AUCH in graphischer Form z.b für Predictions.
Für die ISS ist das wohl kein Problem. Für einen Programmierer der vorhat seine Predictions der Öffentlichkeit zugänglich zu machen und neben der ISS noch ein paar weitere Satelliten integrieren will, kann (und wird) es hier Probleme geben. Ob sich der Aufwand dann noch lohnt? ?)

Gruß Alex (VectorSCOPE)
 
Hallo Thomas,

Ja, objective-C hab ich auch mal angefangen :) ist aber recht Complex. Mochte XCode als Programmierumgebung recht gerne, machte eine recht aufgeräumten Eindruck. Inwiefern sich c bzw c++ Code nativ dort einbinden lässt, weiss ich nicht, objective-c ist auf jeden Fall ein eigener Syntax, für MAC native Desktop Anwendungen aber das A und O :). Irgendwann werd ich vielleicht auch mal wieder eine App (versuchen) zu bauen, fand es aber schon recht komplex, zumal ich keinerlei c noch c++ Kenntnisse habe.

..ich merke grade, das es "GoTo" in Actionscript nicht mehr geht...aaaaahhh, das macht die Sache jetz kompliziert.

@ Varyonyx,
hmm, naja ich weiss nicht, Dokumentation gibt es schon für jede API, zumindest jede mit der ich je Programmiert hab. Die meisten Dokus haben auch einige Programmierbeispiele (ist zumindest bei Actionscript so) usw.
Hilfefenster(mit der kleinen Lupe) sind (zumindest beim Mac) auch überall zu finden. Und wenn ich ganz ehrlich bin, für eine standartisierte Welt-Programmiersprache nach DIN-Norm, die überall enthalten ist, wäre ich auch nicht. Evtl. kommt C++ dem Nahe aber wozu? Menschen sind individuell, Programmiersprachen auch.

















 
Zuletzt von einem Moderator bearbeitet:
Zitat von Varyonyx:
Witzig wird es dann, wenn man selber nach 5 Jahren aufgefordert wird eine Änderung am eigenen Code durchführen zu dürfen und man festellt das das "Objektive C" mehr nach "Subjective C" aussieht und man den eigenen Code nicht mehr entziffern kann ;)

"Subjective-C" --> prima! Aber "vogelwilde Syntax" heißt ja nicht gleich unleserliche Programme. In der Mac-Welt ist Objective-C das Mittel der Wahl. Die Sprache ist ein (allerdings sehr intelligent gemachter) objektorientierter Aufsatz auf C. Was mir nicht gefällt ist die historisch bedingte Notwendigkeit, in Programmen z.B. mit Grafikfunktionen das alte C-style API (mit Pointern und allem Bohei) benutzen zu müssen und das dann mit den modernen objektorientierten Aufrufen des Cocoa Frameworks vermischen zu müssen. Aber Cocoa gefällt mir sehr gut, das ganze Konzept von Framework und Interface Builder ist weitaus besser als der ganze Kram mit dem ich es bisher zu tun hatte.

@Donald: man kann mit Xcode auch C und C++ Sourcen in Projekten verwenden. Ich habe mir zu Lernzwecken vorgenommen, mal mein altes Programm OCCULT (Suche von Sternbedeckungen durch den Mond) auf dem iPhone zu implementieren. Die Rechenroutinen brauche ich dafür nicht portieren, sondern brauche mich "nur noch" um Oberfläche und eine Grafik kümmern. Ich muss noch bei E&T ein paar Hausaufgaben machen, dann gehe ich mal das iPhone-Lernprojekt an. Ich will vor allem ein Gefühl dafür bekommen, wo noch Schwierigkeiten bestehen und wie lange sowas dauert.

Viele Grüße,
Tom
 
Hallo Thomas,
ich hab mir übrigens auch mal die iPhone SDK runtergeladen. Bin dann aber relativ schnell ausgenüchtert, das man ja zum Testen der Software am einjähringen "Developer Programm" bei Apple teilnehmen muss, was 99$ kostet. Naja, gut das der Dollar grad niedrig steht :), aber trotdem wollte ich mir keine user-id besorgen, da ich eben Obective-C noch nicht kann.

Aha, ist ja interessant, dann geht das also, das man C/C++ code direkt einbinden kann. Ich steig da, wie gesagt noch nicht wirklich durch, auch mit den ".m" und ".h" Dateien, wofür ist das ?:). Falls du irgendwas zum Testen hast, gib einen Link, kennst mich ja, bzgl. GUI schau ich da gerne mal drauf..;).



 
Hallo Donald,

"h": Deklarationen (= Vereinbarungen) von Schnittstellen (H -> Header, wie in C üblich)

"m": Definitionen (= Implementierungen) der Klassen oder Funktionen (entspricht .c bei C und .cpp o.ä. bei C++)

Ich würde Dir nicht raten, ohne Kenntnisse von C bei Objective-C einzusteigen! C++ Kenntnisse sind nicht notwendig, für Objective-C sogar eher irreführend. Einige Syntaxelemente sehen in Objective-C nämlich so ähnlich aus wie völlig andere Sachen in C++. Beispiel: die spitzigen Klammern bedeuten in Obj-C, dass eine Klasse ein Protokoll adoptiert (= wenigstens in den nicht optionalen Teilen implementiert), in C++ wäre es aber die Syntax für ein Template (also ein Typ als Parameter).

Weitere Komplikationen in der iPhone-Welt: es gibt (wie in C und C++) keine Garbage Collection. Speicherverwaltung ist also komplett Deine Sache. C-Programmierer wird das nicht weiter stören, denn sie sind es ja so gewohnt. Und: wehe Dir, wenn Du nicht weißt, was Zeiger sind und wie man damit umgeht. Wiederum für C- und C++ Programmierer ein alter Hut, aber für die VB-, Java- und Skriptsprachenprogrammierer ein zeimlicher Horror. Auf Hardware mit begrenzten Ressourcen ist es schon angebracht, straff und sparsam (also relativ low level) heranzugehen. Wenn Du mit Obj-C für einen großen Mac programmierst, dann gibt es wohl Garbage Collection. Die entsprechenden Kommandos schaden in einem Source fürs iPhone zwar nicht, aber es wird daraus kein Code erzeugt.

Wenn Du die 99$ fürs Developer Program nicht bezahlst, kannst Du immerhin die ersten Schritte mit dem Simulator machen. Für ein Kennenlernen der Grundlagen reicht das erst einmal. Wenn allerdings die Anwendung auf Dein Gerät soll, musst Du blechen. Dafür hast Du aber dann auch die Möglichkeit schon bezahlt, Deine Anwendungen im AppStore zu vertreiben.

Gruß,
Tom
 
ja mit der Garbage Collection...sag mal, jetz sind wir von den Satelliten-Formel zu Garbage Collection gekommen..? häääh:)
Jau, ist aber ein anderes Thema..

 
Zuletzt von einem Moderator bearbeitet:
Zurück zum Thema,

war grad drausen mit dem GoSatWatch und hab auch(obwohl der Skyview da relativ klein ist) einen Überflug relativ gut Sichten können unzwar wohl ein Raketenteil SL-3 R/B.
Hmm, schon faszinierend, was man mit dem iPodTouch so alles machen kann, aber diese Programm ist wirklich faszinierend, da es auch die Positionen in Echtzeit updatet.
Ich hoffe die Enwickler bauen da noch Sernbilder in den "Skyview" mit ein, dann geht die Orientierung noch flotter, da ich den Nordhimmel eigentlich eh auswendig kann.







 
OK, ein bisschen Code:

Ich bin grad dabei den FORTRAN Code auseinander zu klabüsern.
Dabei hab ich den Code nun so umgestellt.
Dabei hab ich eine Frage zur Kepler-Geleichung:
Unzwar ist der Teil der Kepler Gleichung im while-Teil dh. er verlässt die While-Schleife nicht bevor NICHT die Bedingung ähh oder ist es jetz andersrum?

EPW-TEMP2 <= E6A

erfüllt ist, wobei E6A ein sehr kleine Zahl ist = 1.0E-6.



..das GOTO macht noch weitere Probleme, Programmiererleben ist hart :)

// LONG PERIOD PERIODICS
var AXN=E*Math.cos(OMEGA)
var TEMP=1.0/(A*BETA*BETA)
var XLL=TEMP*XLCOF*AXN
var AYNL=TEMP*AYCOF
var XLT=XL+XLL
var AYN=E*Math.sin(OMEGA)+AYNL

// SOLVE KEPLERS EQUATION
var CAPU=FMOD2P(XLT-XNODE)
var TEMP2=CAPU

var EPW:Number;
var TEMP2:Number;

while( Math.abs(EPW-TEMP2) <= E6A ){
var SINEPW=Math.sin(TEMP2)
var COSEPW=Math.cos(TEMP2)
var TEMP3=AXN*SINEPW
var TEMP4=AYN*COSEPW
var TEMP5=AXN*COSEPW
var TEMP6=AYN*SINEPW
EPW=(CAPU-TEMP4+TEMP3-TEMP2)/(1.0-TEMP5-TEMP6)+TEMP2
TEMP2=EPW
}
 
Status
Es sind keine weiteren Antworten möglich.
Zurück
Oben