#### 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}$$.