ASTRA2 FAQ und HOWTO

Revision 0.28 vom 11.12.2004 von Holger Jakob

Inhaltsverzeichnis:

1. Kurzanleitungen und Checklisten.
2. Wie führt man mit ASTRA2 eine Starpoint-Session durch? Was muß dabei beachtet werden?
3. Wie fittet man die Daten der letzten Starpointing-Session?
4. Wie startet man ASTRA2? Was muß hierbei beachtet werden?
5. Warum wird mit dem Array-Empfänger die Sonne als primäre Pointingquelle verwendet und nicht Jupiter?
6. Welche Zusatzprogramme gehören zu ASTRA2? Sind sie Bestandteil des Fahrprogramms?
7. Wie funktioniert das Pointing-Modell beim Array-Empfänger? Wie wird es bestimmt?
8. Was macht das Programm linescan?
9. Welche Files machen beim modularen FILE-IO was?
10. Wann benötigt man die Fit-Programme rotfit,edgefit und starpointfit?
11. Was muss der Beobachter zum Messen mit dem Array wissen?

1. Kurzanleitungen und Checklisten.

(noch unvollständig)

Switch JANSKY->ASTRA2:

Switch ASTRA2->JANSKY:

Pointingcheck an der Sonne oder am (Voll)mond:

Pointingcheck an einem Planeten:

Determine the rotator axis of SMART on the sun:

Messung der Nasmythrotation an einem Planeten:

Sternpointing:

Pointingcheck an einem Stern:

Korrektur des Alignments zwischen optischer und Radiobeam-Achse:

(Dieser Punkt ist nur dann sinnvoll, wenn zuvor sowohl das optische als auch das Radiopointing überprüft wurden und das aktuelle Nasmyth-Modell korrekt arbeitet)

Synchronisation der Atomuhr auf das GPS-Gerät:

2. Wie führt man mit ASTRA2 eine Starpoint-Session durch? Was muß dabei beachtet werden?

Das optische Sternpointing sorgt dafür, daß das Teleskop und deren mechanischen Teile mit einem theoretischen Modell beschrieben werden, sodaß die geforderten Himmelskoordinaten mit hoher Genauigkeit getroffen werden. Aufgrund der optischen Auflösung der bei KOSMA verwendeten CCD-Kamera und dem harmonischen Pointingmodell mit 20 Konstanten liegt die bestmögliche Treffgenauigkeit bei 3-5 Bogensekunden rms.

Die systematischen Abweichungen werden an bekannten Sternpositionen bestimmt und die Abweichung zur Sollposition in Azimut und Elevation protokolliert. Dies geschieht mit Hilfe des Zusatzprogramms starpoint, daß auf allem Maschinen mit gemounteten NFS funktioniert.

Usage: starpoint [OPTIONS]
Starpoint session program
Options:
        -h, --help           this text
        -i, --input          File from where star catalog is read.
                             Default is fk5.dat
        -d, --distance d     Minimal distance in degree. Default is 5.00
        -f, --factor f       Exposure time factor. Default is 1.00
        -t, --test           Test-Mode. No CCD images will be made.
        -n, --nearest-star   Search for the nearest star from the
                             current position.
        -a, --azimuth a      Search at this azimuth for nearest star
        -e, --elevation e    Search at this elevation for nearest star
        -m, --magnitude m    Minimum magnitude of stars. Default is 3.0
        -s, --scale          Takes some images of a star(includes -n) to find
                             the aspect ratio and the rotation angle of the
                             CCD.
        -w, --wait sec       Wait sec seconds before exposing image. Default is 10.0.

Send bugs to jakob@ph1.uni-koeln.de
starpoint wählt sich die hellsten sichtbaren Sterne aus einem Stern-Katalog aus und überträgt deren Position an ASTRA. Jeder Stern wird per CCD aufgenommen und die x-y-Position abgespeichert. Dazu muß das Programm C:\CCD\point\point auf dem GARP-PC(bzw. der CCD-PC bei Verwendung der neuen Kamera) und das Tool ccd auf dem ASTRA-PC gestartet worden sein. Per Default findet starpoint etwa 50 Sterne. Sollen diese Vorgaben verändert werden, so kann starpoint per Option (siehe "--help") etwa die Dichte der Sterne oder deren minimale Helligkeit anpassen. Weitere Optionen erlauben es, nach nahegelegenen Sternen zu suchen(starpoint bezieht sich dabei auf die aktuell getrackte Position), um das Pointing an dieser Stelle zu checken oder das Fahren eines Rechtecks, um die Geometrie des CCD und dessen Drehwinkel zu messen. Leider ist die Positionierung per Stern-Name noch nicht möglich.

Während einer Sesstion sollte unbedingt beachtet werden, daß das(oder die) Inklinometer ausgelesen wird (Programm incl) und daß die Kuppel mitfährt(Programm dome). Vor Beginn der Session ist es sinnvoll erst auf den ersten Stern zu tracken(mit CTRL-C unterbrechen) und die Position des Sterns auf der Aufnahme an die Position 100,100 zu bringen, indem die Pointing-Offsets verändert werden. Dies hat den Vorteil, daß alle Sterne innerhalb des Bildes liegen sollten und nach der erfolgreichen Session werden alle sowieso auf diese Position nachgeführt.

Die Pointing-Offsets können in der Datei KOSMA_astra_port.in in Bogensekunden ver&andert werden. Dies ist auf jeden Fall nach einer erfolgreichen und übernommenen Session zu tun(am einfachsten mit astra_select), da das neue Modell die Offsets 0,0 erwartet.

Es kann besonders zum Ende der Session(nach >1 Stunde) vorkommen, daß das Teleskop in Azimut manchmal etwas rückwärts(CCW) fährt, da sich der Himmel dann weitergedreht hat und die vorher berechneten und danach sortierten Azimut- und Elevationswinkel nicht mehr stimmen. Das Programm endet, sobald die letzte Position bestimmt worden ist. Der Beobachter sollte auch während der Session anwesend sein und die gemachten Aufnahmen kontrollieren, da die nicht gefundenen Sterne(bei Bewölkung) zur Zeit nicht aussortiert werden.

3. Wie fittet man die Daten der letzten Starpointing-Session?

