I put the new matricies in from the free swinging test for the: ITMX, ITMY, ETMX, ETMY, PRM, BS
Some of the optics damped okay, but ETMX and BS were not good at all. ETMX was ringing up when I turned on the damping. BS wasn't, but when I gave it a kick, it wouldn't damp. No good.
I tried ITMY, and it was totally fine, with nice damping Qs of ~5. So, I don't know what's going on.
Anamaria is trying a new 4x4 matrix-inverter, so we can look at the inversion of just the face osems. We'll see how it goes.
Since things were crappy, I did a BURT restore, so things are as they were earlier this morning.
The bad medm screens have been fixed. There are no blank fields and all the links are correct.
I've found that a few of the screens still have Whited-Out fields due to naming changes (OL SUM and ALS-> TM OFFSET). I attach a screen shot of it.
The OL screens have the wrong SUM names and the IFO ALIGN screen is pointing to the wrong SUS screens.
First of all I moved the lenses on the ITMY/SRM oplev path to get a smaller spot size on the QPDs. I couldn't get the beam analyzer to work though, so I don't know quite how successful this was. The software brought up the error "unable to connect to framegrabber" or something similar. I don't think the signal from the head was being read by the software. I will try to get the beam analyzer working soon so that we can characterize the other oplev lasers and get decent spot sizes on the QPDs. I searched the elog for posts about the analyzer, and found that it has been used recently, so maybe I'm just doing something wrong in using it.
After this I measured the transfer function for the ITMY oplev yaw. I did a swept sine excitation of the ITMY in yaw with an amplitude of 500, and recorded the OSEM yaw values and the oplev yaw values. This should show a flat response, as both the QPD and the OSEMS should have flat frequency response in the measurement band. This measurement should therefore just yield a calibration from OSEM yaw to oplev yaw. If the OSEM yaw values were already calibrated for radians, we would then immediately have a calibration from oplev yaw values to radians. However, as far as I'm aware, there is not a calibration factor available from OSEM yaw values to radians. Anyway, the TF I measured did not appear to be very flat (see attached plot). Kiwamu suggested I should check the correlation between the OSEM measurements and the oplev QPD measurements - if the correlation is less than 1 the TF is not reliable. Indeed the coherence was poor for this measurement. This was probably because at frequencies above the pendulum frequency, the excitation amplitude of 500 was not enough to cause a measurable change in the optic angle. So, the plot attached is not very useful yet, but I learned something while making it.
In order to estimate the amount of noise that the oplevs are injecting into the GW channel, we first need to calibrate oplev signals in terms of angular change in the optic. I said in my previous post that there wasn't a calibration factor for OSEM values to radians, but I found that Kakeru had estimated this in 2009 - see entry 1413. However, Kakeru found that this was quite a rough estimate, and that it didn't agree with his calibrated oplev values well. He does quote the 2V/mm calibration factor for the OSEM readings though - does anyone know the provenance of this factor? I searched for OSEM calibration and found nothing.
With the new input matrix, it looks like YAW and SIDE are not quite decoupled on ETMX.
It needs one more kick and free swinging test.
- - - details
To see what exactly is going on, I changed the input matrix from the default to the new one, which Jenne computed (#5421) on ETMX.
I started putting the elements of the input matrix from POS through SIDE, one by one.
It seemed that POS and PIT worked fine. However the YAW signal looks containing a lot of the SIDE signal.
Similar to YAW, SIDE also interact with the YAW motion and somehow rings up both YAW and SIDE signals as Jenne reported ( #5438).
So right now the YAW and SIDE rows are partially reburted to the default elements in order to avoid ringing up.
but ETMX and BS were not good at all. ETMX was ringing up when I turned on the damping.
Excited all the optics. They will be automatically back after 5 hours.
Sat Sep 17 02:02:07 PDT 2011
We don't need a high quality calibration for the optical levers. ~50% accuracy is fine.
For that you can use the OSEM calibration of ~1.7 V/mm (its less than 2 since the OSEMs have been degrading) or you can use the cavity power method that Kakeru used; it worked just fine. There's no benefit in trying for a 1% number for optical levers.
The f2a filters were installed on ITMs and ETMX.
Now all of the suspensions has the f2a filters.
I replaced the lenses that were there with a -150mm lens followed by a +250mm lens. This gave a significantly reduced beam size at the QPDs. With the beam analyzer up and running it should be possible to optimize this later this afternoon. Next I will remove the SRM QPD from the path and make measurements of the beam spot position movement and corresponding OSEM values for different DC mirror offsets. I will then repeat the process for ITMY.
I've got the bench set up for the measurement of the beam spot change with DC SRM alignment offsets. The ITMY oplev is aligned and fine to use, but the SRM one isn't until further notice (probably a couple of hours).
I made the first measurements towards oplev calibration measurements: calibrating the oplevs in SRM YAW. The measurements seemed fine, I had a range of between -1.5 and 1.5 in SRM DC alignment before clipping on mirrors on the oplev bench became a problem. This seemed to be plenty to get a decent fit for the spot position against DC alignment value - see attached plot. The fitted gradient was -420um oplev yaw count. I calculated oplev yaw values as UL+LL-UR-LR. Pitch next.
The following optics were kicked:
Mon Sep 19 15:39:44 PDT 2011
Same measurements for SRM pitch (as previously done for yaw in entry 5460) are complete. The QPD is back in the path and aligned. I will be doing the same measurements for ITMY now though, so please ask before activating the SRM or ITMY oplev servos, as I may be blocking the beam.
Kiwamu: The bad medm screens have been fixed. There are no blank fields and all the links are correct.
Really? I found this one with ~15 seconds of clicking around.
I changed some colors on the Summary of Suspension Sensor using my italian creativity.
I wrote a script in Python to change the thresholds for the "alarm mode" of the screen.
I've started to fix up the script somewhat (as a way to teach myself some more python):
* moved all of the SUS Summary screen scripts into SUS/SUS_SUMMARY/
* removed the hardcoded channel names (a list of 190 hand-typed names !!!!!!!)
* fixed it to use NDS2 instead of try to use the NDS2 protocol on fb:8088 (which is an NDS1 only machine)
* it was trying to set alarms for the SUS gains, WDs, Vmons, etc. using the same logic as the OSEM PD values. This is non-sensical. We'll need to make a different logic for each type of channel.
New script is called setSensors.py. There are also different scripts for each of the different kinds of fields (gains, sensors, vmons, etc.)
pianosa:SUS_SUMMARY 0> ./setDogs.py 3 5
Done writing new values.
I've now taken data for the pitch and yaw calibrations for the OSEMs of SRM and ITMY. Until such time as I know what the calibrated oplev noise spectra are like, I'm leaving the servo gains at zero.
I estimate the length of the lever arm from SRM to measurement position to be 3.06m, and the length of the lever arm from the ITMY to the measurement position to be 3.13m.
From the fits shown on the attached plots, this gives the following calibration factors for the SRM and ITMY OSEMs pitch and yaw counts (i.e. counts from channels such as SUS-ITMY_ULSEN_SW2 multiplied by a matrix of 1s and -1s) to pitch and yaw angle:
SRM PITCH: 1 OSEMs pitch count = 11.74 microradians
SRM YAW: 1 OSEMs yaw count = 12.73 microradians
ITMY PITCH: 1 OSEMs pitch count = 13.18 microradians
ITMY YAW: 1 OSEMs yaw count = 13.52 microradians
Next step is to do some DC offsets with the oplev paths back in place to get the final calibration between OSEMs counts and oplev counts, thus finally getting a conversion factor from oplev counts to radians.
I noticed while taking these measurements that the DC offsets I put on ITMY caused around 5 times larger change in angle than those on the SRM. The different path length is not enough to account for this, so I propose that the actuation is working differently for the two. I guess this should be taken into account when designing the output matrices (unless the control is passed through a different output matrix than the DC offsets?). I'll quantify the difference shortly, and write a conversion factor between output alignment count (e.g. SUS-ITMY_PIT_COMM) and angle.
The last person out tonight should run the following scripts:
In command line:
Then in the morning, someone should do a BURT restore to early today (to get the default matricies back), and also restore the watchdogs.
I followed Jenne's instructions, ran the matrix filler script and then set the optics to freeswing. Someone has to burt resture and damp them in the morning.
Thanks! I'll give them a little more time, then restore things.
I began restoring the optics at ~9:30am, so I have a full 6 hours of data, in case I need that much to separate the Pos/Side modes on some of the optics. They are all damping again with their original matricies.
So, clearly this was a kind of dumb idea. There is nothing mechanical going on between our sensor inputs and our Pit/Pos/Yaw/Side DoF filter banks. It's just math. On the other hand, we now have a 3rd set of in-vac free swinging data, so I can (after all the suspensions are working) have a look at the drift in matrix elements over time.
In other news, after some meditation, and fitzing with DoF gain values, all of the IFO optics except for SRM now have their new input matricies, and are damping pretty nicely. I need to go through and do an "eyeball" check to make sure that everything has a Q of ~5ish. So far, I've kicked the optics, and watched that they damped fairly quickly, but I don't have a guesstimate of the Q's for each optic, for each DoF.
So, still to do:
Use another set of data and invert the SRM matrix DONE
Plug in the MC matricies, make sure they're okay. DONE
Check the Q's for all optics, all DoFs.
This is using data for the SRM from: 20 Sept 2011 03:20:00 PDT = 1000549215
You can see that there are still some funny peaks between Pit and Yaw, but I finnessed the peak-finding, and I was able to fit all of the correct peaks, and invert the matrix:
SRM now has its new matrix, and is damping happily.
pit yaw pos side butt
UL 0.877 0.983 1.105 -0.288 1.092
UR 1.010 -1.017 1.123 -0.145 -1.055
LR -0.990 -1.002 0.895 -0.091 0.848
LL -1.123 0.998 0.877 -0.234 -1.006
SD 0.089 0.064 3.752 1.000 -0.009
Can't we use Yuta's auto-Q adjust script?
Edit by KI :
Of course we can use it but first we have to fix some pynds sentences since his script was written for the OLD pynds.
Has the Q been checked? Still in progress...
So, update as of 6:17pm: I have tuned the damping gains for all IFO optics. Everything is good, except for ITMY Yaw. It's probably fine, the optic damps okay, but it doesn't look like a nice clean ringdown. I haven't taken the time to go back and look at it again.
I have to go to a dinner, but later (probably in the morning, so I don't disturb evening locking) I'll check the MC Qs.
The measured calibration factors for the oplevs are as follows:
Kiwamu noticed that the 1/L in the counts per radian should have just been L, which accounts for most of the discrepancy. We checked the input filters on the OSEMs, and they have 10dB of gain at DC. Accounting for this, estimates on the order of 20urad/count, which is much more reasonable!
ETMX was ringing up when it was mis-aligned for Y arm locking. I restored the input matrix to something more diagonal and its now damping again. Needs more work before we can use the calculated matrix.
I found that some of the Optical Lever Servos were ON today and injecting nonsense into the interferometer optics. I have set all of the gains = 0 to save us more headaches.
I had previously set the gains to zero, see the first line of my entry on Monday 5468. I should have the servo and noise characterisation done today for these oplevs today, so we can review it soon.
Here are the open loop transfer functions for ITMY and SRM. The various settings for the OLTFs were as follows:
Oplev filter used for all OLTFs: 300^2:0
Gains for oplev servos (for each OLTF only the 1 servo for the measured TF was on. They are all set back to 0 now):
SRM yaw gain = 1
SRM pitch gain = -1
ITMY yaw gain = -1
ITMY pitch gain = 1
measurement band = 0.2Hz to 200Hz
points = 33
swept sine magnitude envelope: amp = 2 for f > 60Hz, amp = 0.1 for f < 60Hz
Measurement points were from e.g. C1-SUS-ITMY-OLPIT-IN2 to C1-SUS-ITMY-OLPIT-IN1 to give a TF of -(loop gain).
Next step is to divide this through by the sensor reponse (i.e. the calibration factor measured earlier) and the filter response to get just the actuator response.
The SUS SUMMARY screen is now fully activated. You should keep it open at all times as a diagnostic of the suspensions.
No matter how cool you think you are, you are probably doing something bad when trying to lock, measure any loop gains, set matrices, etc. Use the screen.
This is the link to the automatic snapshot of the SUS SUMMARY screen. You can use it to check the Suspensions status with your jPhone.
Auto SUS SUMMARY Snapshot
When the values go yellow its near the bad level. When its red, it means the optic is misaligned or not damped or has the wrong gain, etc.
So don't ignore it Steve! If you think the thresholds are set too low then change them to the appropriate level with the scripts is SUS/
I divided the open loop transfer functions by the filter response and the sensor responses (previously measured calibration factors) to leave just the actuator responses. I've attached the actuator responses plotted in radians/count and phase over frequency.
Next step: fit the actuator response with poles and zeros.
EDIT: I divided by the wrong filter function earlier - the plots there now are divided by the correct filter function
I used an fminsearch function to fit the SRM and ITMY actuator response magnitudes. The testfunction was just that for a single second order pole, but it gave what I consider to be good fits for the following reasons:
*for 3 of the 4 fits the residuals were less than 0.5% of the summed input data points. The worst one (ITMY pitch) was about 2.7%, which I think is due to the resonance happening to be right in the middle of two data points.
*the tolerance of 1 part in 10^9 was reached quickly from not very finely tuned starting points.
The test function was: G=abs(Gp./(1+1i.*f./fp./Qp-(f./fp).^2)), where G(f) is the actuator response magnitude, Gp is the pole gain, fp is the pole frequency, and Qp is the pole Q factor.
In the end I just fitted the response magnitude. I was initially fitting the complex response function, but ran into problems which I think were cased by overall phase offsets between the data and test function. Can I canvass for opinion if fitting the magnitude is OK, or should I try again fitting the phase too?
Anyway, here are the results of the fits, and I've attached plots of each too (each one in linear and log y axis because each on its own might be misleading for fits):
EDIT - I added more points to the otherwise sparse looking fitted curves
ITMY PITCH actuator response fit
-- Fit completed after 190 iterations--
Started with: Gain = 3e-06,
Q factor = 5,
Pole frequency = 1,
Fit results: Gain = 1.32047e-06,
Q factor = 4.34542,
Pole frequency = 0.676676
Residual (normalised against the sum of input datapoints) = 0.0268321
ITMY YAW actuator response fit
-- Fit completed after 156 iterations--
Fit results: Gain = 1.14456e-06,
Q factor = 8.49875,
Pole frequency = 0.730028
Residual (normalised against the sum of input datapoints) = 0.00468077
SRM PITCH actuator response fit
-- Fit completed after 192 iterations--
Fit results: Gain = 7.94675e-06,
Q factor = 7.16458,
Pole frequency = 0.57313
Residual (normalised against the sum of input datapoints) = 0.00301265
SRM YAW actuator response fit
-- Fit completed after 156 iterations--
Fit results: Gain = 3.34179e-06,
Q factor = 9.57601,
Pole frequency = 0.855322
Residual (normalised against the sum of input datapoints) = 0.000840468
Did you take the 180 deg shift into your account ?
Since your measurement was done when the loop was closed, there must be an additional 180 deg phase shift (in other words, minus sign).
I thought I had, but apparently not, and I'd made another error or two in the complex version of my fitting routine. I've fixed them now, thanks! I'll put up the new fitting results tomorrow morning.
Here are the results of the complex fitting. The residuals are bigger this time, but still probably small enough to be ok(?), with the possible exception of ITMY PITCH (due again I think to the data points straddling the resonance).
ITMY YAW actuator response complex fit
-- Fit completed after 282 iterations--
I thought it might be informative before trying to optimise the filter design to see how the current one performs with different gain settings. I've plotted the power spectra for ITMY yaw with filter gains of 0, 1, 2, 3 and 4.
All of the higher gains seem to perform better than the 0 gain, so can I deduce from this that so far the oplev control loop isn't adding excess noise at these frequencies?
It turned out the oplev controls on ETMY were just bad.
It looks like the whitening filters have been OFF and because of that the resultant open-loop was not crossing the unity gain.
I will check the whitening filters.
(open-loop transfer function)
The blue dots are the measured data points and the green curve is the fit.
Apparently the open-loop doesn't go above the unity gain, so the oplev had been doing nothing.
If we try to increase the overall gain it will oscillate because of the phase delay of more than 180 deg around 3 Hz.
The red curve is the expected one with the whitening filters (WFs) properly engaged.
Note that WF are supposed to have two zeros at 1 Hz and two poles at 10 Hz.
The whitening filters for the ETMY oplevs are back.
The whitening board had been in the rack but the ADC was connected directly to the oplev interface board without going through the whitening board.
In fact the interface board and the whitening board had been already connected. So the ADC was making a shortcut.
I disconnected the ADC from the interface board and plugged it to the output of the whitening board.
Here is an example of the new open-loop transfer function with the whitening filters.
before the measurement I increased the control gain by an arbitrary number to obtain gain of more than 1 around 1 Hz.
I have made a function to optimise the overall gain, pole frequencies and zero frequencies for the oplev filter. The script will optimize any user defined number of poles and zeros in order to minimise the RMS motion below a certain cut off frequency (in this case 20Hz). The overall gain is adjusted so that each trial filter shape always has a UGF of 10 Hz.
I have a attached a plot showing the power spectrum and RMS curves for the optimization result for 2 zeros and 2 poles, optimized to give a minimal RMS below 20Hz.
I have also attached a plot showing the loop gain and the filter transfer function.
The noise spectrum shows that the optimised filter gives a better noise performance below 10Hz, but a servo oscillation at the UGF of 10 Hz means it injects a lot of motion around this frequency. Should I consider some more aggressive way to force the script to keep a decent phase margin?
The fminsearch results show that the 'optimized' solution is two resonant peaks:
-- Optimisation completed after 571 iterations--
Pole 1 frequency = 1 Hz
Pole 2 frequency = 2 Hz
Zero 1 frequency = 0.1 Hz
Zero 2 frequency = 5 Hz
Overall gain = 1
Pole 1 frequency = 0.0497181 Hz
Pole 2 frequency = 2.01809 Hz
Zero 1 frequency = 0.0497181 Hz
Zero 2 frequency = 2.01809 Hz
Overall gain = 71970.1
Initial RMS below 10 Hz = 5.90134e-06
Remaining RMS below 10 Hz = 8.42898e-07
As a suspension test I am leaving all of the suspensions restored and damped with OSEMS but without oplevs
I think this is a nice start. Its clear that we don't want to use this feedback law, but the technique can be tweaked to do what we want by just tweaking our cost function.
Let's move the scripts into the SUS/ scripts area and then start putting in weights that do what we want:
1) Limit the gain peaking at the upper UGF to 6 dB.
2) Minimum phase margin of 45 deg.
3) Minimum gain margin of 10 dB.
4) Lower UGF = 0.1 Hz / Upper UGF = 10 Hz.
5) Assume a A2L coupling of 0.003 m/rad and constrain the injected noise at the test mass to be less than the seismic + thermal level.
6) Looser noise contraint above 50 Hz for the non TM loops.
Good work for the oplev noise simulations. Here are some comments/questions:
(A) The noise looks suppressed but the open-loop transfer function doesn't look so good, because it doesn't have sufficient phase margins at the UGFs (0.01 and 10 Hz).
I guess it is better to have a phase margin detector in your code so that the code automatically rejects a bad phase margin case.
Actually since the number of data points are finite, the rms detector in the simulation can not always find a sharp loop oscillation.
(B) The resultant poles and zeros seem canceling each other but the filter still has a structure. Is something wrong ?
Zero 2 frequency = 2.01809 Hz
Zero 2 frequency = 2.01809 Hz
Ah yes, well noticed. I think I have tracked this down to just a bug in printing of fitting results: It was just printing the pole results for the zeros too. The results for the same fit now read:
Zero 1 frequency = 0.0972455 Hz
Zero 2 frequency = 6.50126 Hz
Overall gain = 71970.1
EDIT: sorry, I forgot that when you write a reply, the author is still by default the person you are replying to unless you change it!
According to the spectra, all of the suspensions had been damped with the OSEMs. The peaks around 1Hz are reasonably suppressed.
However the spectra from ITMX showed a noise floor at very high level. This is because of strange jumps in the signal of the UL shadow sensor.
I will check some analog circuits for the UL sensor.
(ITMX shadow sensors)
Here is the spectra of the ITMX shadow sensors taken during the damping test (#5534)- -
The UL sensor shows a unacceptable amount of noise.
Additionally I checked the time series of the ITMX shadow sensors and found ONLY the UL sensor frequently showed strange jumps in data.
Here is an example of the time series showing a jump ONLY in the UL sensor.
It is possible that the jumps are coming from some circuits, since the rest of the sensors (including the oplevs) don't detect the same jump.
Currently the damping of the ITMX suspension is intentionally disabled for the noise investigation.
The issue on the ITMX UL sensor has been fixed. It was because of a loose connection in the sensor signal path.
After the fix, the sensor responses completely changed and the suspension became unable to be damped with the new matrix.
At the moment the ITMX suspension is damped by the default input matrix.
we should do the free swinging test once again.
The loose connection was found on the rear side of the 1X5 rack.
There is an adapter card on the rear side, where the driver and sensor signals are combined into a single cable.
I pushed the sensor cable (bottom right in the picture) and the noise disappeared.
Note that I changed the labels on the adapter cards from the old X/Y convention to the new one.
After fixing the loose cable the ITMX suspension became unable to be damped.
So I put the input matrix back to the default and it immediately started damping happily. It means our new matrix is not valid any more.
Here is the latest noise spectra of the ITMX sensors damped with the default input matrix.
As usual all of them are limited by the ADC noise above 20 Hz. (ADC noise is plotted in purple curve)
During the work I also pushed not only ITMX ones but also the cable for the rest of the optics in the adapter cards.
Then PRM became unable to be damped, so it implies the PRM suspension also used to be the same situation.
The input matrix of PRM has been also back to the default.
I moved two matlab scripts into the folder /cvs/cds/rtcds/caltech/c1/scripts/SUS/Oplev_filter_optimization
These are the function 'filter_optimiser_zeros_and_poles.m', and the example script to run the function 'run_filter_optimiser.m'. Type 'help filter_optimiser_zeros_and_poles.m' to get details about the function.
I haven't implemented the new weights yet. I've pasted them into the the file header to remind me/us of the work to be done on the function.
I came to the control room and found the PMC and IMC were unlocked. ==> Relocked
I found the watch dogs of the vertex suspensions are tripped.
I checked the data for the past 6 hours and found they are independent events.
The unlock of the MCs occured 4 hours ago and the watchdogs tripped 2 hours ago.
The suspension damping was restored at around 7:50PM PDT.