A++ reconstructor tests

These simulations were conducted to test the performance of reconstructors generated from A++ - a reconstructor generation code written by Dr. Walter Wild at the University of Chicago. Reconstructors for Shack Hartmann based AO systems up to size 64x64 were tested on a 5.08 meter aperture. First I will discuss the simulations, and then I will describe the method used to generate A++ reconstructors and use them in Arroyo.

Simulations of AO systems on Palomar

Reconstructors were generated for Shack Hartmann wavefront sensors with a number of subapertures ranging from 4x4 to 64x64. Simulations were performed to test the ability of these reconstructors to close the loop on a static realization of atmospheric turbulence. A Fried parameter of 16 cm at .5 microns was used in generating the turbulence realization. The pixel scale of the layer and the wavefront were both chosen to be 5 millimeters. A wavelength of 600 nm was used for wavefront sensing. The sensing wavefront was propagated through the lenslet array, and the wavefront in the focal plane of the lenslet array was sampled at 24 pixels per lenslet. Centroids were computed using the classical centroid algorithm. Centroids were passed to the reconstructor to compute the tip tilt and deformable mirror residuals, which were in turn passed to an integral controller to generate tip tilt and deformable mirror commands. The compensated PSF was generated for wavelengths of .8, 1.2, 1.6, and 2.2 microns. The simulation ran for 25 cycles of the control loop, which was sufficient to close the loop for every reconstructor that was tested.

The movies below show the behavior of the residual wavefront and PSF's as a function of increasing order of adaptive correction. The first movie shows the residual wavefront phase aberrations after the loop has closed. The wavefront aberrations at each of the detected wavelengths differs only by a multiplicative factor, so that this movie is representative of sensing and detected wavelengths - hence no scale is included. The second movie shows the PSF's at each of the four detected wavelengths, over a 5 arcsecond range. The final movie shows the PSF's over a 2 arcsecond range. In the latter two movies, the control radius of the AO system is clearly seen to grow as the order of correction increases.

Residual wavefront phase aberrations
5 arcsec PSF's
2 arcsec PSF's

In these movies, variations in the intensity of the Airy rings can be seen long after the control radius has expanded beyond the radius of the ring. These variations are thought to arise from aliasing of high spatial frequency phase aberrations in the lenslet array. This aliasing effect generates errors in the measured centroids that propagate through the reconstructor and end up on the surface of the DM. For an AO system with a fixed order of correction, analogous variations arise as the turbulence blows past the telescope aperture and the aliased power evolves on millisecond timescales. These temporal variations can seriously degrade the contrast limits that may be achieved using coronography, and the amelioration of this effect is an active area of adaptive optics research.

Generating A++ reconstructors for use with Arroyo

The A++ executables are freely available on the web here. These executables were apparently compiled on a Windows machine, but I successfully ran them on my Linux box using the Windows emulator wine. There is a particular procedure that I used to generate these reconstructors, which should work for generating reconstructors using any shape of aperture. I describe the steps I used here in detail.

First I generated an A++ geometry file using the CONF.EXE executable. I set the virtual subaperture virtual actuator radii to be much larger than the aperture radius, so that the resulting reconstructor was always generated for a square grid of actuators and subapertures. I also modified the active edge actuators and subapertures to make the geometrical configuration appear more like the one used to generate the PALAO reconstructor. Here is a tarfile containing these geometry files.

A++ geometry files

I then generated the reconstructor using the MATRX.EXE executable. My strategy was to make a zonal reconstructor with piston, tip and tilt projected out, and make a modal reconstructor that generates the modal coefficients. So far I have only been able to generate the modal reconstructor by projecting in centroid space. This required the following steps:

1. Load the geometry file using the File menu option.
2. Click "ok" in the "Make Matrix" window
3. Click the down arrow in the "Make Matrix" window and select the geometry matrix
4. Select the "A++ Least Squares" radiobutton in the "Make Matrix" window
5. Click "ok" in the "Make Matrix" window, and wait for the matrix to be generated
6. Click the second down arrow in the "Make Matrix" window and select the A+ Least Squares matrix
7. Select the "Out Slopes Zernike Project" radiobutton in the "Make Matrix" window
8. Click "ok" in the "Make Matrix" window, and wait for the matrix to be generated
9. Click and drag the "Out Slopes Zernike Project" matrix from the "Matrix Catalog" window to the "View Matrix List" window
10. Click and drag temporary matrix 6 from the "Temporary Matrix Catalog" window to the "View Matrix List" window
11. To offload these two matrices, click on the disk icon in the "View Matrix List" window. In the Matrix I/O popup, select ascii output and click the write button.

Having written these ascii files to disk, I wrote a constructor for the class zernike_projected_zonal_reconstructor that takes A++ reconstructor files in ascii format. This class is not yet checked into CVS, but will be in the near future.