Das Programm starpointfit ließt immer die letzte Session ein(Datei KOSMA_starpoint.out. Immer nach einer Session per Hand Backups der Datei machen!). Die Daten enthalten die Sollposition Azimut und Elevation und die gemessenen Offsets in Pixel (dx,dy). Beim Einlesen wird zunächst eine Geometriekorrektur des CCD vorgenommen (aus KOSMA_ccd.scale) und dann das alte bei der letzten Session verwendete Pointingmodell subtrahiert (dessen Konstanten ebenfalls mitgespeichert wurden). Durch diese "Restaurierung" der Daten wird sichergestellt, daß die Pointingsession nicht ohne Modell gemacht werden müssen, da dann einige Sterne über den Rand des CCD herausfallen könnten. Das theoretische Modell, daß zur Zeit aus harmonischen Funktionen mit 20 Koeffizienten besteht, wurde teilweise theoretisch und teilweise empirisch abgeleitet. Durch Linearisierung des Problems kann ein lineares Gleichungssystem aufgestellt werden und durch Matrixinversion gelöst werden. Die Lösung besteht aus den neuen Pointing-Koeffizienten(in KOSMA_point.out), die die gemessenen Offset optimal anfitten. ASTRA2 kann diese Konstanten als neues Modell übernehmen, wenn diese in KOSMA_point.in eingetragen werden.

starpointfit schreibt außerdem die zwei zum alten Fahrprogramm kompatible Dateien pont.inp und ponttab.out. Erstere kann auf der Jansky mit dem alten Fitprogram pont(zur Kontrolle) eingelesen werden und die zweite Datei ist der zugehörige Output, das mit Greg näher analysiert werden kann. Greg ist auf dem ASTRA-PC vorhanden(Befehl greg) und auch die zwei Scripte poifit.greg und scatter.greg(welche mit "@scriptname" zu starten sind). Von beiden Plots sollten Hardcopies gemacht werden(über "hardc file.ps /device ps fast"), wenn die Pointing-Konstanten in ASTRA2 übernommen worden sind. Die Übernahme in ASTRA2 wird mit der Option "-w" aktiviert. Achtung:Die Pointingoffsets müssen noch mit astra_select -a 0 -e 0 gesetzt werden.

4. Wie startet man ASTRA2? Was muß dabei beachtet werden?

ASTRA2 bildet das Herzstück des Fahrprogramm-Systems, denn es setzt die Wünsche des Beobachters in das instumentspezifische Koordinatensystem um. ASTRA2 setzt direkt auf die Hardwareschicht auf, die aus Teleskop-PC und -Schaltschrank besteht. Dank der Modularität ist ASTRA2 ein eigenständiges Programm, daß über eine serielle Leitung mit dem Teleskop-PC kommuniziert und diesen sekündlich mit neuen Koordinaten versorgt. Aufgrund dieser zeitkritischen Kommunikation wurde ASTRA2 auf einem eigenen PC unter Linux ausgelagert.

Gestartet wird ASTRA2 einfach mit dem Befehl astra. Dies geschieht am einfachsten mit einem VNC-Viewer. Sobald der ASTRA-PC hochgefahren wurde, läßt sich der VNC-Server des Users observer mit astra.unibe.ch:2 ansprechen.

Nach Programmstart startet ASTRA2 mit einem Status-GUI(in tcl/tk). Nun kommt es darauf an, in welchem Modus sich der Teleskop-PC befindet. Im Regelmodus wird direkt auf die Defaultposition(im Moment ist dies Polaris) gefahren, welche bei KOSMA immer um die 0 Grad Azimut und 46 Grad Elevation steht. Falls die Koordinaten aus der letzten Messung übernommen werden sollen, kann ASTRA2 mit der Option "--input" gestartet werden. Alle andere Variablen (z.B. Pointingkonstanten) werden per FILE-IO eingelesen, was mit der Option "--default" übergangen werden kann.

Falls das Teleskop-PC Programm tcp noch im Stand-By-Modus läuft, muß starttel ausgeführt werden. Dies geschieht entweder über die Console(Programm cmd), mit dem eigenständigen Programm starttel oder über den Button "Starttel". Da während der starttel-Prozedur zuerst die Zeitsynchronisierung stattfindet, sollte zuerst mit /usr/sbin/ntpq -p gecheckt werden, daß die Offsets des ASTRA-PCs zu den anderen NTP-Servern(besonders zum HOPF-Server) nicht mehr als 100ms betragen, da der Teleskop-PC in einem sehr engen Zeitfenster auf die nächsten Koordinaten wartet(Probleme erkennt man auf dem Teleskop-PC-Monitor an den Meldungen "data false" oder "timedif = -1" und auf dem Astra-GUI oben rechts). Nach der Synchronisierung werden die Nullmarken gesucht. Da diese Prozedur nur in CCW(counter clockwise) erfolgt, sollte das Teleskop vorher per Hand sowohl in Azimut als auch in Elevation CW bewegt werden. Nach Ablauf dieser Startprozedur wird der Regelmodus aktivert und das Teleskop fährt auf die eingestellen Koordinaten.

Falls das GUI nicht benötigt wird(weil z.B. kein Display verfügbar ist), hilft die Option "--nogui". Hägt ASTRA2 aus irgendeinem Grund(ASTRA-Button blinkt nicht) oder läuft ein Parameter Amok, so kann ASTRA jederzeit mit "CTRL-C" oder "killall astra" abgebrochen werden. Es werden in beiden Fällen alle geforkten Subprozesse mitgekillt und die Lock-Datei "/tmp/astra_lock" gelöscht. Der erneute Aufruf sollte dann erstmal mit den Defaults geschehen (also keine --input Option).

5. Warum wird mit dem Array-Empfänger die Sonne als primäre Pointingquelle verwendet und nicht Jupiter?

Wegen der geringen Durchlässigkeit der Erdatmosphäre in den Empfangsbändern des Array-Empfängers(um 490 und 810 GHz) wird die Auswahl an Pointing-Quellen stark eingeschränkt. Als Quellen kommen somit nur helle Planeten, der Mond oder die Sonne in Frage. Die Sonne hat durch ihre Ausdehnung am Himmel von ca. 31' und einen scharfen Rand den Vorteil leicht von allen Pixeln des Arrays gefunden zu werden. Wird die Randkrümmung mit in der Auswertung beachtet, ist die Sonne sogar die beste Pointingquelle, da sie praktisch jeden Tag zur Verfügung steht und das auch dann, wenn die Wetterbedingungen astronomische Messungen unmöglich machen(sprich die atmosphärische Opazität über 2 liegt). Als nachteilig erweist es sich, wenn ein großerer Elevationsbereich benötigt wird, der nur im Sommer zur Verfügung steht, wenn noch kein Submm-Wetter herrscht.

