IR Camera / Autoguider Software Design Description (LCU Part) / Doc. Number: / VIS-DES-UOD-06048-0003
Date: / 22 June 2006
Issue: / 1.1
Page: / Page 13 of 23
Author: / Nirmal Bissonauth

Document
Prepared By: / Nirmal Bissonauth
Software Engineer / Signature and Date:
Document
Approved By: / Paul Clark
WFS Package Manager / Signature and Date:
Document
Released By: / Kim Ward
IR Camera Project Manager / Signature and Date:

Change Record

Issue / Date / Section(s) Affected / Description of Change/Change Request Reference/Remarks
1.0 / 04/03/04 / All / New document.
1.1 / 22/06/06 / Minor corrections

Notification List

The following people should be notified by email that a new version of this document has been issued and is available on the IR Camera document database:

RAL: / M Caldwell
K Ward
G Dalton
D L Terrett
ATC: / J M Stewart
S Beard
Durham: / P Clark
N Bissonauth
/ University of Durham
Astronomical Instrumentation Group / Rutherford
Appleton
Laboratory / /

AGLCUDesignV1.1.doc


IR Camera / Autoguider Software Design Description (LCU Part) / Doc. Number: / VIS-DES-UOD-06048-0003
Date: / 22 June 2006
Issue: / 1.1
Page: / Page 13 of 23
Author: / Nirmal Bissonauth

TABLE OF CONTENTS

Change Record 2

Notification List 2

1 Introduction 4

1.1 Scope 4

1.2 Abbreviations and Acronyms 4

1.3 Applicable Documents 4

1.4 Reference Documents 5

2 Overview 5

3 agServer 9

4 probeServer & Module vtp 10

4.1 The AT’s implementation of the probeServer process. 11

5 probeTrkServer 12

6 Deployment 12

7 Testing 13

8 Appendix A: TCCD Common Software 13

8.1 Image Processing Facilities 14

9 Appendix B: CDT of command PRABS for module PROBE 16

10 Appendix C: Header file probeDevices.h from module probe. 18

1  Introduction

1.1  Scope

This document describes the software running on either one of the two LCUs controlling an Autoguider TCCD. Both selection of Guide Stars and selection of autoguider LCUs are done by higher level software running on the TCS workstation. Specification and design of that part of the software system is found in [AD2] and [AD3] respectively. As far as software is concerned, the auto guiders are part of the telescope control system even though they are physically located within the camera instrument.

1.2  Abbreviations and Acronyms

ACE Array Control Electronics

AG Autoguider

AT Auxiliary Telescope

CCD Charge Coupled Device

LCU Local Control Unit

LOWFS Low Order Wave Front Sensor

PII Proportional, integral and integral squared controller

TAT Tools for Automated Testing

TCCD Technical CCD

TCS Telescope Control System

TRS Time Reference System

VISTA Visible and Infrared Survey Telescope for Astronomy

VLT Very Large Telescope

1.3  Applicable Documents

[AD1]  Wavefront Sensors Subsystem Design, VIS-DES-UOD-06042-0001, Issue 3.0, 8 Mar. 2004.

[AD2]  Active Optics and Guiding Control Functional Specification, VIS-SPE-ATC-13030-0002, Issue 1.0, 13 Aug. 2003.

[AD3]  Active Optics and Guiding Workstation Software Design Description, VIS-SPE-RAL-13030-0003, Issue 2.0, 3 Mar. 2004

1.4  Reference Documents

[RD1]  CCD Detectors Control Software, User Manual, VLT-MAN-ESO-17240-0672. Issue 1.6, 25 Sept. 1998.

[RD2]  VLT CCD Cameras User Manual Software Part, VLT-MAN-ESO-17240-0917, Issue 1.5, 19 Nov. 1997.

[RD3]  VLT CCD Cameras Maintenance Manual Software Part, VLT-MAN-ESO-17240-0918, Issue 1.4, 19 Nov. 1997

[RD4]  TCS Auto Guiding and Field Stabilisation Design Description, VLT-SPE-ESO-17230-0933, Issue 3.0, 10 April 2000.

[RD5]  Auxiliary Telescope Control Software System Design Description, VLT-SPE-ESO-15151-1795, Issue 2.0, 11 July 2000.

[RD6]  Installation tool for VLT SW packages, User and maintenance manual, VLT-MAN-ESO-17240-1913, Issue 3.0, 31 Mar. 2003

[RD7]  Tools for Automated Testing, User Manual, VLT-MAN-ESO-17200-0908, Issue 1.4, 15 Feb. 2001

