# Open-loop control of a deformable mirror using linear programming

In this example, a deformable mirror (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}_{s} - H\mathbf{u} \|\), subject to \(\| \mathbf{u} \|_{\infty} \le 0.95\), where \(\mathbf{z}_{s}\) 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 micromachined membrane deformable mirror with \(N_a = 17\) actuators is controlled in open-loop to induce each of the \(N_z = 28\) Zernike polynomials. Note that \(N_z > N_a\).

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}_{s}\) and the measured Zernike coefficients \(\mathbf{z}_{ms}\). However the performance degration is gracefull due to the linear programme.