Bedingung ist allerdings, daß die Genauigkeit der Sonnenephemeriden(incl. dem genauen Sonnendurchmesser) von maximal 5 Bogensekunden sich um das rms des Sternpointings bewegt. Auch muß bedacht werden, ob bei 31' Sonnendurchmesser die differentielle Refraktion am unteren und oberen Rand vernachlässigt werden kann. Diese liegt bei 20 Grad Elevation jedoch gerade mal bei etwa 4 Bogensekunden, was beim mehr als 10 Mal größeren Beams am Rand der Messgenauigkeit liegt.

6. Welche Zusatzprogramme gehören zu ASTRA2? Sind sie Bestandteil des Fahrprogramms?

ASTRA2 ist nicht selbst das KOSMA-Fahrprogramm, wohl aber ein Teil des neuen Fahrprogrammsystems. Im Programmpacket von ASTRA2 liegen eine Reihe von Programmen bei, die einige der vielen Subsysteme von KOSMA steuern. Hier eine kurze Aufzählung der Systeme:

Teleskopsteuerung, Kuppel, CCD, Inklinometer, Tertiär- und Load-Spiegel, Temperatursensoren, Subreflektor, Wetterstation, Continuumbackend, AOS-Spektrometer, Empfänger, Rotator.

Viele dieser Systeme werden auf DOS-PCs über DECNET angesprochen und sind aus Sicherheitsgründen nur im Meßnetz erreichbar. Der ASTRA-PC bietet eine Schnittstelle über NFS und FILE-IO ins Beobachternetz. Ein Benutzer kann auf allen per NFS angeschlossenen Servern auf die Systeme zugreifen. Zu jedem Subsystem muß deshalb ein Pendant auf Linuxseite laufen, der Befehle und Statusinformationen auf FILE-IO ummappt. Der Vorteil liegt klar im Gewinn an Transparenz für High-Level-Programme, die sich nicht um die Zuordnung von Aufgaben zu einem PC zu kümmern brauchen(im alten VAX-Fahrprogramm wurden die Aufgaben von einem monolithischen Hauptprogramm wahrgenommen). Im neuen modularen Konzept arbeitet jedes Programm unabhängig und bereitet Daten und Messwerte soweit wie möglich auf, damit sich die High-Level-Weiterverarbeitung vereinfacht.

Insofern können sie als Teil des Fahrprogramm-Systems betrachtet werden, auch wenn das eigentliche High-Level-Userinterface des Fahrprogramms noch nicht existiert. Durch diesen Bottom-Up Ansatz wird eine Flexibilität erreicht, sodaß die Umgebung KOSMA leicht durch eine Umgebung SOFIA oder APEX ersetzt werden kann. Das entgültige Fahrprogramm wird dem Benutzer die Bedienung vereinfachen und die Interaktion mit den einzelnen Subsystemen vermeiden. In der Übergangsphase muss der Benutzer die Programme selbst starten, konfigurieren und beenden.
incl Das Programm incl öffnet eine TCP-Verbindung zum Teleskop-Support-PC und fordert jede Sekunde von den 3 Inklinometern (linker und rechter Nasmyth-Port und das Wall-Mounted, kurz 1L, 2R, 3W) die Neigungswerte in Bogensekunden an(die Temeraturkorrektur geschieht auf dem Support-PC). incl addiert die symmetrisch platzierten Inklinometerdaten, um Beschleunigungsspikes zu reduzieren und mittelt über die letzten 5 Sekunden. Da die Filter(Schalter an den Elektonik-Boxen) abgeschaltet sind, beruhigen sich die Messwerte sehr schnell auf den Endwert(die Spezifikationen der Inklinometer geben ein Einschwingverhalten unter einer Sekunde an). Für ASTRA2 interessant ist schließlich nur ein x,y-Messwertpaar, ganz egal, ob die Werte von einem realen oder virtuellem Inklinometer stammen. Nach 2 Sekunden erhält der Teleskop-PC und die Servoeinheiten die korrigierten Winkelpositionen. Auf der tcp-Statusanzeige ist dies an einem kleinen Sprung der Ist-Position zu sehen, der sich nach etwa einer weiteren Sekunde eingeregelt hat. Ein Beobachtungsprogramm sollte deshalb nach erreichen der Position etwa 5 Sekunden Wartezeit einkalkulieren. Auch wenn die ständige Aktualisierung etwas übertrieben erscheint, kann diese Methode das Driften während der Messung erkennen(der Tilt wurde bisher nur einmal zu Beginn bei einer Load gemessen). Vorsicht ist bei jeder Veränderung an den Inklinometern und dem Postprozessing geboten(z.B. bei einem Defekt an einem Sensor), da das Pointing-Modell auf das jeweilige Verhalten abgestimmt ist. Zur Zeit werden die Inklinometerwerte noch auf dem Support-PC um einen Temperaturfaktor korrigiert. Die Korrekturen sind jedoch so gering, daß in einem Temperaturbereich von -20 bis 20 Grad Celsius gerade mal 2 Bogensekunden Abweichung auftreten. Weiterhin wird das Vorzeichen der beiden realen Inklinometer angeglichen, sodaß beide leicht gemittelt werden können und ein Gerätebedingter Faktor auf Inklinometer 2R multipliziert.

Derzeitiger Stand ist, daß nur das linke Inklinometer verwendet wird (die Default-Option ist -s l).

