#### 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} \).