Jamie re-redid the ASS model a few hours ago.
I have just compiled it, and restarted c1ass. (The model from last night is currently called c1ass3.mdl) I had to delete and re-put inthe goto and from tags for the LSC signal coming in from the shmem. For some reason, it kept claiming that the inputs using the from tags were not connected, even when I redid the connections. Finally deleting and dragging in new goto and from tags made the model happy enough to compile. Whatever. I'm going to let Jamie do the svn-ing, since he's the one who made the changes. Before I had figured out that it was the tags, I was concerned that the shmem was unhappy, so there was no signal connecting to the input of the goto tag, and that was somehow bad....anyhow, I recompiled the LSC model to re-create the shmem sender, but that had no effect, since that wasn't the problem.
The change from last night is that now the library parts are by DoF. There is only one matrix in each library part, before the servo filters. Now we can DC-actuate on a single mode (ETM or ITM, pitch or yaw), and see how it affects all 4 sensors (the demodulated signals from the lockins). We need to measure the sensing matrix to go from the several sensors to the servo input.
I wanted to try out the ASS tonight, but I wanted some kinds of screens thrown together so I would know what I was doing. Turns out screens take longer than I thought. Am I surprised? Not really.
They're probably at the ~85% mark now, but I should be able to try out the ASS tomorrow I think.
I was trying to load some filters into the ASS so that I can try it out, but for some reason the filter banks aren't working - clicking the on/off buttons doesn't do anything, filters (which exist in the .txt file generated by foton) don't load.
I've emailed cds-announce to see if anyone has any ideas.
When the network / fb went bad this afternoon, I had been working on the ASS model, shortening the names of the filter banks to fix the problem from elog 7092. I wanted to finish working on that, so the ASS model is now rebuilt with slightly shorter names in the filterbanks (which fixes the problem of the filter banks not working).
I mentioned this to Jamie the other day, but here's the error that you get when the GoTo/From tags aren't working:
>>rtcds make c1ass
### building c1ass...
Parsing the model c1ass...
IPC 9 8 is C1:LSC-ASS_LSC
IPC 9 8 is ISHME
IPC 10 9 is C1:RFM-LSC_TRX
IPC 10 9 is IPCIE
IPC 11 10 is C1:RFM-LSC_TRY
IPC 11 10 is IPCIE
INPUT XARM_LSC_in is NOT connected
INPUT YARM_LSC_in is NOT connected
***ERROR: Found total of ** 2 ** INPUT parts not connected
make: *** [c1ass] Error 255
make: *** [c1ass] Error 1
I don't know why these tags weren't working, but there was a GoTo tag on the output of the LSC shmem block, and then Froms on each of the XARM_LSC_in and YARM_LSC_in. The other day I played around with a bunch of different things (grounding inputs, terminating outputs, whatever), but finally replacing the tags with identical ones freshly taken from CDS_PARTS made it happy.
I wrote new setup, on and off scripts for the arm ass. They take the arm as an argument, so it's the same script for both arms. Scripts are in ...../scripts/ASS/ , and have been checked in to the 40m svn.
So far the on script doesn't really do anything, since I haven't chosen values for the CLKGAINs of the lockins. The old values were 30 for lockins 12, 14, 27, 29 and 250 for lockins 7, 9, 22, 24. Unfortunately, I have no memory of which lockin means what in the old numbered system. I'll have to look that up somehow. Or, just dither the optics using some value and look at the spectrum to see the resulting SNR and just pick something that gives me reasonable SNR.
I modified the ASS model slightly:
* Added an overall gain to the ASS_DOF2 library part, between the matrix and the servo inputs so we can do soft startups. Self - remember that the main ASS screen needs to be modified to reflect this!
* Rearranged the order that the demodulated signals go into the matrix. I hadn't paid attention, and the old ordering had the transmission (TRX/TRY) demod signals interleaved with the LSC demod signals. I've changed it to be all the TR signals, then all the LSC signals. I think this makes more sense, since we will use these inputs separately, so now they're on different halves of the matrix.
I turned on the ASS, without closing the loops, to try to measure the sensing matrix.
The Yarm was locked (Eric did a nice job earlier - he'll ELOG ABOUT IT before he goes home!), and I used an LO CLKGAIN of 300 on all of the TRY Lockins. Then I put on and took away a 10% offset in pitch, but it's almost impossible to see the difference.
The attached is a truly awful screenshot, but you can kind of see what's going on. The big steps are me increasing the LO gain, but around "0" on the x-axis I changed the pitch offset from 10% away to nominal. Since there are such big oscillations, the change is basically non-existent. Grrrr. I'll look at it again tomorrow, since I have an exiting bike ride home ahead of me....
From the log, I couldn't understand what has been done.
The procedure we should perform is
Then you can start measuring the sensing matrix. At which part did the attempt fail?
Cavity started out aligned pretty well, but not 100%. Transmission was ~0.8 . Perhaps this was part of the problem.
I realize now that you mention it, it was totally amateur hour of me to only look at the lockin outputs on StripTool (plus POY and TRY on Dataviewer), and not look at TRY on DTT...or any spectra at all. Not so intelligent. I could see some fluctuation of TRY on Dataviewer that corresponded to me turning on the oscillators, as well as the spot wiggling on the camera view of ETMYT a teeny bit.
When applying a 10% misalignment to ETMY Pit (by adding 0.1 to the Pit components of the output matrix, as is done in the MC spot position calibration), I could see that there was a small jump in the StripTool trace, but it was much smaller than the ambient fluctuations of the output.
I just looked back and realized that I must have forgotten to add my screenshot, but it's saved on a desktop on Rossa. It would be better if I had attached the data, but from that you see that the average of the lockin output signal didn't change very much in the last several minutes of the measurement, but the fluctuations (no misalignment offsets) are pretty big, maybe ~10% or 15% the size of the signal. Then when I added the misalignment to one mirror (ETMY PIT), there is a very small jump in the lockin signal, but it is much, much smaller than the size of the ambient fluctuations. Perhaps a long average would result in a "real" value, but by looking by eye, I can't see a discernible difference in the average value of the lockin outputs.
My plan is to do as you say, dithering all 4 optics, and misaligning a single optic's single DoF (Pit or Yaw), and seeing how that misalignment affected each of the sensors (the lockin outputs). Then put that DoF back to nominal, and misalign a different DoF, rinse and repeat.
Okay, so this is a little stream-of-consciousness-y, and you're going to think I'm really dumb, but I just realized that I haven't set the phase of the lockin demodulators yet. So I think I need to dither the optics, and go through each of the sensors, and adjust the phase until the peak in TRY in DTT is maximized for the I phase, and minimized for the Q phase (since we use the I-output). Bah. Bad Jenne.
That's a good point, but I suspect that you end up with the in-phase (0deg) as the response of the IFO is immediate compared with the dithering frequency
as long as the whitening/dewhitening are properly compensated in the digital realm.
Okay, so this is a little stream-of-consciousness-y, and you're going to think I'm really dumb, but I just realized that I haven't set the phase of the lockin demodulators yet. So I think I need to dither the optics, and go through each of the sensors, and adjust the phase until the peak in TRY in DTT is maximized for the I phase, and minimized for the Q phase (since we use the I-output). Bah. Bad Jenne.
Koji pointed out that I was being silly, and rather than actually misaligning the optics (by, say, changing their IFO Align sliders) I was changing the location of the actuation node by changing the coil output gains. Now I see nice signals at the I_OUT of each of the demodulators (so far I've only looked at the YARM).
I've measured and inverted the matrix by taking the nominal values of the demodulator outputs when the optics are all by-hand optimally aligned, then one-by-one misaligning an optic's angle (pitch or yaw), and looking at the demod outputs that result. Repeat with each misalignment DoF for each of the 4 rows of the matrix. Then I set the pit/yaw coupling elements of the matrix to zero. Then invert the matrix, put it in, and see what happens. So far, the yaw DoFs converged to zero, but the pitch ones didn't. I'll play with it more and think some more tomorrow.
I am putting a little bit of brain power into reviving the ASS, and I want to write down what the motivation is, and what the short and long-term plans are.
The IFO IR is not optimally aligned right now. While we were at atmosphere, we should have taken the time to align the green beams to the arms until the greens were both resonating TEM00. We were lazy, and excited to pump down, so we decided that locking on higher order modes was good enough to ensure the beams came out of vacuum. Once we were pumped down, ITMY and ETMY were aligned to the green beam axis. Then, the IR was aligned to this new Yarm cavity axis. This would have been okay, and pretty close, if we had aligned the green beam all the way (used only the outside steering mirrors to resonate TEM00, after the cavity mirrors were aligned for flashing IR). After the IR was aligned to the Ygreen axis, the rest of the IFO was aligned to this slightly-incorrect input pointing. We want to measure the IR spot positions on ITMY and ETMY so that we can tweak the input pointing until we hit the center of both ITMY and ETMY. Then we will align Ygreen's input pointing to this proper IR cavity axis. The rest of the IFO alignment will also have to be redone. This calls for a functioning A2L system, so the measurement part of the ASS.
The immediate motivation for measuring the spot positions is that the current Xarm IR axis is not at all very close to the Xgreen axis. The other day while we were fixing up the Xend table (note in elog 8162), we found that the TRX beam to the TRX PD and the trans camera was clipped on the 2" harmonic separator (which is the first optic that the transmitted IR beam sees on the end tables). It was clipping on the left side of the optic, if you are looking at the face of the optic. This is the more east-erly side of the optic. We moved that optic to the side so that we were not clipping. Then, today when Manasa was trying to align the Xgreen beam, she found that it was clipping on the right side of the harmonic separator, the more west-erly side. I remember seeing that the green beam was roughly centered on the harmonic separator when we were at atmosphere, so this clipping is certainly due to Yuta, Evan and my moving of the harmonic separator. Since the end green steering optics are not very orthogonal in angle/translation, it is very difficult to translate the beam by a significant amount. If we keep the current IR alignment, which surely isn't good anyway (you can see on the ETMXF camera that the beam isn't centered), we would probably have to move the Xgreen steering optics, which would be a total pain. It seems that the better plan is to leave them where they are, and get the IR pointing in the correct direction, and move the harmonic separator back to where it was originally.
Short term (< few days):
Write the arm section of the existing MeasureSpotPositions.py script (in ....../scripts/ASS). Write a wrapper script that, like ...../scripts/ASS/MC/mcassMCdecenter, calls sets up the lockins, runs MeasureSpotPositions.py, and calculates the calibrated spot positions. Use this information to hand tweak the input pointing, then realign the cavities to the new IR, and the greens to the new cavity axes.
All of the infrastructure for this is already in place in the c1ass model. The only drawback to the current situation is the LSC output matrix only has one row for ASS, and so only one cavity can be measured at a time. To make things faster, we could consider increasing the size of the LSC output matrix so that the 2 arms could be measured simultaneously. This change is low priority for now.
Make the full ASS system work.
A major change from the current situation is that the current ASS cannot actuate on the input pointing (TT1 and TT2 for Yarm, BS for Xarm). We want a low bandwidth servo to force the input beam to follow the cavity axis. Implementing this will require some changes to the ASS model.
Remeasure sensing matrix, test system.
I have modified the MeasureSpotPositions.py script to accept the arms as valid cavities (it used to give an error "Sorry, this only works for MC right now").
There is still no wrapper script to turn on lockins and turn them off after the measurement, so I have not tested the arm A2L yet. But I should be able to tomorrow, or whenever the IFO is next available.
* Write the wrapper script (analog of mcassMCdecenter).
* Fix arm assOff, assDown, assOn, assUp scripts to match the current channel names (which were changed long ago to be human-readable, versus mysterious numbers).
I haven't finished debugging the scripts so that the measurement is fully automatic, like the MC, but I did measure the arm spot positions just now.
These numbers aren't especially precise....I just picked numbers off of a StripTool plot, but they give us a good idea of how very far off we are. Also, I don't know yet which way the signs go...I have to think about that in terms of the direction I mis-balanced the coils. It's the same convention as the MC though. You can see in the attached quad camera image (quadrants match the corners of the table) that these numbers aren't unreasonable.
EDIT: It occurs to me now, a little later, that it had been at least half an hour since I last realigned the cavities, so some of this apparent miscentering is due to the input pointing drift. That doesn't account for all of it though. Even when the cavities have very high transmitted power, the spots are visibly miscentered.
Early morning drift in pitch. This plot is meaningless because there is no real light on IP-Ang
The beam is clipping on the pick off mirror at ETMY chamber. The beam is half beam size too high. Yaw is perfect
IP-ANG is coming out of ETMY without clipping. The beam is very high on the pick off mirror at the end table but it is still missing the qpd .
In either .../scripts/XARM or ...../scripts/YARM run either A2L_XARM or A2L_YARM.
The wrapper script will, like the MC script, open a striptool so you can monitor the lockin outputs, setup the measurement, run the measurement, including misbalancing coils on the optics for calibration, and then calculates the spot positions. It records the measurement in a log file in /data_spotMeasurements under each arm's directory. The wrapper script then runs the plotting script which reads the logfile, and plots all past measurements.
Here is that plot for the Yarm:
The first two points were measured within a few minutes of eachother, the third set of points was after input pointing adjustment during IFO alignment. Clearly the pointing that optimized the cavity transmission (trying to leave the test mass mirrors alone, and only moving TT1 and TT2) does not also give the best spot centering. I claim that this is a result of the arm being aligned to the green beam, which was never locked to the 00 mode when we were at air. This is a lesson learned....take the time to deal with the green beams.
I contacted Den about malfunctioning of the Yarm ASS.
He found the scripts were modified during the attempt to make it available for Xarm (cf. a related elog entry)
So far, he could manage to make the current scripts being modified to run.
A striptool file is still missing but this is what we can handle locally.
I thank Den for the remote caring of the issue despite the limited network bandwidth.
Output matrices are added to ASS. Currently ASS is based on the mirror bases.
I prefer to have the actuator bases as the coils are more stable than the sensors.
At this point, the output matrices are identity. So Den's scripts are still working.
Striptool settings were also fixed.
Precise arm alignment is more demanded. as the PRMI locking requires good and reliable alignment of the ITMs.
I previously added the output matrix to ASS.
Now the input and output matrix as well as the gains and filters have been updated.
The current concept is
Fast loop: align the arms by the arm mirrors with regard to the given beam.
Slow loop: move the incident beam position and angle to make the spot at the center of the mirrors
This is actually opposite to Den's implementation.
In order to realize the faster alignment of the arm, I increased the corner frequency of the lockins for the arm signals from 0.5Hz to 1Hz.
With the new configuration the arm alignment converges in 10sec and the input pointing does in ~15sec.
The actuation to the input pointing TTs are done together with the feedforward actuation to the arms.
This way we can avoid too much coupling from the input pointing servos to the arm alignment servos.
The corresponding script /opt/rtcds/caltech/c1/scripts/ASS/YARM/DITHER_Arm_ON.py was also modified.
Same ASS setup for the X arm has been done.
Now Arm ASS can run simultaneously.
I reverted the number of the lockin banks from 6 to 8 for future implementation of A2L for the ITMX by coil balancing.
Since A2L for the ITMX is just barely visible for now, I am going to leave the coil balance untouched.
Yesterday we cleaned up the ASX model and screens to have more straight forward structure of the screen
and the channel names, and to correct mistakes in the model/screens.
The true motivation is that I suspect the excess LF noise of the X arm ALS can be caused by misalignment
and beam jitter coupling to the intensity noise of the beat. I wanted to see how the noise is affected by the alignment.
Currently X-end green is highly misaligned in pitch.
- Any string "XEND" was replaced by "XARM", as many components in the system is not localized at the end table.
- The name like "XARM-ITMX" was changed to "XARM-ITM". This makes easier to create the corresponding model for the other arm.
- There was some inconsistency between the MEDM screens and the ASX model. This was fixed.
- A template StripTool screen was created. It is currently saved in users/koji/template as ASX.stp.
It will be moved to the script directory once it's usefulness is confirmed.
The next step is to go to the end table and manually adjust M2 mirror while M1 is controlled by the ASX.
The test mass dithering provides the error signal for this adjustment but the range of the PZT is not enough
to make the input spot position to be controlled. In the end, we need different kind of matching optics
in order to control the spot position. (But is that what we want? That makes any PZT drift significantly moves the beam.)
As I did for YARM (elog 11779), I measured the relation between offsets added just after the demodulation of the dithering loop of XARM and beam spot shift on ETMX. Defferent from YARM, the beam spot on ITMX DOES change because only BS is used as a steering mirror (TT1&2 are used for the dithering of YARM). Instead, the beam spot on BS DOES NOT change.
This time, I measured by oplevs the angles of both ETMX and ITMX for each value of offset, and using these angles I calculated the shift of the beam spot on ETMX so that I got two independent estimations (one from ETMX oplev, and the other from ITMX oplev) as shown below. The calibration of the oplevs reported in elog 11831 is taken into account.
The difference of two estimations comes from the error of calibration of oplevs and/or imperfect alignment, I think.
What we want from the light source for the AS port light injection:
We have four possible laser sources that we can use for the injection of 1064 nm from the back:
I think for maximum flexibility it's best to fiber-couple whichever source we choose on the PSL table and then just collimate it out of a fiber on the AS table. This way if we want to add fiber-coupled modulators of any kind it's a plug-and-play modification.
Different frequency control schemes are:
Either way we'll need a few things:
I'm working on how to best set this up at the AS port and interfere with normal operation as little as possible. Ideally we use a Faraday just like for squeezed light injection, but this requires some modification of the layout, although nothing that involves mode-matching.
While Gautam is working the restoration of Yarm ASS, I worked on Xarm.
Basically, I have changed the oscillator freqs and amps so as to have linear signals to the misalignment of the mirrors.
Also reduced the complexity of the input/output matrices to avoid any confusion.
Now the ITM dither takes care of the ITM alignment, and the ETM dither takes care of the ETM alignment.
The cavity alignment servos (4dofs) are running fine although the control band widths are still low (<0.1Hz).
The ETM spot positions should be controlled by the BS alignment, but it seems that these loops have suspicion about the signal quality.
While Gautam wa stouching the input TTs, we occasionally saw anomalously high transmission of the arm cavities (~1.2).
We decided to use this beam as this could have indicated partial clipping of the beam somewhere in the input optics chain.
Then the arm cavity was aligned to have reasonably high transmission for the green beam. i.e. Use the green power mon PD as a part of the alignment reference.
This resulted very stable transmission of both the IR and green beams. We liked them. We decide to use this a reference beam at least for now.
Attachment1: GTRX image at the end of the work.
Attachment2: ASSX screen shot
Attachment3: ASSX servo screen shot
Attachment4: Green ASX servo screen shot
Attachment 5: Screen shot of the ASS X strip tool
Attachment 6: Screen shot of the ASS X input matrix
Attachment 7: Screen shot of the ASS X output matrix
I started by checking if shaking an optic in pitch really moves it in pitch - i.e. how much PIT to YAW coupling is there. The motivation being if we aren't really dithering the optics in orthogonal DoFs, the demodulated error signals carry mixed information which the dither alignment servos get confused by. First, I checked with a low frequency dither (~4Hz) and looked at the green transmission on the video monitors. The spot seemed to respond reasonably orthogonally to both pitch and yaw excitations on either ITMY or ETMY. But looking at the Oplev control signal spectra, there seems to be a significant amount of cross coupling. ITMY YAW, ETMY PIT, and ETMY YAW have the peak in the orthogonal degree of freedom at the excitation frequency roughly 20% of the height of the DoF being driven. But for ITMY PIT, the peaks in the orthogonal DoFs are almost of equal height. This remains true even when I changed the excitation frequencies to the nominal dither alignment servo frequencies.
I then tried to see if I could get parts of the ASS working. I tried to manually align the ITM, ETM and TTs as best as I could. There are many "alignment references" - prior to the coil driver board removal, I had centered all Oplevs and also checked that both X and Y green beams had nominal transmission levels (~0.4 for GTRY, ~0.5 for GTRX). Then there are the Transmon QPDs. After trying various combinations, I was able to get good IR transmission, and reasonable GTRY.
Next, I tried running the ASS loops that use error signals demodulated at the ETM dither frequencies (so actuation is on the ITM and TT1 as per the current output matrix which I did not touch for tonight). This worked reasonably well - Attachment #1 shows that the servos were able to recover good IR transmission when various optics in the Y arm were disturbed. I used the same oscillator frequencies as in the existing burt snapshot. But the amplitudes were tweaked.
Unfortunately I had no luck enabling the servos that demodulate the ITM dithers.
The plan for daytime work tomorrow is to check the linearity of the error signals in response to static misalignment of some optics, and then optimize the elements of the output matrix.
I am uploading a .zip file with Sensoray screen-grabs of all the test-masses in their best aligned state from tonight (except ITMX face, which for some reason I can't grab).
And for good measure, the Oplev spot positions - Attachment #3.
Rana suggested taking a look at the Y-arm test mass actuator TFs (measured by driving the coils one at a time, with only local damping loops on, using the Oplev to measure the response to a given drive). Attached are the results from this measurement (I used the Oplev pitch error signal for all 8 measurements). Although the magnitude response for all coils have the expected 1/f^2 shape, there seems to be some significant (~10dB) asymmetry in both the ETM and ITM coils. The phase-response is also not well understood. If we are just measuring the TF of a pendulum with 1 Hz resonant frequency, then at and above 10Hz, I would expect the phase to be either 0 or 180 deg. Looks like there is a notch at 60 Hz somewhere, but it is unclear to me where the ~90 degree phase at ~100Hz is coming from.
For the ITM, the UL OSEM was replaced during the 2016 summer vent - the coil that is in there is now of the short OSEM variety, perhaps it has a different number of turns or something. I don't recall any coil balancing being done after this OSEM swap. For the ETM, it is unclear to me how long this situation has been like this.
Yesterday night, I tried to measure the ASS output matrix by stepping the ITM, ETM and TTs in PIT and YAW, and looking at the response in the various ASS error signals. During this test, I found the ETM and ITM pitch and yaw error signals to be highly coupled (the input matrix was diagonal). As Rana suggested, I think the whole coil driver signal chain from DAC output to coil driver board output has to be checked before attempting to fix ASS. Results from this investigation to follow.
Note: The OSEM calibration hasn't been done in a while (though the HeNes have been swapped out), but as Attachment #2 shows, if we believe the shadow sensor calibration, then the relative calibrations of the ITM and ETM Oplevs agree. So we can directly compare the TFs for the ITM and ETM.
I repeated the test of driving C1:SUS-<Optic>_<coil>_EXC individually and measuring the transfer function to C1:SUS-<Optic>_OPLEV_PERROR for Optic in (ITMX, ITMY, ETMX, ETMY, BS), coil in (LLCOIL, LRCOIL, ULCOIL, URCOIL).
There seems to be a few dB imbalance in the coils in both ETMs, as well as ITMX. ITMY and the BS seem to have pretty much identical TFs for all the coils - I will cross-check using OPLEV_YERROR, but is there any reason why we shouldn't adjust the gains in the coil output (not output matrix) filter banks to correct for this observed imbalance? The Oplev calibrations for the various optics are unknown, so it may not be fair to compare the TFs between optics (I guess the same applies to comparing TF magnitudes from coil to OPLEV_PERROR and OPLEV_YERROR, perhaps we should fix the OL calibrations before fiddling with coil gains...)
The anomalous behaviour of ITMY_UL (10dB greater than the others) was traced down to a rogue x3 gain in the filter module . This has been removed, and now Y arm ASS works fine (with the original dither servo settings). X arm dither still doesn't converge - I double checked the digital filters and all seems in order, will investigate the analog part of the drive electronics now.
I investigated the analog electronics in the coil driver chain by using awggui to drive a given channel with Uniform noise between DC and 8kHz, with an overall gain of 1000 cts. This test was done for both ITMs and the BS. The Whitening/De-Whitening was off during the test. I measured the spectra in
Attachment #1 - There is good agreement between all 3 measurements. To convert the DTT spectrum to Vrms/rtHz, I multiplied the Y-axis by 10V / ( 2*sqrt(2) * 2^15 cts). Between DC and ~1kHz, the measured spectrum everywhere is flat, as expected given the test conditions. The AI filter response is also seen.
Attachment #2 - Zoomed in view of Attachment #1 (without the AI filter part).
*The DTT plots have been coarse-grained to keep the PDF file size managable. X (Y) axes are shared for all the plots in columns (rows).
Similar verification remains to be done for the ETMs, after which the test has to be repeated with the Whitening/DeWhitening engaged. But it's encouraging that things make sense so far (except perhaps the coil balancing can be better as suggested by the previous elog).
I've left both arms locked. The Y-arm dither alignment is working well again, but for the X arm, the loops that actuate on the BS are still weird. Nothing obvious in the tests so far though.
GV 6pm 8 Jun 2017: I realized the X arm transmission was being monitored by the high-gain PD and not the QPD (which is how we usually run the ASS). The ASC mini screen suggested the transmitted beam was reasonably well centered on the X end QPD, and so I switched to this after which the X end dither alignment too converged. Possibly the beam was falling off the other PD, which is why the BS loops, which control the beam spot position on the ETM, were acting weirdly.
will investigate the analog part of the drive electronics now.
Not related to this work:
I noticed the X-arm LSC servo was often hitting its limit - so I reduced the gain from 0.03 to 0.02. This reduced the control signal RMS, and re-acquiring lock at this lower gain wasn't a problem either. See attachment #3 (will be rotated later) for control signal spectra at this revised setting.
I tried playing around with the Oplev loop shape on ITMY, in order to see if I could successfully engage the Coil Driver whitening. Unfortunately, I had no success tonight.
I was trying to guess a loop shape that would work - I guess this will need some more careful thought about loop shape optimization. I was basically trying to keep all the existing filters, and modify the low-passing that minimizes control noise injection. By adding a 4th order elliptic low pass with corner at 50Hz and stopband attenuation of 60dB yielded a stable loop with upper UGF of ~6Hz and ~25deg of phase margin (which is on the low side). But I was able to successfully engage this loop, and as seen in Attachment #1, the noise performance above 50Hz is vastly improved. But it also seems that there is some injection of noise around 6Hz. In any case, as soon as I tried to engage the dewhitening, the DAC output quickly saturated. The whitening filter for the ITMs has ~40dB of gain at ~40Hz already, so it looks like the high frequency roll-off has to be more severe.
I am not even sure if the Elliptic filter is the right choice here - it does have the steepest roll off for a given filter order, but I need to look up how to achieve good roll off without compromising on the phase margin of the overall loop. I am going to try and do the optimization in a more systematic way, and perhaps play around with some of the other filters' poles and zeros as well to get a stable controller that minimizes control noise injection everywhere.
While staring at epics records all day I noticed something about the PIT/YAW offset sliders and ASS offset offloading to slow channels scripts that I'm not sure others are aware off, so I'll briefly discuss it in this post.
The PIT and YAW sliders directly control soft channels that are hosted on the slow machine. Secondary epics records disentangle them for the individual coils:
These channels are the direct input for the physical output channels that generate the control voltage.
The fast channels for PIT and YAW have a numerical correction factor built in that accounts for differences between the OSEMs, but the slow channels don't. This means that the slow PIT/YAW controls are not entirely orthogonal but have crosstalk on the order of 10 percent. This in itself is not that dramatic, however the offload offsets scripts for the dither alignment use the fast PIT/YAW values as inputs, which represent the necessary adjustments to the OSEMs only after the individual correction factors have been applied. The offloading to slow knows nothing of this calibration difference between the OSEMs. The result is that there is a ~10 percent of the offset correction error on the mirror alignment AFTER offloading. This will of course converge after a few iterations, but in any case it is recommendable to run the dither alignment again after offloading and not offload the new offsets to the fast channels.
I attached a wiring schematic from the slow DAQ to the eurocrate modules. Of these, pins 1-32 (or 1A-16C) and pins 33-64 (17A-32C) are on separate DSub connectors. Therefore the easiest solution is to splice the slow DIO channels into the existing breakouts so we can proceed with the transition. This will still remove a lot of the current cable salad. For the YEND we can start thinking about a more elegant solution (For example a connector on the front panel of the Acromag chassis for the fast DIO) now that the problem is better defined.
This splicing in of fast binary channels we discussed at yesterday's and today's meetings is getting messy with the current chassis. Cleaning up the cable mess was a key point, so I got a 4U height DEEP chassis from Rich and drew up a front panel for a modular approach that we can use at the other 40m locations as well. The front panel will have slots for smaller slot panels to which we can mount the breakout boards as before, so all the wiring that I've done can be transfered to this design. If some new connector standard is required it will be easy to draw a new slot panel from a template, for now I'll make some with two DSub37 and IDC50. Since this chassis is so huge it will have ample space for cross-connects.
I also moved the communication of c1auxex2 with the Acromag units off the martian network, connecting them with a direct cable connection out of the second ethernet port. To test if this works I configured the second ethernet port of c1auxex2 to have the IP address 192.168.114.1 and one of the acromag units to have 192.168.114.11, and initialized an IOC with some test channels. Much to my surprise this actually worked straight out of the box, and the test channels can be accessed from the control room computers without having a direct ethernet link to the acromag modules. huzzah!
Steve: it would be nice to have all plugs- connectors lockable
I don't think this is really a problem - we offload to the fast channels and not to the slow (although we really should offload to the slow channels). I think the best approach is to use the ezcaservo utility to offload the DC part of the ASS control signals to the slow channels, so as to not waste fast channel DAC counts on DC offsets. In principle, this approach should be somewhat immune to the slow channel calibration not being perfect.
We managed to realize stable ASS configuration for Yarm. The transmission of 1.06~1.07 was recovered by introducing intentional beam spot offset in the horizontal direction towards the opposite side of the elliptic reflector. The end table optics were adjusted to have the spots about the center of the mirrors, lenses, and PDs/QPDs.
- The Y arm was manually aligned with a given input axis. The transmission was ~0.8.
- Then, TT2 was moved in yaw such that it introduced the horizontal beam shift at the end. By moving the spot to the opposite side of the reflector. The transmission ~0.95 was obtained after patient alignment work.
- Went to the end table and checked the spots. The beam was not at the center of the last 1" lens for the Trans PDs. The beam steering was adjusted to have the spot nicely going through the lens and the mirrors. This made the transmission level to be ~1.05.
- The beam centering on the Trans PD was checked and adjusted.
- The beam centering on the RF BBPD for the arm scan was checked. The spot was too big for that PD. The lens was slightly moved away from the PD to make the spot on the BBPD small. Now the PD saw the plateu when the steering was scanned (i.e. the spot is small enough).
- With the Y arm locked with MC2, the servo gain needs to be 0.012 instead of nominal 0.015 with ETMY to prevent from servo oscilating.
- First of all, only the bottom 4 loops out of total 8 loops were tuned. They are the servos for the beam alignment with regard to the caivty. The linearity and the zero crossings were checked with regard to the reference alignment. All of these 4 showed offsets that causes the servo running away. Don't know the reason of this offset, but it is freq dependent. Therefore the dither freqs were tuned to make the offset zeroed, and tuned the demod phases there. This kept the transmission as high as the reference (~1.05)
- This allowed us to play with the spot position a bit by tuning the caivty alignment. In the end, the transmission of ~1.08 was obtained. Using this alignment, A2L offset for ETMY Yaw was determined to be +17 (to make the error signal -17). This offset produces almost a beam radius (5mm) shifted on the end mirror towards the opposite direction of the reflector.
- The nominal servo setting made the spot servo running away. Gautam pointed out that this could be a gain hierarchy problem (i.e. the spot servos are too fast). We ended up reducing the gain of the servo from 1.0 to 0.3 to make the spot servo stable.
- All the ASS setting was stored in a new snap file "script/ASS/ASS-DITEHR_ON.snap". The previous snap was saved to "script/ASS/ASS_DITHER_ON_preVent201807.snap". This did not save the exc gains of the oscillators. Therefore "DITHER_ASS_ON.py" was modified to have the new exc gains (CLKGAIN). The old values are stored in the comments in this script.
Overall this is not an ideal situation as we don't know what is the actually cause of the offsets in the dither error signals. We expect to correct the beam clipping and the suspension sooner or later. Therefore, we will come back to the ASS again once the other issues are corrected.
After I effected the series resistance change for ETMX, the X arm ASS didn't work (i.e. IR transmission would degrade if the servo was run). Today, we succeeded in recovering a functional ASS servo .
So both arms have working dither alignment servos now. But remember that the Y arm ASS gains have been set for locking the Y arm with MC2 as the actuator, not ETMY.
We then tried to maximize GTRX using the PZT mirrors, but were only successful in reaching a maximum of 0.41. The value I remember from before the vent was 0.5, and indeed, with the IR alignment not quite optimized before we began this work, I saw GTRX of 0.48. But the IR dither servo signals indicate that the cavity axis may have shifted (spot position on the ITM, which is uncontrolled, seems to have drifred significantly, the Pitch signal doesn't stay on the StripTool scale anymore). So we may have to double check that the transmitted beam isn't falling off the GTRX DC PD.
While working on the single arm alignment, I noticed that today, i was able to get the X arm transmission back to ~1.22, and the GTRX to 0.52. These are closer to the values I remember from prior to the vent. Running the dither alignment promptly degrades both the green and IR transmissions. Since the pianosa SL7 upgrade, I can't use the sensoray to capture images, but to me, the spot looks a little off-center in Yaw on ETMX in this configuration, I've tried to show this in the phone grab (Atm #2). Maybe indicative of clipping somewhere upstream of ITMX?
Anyways, I'm pushing onwards for now, something to check out in the daytime.
In an earlier elog, I had claimed that the suspected clipping of the cavity axis in the Y arm was not solved even after shifting the heater. I now think that it is extremely unlikely that there is still clipping due to the heater. Nevertheless, the ASS system is not working well. Some notes:
We have to systematically re-commission the ASS system to get to the bottom of this.
We were wondering yesterday if we can somehow test the ASS system in air. Though the arm cavity can be locked with the low power IMC transmission, I think the dither would render the POY lock unstable. But I wonder if we can use the green beam for a test. The steering PZTs installed by Yuki can serve the role of TT1/TT2 and we can dither the arm cavity mirrors while the green TEM00 mode is locked to the arm no problem. This would at least give us confidence that the actuation of ETMY/ITMY are okay (in addition to the other suspension tests). Then on the sensing side, after pumping down, the only thing we'd be foiled by is in-vacuum clipping or some major gunk on ETMY - everything else should be de-buggable even after pumping down?
I think most of the CDS infrastructure for this is already in place.
[Kruthi, Gautam, Rana]
Gautam installed Atom text editor on Pianosa yesterday.
MC spot position measurement scripts (these can be found in /scripts/ASS/MC directory):
Late elog: Original time of work Tue Aug 17 20:30 2021
I locked the arms yesterday remotely and tried running runASS.py scripts (generally ran by clicking Run ASS buttons on IFO OVERVIEW screen of ASC screen). We have known for few weeks that this script stopped working for some reason. It would start the dithering and would optimize the alignment but then would fail to freeze the state and save the alignment.
I found the caget('C1:LSC-TRX_OUT') or caget('C1:LSC-TRY_OUT') were not working in any of the workstations. This is weird since caget was able to acquire these fast channel values earlier and we have seen this script to work for about a month without any issue.
Anyways, to fix this, I just changed the channel name to 'C1:LSC-TRY_OUT16' when the script checks in the end if the arm has indeed been aligned. It was only this step that was failing. Now the script is working fine and I tested them on both arms. On the Y arm, I misaligned the arm by adding bias in yaw by changing C1:SUS-ITMY_YAW_OFFSET from -8 to 22. The script was able to align the arm back.
With limited proof of working for a few times (but robustly), I'm happy to report that ASS on YARM and XARM is working now.
The issue is that PR3 is not placed in correct position in the chamber. It is offset enough that to send a beam through center of ITMY to ETMY, it has to reflect off the edge of PR3 leading to some clipping. Hence our usual ASS takes us to this point and results in loss of transmission due to clipping.
Solution: We can not solve this issue without moving PR3 inside the chamber. But meanwhile, we can find new spot positions on ITMY and ETMY, off the center in YAW direction only, which would allow us to mode match properly without clipping. This would mean that there will be YAW suspension noise to Length coupling in this cavity, but thankfully, YAW degree of freedom stays relatively calm in comparison to PIT or POS for our suspensions. Similarly, we need to allow for an offset in ETMX beam spot position in YAW. We do not control beam spot position on ITMX due to lack of enough actuators to control all 8 DOFs involved in mode matching input beam with a cavity. So instead I found the right offset for ITMX transmission error signal in YAW that works well.
I found these offsets (found empirically) to be:
These offsets have been saved in the burt snap file used for running ASS.
I'll reiterate here procedure to run ASS.
I updated c1ass model today to use PR2 PR3 instead of TT1 TT2 for YARM ASS. This required changes in c1su2 too. I have split c1su2 into c1su2 (LO1., LO2, AS1, AS4) and c1su3 (SR2, PR2, PR3). Now the two models are using 31 and 21 CPU out of 60 which was earlier 55/60. All changed compiled correctly and have been uploaded. Models have been restared and medm screens have been updated.
We proceeded with the TODO items from .
We tried to update the YARM ASS output matrix to appropriately feed back the ETM and ITM T error signals (input beam pointing) to actuate on PR2 and PR3. Using the existing matrix (used for actuating on TT1 and TT2) led to diverging error signals and big drops in transmission. We iteratively tried flipping signs on the matrix elements, but exhausting all combinations of parity was not efficent, since angular sign conventions could be arbitrary across optics.
We decided to go ahead with Yuta's suggestion of dithering on PR2 and PR3 for input beam pointing, instead of ETMY and ITMY. This would simplify the output matrix greatly since dithering and actuation would now be applied to the same optics. Anchal made the necessary model changes. We tried a diagonal identity submatrix (for input pointing) to map each error signal to the corresponding DOF. With the length (L) control loops disengaged, this configuration decreased all T error signals and increased YARM transmision. We then re-engaged the L loops: the final result is that YARM transmission reached just below 1 [Attachment 1].
Although we've usually used this empirical way to run the alignment, I'd prefer if we had an analytic / numerical model for it.
Radhika, coud you look into writing down the equations for how the various dithers show up in the various error signals into a Overleaf doc? I'm thinking about this currently for the IMC, so we can zoom about it next week once you've had a chance to think about it for a few days. It would be helpful to have this worked out for the 40m alignment for future debugging. Co-located dither and actuation is not likely the best way to do things from a noise and loop x-coupling point of view.
We're trying to reduce the demodulated error signals after running the ASS script for the XARM.
After running the ASS script, we initially tried to play around with the with the EXC Gain and brought all of them down to 300. It didn't make a huge difference on the error signals or the transmission signal. We then tried tweaking the XARM_OUT_MTRX by flipping the signs/changing the magnitude but it mostly just made things worse. We then changed that matrix to closely resemble the YARM_OUT_MTRX (structurally). At an XARM GAIN of about 0.02, with the EXC Gains at 300 and the XARM_SEN_MTRX having 1.00 on the diagonal terms, the error signals slowly started converging to 0. However, X_ARM_ETM_PIT_L_DEMOD_I_OUT16 kept oscillating which wasn't good.
We later tried looking at the spectrum for the demodulated signals to see if there were any peaks at frequencies outside of the delmodulating frequencies. Most of them looked consistent with peaks at demodulation frequencies (and modes) and signal input frequencies (60Hz and modes). We compared the spectrum with the YARM where everything was optimized, there were no noticable differences.
Later in the day, both XARM and YARM lost lock a couple of times for reasons unknown. We restored to an earlier point in the day (12:00) suspecting there was misalignment with the input optics.
THE XARM ASS MYSTERY REMAINS.
We resumed playing around with ASS for XARM. We approached each error signal one at a time to try to determine the sign of actuation and ensure the error was reduced.
1. Resume nailing down the "fast" control by using ITM transmission error signal to feedback to ITM
2. Add in "slow" pointing control by feeding back ETM LSC error (centering) to BS.
*NOTE* We tried to do this before feeding back any ITM error signal, but this immediately caused transmission to drop because ITM had no way to adjust to new input pointing.
I recommend usinng the DC offset method that Koji and I used for measuring the IMC WFS sensing matrix (not the AC method that Anchal used). With a sensing matrix, you should be able to do some partial inversion.
Without any sensing matrix inversion, we would have to rely on a gain hierarchy for getting the loops to work.
With some approximate matrix inversion, the loops are more indepedent of each other. Also if you look at the spectrum of the error signals, it should be clear that the sensing noise is pretty large, and so that sets a natural upper limit to the UGFs. We only want integrator (1/f) loops, but the LPFs cause some extra phase lag.