dome dome ist relativ unkompliziert, da es nur noch die Kuppel- und die Spiegelsteuerung steuert. Dazu muß das Dome-PC Programm mit eingeschalteten Hauptschutz laufen. Die Kuppel dreht sich auf die neue Position, sobald ASTRA2 eine Quelle anfährt(erkennbar am neuen Cookie). Falls die Kuppel erst nachträglich auf die Position gedreht werden soll, etwa weil der Dome-PC nicht online war, dann hilft die Option --input.
swatch swatch ist im Augenblick nur dazu da die aktuelle Wetterdaten zu liefern. Zwar kann noch das Data-Ready-Signal geliefert werden, doch ist dies im Augenblick ohne Bedeutung für die neuen Systeme. swatch steuert auch das Setzen des S/R-Taktes.
ccd ccd ist die Schnittstelle zwischen Garp-PC(Lynx-CCD-Kamera) und FILE-IO. Für Sternpointing muß dieses Programm nach dem Programm point auf dem Garp-PC gestartet werden.
temp temp empfängt von der Temperatur-Messbox Messwerte u.a. von der Hot-Load und schreibt sie per FILE-IO aufs NFS. temp wird auf dem Teleskop-Support-PC gestartet, der die Daten über die serielle Schnittstelle einließt. Noch nicht installiert.
cobac cobac dient auf dem Teleskop-Support-PC oder dem Array-Empfänger-PC als Frontend für ein DAQ-Programm(array_cobac), daß bei jedem neuen Scan im Continuum-Modus(etwa per linescan ) genau zu Scanbeginn bis Scanende akiv wird und das Messprotokoll speichert. Ist nur für den DualBeam-Empfänger.
status.tcl Dieses Script hat sich als äußerst hilfreich erwiesen, da es nicht nur anzeigt welche Prozesse zur Zeit laufen, um den Überblick nicht zu verlieren, sondern es kann auch den laufenden Prozess per Knopfdruck stoppen und erneut starten. Dieses Script ist dann hilfreich, wenn man mal den Überblick über die zur Zeit laufenden Programme verloren hat, denn es zeigt an welche Daemons gerade aktiv sind, sodaß ein fehlendes Tools noch gestartet werden kann.
radiopoint.pl Dieses Perl-Script fährt einen Kreuzscan über die Sonne und gibt die Positionsoffsets des Array zurück. Erstes Argument ist der Rotatorwinkel in Grad, das zweite Argument die Scandauer. Das dritte Argument bestimmt den Quellnamen(@SUN oder @MOON).

Ohne Argument wird 2 mal 5 Minuten über die Sonne gefahren. Jeweils nach einem Scans zeigt das Script in xmgrace die gemessenen und die gefitteten Daten an. Nach schließen von xmgrace fährt das Script fort. Das Resultat wird am Ende zusammengestellt und zeigt, wie die Offsets der Pixel relativ zum getrackten Punkt am Himmel stehen.

radiopoint_planet.pl Leicht modifiziertes radiopoint.pl, um über Planeten zu scannen.

Man beachte, daß dieses Script die Wobbleramplitude von 180' als festen Offset eincodiert hat.

astra_select Dieses Programm kann einige Parameter für den Messbetrieb setzen, falls sich das Fahrprogramm nicht darum kümmert. Der Empfängerport muss gesetzt werden, um das richtige Pointingmodell für den jeweiligen Port zu aktivieren(speziell die Derotation des Beam-Rotators). Weiterhin kann ein Takt an die Taktselekt-Box gesendet werden, der z.B. bei Kontinuum-Messungen auf 1000ms und Kanal 0 stehen muss. Für astronomische Beobachtungen muss andererseits der Spektrometerkanal 5 aktiv sein, damit der Subreflektor korrekt auf der S- und R-Phase positioniert wird.
subref subref übernimmt zwei Aufgaben bei der Subreflektorsteuerung. Zum einen kann es über das File KOSMA_sub.in die Hexpod-Parameter neu setzen und zum anderen kann mit KOSMA_chop.in der Wobbler auf eine Frequenz und eine Amplitude(in Zählereinheiten) eingestellt werden. Amplitude 0 stoppt den Wobbler. Bei negativen Frequenzen wird auf einen externen Takt synchronisiert.
cmd cmd dient als DEBUG-Command-Shell für ASTRA2. Jede Zeile wird über eine DECNET-Verbindung an die Msg-Broker-Queue gesendet. Ein einfacher Interpreter in ASTRA2 startet bei jedem bekannten Schlüsselwort eine Aktion(Befehl ausführen, Variable lesen/schreiben).

Variablen werden mit der Syntax "name !" gelesen und mit "name argument" gesetzt, jedoch aktualisiert erst ein Update den neuen Wert für ASTRA2. "name ?" liefert eine kurze Beschreibung.

cmd ist auch begrenzt scriptfähig, da es mit der Option "-c command" auch nicht-interaktiv gestartet werden kann(da dieses Interface jedoch nur als Debug-Schnittstelle eingesetzt werden darf, ist hiervon abzuraten).

Die wichtigsten Commandos innerhalb von ASTRA2sind:

starttelTeleskop hochstarten(tcp muß laufen)
stoptelTeleskop in den Stop-Modus versetzen
u/updateVeränderte Variablen in ASTRA2 übernehmen.
up nPointing-Korrektur in +Elevation um n arcsec
down nPointing-Korrektur in -Elevation um n arcsec
left nPointing-Korrektur in +Azimut um n arcsec
right nPointing-Korrektur in -Azimut um n arcsec
get_regeltelRegelparameter lesen
set_regeltelRegelparameter setzen
turntelFalls Überlapp möglich, dann drehe +/- 360 Grad in Azimut
startscan-
stopscanScanning sofort abbrechen und auf Offset zurückkehren
helpListet alle Befehle/Variablen (sehr umfangreich!)

7. Wie funktioniert das Pointing-Modell beim Array-Empfänger? Wie wird es bestimmt?

ASTRA2 track immer auf eine Position am Himmel. Bei einem Array muß diese Position zunächst einem Punkt in der Fokal-Ebene zugeordnet werden. Anschließend kann die Orientierung des Arrays gemessen und bestimmt werden. Das Pointing wird an einer Quelle bestimmt, deren Position genau bekannt ist und die eine eindeutige Charakteristik zeigt. Während der Messung wird der Array-Empfänger im Continuum-Modus betrieben, wobei die gesamte Bandbreite aufintegriert wird und als Signal ausgewertet wird.

Durch langsames überfahren der Quelle läßt sich das Signal einer Start- und End-Zeit zuordnen und daraus der Offset zum getrackten Punkt ableiten. Der scharfe Sonnenrand(dessen Position auf dem gefahrenen Weg genau bekannt ist) wird dann ein mit dem Beam gefaltetes Profil aufweisen, an dem der Offset abgelesen werden kann. Bei Punktquellen(hauptsächlich Jupiter) könnte der Scan an der Quelle vorbeilaufen und wäre so nicht zu finden. Deshalb wird mit dem Array als erster Schritt ein "Kammscan" mit der Breitseite des Arrays gefahren, um die Quelle zu finden. Der Kammscan wird bei KOSMA mit horizontal gestellen Array in Elevation gefahren. Durch den Tertiärspiegel dreht sich jedoch das Arrray um den Elevationswinkel, sodaß der Rotator die Elevationsdrehung immer nachkorrigieren muss. Andererseits hat dies den Vorteil, daß der Wobbler, der ja nur in Azimut bewegt werden kann, weiter parallel zum Array schwingen kann.