2  Overview

VISTA has two autoguiding units which are both located within the IR camera instrument. Figure 1 shows the location of the autoguider units with respect to the focal plane. Only one is allowed to apply corrections to the telescope axes at any given time. Each unit is in fact a fixed position CCD and two are used in order to meet the sky coverage requirements. Each unit also has its own LCU and CCD controller. For more information on the optical design, mechanical design and location of the autoguiders on the focal plane, refer to [AD1].

Figure 1: Optical layout of the focal plane showing the location of the autoguider units

The autoguiding functions are divided amongst several processes running on each autoguiding LCU. Figure 2 shows the processes that are most relevant. Only one LCU is shown in Figure 2. For a more detailed overview of how processes will actually be deployed on two LCUs see Figure 4. All processes shown in cyan refer to software that will be reused from the VLT distribution. Processes shown in green will be implemented as part of the Durham University’s work package. Processes shown in yellow will also be implemented for VISTA, but they are not part of the Durham University’s work package. Process probeServer is shown as a blend of cyan and green since the process is derived from two modules, one called probe and the other vtp. Module probe is part of the VLT software distribution while module vtp will be specifically implemented for VISTA. To control the TCCD, several processes are actually run on each LCU even though only one is shown in Figure 2 (see section 8). Module usage is also summarised in Table 1. This document will only give a brief summary of the processes since extensive documentation already exist for all software that will be reused (see section 1.4). This section gives a quick overview of the system. Description of the processes is further expanded in the relevant sections.

Coordination of the processes is done by workstation process vtagwsControl, [AD2], [AD3]. The latter communicates to the workstation TCCD control process and never directly to any TCCD LCU processes. After starting continuous image readout on the TCCD, it also starts the guiding loop in process agServer. The latter then runs in a continuous loop and whenever a new image is read out and processed, it converts these into corrections for the tracking axis. Centroiding of the image is actually performed by the TCCD LCU process.

The probeServer vtp process is also continuously running in the background. It compensates for differential refraction effects. In VISTA this is achieved by modifying the reference point used by the TCCD centroiding function. The probeServer process is given the absolute position of the Guide Star by vtagwsControl. The current pointing position of the telescope is passed on to process probeServer by process probetrkServer. The latter is given the pointing position (“science object”) of the telescope through process trkwsControl.

At the LCU level, the auto guider software agServer is unaware of the existence of its sibling. vtagwsControl, [AD3], is responsible for switching between the autoguiders and axis corrections are only ever applied by one instance of the agServer process. As part of the telescope calibration procedures, it is required that the second autoguider be capable of logging centroiding data. This however does not require the second agServer to be active since centroiding is preformed by the TCCD LCU process.

Table 1: Process names and module usage.

Process Names / Parent Module(s) Name / Implementation / Description
agServer / ag / VLT / Converts error vectors into corrections for telescope axes.
probeServer / probe + (vtp) / VLT + (Durham) / Compensates for differential refraction effects. vtp provides VISTA specifics.
probeTrkServer / trk / VLT / Keeps tracking axes updated with telescope target position and rotator angles.
TCCD / See section 8 / VLT / See section 8
vtagwsControl / vtagws / Other VISTA / Coordinates autoguiding LCU processes
trkwsContorl / trkws / VLT / Workstation part of the tracking (trk) module

Figure 2: Processes involved in autoguiding. (Only one of two autoguiding LCUs is shown.)

3  agServer

There is one instance of this process in each autoguider LCU. It is operating in a continuous loop. At the beginning of each loop, it blocks and waits on a semaphore that can only be released by the TCCD LCU process.

The TCCD software does the image centroiding. It notifies agServer when a new set of error vectors is available by calling an installed user function. The user function is configured with the TCCD DET.WIN1.IPFUNC SETUP keyword (see section 8). This is, in the simpler case, the agNoticeErrorVector() function which releases a semaphore.

When new error vectors become available, the error vector calculation function agProcessErrorVector(), [RD4], is called and alpha/delta corrections are calculated. The offset corrections are passed through a tunable PII controller before being sent directly to the tracking axis LCUs. Once a cycle of calculation is complete, agServer again waits on the semaphore. This sequence of interactions is shown in Figure 3. Operation of the agServer loop is detailed in section 3.4 of [RD4]. All commands should be usable without any changes.

