I've implemented online frequency domain filter and applied it to MC_F.
Magnitude of the filter output at 1 Hz is the same as MC_F. This means that it is not hard for FIR to match the resonance. The problem is with the phase. We can not match the resonance exactly. If the resonance is at f0 and we match at f0 +/- df then in the frequency range (f0, f0 +/- df) the phase is not matched for 180. I guess the filter does not diverge because df is small but also the filter can not account for this huge phase lag. We need to slightly change the simulated actuator TF and see how the filter will react.
As I've spent many hours trying to determine the error in my C code for online filter I decided to write about it to prevent people from doing it again.
I have a C function that was tested offline. I compiled and installed it on the front end machine without any errors. When I've restarted the model, it did not run.
I modified the function the following way
I've adjusted input parameters such that STATEMENT was always true. However the model either started or not depending on the code after if statement. It turned out that the model could not start because of the following lines
cosine = 1.0 - 0.5*a*a + a*a*a*a/24 - a*a*a*a*a*a/720 + a*a*a*a*a*a*a*a/40320;
sine = a - a*a*a/6 + a*a*a*a*a/120 - a*a*a*a*a*a*a/5040;
cosine = 1.0 - 0.5*a*a + a*a*a*a/24 - a*a*a*a*a*a/720 + a*a*a*a*a*a*a*a/40320;
sine = a - a*a*a/6 + a*a*a*a*a/120 - a*a*a*a*a*a*a/5040;
When I've split the sum into steps, the model began to run. I guess the conclusion is that we can not make too many arithmetical operations for one "=" . The most interesting thing is that these lines stood after true if-statement and should not be even executed. Possible explanation is that some compilers start to process code after if-statement during its slow comparison. In our case it could start and then broke down on these long expressions.
WE found that the PMC EPICS values had not been toggled since the reboot and so the RF phase and Amplitude were totally wrong (we should replace this with a fixed oscillator box as we did with FSS).
Also, the NPRO SLOW slider was at -2 V which made the mode going into the PMC funny (although the mode was OK this morning before I started playing with the PMC sliders).
PMC transmission is oscillating in the range 0.5 - 0.85. PMC PZT voltage is 1-2 V.
FSS slow controls was -2.5 V. I adjusted it to 0 and PMC stabilized. PMC PZT voltage is 128, transmission is 0.845.
But most probably, slow control will drift again.
Since there are various ongoing requests for this from the sites, I have moved all of our custom MEDM screens into the cds_user_apps SVN repository. This is what I did:
For each system in /opt/rtcds/caltech/c1/medm, I copied their "master" directory into the repo, and then linked it back in to the usual place, e.g.:
mv $a $b
ln -s $b $a
Before committing to the repo, I did a little bit of cleanup, to remove some binary files and other known superfluous stuff. But I left most things there, since I don't know what is relevant or not.
Then committed everything to the repo.
I did a raw calibration of MCL and GUR. Accuracy is a factor of 2.
GUR path : 800 V/m/s => readout box (G~100) => ADC (0.7 mV/count)
MCL path : laser 1 MHz / V, cavity length ~ 25 m
I measured feedback signal before the laser with SR and avoided whitening filters for MC_F.
Jenne, Den, Rana
The PMC transmission has been varying a lot and the MC seems unstable. Superstitious people might blame this on the El-nino or the alignment with Sagitarius, but we are ostensibly scientists.
Before adjustment, there was a strong correlation between the seismic motions and the PMC reflection. This means that the PMC gain was low and it couldn't stay locked. Now, after fixing the RF and upping the gain slider it looks more stable. Let's watch it for a few days to see if there's an improvement in the trends.
The 10-minute trend of the lat 400 days shows that nothing has changed much this year; its been equally bad for a long while.
WE tried to use the new conlog today and discovered that:
1) No one at the 40m uses conlog because they don't know that it ever ran and don't know how to use regexp.
2) It has not been running since the last time Megatron was rebooted (probably a power outage).
3) We could not get it to run using the instructions that Syracuse left in our wiki.
Emails are flying.
I used APTITUDE to install texlive-full on rosalba so that I could work on a paper. pdflatex was not found on pianosa, rosalba, megatron, etc. I used this command:
sudo aptitude install texlive-full
While this was installing, I read a bunch of forums which claim that its better to bypass the apt-get and use the
TexLive installer instead so that we can use its own package updater 'tlmgr'. Otherwise, the standard Ubuntu distributions
are years out of date (e.g. doesn't have RevTex 4.1).
The MC unlocked ~20 min ago, correlated with 2 consecutive earthquakes in Mexico. The MC came back fine after a few minutes, but the WFS never engaged. I turned them on by hand. I think that Yuta mentioned once that he also had to turn the WFS on by hand. There may be a problem in the unlock/relock catching that needs to be looked at, to make sure the WFS come back on automatically.
Also, someone (Masha and I) should look at the seismic BLRMS. I have suspected for a few days that they're not telling us everything that we want to know. Usually, if there's an earthquake close enough / big enough that it pops the MC out of lock, it is clear from the BLRMS that that's what happened, but right now it doesn't look like much of anything....just kind of flat for hours.
I learned a little bit of python scripting while looking at the videoswitch script, and I made a video medm screen.
Each monitor has a dropdown menu for all the common cameras we use (medm only lets you put a limited # of lines on a dropdown menu...when we want to add things like OMCR or RCT, we'll need to add another dropdown set)
Each monitor also has a readback to tell you what is on the TV. So far, the quads only say "QUAD#", not what the 4 components are.
I put a set of epics inputs in the PEM model, under a subsystem with top-names VID to represent the different monitors. The readbacks on the video screen look at these, with the names corresponding to the numbers listed in the videoswitch script. The videoswitch script now does an ezcawrite to these epics inputs so that even if you change the monitors via command line, the screen stays updated.
For example, since MC2F's camera is plugged in to Input #1 of the video matrix, if you type "./videoswitch MON1 MC2F", the script will write a "1" to the channel "C1:VID-MON1", and the screen will show "MC2F" in the Mon1 cartoon.
This required a quick recompile of the PEM model, but not the framebuilder since these were just epics channels.
There is also a dropdown menu for "Presets", which right now only include my 2 arm locking settings.
All of the dropdowns just call an iteration of the videoswitch script.
Most of my work has been on continuing to develop the Simulink model of the differential arm length control loop.
I have filled in transfer functions for the digital components after looking up the configuration of filters and
gains on the control screens. Filters that were active at the time included 1:50 and 1000:10 on C1LSC_YARM and
C1LSC_POY11 with a gain of 0.1. Jamie also introduced me to foton so that I could obtain the transfer functions
for the necessary filters. I have also continued to work on obtaining the open loop gain and length response
function from the model. The majority of the work now is to refine what I've accomplished so far. Adding details
to the arm cavity and the optics is one potential area for improvement.
I have also spent some time looking at real-time calibration methods from GEO and a proposal for a similar system
on LIGO in P040057-x0 from the DCC. While the work for this project may follow a different path for a real-time
calibration, having a sense for what's been accomplished so far should be helpful in working on a new system.
The script ....../scripts/ASS/MC/mcassMCdecenter takes ~17 minutes to run. The biggest time sink is measuring a no-offset-added-to-coil-gains set, in between each measurement set with the coil gain offsets. This is useful to confirm that the nominal place hasn't changed over the time of the measurement, but maybe we don't need it. I'm leaving it for now, but if we want to make this faster, that's one of the first things to look at.
spot positions in mm (MC1,2,3 pit MC1,2,3 yaw):
[3.5716862287669224, 3.937869278443594, 2.9038058599576595, -6.511822708584913, -0.90364583591421999, 4.8221820002404279]
There doesn't seem to be any spot measurement stuff for any other optics, so I'm going to try to replicate the MC spot measuring script for the Michelson to start.
I have been working on substituting the internal geophones in the STACIS with accelerometers, and this week specifically I have been trying to modify the accelerometer signal so the STACIS PZTs respond properly.
The major problem was that the high signal amplitude caused the STACIS to oscillate uncontrollably, so I lowered all of the pots (for the z direction) and placed several BNC attenuators before the accelerometer signal enters the first amplifier board. The accelerometers now successfully provide feedback without making the STACIS unstable, as shown by this transfer function (the higher and flatter line is open loop, the lower is closed loop with accelerometers providing feedback):
The next step is to optimize the accelerometer feedback so it provides good isolation from 0.1 to 3 Hz, a span that the geophones introduced a lot of noise into. The accelerometers definitely don't introduce as much noise in that region, but don't seem to be doing much isolation either. I will also make some more quantitative plots of the platform motion (using the calibration value for the Wilcoxon accelerometers in the velocity setting with a gain of 1).
Some random discoveries I made this week which are relevant for STACIS testing:
1) Placing weight on the STACIS platform improves stability, but NOT if several blocks are placed on top of each other (they rub against each other, causing lots of vibrations).
2) The accelerometer that is providing feedback must be VERY securely fastened to the STACIS platform; even with three clamps there was extra motion that caused instability. Luckily, there's a convenient steel flange Steve showed me which has a hole that perfectly accommodates the accelerometer and doubles as a weight for the platform. Here is said flange, clamped to the STACIS platform with the accelerometer sitting in the center:
3) Using the shaker next to the STACIS (all on one platform) improves coherence between the base and platform accelerometers above around 10 Hz, but does nothing lower than that, which unfortunately is the region I'm most concerned with.
I realized what the ADC channel mismatch was, and apologize for plotting a terrible coherence in log scale. The channels are now properly matched (there is decent coherence between GUR1_X/STS_X, etc.).
Over the past week, I have been focusing on the issues I brought up in my last ELOG, 6956. I spent quite a while attempting to modify the script and create my own spectrogram function within the existing code. I also checked out the channels on the PSL table for the PSL health page and produced a spectrogram plot of the PMC reflected, transmitted, and input powers, the PZT Voltage and the laser output power. When I was entering these channels into the configuration script, I came across an issue with the way the python script parses this. If there were spaces between the channel names (for example: C1:PSL-PMC_INPUT_DC, C1:PSL-PMC_RFPDDC... etc) the program would not recognize the channels. I made some alterations to the parsing script such that all white spaces at the beginning and end of the channels were stripped and the program could find them.
The next thing that I worked on was attempting to see if the microphone channels were actually stopping the program or just taking an extraordinarily long time. I tried running the program with shorter time samples and that seemed to work quite well! However, I had to leave it running overnight in order to finish. I am sure that this difference comes from the fact that the microphone channels are fast channels. I would like to somehow make it run more quickly, and am thinking about how best to do this.
I finally got my spectrogram function to work after quite a bit of trouble. There were issues with mismatched data and limit sets that I discovered came from times when only a few frames (one or two) were in one block. I added some code to ignore small data blocks like those and the program works very well now! It seems like the best way to get the right limits is to let the program automatically set the limits (they are nicely log-scaled and everything) but there are some issues that produce questionable results. I spent a while adding a colormap option to the script so that the spectrogram colors can be adjusted! This mostly took so long because, on Monday night, some strange things were happening with the PMC that made the program fail (zeros were being output, which caused an uproar in the logarithmic data limits). I was incredibly worried about this and thought that I had somehow messed up the script (this happened in the middle of when I was tinkering with the cmap option) so I undid all of my work! It was only when I realized it was still going on and Masha and Jenne were talking about the PMC issues that I figured out that it was an external issue. I then went in and set manual limits so that a blank spectrogram and redid everything.
The spectrogram is not operational and the colormap can be customized. I need to fix the problem with the autoscaled axes (perhaps adding a lower bound?) so that the program does not crash when there is an issue.
Yesterday, I spoke with Rana about what my next step should be. He advised me to look at ELOGs from Steve (6678) and Koji (6675) about what they wanted to see on the site. These gave me a good map of what is needed on the site and where I will go next.
I need to find out what is going on with the weather channels and figure out how to calibrate the microphones. I will also be making sure there are correct units on all of the plots and figure out how to take only a short section of data for the microphone channels. I have already modified the tab template so that it is similar to Koji's ELOG idea and will be making further changes to the layout of the summary pages themselves. I will also be working on having the right plots up consistently on the site.
This past week, I've been working on moving forward with the basic cavity model I developed last week (for future reference, that model was FP_3, and I am now working on FP_4) and refining the suspensions. I added three degrees of freedom to my simulation (such that it now consists of yaw, pitch, displacement, and side-to-side motion) and am attempting to integrate them with the OSEMS. I have also added mechanical damping for all degrees of freedom, and am adding electric damping and feedback. Concerning that, are all of the degrees of freedom locally damped in addition to being actuated on by the control system? Or does the control system do all of the damping itself? The first is the way I'm working on setting it up, but can easily change this if needed.
The next iteration of FP (FP_5) will replace my complicated OSEM --> Degrees of Freedom and vice versa system with the matrix system (see the poster Jenne and Jamie made, "Advanced Suspension Diagnostic Procedure"), as well as adding bounce/roll, yaw/y coupling, various non-damping filters as needed (i.e. the a2f filters), and noise sources. However, I'll only move on to that once I'm sure I have FP_4 working reasonably well. For now at least, the inputs/outputs look fine, and some of the DOF show resonance peaks. I'll become more concerned about where these resonance peaks actually are once I add damping.
Attached is a screenshot my work in progress. Only one of the suspensions has a basic feedback/damping loop going (as a prototype). It looks complicated now, but will simplify dramatically once I have damping worked out. Pink inputs are noises (will probably replace those with noise generators in FP_5) and green inputs are the OSEMS. The red output is the displacement of the cavity from resonance. The blue boxes are suspensions.
This week, I continued to work with my Artificial Neural Network. Specifically, I implemented a 3-hidden layer sigmoidal, gradient-descent supervised network, with 3 neurons in the final output layer, since I have introduced a new class, trucks. I have overcome my past data limitation, since I observed that there is a multitude of trucks that comes between 9 and 10 am, and thus I have observed a bunch of trucks after the fact (their seismic patterns are rather distinct, and thus there could prove to be a very large supply of this data - I have gathered data on the past 50 days so far, and have gathered 60+ truck patterns).
With 3 classes, the two-layer network converges in ~200 epochs, while the 3-layer network takes around ~1200 (and more time per iteration). Since the error gradients in the stochastic gradient descent are recursively calculated, the only real time limitation in the algorithm is just lots of multiplication of weight / input vectors, lots of computation of sigmoidal functions, and lots of data I/O (actually, since the sigmoidal function is technically an exponentiation to a decimal power and a division, I would be curious to know if theory or Matlab has any clever ways of computing this faster that can be easily implemented - I will look into this today). Thus, the networks take a long time to train. I'm currently looking at optimizing the number of layers / number of neurons, but this will be a background process for at least several days, if not the next week. In the greater scope of things, however, training time isn't really a problem, since the actual running of the algorithm requires only one pass through the network, and the network should be as well-trained as possible. However, due to the fact that I am only here until the end of August, it would be nice to speed things up.
As far as other classifications, I can simulate signals either by dropping the copper block from the Stacis experiment, or by applying transfer functions to general seismic noise. However, I would like more real data on noise sources, but the only other one plausible to LIGO that I can currently think of (cars don't show up very well) is the LA Metro. Perhaps I will take a day to clock trains as they come in (since the schedule is imprecise) and see if there is any visible seismic pattern.
I also, with the help of Yaakov, Jenne, and Den, now have three working, triangulated seismometers, which can now begin taking triangulation data (the rock tumblers are still working, so there should be opportunities to do this), both to find hot-spots as Rana suggested, and to measure the velocity and test out my algorithm, as Den suggested.
The Streckeisen is currently plugged into ADC channels 13, 14, and 15 (corresponding to STS-3 in the channels). The X, Y, and Z components are correct. The signals is zeroed (it's been so for at least the past 10 hours), the coherence with GUR1 looks decent, and the signal looks similar to the GUR1 signal.
I was trying to lock and look at the ASS for the Yarm, but the transmitted power was oscillating very near 1Hz. Eventually I looked at the mode cleaner, and it was also moving around at a similar frequency. I took spectra of the ETMY SUS damping feedback signals, and they (POS, PIT, YAW) saw this 1Hz motion too (see attached plots...same data, one is a zoom around 1Hz).
As a first place to start, I turned off the WFS, which immediately stopped the MC oscillation. Turning the WFS back on, the oscillation didn't come back. I'm not sure what happened to make the WFS bad, but I perhaps had the ASS dither lines on (I've had them on and off, so I'm not sure), although turning off the dither lines didn't make the WFS any better.
As an aside, the MC refl with the WFS off was ~1.5, rather than the ~0.5 with the WFS on, which means that the PSL beam and the MC axis are not well matched.
Den and investigated the STS-1 problem (which is currently plugged into ADC channels 13, 14, and 15, which correspond to the STS-3 channels in dtt). It turns out that I had plugged in the power to the monitor in the host box rather than the remote. The X, Y, and Z readout is currently approaching a mean of zero, and I will let it continue to do so overnight (pressing auto-zero as necessary). Attached is a plot of the coherence with GUR 1, and the time-domain signals.
The names of the DoF filters in the ASS loop were wrong. The filters themselves were correct (low pass filters at super low freq, for the Lock-in), but the names were backward.
Our convention is to name filters "poles:zeros", but they had been "z:p". The names of FM1 in all the DoF filter banks are now fixed.
The PMC was unlocked earlier this morning, for ~20min, presumably from the rocks next door. I relocked it.
Then, a few min ago, the PMC suddenly decided that it wouldn't lock with a transmission greater than ~0.7 . I found that the laser temp adjust on the FSS screen was at -1.9ish. I put it back to zero, and now the PMC locks happily again. I think we got into a PSL mode-hopping temperature region on accident.
It seems that the STS-1 ADC channels had the same mismatch issue as the GUR-2 channels. The PEM_MONITOR has STS_1 listed as channels 6, 7, 8 (+1 on the actual ADC) whereas it was plugged into channels 13, 14, 15 (+1 on the actual ADC as well) with nothing in channels 6, 7, 8. Thus, I moved the cables and reset STS_1. The readout, however, is still only a magnitude of ~10 counts (I checked, however, that this is indeed the readout when the seismometer is plugged in vs. when it is unplugged), but hopefully it will stabilize during the day, as did GUR 2.
As stephanie did a few years ago, the idea should be to match the damping between the DRMI optics so as to minimize the differential motion. No notching is necessary. Read her SURF report about the IMC.
I assume it's the rock tumbler, although it could be something else, but the MC has had trouble staying locked yesterday and today (yesterday Yaakov and I went over there and they were doing stuff almost constantly - it's super loud over there), and today even the PMC has fallen out of lock twice. I just relocked it again, since it went out of lock just after Journal club started.
Anyhow, I think this will be good data for Masha, and then also for the Masha+Yaakov triangulation project.
These are all priority action items need to be done before I come back (in mid-September).
BE PREPARED FOR THE FULL LOCK!
- Prepare and install tip-tilts -JAMIE
- Adjust IP-ANG -JAMIE, JENNE, KOJI
- Make sure there's no clipping. Start from MC centering -JAMIE, JENNE, KOJI
- Make ASS and A2L work -JENNE, JAMIE
- Better MC spot position measurement script(see the last sentence in elog #6892) -JENNE
- Daily beam spot measurements for IFO, just like MC -JENNE
- ASS for green using PZT steering mirrors on end table -JENNE
- Modeling of phase tracking ALS -JAMIE
- PZT mounts for PSL and ALS beams -JENNE, KOJI
- Add temperature sensors for end lasers to CDS slow channels -JENNE
- Put green trans camera, GTRY PD, and GTRX PD on PSL table -JENNE
- Better beat box; include comparators, frequency dividers, and whitening filters -JAMIE, KOJI
- Adjust servo gain/filters of end green PDH lock (reduce frequency noise) -JENNE
- Add on/off switch, gain adjuster, etc to CDS for end green PDH lock -JENNE, JAMIE
- Find why and reduce 3 Hz motion -JENNE
- Simulation of PRMI with clipping -YUTA
- Alignment tolerance of PRMI -YUTA
Yaakov and I investigated the GUR 2 problem. It turns out that the ADC channels that GUR 2 was plugged into, ADC channels 6 through 8 (on the actual ADC they are C7 through C9), did not correspond to the channels labelled "GUR 2" in the PEM, ADC channels 3 through 5. We modified them so that GUR 2 is now plugged into ADC channels 3 through 5 (on the ADC it's +1).
Before we discovered that this was the problem, we attempted to take the cover off of GUR 1 to check the gains, and discovered a stripped Allen screw on the side by the "Vertical" pot, which we removed.
Now the GUR 2 readout looks good, and we will give it more time to settle down before we take data.
It looks like PRMI LSC is making PRM motion (and BS motion) at ~3Hz worse.
I concluded this from measuring feedback signal of suspension servo and LSC servo.
1. BS and PRM moves alot at ~3 Hz.
2. LSC senses fake signal at ~3Hz from beam spot motion on PD
3. LSC feedback this motion to position of PRM
4. Suspension damping servo try to cancel this because ~3 Hz motion is not actual length signal
x: Orignal longitudinal motion of PRM
n_L: Sensing noise in LSC (including ITM motion, fake ~3Hz motion)
n_S: Sensing noise in suspension damping (OSEM sesor noise, fake ~3Hz motion)
G_L: Openloop transfer function of PRCL LSC
G_S: Openloop transfer function of suspension damping (PRM SUSPOS)
H: LSC sensor transferfunction (PDH signal on REFL_33_I)
F_S: Filter for suspension damping
A: Actuator transfer function (PRM OSEM coils)
Since G_L >> G_S and G_L >> 1 for below 100Hz (see elogs #6950 and #6967), feedback signal of LSC and suspensiton damping can be written as
f_L = x - A*F_S*n_S - (1+G_S)/H*n_L
f_S = 1/G_L*x - A*F_S*n_S - G_S/H*n_L
So, basically, LSC supresses PRM motion but puts n_L to PRM. Suspension servo try to surpress n_L, which was not there when LSC is off.
1. Below left is uncalibrated spectra of
Red: suspension damping feedback to PRM/BS when PRMI is locked
Blue: LSC feeed back to PRM/BS when PRMI is locked
Pink: suspension damping feedback to PRM/BS when PRMI is not locked
As you can see, PRM suspension damping feed back increases at ~ 1.5-3 Hz because of LSC. This is the same for BS at ~1 Hz and ~3 Hz.
2. Above right is same spectra for ITMX/ITMY. There's no change in suspension damping feedback. This means, radiation pressure coupling or something is not related in this issue. LSC servo is not engaged for ITMs.
3. Below is oplev spectra for PRM/BS
Red: Oplev pitch error signal of PRM/BS when PRMI is locked
Blue: Oplev yaw error signal of PRM/BS to PRM/BS when PRMI is locked
Pink: Oplev pitch error signal of PRM/BS when PRMI is not locked
Cyan: Oplev yaw error signal of PRM/BS to PRM/BS when PRMI is not locked
You can see the increase in pitch/yaw motion at ~ 1.5-3 Hz for PRM, and ~1Hz/~3Hz for BS. They are consistent with measurement of feedback spectra.
By the way:
I adjusted oplev servo gains for ITMX. They were crazy this evening. They now have UGF ~ 2.5 Hz.
C1:SUS-ITMX_OLPIT_GAIN = 1.0 (was 2.6)
C1:SUS-ITMX_OLYAW_GAIN = -0.5 (was -1.6)
- Can we notch ~3 Hz feedback so that LSC doesn't feedback this motion?
- Why ~3 Hz motion is high for BS/PRM? Too much load on BS chamber stack?
- Can we reduce ~3 Hz motion?
- If BS chamber stack is bad, PR3 might have ~3 Hz motion, too. Does this make PRMI beam spot motion crazy?
- How about PR2?
I noticed on DataViewer today that GUR2 was outputting only noise (somewhere around 2 counts). Jenne suggested that GUR 2 might not be plugged in. I turned off the ADC, and tried several times to plug GUR 2 back in. I thought something might be wrong with the cable, but when I plugged the GUR1 cable into GUR2, there was still no readout (although the GUR1 cable works fine when I plug it into GUR1). Perhaps I'm just inept at plugging in GUR2, or perhaps there's another issue. Either way, I'll ask Jenne about it tomorrow and try again.
TP2 dry_pump was changed at intake pressure 982 mTorr at 84,889 hrs This seal hold up for one year.
The rebuilt pump seal performing well at 28 mTorr
Here's a picture of where I am now inputting signals into the STACIS with the accelerometers (the orange and blue wires):
I know this is the right point because I could see the geophone signal from these points . By inputting a swept sine signal into this point, I was able to take a transfer function of this first amplifier/filtering circuit board, which will be useful if I need to make my own filter for the STACIS:
I have unplugged the geophones and am inputting a signal from an accelerometer into this point. The accelerometers output a different signal than the geophones, so I am trying to modify the accelerometer signal to be closer to the geophone one. I've lowered the gain on all the pots for the z axis and put in several BNC attenuators to lower the accelerometer signal amplitude.
At the moment, using the accelerometers as feedback makes the platform vibration worse, which will hopefully be solved by some more attenuation or filtering of the accelerometer signal.
Somehow we got an excitation going on BS OpLevs, and even though Yuta thought he might have accidentally started it, he couldn't find where, so we couldn't stop it.
Since we don't have anything written on the wiki, I ended up calling Joe to remind me how to clear test points:
controls@allegra:~ 0$ diag -l -z
diag> tp clear * *
test point cleared
diag> awg clear 21.*
diag -l -z
diag> tp clear * *
test point cleared
diag> awg clear 21.*
The tp clear clears all test points everywhere. The awg clear wouldn't let me do a universal clear, so I just did #21, which is the SUS model. So if you want to kill excitations on a specific model, you must find it's DCU ID (it's in the top right corner of the GDS status screens for each model).
I measured openloop transfer functions of PRM/BS/ITMX/ITMY SUSPOS servo.
They look great. They all have ~50 deg phase margin and damps only POS resonance.
Yuta and I bought some new BS mounts so that we could use the 4th port of the beamsplitters which are combining the PSL green and the arm transmitted beam, just before the Beat PD for each arm. I just placed the Yarm one, and have aligned the light onto both the Beat PD and the Trans DC PD.
I'll do the Xarm after lunch.
I tried to reduce BS 3.3 Hz motion with local damping. 3.3 Hz probably comes from the stack, but I want to reduce this because PRMI beam spot is moving in this frequency.
I tried it by putting some resonant gains to oplev servo and OSEM damping servo, but failed.
What I learned:
1. BS OSEM input matrix diagonalization looks impressively good. Below is the spectra of oplev pitch/yaw and OSEM pos/pit/yaw/side comparing with and without damping (REF is without). You can see mechanical resonances are well separated. Also, damping servos don't look like they are adding noise at 3.3 Hz.
2. 3.3 Hz motion is not stationary. Amplitude is sometimes high, but sometimes low. Amplitude changes in few seconds. You can even see 3.3 Hz in the dataviewer, too.
3. I set new oplev gains. I lowered them so that UGFs will be ~ 2.5 Hz. I turned ELP35 on.
C1:SUS-BS_OLPIT_GAIN = 0.2 (was 0.6)
C1:SUS-BS_OLPIT_GAIN = -0.2 (was -0.6)
4. All OSEM sensors feel about the same amount of 3.3 Hz motion.
5. OLPIT and OLYAW reduces if you put 3.3 Hz resonant gain to oplev servo, but it is maybe not true since they are in-loop error signals. You can't see the difference from OSEM sensors. Below is oplev pitch/yaw and OSEM pos/pit/yaw/side comparing with and without 3.3 Hz resonant gain (REF is without).
I heard that Steve did great work on oplev in Feb 2012.
Here's summary what happened to oplev since then.
Someone changed oplev filters and gain. I couldn't find elog about it. Does anyone know?
Quadrant sum (C1:SUS-XXX_OLSUM) for each optic now and in Feb 2012 is
ITMX ITMY ETMX ETMY BS PRM SRM
2456 14630 1476 14885 3650 4302 2937 counts (now)
1300 14500 900 9000 3500 4000 2600 counts (Feb 6, 2012 elog #6256)
0.025 0.3 0.2 0.2 0.05 0.06 0.04 mW on QPD (Feb 6, 2012 elog #6256)
1350 15000 1500 15500 3500 4000 2600 counts (Feb 23, 2012 elog #6744)
ETMX oplev laser was replaced on May 22, 2012, and quadrant sum was 20500 counts at that time (elog #6656).
Oplev servo openloop transfer functions:
In Feb 2012, gains were adjusted and filter settings are recorded by Steve.
For all pitch OLTF, see elog #6309.
For all yaw OLTF, see elog #6323.
All the filters in Feb is listed in elog #6744.
Filters now are messed up, as Jamie pointed out in elog #6743.
Below is the current filter settings.
I turned ELP and RLP filters on, which wasn't on to cut-off noises at higher frequencies.
I left resonant gains of ETMs because I don't know what they are for.
I put ELP35 for ITMs, BS, PRM and SRM. I put RLP80 for BS, PRM and SRM.
I will leave ELP35 off for BS and SRM because they oscillate currently. ELP50 and ELP40 is on for a substitution. I will readjust them soon.
I don't know who changed all gains (except for PRM, which I adjusted in elog #6952). It doen't look like it is because of change in quadrant sum.
I also don't know who deleted 3.3 Hz resonant gain for BS.
I put all similar filters in same place to make it organized. Now, basic fitlers are organized. We may need some resonant gains for each optics.
The X and Y directions in the STACIS still both oscillate uncontrollably in closed loop, so I'll be doing my testing in Z for now. If I need to use the other axes I'll lower their gain with the pots and add weight to the STACIS platform to try to make it more stable.
Measurements I've taken for Z:
--Open loop gain, taken by driving the PZTs with a swept sine signal and measuring with both internal geophones and external accelerometers. These measurements look a lot like the plots supplied by the STACIS manufacturer, with a resonance at 15-16 Hz (X and Y also look good). Figure below was taken with geophones:
--Open loop gain, where the input is ambient seismic noise measured by one set of accelerometers on the floor and one set on top of the STACIS:
--Closed loop gain, where the input is ambient seismic noise, and feedback is supplied by the geophones (like normal STACIS operation). There's a definite drop in the transfer function, as expected:
--Open and closed loop transfer functions superimposed (the higher one is open):
I am currently working on using the less-noisy accelerometers to provide feedback instead of the geophones. I have found the right point before the extension board to input the accelerometer signal which is NOT the same as the Signal IN/OUT cables- those are at the end of the board, after amplifying and filtering. I want the accelerometer signal to go through the same circuitry as the geophone signal so that the noise of the sensors themselves can be compared.
Problem: Coherence isn't great between the accelerometer sets at low frequencies, which leads to a not very smooth transfer function. I might try using the shaker, because the larger motion may lead to better coherence between the accelerometers on top of the STACIS and at its base.
Here's what I accomplished since my last elog:
I continued working on the beatbox calibration. Instead of using the function generator for an input signal,
I used the network analyzer because it can generate higher frequencies that are of more interest to us. I ran
the network analyzer output into the RF in port, and took voltage measurements from the Q port using the
oscilloscope. The frequency range I focused on was 100 - 200 MHz, and I also took more closely spaced measurements
from 180 - 200 MHz. The data is recorded on the computer now, and I will analyze it more fully in the future.
I also edited the Calibration page on the LIGO 40 m wiki. Rana showed me the page on calibration, but there was
limited information there, so he recommended that I post my work there as well. Right now I haven't posted much,
but I will likely add some information on the Simulink model I'm working on and results of measurements to be
taken as the project progresses.
The majority of my work has been on developing a Simulink model in Matlab of the differential arm length sensing
and control loop. I am using Figure 6-1 from Rana's thesis as a guide on important components to include in the
model. Some of the details on the transfer functions of components need to be worked out, but a basic framework has
been established. Right now the transfer function of the arm cavity is being approximated as a single pole, but
we may integrate the calibration model I'm working on with Sasha's work on the arm cavity. I have also begun to
implement the length response function in the model. I believe it is giving correct results at frequencies up to
100 Hz, but is off at higher frequencies. This might be fixed after I continue to fill in the transfer functions
of the digital components; they are currently set to 1 until I find more information on them.
Masha and Yaakov - this is an excellent opportunity for you guys to test out your triangulation stuff! Also, it might give a lot of good data times for the learning algorithms.
Maybe you should also put out the 3 accelerometers that Yaakov isn't using (take them off their cube, so they can be placed separately), then you'll have 6 sensors for vertical motion. Or you can leave the accelerometers as a cube, and have 4 3-axis sensors (3 seismometers + accelerometer set).
Below is angular spectra of every suspended core optics.
As you can see, there's a peak at 3.3 Hz for BS and PRM angular motion. Compared with other optics, they look large.
I briefly checked suspension filters and found that BounceRoll filters and f2a filters are not turned on for BS.
I checked elog and there was no reason for them to be off, so I turned them on. It didn't change angular spectra very much, though.
I'm going to check BS suspension damping and see where 3.3 Hz peak comes from.
Note that oplev quadrant sums are different for every optics, so we can't simply compare angular motion between optics from OLPIT/OLYAW. But for OSEMs, there are "cnt2um" which calibrate sensor outputs into um. and input matrix should be normalized, so we can compare SUSPIT/SUSYAW with other optics.
I centered all oplevs to do this measurement.
Quadrant sum (C1:SUS-XXX_OLSUM) for each optic now is
ITMX ITMY ETMX ETMY BS PRM SRM
2456 14630 1476 14885 3650 4302 2937 (counts)
This week, my work fell into two categories: Artificial Neural Networks and lab-related projects.
Artificial Neural Networks
- I played around with radial basis functions and k-means classification algorithms for a bit in order to develop an algorithm to pick out various features of seismic signals. However, I soon realized that k-means is an extremely slow algorithm in practice, and that radial basis functions are thus difficult to implement since their centers are chosen by the k-means algorithm in practice.
- Thus, I moved on to artificial neural networks. Specifically, I chose to implement a sigmoidal neural network, where the activation function of each neuron is f(u) = 1/ (1 + e-u/T), T constant, which is nice because it's bounded in [0, 1]. Classification, then, is achieved by generating a final output vector from the output layer of the form [c1, c2, c3, ..., cN] where N is the number of classes, ci = 1 (ideally) if the input is of class i, and ck = 0 otherwise.
- First, I built a network with randomly generated weights, ten neurons in the one hidden layer, and two output neurons - to simply classify [1, 0] (earthquake) and [0, 1] (not an earthquake). I ran this on fake input I generated myself, and it quickly converged to error 0. Thus, I decided to built a network for real data.
- My current network is a 2-layer, 10 neuron / 2 neuron sigmoidal network that also classified earthquake / not an earthquake. It trains in roughly 80 - 100 iterations (it's learning curve on training data it attached). It decimates full data from DataViewer by a factor of 256 in order to run faster.
- Next steps: currently, my greatest limitation is data - I can use US Geological Survey statistics to classify each earthquake (so that N = 10, rather than 2, for example), but I would like definite training data on people, cars, trucks, etc. for supervised learning, in order to develop those classes. Currently, however, the seismometers are being used for mine and Yaakov's triangulation project, so this may have to wait a few days.
- I apologize for all of the E-logs, but I changed the filters in the RMS system (to elliptic and butterworth filters) and changed the seismic.strip display file.
- I repositioned the seismometers so that Yaakov and I can triangulate signals and determine seismic noise hot-spots (as a side-project).
Right now I'm going to try for more classes based on USGS statistics, and I will also explore other data sources Den suggested.
Thanks for your help, everybody in 40m!
These past two weeks, I've been working on simulating a basic Fabry-Perot cavity. I finished up a simulation involving static, non-suspension mirrors last week. It was supposed to output the electric field in the cavities given a certain shaking (of the mirrors), and the interesting thing was that it outputted the real and imaginary components seperately, so I ended up with six different bode plots. Since we're only interested in the real part, bodes 2, 4, and 6 can be discarded (see attachment 1). There was a LOT of split-peak behavior, and I think it has to do either with matlab overloading or with the modes of the cavity being very close together (I actually think the first is more likely since a smaller value of T_1 resulted in actual peaks instead of split ones).
At any rate, there really wasn't much I could improve on that simulation (neither was there any point), but I attach the subsystem governing the electric field in the cavity as a matter of academic interest (see attachment 2). So I moved onto simulations where the mirrors are actually suspended pendulums as they are in reality.
A basic simulation of the suspended mirrors gave me fairly good results (see attachment 3). A negative Q resulted in a phase flip, detuning the resonance from the wrong side resulted in a complete loss of the resonance peak, and the peak looked fairly consistent with what it should be. The simulation itself is pretty bare bones, and relies on the two transfer functions P(s) and K(s); P(s) is the transfer function for translating the force of the shaking of the two test masses (lumped together into one transfer function) into actual displacement. Note that s = i*w, where w is the frequency of the force being applied. K(s), on the other hand, is the transfer function that feeds displacement back into the original applied force-based shaking. Like I said, pretty bare bones, but working (see attachment 4 for a bode plot of a standard detuning value and positive Q). Tweaking the restoring (or anti restoring, depending on the sign of the detuning) force constant (K_0 for short) results in some interesting behavior. The most realistic results are produced for K_0 = 1e4, when the gain is much lower overall but the peak in resonance gets you a gain of 100 in dB. For those curious as to where I got P(s) and K(s), see "Measurement of radiation-pressure-induced optomechanical dynamics in a suspended Fabry-Perot cavity" by Thomas Corbitt, et. al.
I'm currently working on a more realistic simulation, with frequency and force noise as well as electronic feedback (via transfer functions, see attachment 5). The biggest thing so far has been trying to get the electronic transfer functions right. Corbitt's group gave some really interesting transfer functions (H_f(s) and H_l(s) for short; H_f(s) gives the frequency-based electronic transfer function, while H_l(s) gives the length-based electronic transfer function), which I've been trying to copy so that I can reproduce their results (see attachment 6). It looks like H_l(s) is a lowpass Butterworth filter, while H_f(s) is a Bessel filter (order TBD). Once that is successful, I'll figure out what H_f(s) and H_l(s) are for us (they might be the same!), add in degrees of freedom, and my first shot at the OSEM system of figuring out where the mirror's position is.
I have been working on configuration of the Daily Summary webpages and have been attempting to create a "PSL health" page. This page will display the PMC power, the temperature on the PSL table and the PSL table microphone levels. Thus far, I have managed to make the extra PSL tab and configure the graph of the interior temperature, using channel C1:PSL-FSS_RMTEMP.
I have been attempting to make a spectrogram for one of the PMC channels, but there is an issue with the spectrogram setup, as Duncan Macleod noted in ELOG 6686:
"At the moment a package version issue means the spectrogram doesn't work, but the spectrum should. At the time of writing, to use the spectrum simple add 'plot-dataplot2'."
Because of this issue, I have also been trying to make the spectrogram plots work. Thus far, I have fixed the issue with one of the spectrogram plots, but there are several problems with the other four that I need to address. I have also been looking at the microphone channels and trying to make the plot for them work. I checked which microphone was on the PSL table and plotted it in matplotlib to make sure it was working. However, when I tried to incorporate it into the daily summary pages, the script stops at that point! It might simply be taking an excessively long time, but I have to figure out why this is the case.
(I am using channel C1:PEM-MIC_6_IN1_DQ, if this is blatantly wrong, please let me know!!)
The main point of this ELOG is that I have working test-daily summary pages online! They can be found here:
Also, if anyone has more requests for what they would like to see on the finalized summary pages site, please respond to this post or email me at: firstname.lastname@example.org
It is not as dramatic as PRMI, but I could see BS 3.3 Hz motion at AS and REFL when MI is locked at dark fringe.
Below is uncalibrated spectra of REFLDC and ASDC when
Red: MI is locked at dark fringe
Blue: there's no light (PSL shutter closed)
We have to do something to get rid of this.
My hypothesis from the measurements below, to explain PRMI beam spot motion is;
Stack motion at 3.3 Hz largely couples to BS and PRM angular motion.
LSC for PRMI try to compensate this 3.3 Hz motion because they appear in the error signal.
But since it's not length, failing and even adding more angular motion.
1. Uncalibrated spectra of POPDC and ASDC when PRMI is locked. This tells you that beam motion seen at POP is 3.3 Hz.
2. Uncalibrated spectra of feedback signal to BS and PRM. This tells you that LSC is actuating BS and PRM mainly at 3.3 Hz. I think this is because beam spot on PD moves at 3.3 Hz and so faking the error signal.
3. Below left is uncalibrated spectra of BS, ITMX, ITMY, PRM (and ETMY) angular motion measured using oplevs. I centered oplevs on these optics (except ETMY, which was mis-aligned during PRMI lock). It looks like BS and PRM motion at 3.3 Hz is larger than other optics. Also, there's some coherence between POPDC and BS/PRM motion. We see some coherence with ITMs and even with ETMY, which is completely independent from PRMI. I think this is because 3.3 Hz motion is originated from the ground (stack) motion.
4. Above right is the same spectra, but when PRMI is not locked. It looks like there's no big change compared with PRMI locked. When locked, there's some excess for BS and PRM at ~1-3 Hz. I think this is from LSC feedback, which in principle, doesn't affect any angular motion.
- Why BS and PRM has large 3.3 Hz peak compared with other optics?
- Is 3.3 Hz peak effecting MI lock or arm lock?
- How can we monitor PR2/3 angular motion?
PRMI glitch certainly comes from power recylcing gain fluctuation.
I confirmed this by
- Reading the value of POPDC at the time when there's glitch in error signals
-> There was some threshold for POPDC to make a glitch
- Look closer to the glitch
-> It was oscillation in ~400Hz, where we have phase flip in PRCL/MICH servo
Next is to find why we have power recycling gain fluctuation. I want to see the correlation between alignment fluctuation of optics and POPDC.
Below is the plot of
Red PRCL error signal (C1:LSC-REFL33_I_ERR)
Green MICH erorr signal (C1:LSC-AS55_Q_ERR)
Blue PRC intra-cavity power (C1:LSC-POPDC_OUT)
when PRMI is carrier locked.
Time when there is a glitch in error signal is marked. Value of POPDC at that time is also marked. It looks like there's some threshold (dotted blue line).
It sometimes doesn't show glitch even if POPDC is above the "threshold". It is maybe because of alignment fluctuation. Intra-cavity power gets high, but power at PDs get low, or vice versa.
Right plot is closer look. Glitch is a sudden oscillation at ~400 Hz. It is the frequency where we have phase flip in PRCL/MICH openloop transfer function now(see elog #6950).
I centetered PRM oplev, lowered gain and PRM oplev servo is not oscillating any more.
It is OK for more than a softball practice.
C1:SUS-PRM_OLPIT_GAIN = 0.15 (was 0.5)
C1:SUS-PRM_OLYAW_GAIN = -0.3 (was 0.7)
Openloop transfer function:
Oplev Pitch: gain ~ 12 at 0.69 Hz resonance
Oplev Yaw: gain ~ 18 at 0.83 Hz resonance
I adjusted the gain so that oplev damps resonance as much as possible, but not introduce additional noise. I did no calculation, but just measured OSEM spectra (SUSPIT and SUSYAW). Below, you can see the noise reduces at resonance when oplev servo is on, and not increasing at other frequencies. It was introducing noise before. Someone should do more systematic adjustment of oplev servos for all the optics.