Ist im gesuchten Streifen kein Pixel über die Quelle gefahren wird alternierend mit halber Beambreite als Offset weitergesucht. Sobald ein Pixel die Quelle gesehen hat, kann aus der Zeit der Offset bestimmt werden und eine Pointing-Korrektur in Elevation gemacht werden. Nach der Korrektur wird das Array(immer noch horizontal orientiert) in Azimut über die Quelle bewegt(Zeilenscan) und findet nun - höchstwahrscheinlich - für jeden Pixel eine jeweils etwas mehr verzögerte Signalkurve. Damit sind nun die Offsets aller Pixel einer Zeile des Arrays zum getrackten Punkt bekannt, der nun sinnvollerweise zunächst in das Symmetriezentrum des Arrays verschoben wird(die Abstände der Pixel werden später für die Rücktransformation in das Katalog-Koordinatensystem benötigt).

Mit dieser Vorbereitung kann nun die eigentliche Pointing-Mess-Prozedur beginnen, die aus der Bestimmung des Beam-Rotator- und Elevationsachsen-Drehzentrum besteht.

Weil das Drehzentrum des Rotators noch unbekannt ist (wird bei der Justierung grob eingestellt), wiederholt man die Prozedur aus Kamm- und Zeilenscans in 90 Grad Schritten des Rotatordrehwinkels und fittet alle Punkte für jeden Pixel an eine Kreisfunktion. Alle Kreiszentren müssen hierbei in einen Punkt zusammenfallen, welcher als Drehzentrum definiert wird.

Da sich der Empfänger in einem der beiden Nasmyth-Ports befindet, führt der Tertiärspiegel eine elevationsabhängige Drehung aus, deren Drehzentrum ebenfalls noch unbekannt ist. Um sich die Wiederholung des eben beschriebene Vorgangs bei verschiedenen Elevationen zu sparen, genügt es dazu einzelne Kreuzscans zu fahren und dann auf das Rotatorzentrum zurückzurechnen, dessen Offset ja bekannt ist. Als Resultat wird sich das Rotatordrehzentrum um die Elevationsachse drehen, falls die Optik nicht exakt genug justiert wurde(wovon ich auch ausgehe). Die Positionen der beiden Drehzentren sind nun bekannt, denn beide definieren feste Achsen bezüglich der Teleskopstruktur. Das Pointing-Modell vollzieht die Drehung des getrackten Punktes in umgekehrter Reihenfolge nach, d.h. die Elevationsdrehung wird zuerst zurückrotiert und dann um den Rotatordrehwinkel transformiert(der ja gleich dem Elevationswinkel sein sollte), aber diesmal um das Rotatordrehzentrum. In der Summe der beiden Drehungen bleibt dann das Array stabil(zumindest bezogen auf den Horizont), aber die Position verschiebt sich auf einer Ellipse. Im folgenden Bild ist die Verschiebung eines Rechteckarrays in Abhängigkeit von einer Hin- und Rückrotation um einen Winkel von 0 bis 360 Gerad um zwei Achsen zu sehen(ohne Simulation der Mirrorflips).

ASTRA2 hat mit dieser Berechnung den Himmel auf das Array fixiert und kann auf einen beliebigen (fixen) Punkt bzw. Pixel in der Fokalebene tracken. Andere Punkte drehen sich um diesen ausgezeichneten Punkt, falls sich der Rotator dreht.

Dies geschieht natürlich dann, wenn der Rotator neben der Elevationsdrehung des Tertiärspiegels, in das Ausgangskoordinatensystem(zum Beispiel B1950) dreht oder einen darauf bezogene Drehwinkel nach Beobachterwunsch berücksichtigt.

Schließlich sorgt noch ein Pointingmodell dafür, daß der Rotator immer horizontal zum Horizont ausgerichtet ist (nichtlinearitäten im Rotatorwinkel können vernachläßigt werden, da praktisch nicht vorhanden). Die Korrektur geschieht per Summe aus Offset-Konstante, die die Neigungswinkel des Hotelturms enthält und dem Winkel, den ein parallel zur Elevationsachse ausgerichtetes (y-Achse) Inklinometers liefert(die tägliche Turmneigung schwankt etwa mit der Größenordnung von 100 Bogensekunden). Was vielleicht nicht ganz so offensichtlich erscheint, ist daß auch die x-Achse der Inklinometer(also in Beobachtungsrichtung) einen Beitrag liefert, denn der Empfäger ist fest am die Teleskopstruktur montiert und macht damit die Neigung des Sockels mit. Nochmal kurz:Die erste Drehung geschieht zwischen Hauptspiegel und Himmel, die zweite Drehung zwischen Rotator und Tertiärspiegel.

Die Richtigkeit aller Korrekturen kann abschließend mit Kreuzscans aller Pixel über eine Quelle verifiziert werden. Diese Prüfung sollte regelmäßig durchgeführt werden.

8. Was macht das Programm linescan?

Usage: linescan [OPTIONS]
Linescan program
Options:
        -h, --help            this text
        -i, --input
        -s, --source=name     Name of pointing source. Default is @SUN.
                              Without name the current position is used.
        -d, --duration time   Duration of a scan in seconds. Default is 80.
        -t, --test            Test-Mode. Unused
        -n, --notrue          Disable True Angles
        -e, --edge            Activate Edge-Mode. Only scan around the edge.
        -o, --offset arcsec   Offset to start before. Default is 60.
        -a, --angle angle     Scan with this angle over the source.
                              Default is 0 degree(CCW, 0 degree is left side).
                              The scan direction is to the center of the source.
        -r, --rot-angle angle Set the rotator. If same as -a option the array
                              will be orthogonal to the scan direction.
                              Default is 0 degree.
 
           --start-offazm offset The four options let ASTRA2 directly scan
           --start-offelv offset from the start to the endpoint no matter if
           --end-offazm offset   the source center is crossed. By default this
           --end-offelv offset   mode is not active.
 