agServer also checks image statistics calculated by the CCD software on the centroiding window before using the error vectors. This is performed by a function called ccdipCV found in the ccdip module. The function compares the measured statistics against threshold levels set in the database. The measured statistics are listed in section 8.1. agServer does not apply any corrections to the telescope axes when bad frames are detected. However, the guiding loop only fails after several bad frames of image data are received. This is to prevent transient errors from unnecessarily stopping the guiding loop.

Table 2 list the commands sent from vtagwsControl to agServer. The full CDT of agServer is found in [RD4].

Table 2: Commands sent from vtagwsControl to agServer

COMMAND / Description
STARTAG / Start autoguiding. Accepts rotation angle, repetition frequency, start time and a mode string indicating autoguiding.
e.g.: STARTAG rotAngle repFreq <TIME> AG
STOPAG / Stop autoguiding
e.g.: STOPAG
OFFSAG / Issue an offset step in alpha/delta to the tracking LCU units (alt/az)
e.g.: OFFSAG offsetalpha offsetdelta
OFFSAG2 / Issue an offset step in x/y to the tracking LCU units (alt/az) with conversion of error vectors to offset steps done by Autoguider LCU.
e.g.: OFFSAG2 XoffSet YoffSet rotAngle
XY2AD / Converts a given X/Y to alpha/delta and returns it.
e.g.: XY2AD X Y rotAngle
PIXSIZE / Returns TCCD Pixel size in arc seconds per pixel
e.g.: PIXSIZE

Figure 3: Interaction of the CCD Autoguiding Loop with the agServer Loop via a semaphore

4  probeServer & Module vtp

The AG LCU will also run a virtual probe server process called probeServer. The latter provides an abstract layer to convert alpha/delta guide star coordinates into device independent polar coordinates (r, θ) continuously. It implements compensation of differential tracking effects (differential refraction, additional velocities) of the guide star with respect to the science object, compensates for field rotation, and adjusts the position of the calculated (r, θ) relative to the science object.

With VISTA, the virtual probe server will be used to compensate for differential refraction effects between the guide star and the science object. This will be achieved by continuously updating the reference point of the TCCDs so that the error vectors calculated by agServer map correctly to the telescope axis.

The probeServer process is derived from a module called probe. Extensions specific to VISTA will be implemented in a module called vtp. Module probe provides a programming interface in the form of function pointers which will be initialised with functions implemented in module vtp. The functions that can be provided by vtp are listed in the header file probeDevices.h of module probe. This file has been included in section 10. The functions have also been summarised in Table 3.

The PRABS command is sent by vtagwsControl to probeServer to set the absolute position in alpha/delta of the guide star. The CDT for the PRABS command has been included in section 9. For the complete CDT of module PROBE, please refer to the VLT source distribution.

4.1  The AT’s implementation of the probeServer process.

The AT’s module atp provides an example of how a telescope specific extension to probeServer can be implemented. Section 6.13 of [RD5] describes this process. The AT process has to deal with three tracking axes, one of which is a CCD. On VISTA, only one tracking axis is present, the Autoguider CCD.

Table 3: Programming Interface between module probe and module vtp.

Function Name / Summary of function description as given in header file probeDevices.h / VISTA Implementation
probeGET_RTHETA / Returns the actual r, theta. / Returns CCD reference position.
probeGET_POSERR / Returns the position error. / Not required. (CCD is not moveable)
probeSET_PROBE / Sets the probe position. / VISTA specific implementation. (Sets CCD reference point.)
probePARK_PROBE / Sets the probe position. / Not required.
probeVIGNETTING_CHECK / Checks for vignetting. / Returns False always.
probeCHECK_IN_FIELD / Check if position is in the field. / VISTA specific implementation.
probeCALC_NO_TRK / User function called when not tracking. / Do nothing.
probeCALC_REM_TRK_TIME / Calculate remaining tracking time. / Returns 1 day always. (Same as the AT)
probeSET_UVW / Sets the probe UVW offset / Not needed
probeUPDATE / Updates configuration parameters / Reloads specific values from database
probeSEND_REFS / Install device specific SendRefs function used by interface between probeTrkServer and probeServer processes. See section 5. / Same implementation as the AT telescope.

5  probeTrkServer

The probeTrkServer process is derived from module trk. Its purpose is to update the LCU database with the observed target’s alpha/delta (position where the telescope axis is currently pointing to). A programming interface exists between module probe and module trk. This is in the form of a function called probeSendRefsFromAcm. Module probe however allows part of this interface to be changed by providing a function pointer called probeSEND_REFS. Hence for VISTA, probeSEND_REFS will be implemented in module vtp (see Table 3 ).