Open-loop control of a deformable mirror using linear programming

In this example, a DM is controlled in open-loop using linear programming and Zernike polynomials. First, I estimated a matrix \( H \in \mathbb{R}^{N_z \times N_a} \) that approximately maps the actuation vector \( \mathbf{u} \in \mathbb{R}^{N_a} \), where \( N_a \) is the number of actuators of the DM, into the corresponding vector of \( N_z \) Zernike coefficients \( \mathbf{z} \in \mathbb{R}^{N_z} \). This is done using input-output measurements recorded with a Shack-Hartmann wavefront sensor.

The DM is controlled in open-loop (without using the wavefront sensor) by solving \( \underset{\mathbf{u}}{\operatorname{min}} \| \mathbf{z}_{sp} - H\mathbf{u} \| \), subject to \( \| \mathbf{u} \|_{\infty} \le 0.95 \), where \( \mathbf{z}_{sp} \) is the vector of set-point Zernike coefficients, and a maximum saturation of 95% is allowed for each actuator of the DM.

In the following video a MMDM with \( N_a = 17 \) actuators is controlled in open-loop to induce each of the \( N_z = 28 \) Zernike aberrations. The Shack-Hartmann wavefront sensor is only used to evaluate the performance. Not all the selected Zernike polynomials can be induced, due to saturation and to the low number \( N_a \) of actuators, as can be seen by comparing \( \mathbf{z}_{sp} \) and the measured Zernike coefficients \( \mathbf{z}_{ms} \).