Send bugs to jakob@ph1.uni-koeln.de
linescan ist ein Frontend für ASTRA2, mit dem ein Scan über eine Pointingquelle gefahren werden kann und dabei einen Back-End triggern kann, der dann eine Messung startet. Normalerweise verarbeitet der Back-End ein Continuum-Signal. Die Startprozedur erfolgt per FILE-IO und mit einer Vorlaufzeit, damit das Backend zur Startzeit Daten aufnehmen kann. Im Triggerfile steht darum nichts weiter als die Startzeit des Scans und dessen Dauer(beides in Sekunden).

Der Funktionsumfang von linescan beschränkt sich darauf, daß die Quelle(Option -s erlaubt @SUN, @MOON und alle Planetennamen) angefahren wird und sofort danach von einer Offset-Position aus das Zentrum der Quelle überfahren wird(fehlt der Name, so nutzt linescan die aktuelle Position auf die ASTRA2 trackt. Das Programm endet mit dem Schreiben einer Positionstabelle, die benötigt wird, damit der Backend zusammen mit dem Continuum-Signal die Offsetposition der Quelle am Himmel berechnen kann. Der Filename ist für jeden Scan eindeutig und wird dem Backend mitgeteilt.

Für diese Aufgabe reicht es, daß ASTRA2 ein genügend großen Suchweg abfährt. linescan kennt hierfür die Option -o die als Argument einen Winkel in Bogensekunden erwartet, den ASTRA2 vor der Quelle starten soll und den es(aus Symmetriegründen) nach der Quelle enden soll.

Ist die Quelle ausgedehnt, wie die Sonne oder der Mond, so ist hierfür dementsprechend ein Offset von mindestens 16*60 Bogensekunden nötig, um den Rand auf beiden Seiten zu überqueren. Linescan kenn die Radien und addiert diese automatisch auf den Offset-Winkel, weshalb automatisch ein Bereich in der Größe des Durchmessers überfahren wird.

Ist man nur am Rand selbst interessiert, so bietet linescan die Option -e an, die direkt auf einen Randpunkt trackt(da es den ja aktuellen Durchmesser kennt). Der Rand wird senkrecht überfahren, immer in Richtung Zentrum. Dieser Modus funktioniert natürlich nur, wenn eine Pointingquelle mir Rand mit -s spezifiziert wurde.

Für einen Kreuzscan müssen zwei orthogonale Scans(hier) in Azimut und Elevation gefahren werden. Die Option hierfür lautet -a und das Argument gibt den Winkel im Horizont-System an, mit dem der Scan fahren soll. 0 Grad steht für eine Position links(also negativen Azimutoffset) der Quelle und 90 Grad für eine Position unterhalb der Quelle(d.h. negativen Elevationsoffset). Die Scanrichtung geht dabei immer in Richtung Zentrum.

Die Scandauer kann per Option -d verändert werden. Gemessen wird vom Start- zum Endpunkt auf der gegenüberliegenden Seite der Quelle. Hier angegebene Werte müssen sinnvoll sein, da keine Prüfung stattfindet. Praktikable Werte sollten mit dem Backend durch probieren gesucht werden, wobei die Beamgröße, der abgefahrene Weg, die Wobblerfrequenz und die Integrationszeit des Backends eine Rolle spielen.

Für den Fall, daß der Beobachter selbst einen Weg über die Quelle definieren möchte, so kann er mit den Optionen --start-offazm, --start-offelv, --stop-offazm und --stop-offelv einen Start- und einen Zielpunkt vorgeben(die Optionen -e, -o und -a werden in diesem Modus nicht verwendet). Eine interessante Anwendung dieses Modus wurde im Script map.pl realisiert, welches eine Kontinuum-Karte von der Sonne erstellen kann.

ASTRA2 und linescan arbeiten so zusammen, daß der Rotator des Array-Empfägers kontinuierlich mit der Elevationsachse mitgedreht wird. Deshalb ist das Array per default parallel zum Horizont orientiert. Per Option -r kann linescan noch einen Offset-Winkel an den Rotator weitergeben, um beispielsweise vertikale Scans(+/- 90 Grad) durchzuführen. Der Winkel wird anticlockwise zum horizontalen Koordinatensystem addiert.

9. Welche Files machen beim modularen FILE-IO was?

Jedem Programm ist beim File-IO ein Konfigurations-File zugeordnet, wo die exportierten und importierten Variablen definiert werden. Jede Variable kann aus einem Input-File eingelesen werden und in mehrere Output-File geschrieben werden. ASTRA2 und die Support-Programme kommunizieren auf diesem Weg miteinander. Wenn jedes Programm eine sauber definierte Schnittstelle bereitstellt, dann kann diese von den anderen Programmen genutzt werden, ohne mit jedem Programm einzeln kommunizieren zu müssen. Neue Programme lassen sich so ohne Änderungen am Source-Code hinzufügen.
KOSMA_astra.inDies ist das Input-File, das ASTRA2 beim starten einließt und einige für den Standort benötigte Daten enthält(zur Zeit ist das die Position auf der Erdoberfläche). Bemerkung:Dieses File wird nicht automatisch erzeugt.
KOSMA_astra.statusHierhin schreibt ASTRA2 seinen aktuellen Status, unter anderem auch die Variablen aus dem File KOSMA_astra.in, vor allem aber stehen hier die sich ständig verändernden Variablen(verschiedene Zeitsysteme, Parallaktischer Winkel, Soll- und Ist-Position des Teleskops, Nasmyth- und Inklinometerkorrekturen, Wetterdaten, Pointing-Offsets und -korrekturen). Es wird sekündlich akualisiert.
KOSMA_astra_port.inHier stehen die Empfägerportabhägigen Angaben, sprich:Portseite L/R, Pointing-Offsets, Nasmyth- und Rotator-Parameter. Bei jedem Portwechsel hat das Fahrprogramm hierhin die Port-Parametern zu schreiben!
KOSMA_point.inStandort der Pointingkonstanten. Werden beim Aufruf von starpointfit nur geschrieben, wenn dies per Option gewünscht wird(Konsistenz der Parameter vorher überprüfen!).
KOSMA_catalog.inInterface für ein Beobachterprogramm, um Katalog-Daten an ASTRA2 zu senden. Ein Katalog enthält alle Positionsinformationen zur Quelle bis hin Arraywinkel und Scanweg.
KOSMA_catalog.statusIm Prinzip derselbe Aufbau wie KOSMA_catalog.in, nur enthält dieses File den aktuell verwendeten Katalog. Wird nur bei Änderung des Cookies aktualisiert.
KOSMA_ccd.inSteuerfile für das Programm ccd, um eine Aufnahme zu triggern.
KOSMA_ccd.outRückgabe von ccd nachdem die Auswertung der Aufnahme gemacht wurde. Enthält Delta x,y der Sternposition und (eventuell) das Verhältnis von Signal zu Untergrund.
KOSMA_ccd.scaleSkalierung und Drehwinkel des CCD-Arrays der Pointingkamera. Kann mit starpoint und starpointfit gemessen werden.
KOSMA_starpoint.outTabelle der Sternpositionen Az, El, dAz, dEl (letztere in Pixel). Wird während des Sternpointings angelegt. Alternativ wird auch das altbekannte pont.inp-File ins aktuelle Verzeichnis geschrieben.
KOSMA_mir.inTertiär- und Load-Spiegel-Inputfile für das Programm dome. Je nach Wahl des Empfängerports wird der Tertiär-Spiegel auf Stellung Load oder Sky gestellt. Am DOME-PC kann der Status überprüft werden.
KOSMA_mir.statusZeigt die Variablen von KOSMA_mir.in an. Wenn ein Spiegel nicht reagiert wird diese Variable auf -1 gesetzt.
KOSMA_kuppel.statusOutput-File von dome das den Ist- und Soll-Status der Kuppel enthält.
KOSMA_chop.inInputfile für subref zu Chopper-Amplitude und Frequenz.
KOSMA_sub.insubref Inputfile der Hexapod-Parameter.
KOSMA_sub.statusStatus-Output von subref.
KOSMA_incl.inNulloffsets des (virtuellen) Inklinometers zur Zenitachse. Sollte vor einem Sternpointing einmal gemessen werden, wenn das Teleskop auf 0 Grad Azimut steht.
KOSMA_incl.statusNeben den Nulloffsets schreibt incl hier sekündlich die Neigungswinkel des (virtuellen) Inklinometers in Bogensekunden.
KOSMA_wetter.statusswatch liefert etwa alle 10 Minuten neue Wetterdaten. Bei Ausfall der Wetterstation bitte per Hand(!) hier eintragen und Übernahme prüfen.
KOSMA_takt.inswatch kann auch die Takte der Taktselekt-Box umschalten, d.h. externe Takte der verschiedenen Spektrometer auf den Ausgang legen um z.B. den Wobbler damit zu bewegen. Kanal 0 kann insbesondere mit der Taktdauer in Millisekunden besonders angegeben werden.
KOSMA_rotator.inInputfile des Rotators.
KOSMA_rotator.statusOutputfile des Rotators.
KOSMA_backend.inEin Backend bekommt über dieses File den Scanstart-Zeitpunkt und dessen Dauer mitgeteilt und wohin linescan die Tabelle der aktuellen ASTRA2 Offsets schreiben soll(normalerweise /net/KOSMA_file_io/logs/).

10. Wann benötigt man die Fit-Programme rotfit, edgefit und starpointfit?

rotfit fittet Daten in der Form pixel,winkel,x,y an jeweils einen Kreis pro Pixel. Als Resultat erhält man den Vektor x0,y0, der das Zentrum des Kreises bestimmt und die Radius-Vektoren xi,yi.

rotfit erwartet als Parameter eine Datei, die gemessen Werte enthalten. Hier als Beispiel ein mit radiopoint.pl gemessenen Sonnenscan:

0 0 0  30.412488 0 -30.413625     -166.9       46.1
0 0 0  30.412488 1 -30.413625      -61.4       48.3
0 0 0  30.412488 2 -30.413625       53.8       49.6
0 0 0  30.412488 3 -30.413625      164.7       52.6
0 0 0  30.938115 0 -120.939300      -47.6     -156.1
0 0 0  30.938115 1 -120.939300      -45.3      -42.0
0 0 0  30.938115 2 -120.939300      -50.9       73.1
0 0 0  30.938115 3 -120.939300      -53.9      183.9
0 0 0  31.338040 0 148.661510      169.7      -39.3
0 0 0  31.338040 1 148.661510       62.5      -37.9
0 0 0  31.338040 2 148.661510      -56.4      -36.4
0 0 0  31.338040 3 148.661510     -171.3      -41.8 
Die Einträge der Reihe ab der 4. Spalte:Elevation, Pixel, Rotatorwinkel, Offset in -Azimut und Offset in -Elevation.

Hierraus macht rotfit zweierlei. Erstens bestimmt es durch Fit die Position des Rotatorzentrums und relativ dazu die Positionen der einzelnen Pixel(bei horizontaler Orientierung):

Minimum p[1] : -1.85293  ! Position des Rotatorzentrums
Minimum p[2] : 7.9907    ! 
Minimum p[3] : -166.896  ! Position Pixel 0
Minimum p[4] : 43.7184   ! 
Minimum p[5] : -57.9629  ! Position Pixel 1
Minimum p[6] : 43.2166   ! 
Minimum p[7] : 58.4372   ! Position Pixel 2
Minimum p[8] : 45.0147   ! 
Minimum p[9] : 170.637   ! Position Pixel 3
Minimum p[10] : 48.8129  ! 
Diese Positionen können in das Rotatormodell von ASTRA2 einfließen, indem sie in die Datei KOSMA_astra_port.in eingetragen werden. Veränderlich sollte dabei nur die Position des Zentrums sein. Diese kann als Offset rot_dazm[0] und rot_delv[0] eingetragen werden (Dabei beachten, ob die Messung mit oder ohne Derotationsmodell gemacht wurde). rot_dx[0] und rot_dy[0] sind die (festen) Offsets zu einem der Pixel. Zweitens erzeugt es ein xmgrace kompatiblen Output, der das Fitergebnis darstellt:
Das Tool edgefit eignet sich zur Auswertung von Total-Power Kontinuum-Scans über die Sonne, den Mond oder einen Planeten. Dabei wird die Position des Randes der Quellen aus der ersten Ableitung durch einen modifizierten Gaussfit bestimmt. Bei gewobbelten Messungen wird stattdessen S- und R-Phase verrechnet und mit einer gefalteten Gaussfunktion gefittet.
Usage: edgefit [OPTIONS]
Edgefit program
Options:
	-h, --help            this text
	-t, --time t          Timestamp of the scan
	-c, --channel c       Specify a channel. Default is 0.
	-w, --wobble          Wobble-Mode. Default is no.
	-d, --diff            Derivate before fitting. Default is no.
	-p, --positions f     Makes a list of positions and intensity
	-f, --fit f           Makes a list of fitted positions and intensity
	-s, --sign            Flip sign. Search for the equal signed extremata.
	-o, --smooth          Smooth data first. Multiple calls are possible.
	-g, --gauss           Just fit a simple gauss function.
	-v, --verbose         Be verbose.

Send bugs to jakob@ph1.uni-koeln.de
Wie man sieht ist edgefit bereits zu ein Multipurpose-Programm geworden, da es mit den verschiedenen Messmodi und Quelltypen zurechtkommen kann. Notwendige Option ist "-t t", die die Zeitmarke des Scans benötigt. Diese Zeitmarke steht z.B. in der Resultzeile von linescan. Mit "-c p" kann der Pixel angegeben werden, dessen Scandaten untersucht werden sollen. "-w" wird bei gewobbelten Messungen zwingend benötigt, da edgefit nichts mit den Rohdaten anfangen kann. "-d" kann die Messdaten vor dem Fit ein(oder mehrmals) Ableiten. "-p Datei" und "-f Datei" legen jeweils Dateien an, die einmal die Scandaten mit korrekten Positionsoffsets und zum anderen die Werte der Fitfunktion enthalten. "-s" ändert die Annahme, dass die Daten ein Maximum und ein Minimum enthalten, dahingehend, dass nach zwei gleichen Extremata gesucht werden soll. "-o" glättet die Messdaten(einfach oder mehrmals). Schließlich kann "-g" noch einen simpleren Gaussfit aktivieren, was bei Planetenmessungen wichtig ist.

Der Output des Programms ist normalerweise nur eine Result-Zeile, die den gefundenen Azimut- und Elevation-Offset zurückgibt. Mit "-v" wird das Programm allerdings viel gesprächiger:

Cobac-Samples:153 Scan-Samples:300
Before  p[1] : 10.230401
Before  p[2] : 0.000000
Before  p[3] : 1004007160.323252
Before  p[4] : 1004007357.590672
Before  p[5] : 434.095630
Before  p[6] : 1.953522
Before  p[7] : 0.000000
chisq(Start)=3650860.841338
chisq(Stop)= 142846.417150
Interations:10
Minimum p[1] : 7.962088            ! Baseline 0. Ordnung
Minimum p[2] : 0.000000            ! 1. Ordnung
Minimum p[3] : 1004007160.068909   ! Zeitmarke 1. Extrema
Minimum p[4] : 1004007353.991569   ! 2. gefundenes Extrema
Minimum p[5] : 373.263263          ! Hoehe beider Extrema
Minimum p[6] : 7.977808            ! Breite beider Extrema
Minimum p[7] : 9.600993            ! Breite des "Plateaus"
Azimut-Offset 1    : -659.310913
Elevations-Offset 1: 0.000000
Azimut-Offset 2    : 1279.915689
Elevations-Offset 2: 0.000000
Azimut-Mitte       : 310.302388 (969.613301 Breite)
Elevations-Mitte   : 0.000000 (0.000000 Breite)
Azimut-FWHM        : 159.556165
Elevations-FWHM    : 0.000000
Azimut-Fehler      : 6.179688
Elevations-Fehler  : nan

Nun gibt es u.a. die Positionen von beiden Rändern aus, sowie deren Abstand(als Radius). Bei der Sonne ist dies immer ein guter Check(960 Bogensekunden = 16 Bogenminuten = Radius der Sonne). Weiterhin wird das FWHM des Randes angegeben, was bei reinen Gaussfits gleich der Beamgröße ist. Der Fehler ist eine Richtgröße, die hilft die Genauigkeit des Ergebnisses abzuschätzen. Wenn das Ergebnis plausibel ist, dann ist der pro Takt überstrichene Weg mit dem Fehler korreliert.

linescan und edgefit wurden in die Perl-Scripte radiopoint.pl und radiopoint_planet.pl eingebunden, um die Handhabung zu vereinfachen. Diese Scripte fahren automatisch ein Kreuz in Elevation und Azimut über eine Quelle, fitten die Daten und geben das Ergebnis in einem rotfit-kompatiblen Format aus(siehe oben). Zusätzlich stellt es die Messdaten und die Fits graphisch dar:

Basierend auf dem selben Algorithmus(powell aus den NR wie bei den anderen Fit-Programmen) wurde das alte linear optimierende Fitprogramm durch starpointfit ersetzt. Wie pointfit schreibt auch starpointfit ein File ponttab.out, um mit den vom alten Fahrprogramm bekannten Greg-Scripten poifit.greg und scatter.greg plots zu erzeugen, die zur visuellen Kontrolle des Fits wichtig sind. Wenn man mit den neuen Pointing-Konstanten zufrieden ist, kann man sie mit der Option "-w" in ASTRA2 übernehmen.

11. Was muss der Beobachter zum Messen mit dem Array wissen

ASTRA2 trackt jeweils nur auf einen Punkt am Himmel. Im der Fokalebene kann dieser Punkt ingendwohin abgebildet sein. Andererseits will der Beobachter aber wissen, wohin jedes der Pixel blickt. Deshalb wurde Pixel 0 als Ursprung des Array-Koordinatensystems gewählt und festgelegt, daß sich das Array um Pixel 0 entgegen dem Urzeigersinn dreht. Winkel 0 bedeutet eine Position entlang der Lägenkoordinate(z.B. horizontal im Az-El-System oder entlang der Rektaszension(RA) im RA/Dec-System).
Im Bild sind die am Himmel gemessenen Positionen in bezug auf die Sonnemitte dargestellt. Die Koordinaten sind so zu verstehen, daß ein Pixel n an der Position (x,y) liegt, wenn das Beamrotatorzentrum (0,0) auf die Mitte der Sonne zeigt. Am Himmel muss man sich dies entspechend umgekehrt vorstellen. Pixel 0 ist bei einem Offset von 162 Bogensekunden in Azimut und -39 Bogensekunden in Elevation zu finden.