I wanted to center beams on the XARM cavity mirrors using c1ass model. I've run XARM setup script and then turned dithering on. Cavity went out of lock because calculated offsets were incorrect.
I was using TRX only and calculated rotation phases for ITM and ETM pitch and yaw. For this I've added a low pass filter into Q-quadrature bank and made DC value at the output to be zero by adjusting the phase. I've put gains (+1 or -1) in the I quadrature such that output was positive.
Then I've set the sensing matrix to identity as I decided to deal with separate loops. Of coarse, they are mixed by the cavity, but at least in the control system they are distinguished. Old matrix summed error signals in one degree of freedom from both mirrors. This makes more sense but still not precise because coils are not ideally diagonalized.
Then I've adjusted gains for control loop for every degree of freedom. I've ended up with (0.1; 0.1; 0.1; -0.1). I did not use large gains as I wanted slow convergence because of the demodulation low-pass filter time response constant of 20 sec. Coupling (I quadrature) was reduced from (0.9, 0.3, 2.4, 1.2) to zeros (0-0.1) in ~5 minutes, TRX increased from 0.73 to 0.90.
There is one thing that I do not understand yet. I think controllers should minimize angle -> length coupling that is proportional to I-quadrature if phase is correct. But phase depends on alignment and when the feedback loops are on, phase drifts. I could see it during my measurement. But I did not find any script that smoothly tunes phase such that coupling is all in I-quadrature. I guess this is not hard to set a gradient descent algorithm that minimizes DC value of Q-quadrature. Or how this is usually done?