Graphical Interface Software
The user interface for APOLLO will be run primarily by the telescope operators at Apache Point, none of whom will have intimate familiarity with APOLLO. So we need to make the user interface as straightforward as we can.
One bare-bones representation is shown in the simulator screenshot below. This is made using Python and its Tk interface (TkInter).
In this screenshot, one sees the phase of the moon, the retroreflector target (green cross), and two sets of 10 grids. Each grid represents the APD array report for a single laser shot, spanning 1.5 arcseconds on a side. At 20 shots per second, each set of ten covers half a second in time. The top set of ten corresponds to the "calibration" photons, returning from the corner-cube in the telescope. The bottom set of ten shows the lunar returns. Photon type (i.e., lunar return, background, air scatter, etc.) is color-coded, which is easier to do in the simulation than in reality (and so may not be worth implementing). To the right of each set is a sum of all the returns in that half-second, so that the spatial distribution can be judged. Over to the right are three summed boxes representing 1 second, 5 seconds, and 10 seconds of integration. These can be used to understand the pointing of the telescope (this example has a pointing error of half-an-arcsecond). The histogram at upper right has time on the horizontal axis, and shows the return strength of the calibration during the half-second interval. Background photons from optics, air-path, and scattering are also visible.
A similar graphical presentation would be appropriate for the APOLLO control, plus a panel of buttons for control of the apparatus. These buttons would, for example, initiate the warm-up sequence, start the main ranging program, run calibrations, etc. There should also be a statistics presentation on shots fired, lunar photons received, photons per pulse on average, same stuff for calibration, estimated statistical error, maybe trend curves, etc. There should be buttons for adjusting optics on the laser bench: focus, pointing. Lots more to think of.
My intention at this point is to write this program in Python, which will run on a machine other than the houston APOLLO control machine. Each button will fire a command on houston, probably through ssh. We need to fork the data produced on houston so that one version is promptly written to disk, while another version is sent to the remote machine for constructing the histograms, APD grids, etc.