ID |
Date |
Author |
Type |
Category |
Subject |
17726
|
Thu Jul 27 12:11:57 2023 |
andrei | Update | PEM | RL for nonlinear controllers | Here is a rundown of my work so far on RL controllers for the puck:
Environment: I implemented an environment that simulates the puck's temperature, according to our crude fits of the step response and pid controller of the puck in foam. Currently, this environment assumes constant ambient temperature and doesn't simualte the delays between the applied heat and the measured temperature change. However, one can easily adjust this environment by just changing the underlying Tdot equation. The environment works in steps of 10s and executes 3600*5 steps (for a total simulated time of 50h). The reward function is L2: at every timestep, it adds -(T_puck - T_ref)^2 to the total reward. The reward is only disclosed to the agent on the last timstep, so far this seemed to have work better, perhaps because the reward you get at any timestep is heavily dependent on the previous state (in 10s you can't raise the temperature enough if you are 5 degrees away from T_ref, so the agent gets penalized again).
Agents: I have made the first implementations for two agents: DQN and PPO, that could be used to controller the puck's temperature. Currently, these implementations are rough and require hyperparameter tuning and bigger networks.
- PPO: this agent works on continuous environemnts, meaning that it outputs any real number between min and max as its action. In the case of the puck, the action is the applied heat (in Watts). However, this agent has proven very slow to train on the LIGO-Caltech cluster (despite the networks being very small: 3 dense layers, 2->10->5->output for both critic and policy networks), so I only have a very rough training done, of 20 episodes Here is a plot:

Here T_ref is represented by the red line and the blue line is the output bahvior of the policy. Keep in mind that this is only 20 episodes, and at the time of writing the training was killed (don't know why) but the measured total reward at 25 episodes was around 10% better than the above policy (sadly, no plot for that).
- DQN: this agent works on discrete environments, meaning that I had to modify the training environment to be dsicrete (which can be done in 1 line of code using a wrapper, see env.ipynb). There is an argument to be made that the actuator (in our case the PWM of the Raspberry Pi) has only a limited number of possible outputs: for example, the RPi PWM doesn't produce any measureable difference in duty cycles that differ by less than 0.05%. As Rana suggested, it would be best to discretize according to the number of bits that the plant can work with (I am not sure how many that is for the case of the RPi). Anyways, I am currently training the DQN on the env discretized to 100 actions, but it currently seems very unstable, even after I lowered the learning rate. The great thing about DQN is that it has been very fast to train, even on a cpu. Hence, I think the next step would be to just increase the size of the q-network, as the currrent 3 dense layers seems inadequate (2->10->5->100). I will come back with a better plot of this agent very soon.
Moving on, I want to:
- Implement a reverb replay server for the PPO in hopes that it will speed up the training
- Add T_env noise and sensor noise simulations to the environment.
- Start hyperparameter tuning
- Check results and compare with lthe inear controller
|
17740
|
Tue Aug 1 14:26:11 2023 |
andrei | Update | PEM | RL for nonlinear controllers | Update
- I have finished setting up Neptune for easy access to the train/eval metrics of the RL models. Here is a link where you can track my progress. Neptune is an extremely useful tool that allows you to see in real time how the models are bahving: you can see nice plots of losses and returns, as well as my source code, the stdout and stderr, and even the resources plots for the node that my jobs got allocated to. Feel free to play around with it.
- Currently, there are are only 2 runs (I just started them): one with DQN (RLCON-8), the other with PPO (RLCON-7).
- As outlined before, I have tried improving the PPO agent by replacing the replay buffer with a reverb server (which is supposed to be the fast way of doing a replay buffer). However, no big speed ups have been achieved. The problem is that PPO is using a special type of layer: a distributional layer. I am unsure as to how this layer works, but certainly it is not a normal "dense" layer. After changing all other components, it seems that the PPO algorithm is very slow not because of the replay as I initially thought, but because of the actual training of the agent at line agent.train(experience). However, I still have a lead: there is an error signal about tensorflow retracing (see run RLCON-8). I am now looking into that.
- In the mean time, I will start increasing the size of the Q-net for the DQN and increasing the num_actions to 201 (so a resolution of 0.5% in duty cycle). That is because RLCON-7 seems to not learn too much: the loss is really unstable and the evaluation avg_return is terrible.
Aside on avg_return if you wonder what this number means: basically, at each step of the environment (the code that simulates the temperature of the puck) I am takig the error to be . Then, for an entire episode, the reward is given by the average of these errors (so it gives you average error for all steps in one episode). Then, the reported avg_return is calculated by taking the mean of average errors for 5 (as of now) episodes. Basically, sqrt(|avg_return|) gives you an average deviation away from T_ref: so if avg_return=-25, then you should expect the model to be consistently around 5 degrees away from T_ref.
|
17784
|
Tue Aug 15 09:42:18 2023 |
andrei | Update | PEM | RL for nonlinear controllers | Update
In the past 2 weeks I have finalized the pipeline for hyperparameter testing and speeding up the training dramatically. Here is a rundown of the most recent developments:
- I have pushed a lot of code in the git repo with pipeline for training models using the TF Agent library. Now, all of the models' hyperparameters are specified via config files (config_ppo.yaml), allocated resources on HPC and starting a new run are managed via a bash script (start.sh), and a basic plotting functionality now comes built-in for each model run for easy plotting and evalution of the trained policy.
- I have increased the speed of the code by making use of more advanced training methods from TF Agents: Compared to PPO_v5.py which uised to take around 25 seconds per iteration, PPO_v6_2.py takes 4 seconds per iteration (given the same training parameters). This allows not only for very fast training, but also much faster debug.
- I have managed to train a model that effectively solved the environment with constant T_env and no measurement noise. Here is a plot of the policy applied for one episode:

This particular plot comes from the policy of RLCON-60 run, which ran for 12.5 hours, but which seems to have reached "peak" performance in about 2-3 hours judging by the evaluation curve (from neptune.ai):

I know this plot is not great, but basically the plateau has a return between -11064 and -11061 (so effectively constant). The evaluation runs are done 50 interations from each other, which in the case of this run corresponds to around 40 mins of training. Please feel free to check out more details about RLCON-60 at the provided link.
- I have written an extensive manual in the same git repo with guidance as to how to use the code, and also a mini tutorial on Reinforcement Learning and TF Agents. The manual is not exhaustive and I am still adding to it regularly, but I am always happy to answer questions about the code (I am particularly active in the git issue tracker for the repo).
Moving on, I am ready to start making the environment more complicated: I now need to add things like varying T_env, measurement noise, heating delays, etc. Luckily, these changes can be done independently in PuckEnv.py, allowing us to just use the same code for training once the environment is up and bug-free. For testing purposes of the environments, I also have the env.ipynb, although it is not as streamlined as the rest of the code.
Quote: |
Update
- I have finished setting up Neptune for easy access to the train/eval metrics of the RL models. Here is a link where you can track my progress. Neptune is an extremely useful tool that allows you to see in real time how the models are bahving: you can see nice plots of losses and returns, as well as my source code, the stdout and stderr, and even the resources plots for the node that my jobs got allocated to. Feel free to play around with it.
- Currently, there are are only 2 runs (I just started them): one with DQN (RLCON-8), the other with PPO (RLCON-7).
- As outlined before, I have tried improving the PPO agent by replacing the replay buffer with a reverb server (which is supposed to be the fast way of doing a replay buffer). However, no big speed ups have been achieved. The problem is that PPO is using a special type of layer: a distributional layer. I am unsure as to how this layer works, but certainly it is not a normal "dense" layer. After changing all other components, it seems that the PPO algorithm is very slow not because of the replay as I initially thought, but because of the actual training of the agent at line agent.train(experience). However, I still have a lead: there is an error signal about tensorflow retracing (see run RLCON-8). I am now looking into that.
- In the mean time, I will start increasing the size of the Q-net for the DQN and increasing the num_actions to 201 (so a resolution of 0.5% in duty cycle). That is because RLCON-7 seems to not learn too much: the loss is really unstable and the evaluation avg_return is terrible.
Aside on avg_return if you wonder what this number means: basically, at each step of the environment (the code that simulates the temperature of the puck) I am takig the error to be . Then, for an entire episode, the reward is given by the average of these errors (so it gives you average error for all steps in one episode). Then, the reported avg_return is calculated by taking the mean of average errors for 5 (as of now) episodes. Basically, sqrt(|avg_return|) gives you an average deviation away from T_ref: so if avg_return=-25, then you should expect the model to be consistently around 5 degrees away from T_ref.
|
|
17795
|
Fri Aug 18 15:40:23 2023 |
andrei | Update | PEM | Seismometer heater and temp sensors | Dismantled the seismometer circuit
At Rana's request, Deven and I have pulled all the wires out of the seismometer at the X end that Adviat set up the heater and sensors for. Right now, the seismometer is uncovered (no can) and the can I had to move next to the server rack that is close to the X end. I am attaching pictures of both the seismometer and the can.
I now realize that I have not turned off the power supply for the heater. If someone can please turn off the power supply that is shown in Advait's elog, please turn it off and reply to this elog. If you are unsure which power supply to turn off, read the first line of the elog that I replied to. Thanks!
Advait's circuits have been removed from the seismometer and stored in a box underneath the desk at the end of the control room (see picture). There is even a label on the box which reads "ANDREI CIRCUITS". At the seismometer there are still a few BNC cables left there: these are the cables that were used to interact with Advait's circuits. They have labels on them so that I can put back the circuits when I come back/when the seismometer can is available again |
Attachment 1: 20230818_114008.jpg
|
|
Attachment 2: 20230818_113959.jpg
|
|
Attachment 3: 20230818_114453.jpg
|
|
10424
|
Fri Aug 22 15:11:55 2014 |
andres, nicolas | Summary | IOO | MC WFS activity | 1. Before doing anything, we centered the IOO QPDs.
2. With the WFS enabled, we offloaded the control signals onto the bias sliders. Then we saved the slider values. The MC LSC diode had a DC value of ~0.5
3. Turned down power with half wave plate before PMC. Power injected to vacuum ~ 100mW.
4. We did a beam scan of MC REFL, it looks smaller than what Andres predicted based on the MC eigenmode by 10-20%.
5. We made many changes on the table, pictures to be added by Andres.
6. We didn't have the 80% reflector we wanted to increase the WFS power, so it's still a 98%.
6. Beams were aligned on MC REFL PL, camera, beam dumps, WFSs.
7. Clean up
8. PSL power increased to 1.2W, MC locked right away.
9 We didn't change the IOO WFS output matrix, but we changed some signs and gains to make everything stable. MC autolocker brings it back from cold just fine.
10. All time bombs that we've left will be E.Q.'s to clean up. Sorry.\
11. Yay |
74
|
Wed Nov 7 00:51:33 2007 |
andrey, rob, tobin | Configuration | IOO | MC ringdowns | We completed several ringdown measurements this afternoon; Andrey is currently processing the data. |
8892
|
Mon Jul 22 17:17:30 2013 |
annalisa | Update | endtable upgrade | End table picture | |
Attachment 1: YendTable.jpg
|
|
13711
|
Tue Mar 27 19:32:03 2018 |
arijit | Update | IOO | PSL noise eater was off | Kevin, Gautam and Arijit
We made a measurement of the MC_REFL photodiode transfer function using the network analyzer. We did it for two different power input (0dB and -10dB) to the test measurement point of the MC_REFL photodiode. This was important to ensure the measurements of the transfer function of the MC_REFL photodiode was in the linear regime. The measurements are shown in attachment 1. We corrected for phase noise for the length of cable (50cm) used for the measurement. With reference to ELOG 10406, in comparison to the transimpedance measurement performed by Riju and Koji, there is a much stronger peak around 290MHz as observed by our measurement.
We also did a noise measurement for the MC_REFL photodiode. We did it for three scenarios: 1. Without any light falling on the photodiode 2. With light falling on the photodiode, the MC misaligned and the NPRO noise eater was OFF 3. With light falling on the photodiode, the MC misaligned and the NPRO noise eater was ON. We observed that the noise eater does reduce the noise being observed from 80kHz to 20MHz. This is shown in attachment 2.
We did the noise modelling of the MC_REFL photodiode using LISO and tried matching the expected noise from the model with the noise measurements we made earlier. The modeled noise is in good agreement with the measured noise with 10Ohms in the output resistance. The schematic for the MC_REFL photodiode however reveals a 50Ohm resistance being used. The measured noise shows excess noise ~ 290MHz. This is not predicted from the simplied LISO model of the photodiode we took.
Discussion with Koji and Gautam revealed that we do not have the exact circuit diagram for the MC_REFL photodiode. Hence the simplified model that was assumed earlier is not able to predict the excess noise at high frequencies. One thing to note however, is that the excess noise is measured with the same amplitude even with no light falling on the MC_REFL photodiode. This means that there is a positive feedback and oscillation in the op-amp (MAX4107) at high frequencies. One way to refine the LISO model would be to physically examine the photodiode circuit.
We also recorded the POX and POY RF monitor photodiode outputs when the interferometer arms are independently stabilized to the laser. Given the noise outputs from the RF photodiodes were similar, we have only plotted the POY RF monitor output for the sake of clarity and convenience.
Quote: |
While Kevin and Arijit were doing their MC_REFL PD noise measurements (which they will elog about separately shortly), I noticed a feature around 600kHz that reminded me of the NPRO noise eater feature. This is supposed to suppress the relaxation oscillation induced peak in the RIN of the PSL. Surprisingly, the noise eater switch on the NPRO front panel was set to "OFF". Is this the normal operating state? I thought we want the noise eater to be "ON"? Have to measure the RIN on the PSL table itself with one of the many available pick off PDs. In any case, as Attachment #1 showed, turning the noise eater back on did not improve the excess IMC frequency noise.
|
|
Attachment 1: MCREFL_TF.pdf
|
|
Attachment 2: MCREFL_SPECTRUM.pdf
|
|
13716
|
Wed Mar 28 21:47:37 2018 |
arijit | Update | IOO | MCREFL_PD Optical response measurement | Kevin, Gautam and Arijit
We did a optical measurement of the MCREFL_PD transimpedance using the Jenny Laser set-up. We used 0.56mW @1064nm on the NewFocus 1611 Photodiode as reference and 0.475mW @1064nm on the MCREFL_PD. Transfer function was measured using the AG4395 network analyzer. We also fit the data using the refined LISO model. From the optical measurement, we can see that we do not have a prominent peak at about 300MHz like the one we had from the electrical transimpedence measurement. We also put in the electrical transimpedence measurement as reference. RMS contribution of 300MHz peak to follow.
As per Rana`s advice I have updated the entry with information on the LISO fit quality and parameters used. I have put all the relevant files concerning the above measurement as well as the LISO fit and output files as a zip file "LISO_fit" . I also added a note describing what each file represents. I have also updated the plot with fit parameters and errors as in elog 10406. |
Attachment 1: LISO_fit_with_info.pdf
|
|
Attachment 2: LISO_fit.zip
|
13719
|
Thu Mar 29 17:57:36 2018 |
arijit | Update | IOO | MCREFL_PD Optical response measurement | Kevin, Gautam and Arijit
Today we performed the in-loop noise measurements of the MCREFL-PD using the SR785 to ascertain the effect of the Noise Eater on the laser. We took the measurements at the demodulated output channel from the MCREFL-PD. We performed a series of 6 measurements with the Noise Eater ''ON'' and ''OFF''. The first data set is an outlier probably, due to some transient effects. The remaining data sets were recorded in succession with a time interval of 5 minutes each between the Noise Eater in the ''ON'' and ''OFF'' state. We used the calibration factor of 13kHz/Vrms from elog 13696 to convert the V_rms to Hz-scale.
The conclusion is that the NOISE EATER does not have any noticeable effect on the noise measurements.
ALS beat spectrum and also the arm control signal look as they did before. coherence between arm control signals (in POX/POY lock) is high between 10-100Hz, so looks like there is still excess frequency noise in the MC transmitted light. Looking at POX as an OOL sensor with the arm under ALS control shows ~10x the noise at 100 Hz compared to the "nominal" level, consistent with what Koji and I observed ~3weeks ago.
We tried swapping out Marconis. Problem persists. So Marconi is not to blame. I wanted to rule this out as in Jan, Steve and I had installed a 10MHz reference to the rear of the Marconi. |
Attachment 1: NOISE_EATER_On_OFF.pdf
|
|
12628
|
Sun Nov 20 23:53:38 2016 |
awade | Update | PSL | FSS Slow control -> Python, WFS re-engaged | I made a very slighly updated version of Yinzi's script that pulls the channel names and actuator hardstop limits from an external .ini config file. The idea was to avoid having as many versions of the script as there are implimentations of it. Seems like slighly better practice, but maybe I'm wrong. The config files are also easier to read. Its posted on the elog (PSL:1758) with lastest on the 40mSVN .../trunk/CTNLab/current/computing/scripts .
If you're working off her first implimentation 'RCAV_thermalPID.py' then there is an indent issue after the if statement on line 88: only line 89 should be indended. If you deactivate the debug flag then the script fails to read in PID factors and dies.
Quote: |
[yinzi, craig, gautam]
Yinzi had translated the Perl PID script used to implement the discrete-time PID control, and had implemented it with Andrew at the PSL lab. Today afternoon we made some minor edits to make this suitable for the FSS Slow loop (essentially just putting the right channel names into her Python script). I then made an init file to run this script on megatron, and it looks to be working fine over the last half hour of observation or so. I am going to leave things in this state over the weekend to see how it performs.
We have been running with just the MC2 Transmission QPD for angular control of the IMC for a couple of months now because the WFS loops seemed to drag the alignment away from the optimum. We did the following to try and re-engage the WFS feedback:
- Close the PSL shutter, turned off all the lights in the lab and ran the WFS DC offsets script
- Locked the IMC, optimized alignment by hand (WFS feedback turned off)
- Unlocked the IMC, went to the AS table and centered the spots on the WFS
- Ran WFS RF offsets script
- Re-engaged WFS servo
|
|
13456
|
Tue Nov 28 17:27:57 2017 |
awade | Bureaucracy | Calibration-Repair | SR560 return, still not charging | I brought a bunch of SR560s over for repair from Bridge labs. This unit, picture attached (SN 49698), appears to still not be retaining charge. I’ve brought it back. |
Attachment 1: 96B6ABE6-CC5C-4636-902A-2E5DF553653D.jpeg
|
|
Attachment 2: image.jpg
|
|
13500
|
Wed Jan 3 16:25:32 2018 |
awade | Update | Optimal Control | Oplev loop tuning | Another cool feature is client side pre-commit hooks. They can be used to run checks on the local version at the time of commit and refuses to push until the pass/fail exits 0.
Can be the same as the Gitlab CI or just basic code quality checks. I use them to prevent jupyter notebooks being commited with uncleared cells. It needs to be set up on the user's computer manually and is not automatically cloned with the directory: a script can be included in the repo to do this and run manually on first time clone.
Quote: |
When putting code into git.ligo.org, one way to have automated testing is to use the Gitlab CI. This is an automated 'checker', much like the 'Travis' system used in GitHub. Essentially, you give it a make files which it runs somewhere and your GIT repo web page gets a little 'failed/passing' badge telling you if its working. You can also browse the logs to see in detail what happened. This avoids the 'but it works on my computer!' thing that we usually hear.
|
|
14174
|
Tue Aug 21 17:32:51 2018 |
awade | Bureaucracy | Equipment loan | One P-810.10 Piezo Actuators element removed | I've taken a PI Piezo Actuator (P-810.10) from the 40m collection. I forgot to note it on the equipment checklist by the door, will do so when I next drop by. |
14555
|
Fri Apr 19 12:06:31 2019 |
awade | Bureaucracy | Electronics | Borrowed Busby Box May 19th 2019 | I've borrowed the Busby Box for a day or so. Location: QIL lab at Bridge West.
Edit Sat Apr 20 21:16:46 2019 (awade): returned. |
14565
|
Wed Apr 24 11:22:59 2019 |
awade | Bureaucracy | Equipment loan | Borrowed Zurich HF2LI Lock in Amplifer to QIL | Borrowed Zurich HF2LI Lock in Amplifer to QIL lab Wed Apr 24 11:25:11 2019. |
12385
|
Tue Aug 9 13:53:57 2016 |
babbott | Update | SEI | long Guralp EX cable repaired on the D-sub side | I checked out the cable that I took from you, and all of the connections looked right. The only thing I did notice was that some of the soldered wires on the 37-pin connector had gotten hot enough to melt their insulation, and potentially short together. I cut off that connector, and left it on your desk to check out. I put on a new connector, and checked the pinout. If the Guralps still doesn't work, we'll have to check out other possibilities. |
13934
|
Fri Jun 8 14:40:55 2018 |
c1lsc | Update | CDS | i am dead | |
Attachment 1: 31.png
|
|
1102
|
Thu Oct 30 20:39:47 2008 |
caryn | Configuration | PEM | temperature sensor | We attached the temperature sensor box to the MC1/MC3 chamber with a C-clamp. We connected the temp sensor to a 2nd box with a short BNC. Bob set up a power cable coming from the X-end towards the MC1/MC3 chamber(Thanks, Bob!) We soldered the end of Bob's power cable to a plug and attached it to the 2nd box (The power supply enters through the 2nd box). A ~20ft BNC cable connects the output signal of the 2nd box to the tall thing by the PSL where all the signals go labeled 1Y2. Once we had everything connected, we put in the fuses for the power supply. So, now the temperature sensor is receiving power. We checked that the power supply was working (we measured +15.08V and -14.95V, and we wanted 15V and -15V so it's OK for now). Tomorrow we will modify C1IOOF.INI file and reboot the frame builder.
About sensor-
There is an LM34 (looks like a transistor) glued w/ epoxy and thermal paste to the inside of a Pomona box ~1"x"1.5"x2". The lid to the box is covered with a 1-2mm thick piece of copper and a little thermal paste is sandwiched between the Pomona lid and the copper piece. A C-clamp attaches the copper piece to the chamber. A BNC is connected to one side of the box (the side with less copper)
About power supply box-
There is a power regulator and an op-amp inside a Pomona box ~2.5"x4"x2". The power regulator is attached to the center of lid of the pomona box with a screw and washer. There's a power plug on the front of the box
Left:+15V:red wire
Center:GND:white wire
Right:-15V:black wire
There are 2 BNC connections on the sides of the box. The left BNC connection is for the output signal and the right BNC connection is for the temperature sensor (if the power plug is coming out of the box towards you).
Sensor location-
Chamber which contains MC1/MC3. On the door facing towards the Y-end. On the bottom-left side. Behind the door. Attached with a C-clamp.
Power supply box location-
Chamber which contains MC1/MC3. On some metal leg thing near the floor facing towards the Y-end. Attached with a zip-tie
Power supply-
Coming from the X-end from a tall thing with all the fuses labeled 1X1
Fuse 160:+15V:red wire
Fuse 171:GND:white wire
Fuse 172:-15V:black wire
Signal-
Going towards the PSL to the tall thing labeled 1Y1 on the rack labeled SN208
ICS-110B
J12 (which we believe corresponds to 50-51 and channel number 13650)
Temperature sensor is connected to J12 with a ~20ft BNC attached to a BNC2LEMO connector we found lying around |
1176
|
Thu Dec 4 17:42:23 2008 |
caryn | Update | IOO | drum modes observable without excitation | So, the mode cleaner was evidently aligned better and now the drum modes are observable using DTT.
The Lock-In was set to 27.8kHz and the drum mode frequencies were previously observed to be 28.039kHz(MC2), 28.222kHz(MC3) and 28.221kHz(MC1). So, we might expect peaks at ~239Hz,421Hz,422Hz.
Peaks have been observed around the expected frequencies in channel IOO-MC-DRUM1.
Note that it is possible to resolve the separate MC1 and MC3 peaks which are so close together.
(sorry these are pdf's and not png's) |
Attachment 1: drum_modes.pdf
|
|
Attachment 2: drum_modes2.pdf
|
|
1185
|
Mon Dec 8 00:10:42 2008 |
caryn | Summary | General | calibrating the jenne laser | I apologize in advance for the long list of numbers in the attachment. I can't seem to make them hide for some reason.
So, since Jenne's laser will probably be used for the Stoch mon calibration, Alberto and I took some measurements to calibrate Jenne's laser.
We focused the beam onto the New Focus RF 1GHz photodetector that we stole from rana's lab (powered with NewFocus power 0901). Measured the DC output of the photodetector with scope. Aligned the beam so DC went up (also tried modulating laser at 33MHz and aligning so 33MHz peak went up). Hooked up the 4395a Spectrum/Network Analyzer to the laser and to the AC out of the photodetector (after calibrating Network analyzer with the cables) so that the frequency response of the laser*photodetector could be measured.
(Note: for a while, we were using a splitter, but for the measurements here, I got rid of the splitter and just sent the RFout through the cables to channel A for the calibration, sent RFout to the laser and photodetector to channel A for the measurement)
Measured the frequency response. At first, we got this weird thing with a dip around 290MHz (see jcal_dip_2_norm.png below).
After much fiddling, it appeared that the dip was from the laser itself. And if you pull up just right on the corner of this little metal flap on the laser (see picture), then the dip in the frequency response seems to go away and the frequency response is pretty flat(see jcal_flat_3_norm below). If you press down on the flap, the dip returns. This at least happened a couple of times.
Note that despite dividing the magnitude by the DC, the frequency responses don't all line up. I'm not sure why. In some cases the DC was drifting a bit(I presume the laser was coming out of alignment or decided to align itself better) and maybe with avgfactor=16, and measuring mean DC on the scope, it made the DC meas not match up the the frequ resp meas...
I've attached the data for the measurements made (I'm so sorry for all the #'s. I can't figure out how to hide them)
name/lasercurrent/DC/analyzer SourcePower/analyzer avgfactor
jcal7_1/I=31.7mA/DC=-4.41/SourcePower=0dBm/avgfactor=16
jcal7_2/I=31.7mA/DC=-1.56/SourcePower=0dBm/avgfactor=none
jcal8_1/I=31.7mA/DC=-4.58/SourcePower=0dBm/avgfactor=16
jcal8_2/I=31.7mA/DC=-2.02/SourcePower=0dBm/avgfactor=16
jcal8_3/I=31.7mA/DC=-3.37/SourcePower=0dBm/avgfactor=16
Note also that the data from the 4395a seems to have column1-frequency, column2-real part, column3-imaginary part...I think. So, to calculate the magnitude, I just took (column2)^2+(column3)^2.
To get sort of an upper-bound on the DC, I measured how DCmax varied with laser current, where DCmax is the DC for the best alignment I could get. After setting the current, the laser was modulated at 33MHz and the beam was aligned such that the 33MHz peak in the photodetector output was as tall as I could manage. Then DC was measured. See IvsDCmax.png. Note the DC is negative. I don't know why.
Also, the TV's don't look normal, the alarm's going off and I don't think the mode cleaner's locked. |
Attachment 1: IvsDCmax.png
|
|
Attachment 2: data.tar.gz
|
Attachment 3: jcal_dip_2_norm_log.png
|
|
Attachment 4: jcal_flat_3_norm_log.png
|
|
1246
|
Thu Jan 22 14:38:41 2009 |
caryn | DAQ | PSL | MC temperature sensor |
Quote: |
Quote: | I added a channel for the temperature sensor on the MC1/MC3 chamber: C1:PSL-MC_TEMP_SEN.
To do that I had to reboot the frame builder. The slow servo of the FSS had to get restarted, the reference cavity locked and so the PMC and MZ. |
Where is this channel? |
That's not the name of the channel anymore. The channel name is PEM-MC1_TEMPS. It's written in a later entry. |
1290
|
Wed Feb 11 00:50:24 2009 |
caryn | Update | General | ants? | So, near 2 of the trashcans in the control room and underneath a desk there are hundrends of ants. Is this normal? |
1331
|
Sun Feb 22 23:43:07 2009 |
caryn | Summary | General | temperature sensor | Comparing PSL-FSS-RMTEMP and PEM-MC1-TEMPS
So, to compare temp channels, I made a plot of PSL-FSS_RMTEMP and PEM-MC1_TEMPS(the test temp sensor channel after converting from cts to degC). This plot begins about 2 months ago t_initial=911805130. The temperature channels look kinda similar but MC1-TEMPS (the temp sensor clamped to MC1,3 chamber) is consistently higher in temperature than FSS_RMTEMP. See compare_temperature_channels.png.
MC1-TEMPS isn't exactly consistent with FSS-RMTEMP. I attached a few plots where I've zoomed in on a few hours or a few days. See compare_temperature_channels_zoom1.pdf & compare_temperature_channels_zoom2.pdf
Change the room temperature, see what happens to the chamber temperature
A while ago, somebody was fiddling around with the room temperature. See compare_temperature_channels_zoom4.pdf. This is a plot of PEM-MC1_TEMPS and PSL-FSS_RMTEMP at t0=911805130. You can see the chamber heating up and cooling down in happy-capacitory-fashion. Although, the PSL-FSS_RMTEMP and the PEM-MC1_TEMPS don't really line up so well. Maybe, the air in the location of the MC1,3 chamber is just warmer than the air in the PSL or maybe there's an offset in my calibration equation.
Calibration equation for PEM-MC1-TEMPS
For the calibration (cts to degC) I used the following equation based on the data-sheet for the LM34 and some measurements of the circuit:
TEMPERATURE[degC]=5/9*(((-CTS/16384/451.9/1.04094)-(.0499*10^-3))/(20*10^-6)-35);
How does the chamber temperature compare with the air temperature?
It looks like the chamber may be warmer than the air around it sometimes.
I wanted to check the temperature of the air and compare it with the temperature the sensor had been measuring. So, at t=918855087 gps, I took the temp sensor off of the mc1-mc3 chamber and let it hang freely, close to the chamber but not touching anything. See compare_temperature_chamber_air.png. MC1_TEMPS increases in temperature when I am handling the temp-sensor and then cools down to below the chamber temperature, close to FSS_RMTEMP, indicating the air temperature was less than the chamber temperature.
When, I reattached temp sensor to the chamber at t=919011131 gps, the the temperature of the chamber was again higher than the temperature of the air. See compare_temperature_air2chamber.pdf.
Also, as one might expect, when the temp-sensor is clamped to the chamber, the temperature varies less, & when it's detached from the chamber, the temperature varies more. See compare_temperature_air_1day.pdf & compare_temperature_chamber_1day.pdf.
New temp-sensor power supply vs old temp-sensor power supply
The new temp-sensor is less noisy and seems to work OK. It's not completely consistent with PSL-FSS_RMTEMP, but neither was the old temp-sensor. And even the air just outside the chamber isn't the same temperature as the chamber. So, the channels shouldn't line up perfectly anyways.
I unplugged the 'old' temp-sensor power supply for a few hours and plugged in the 'new' one, which doesn't have a box but has some capacitors and and 2 more voltage regulators. The MC1_TEMPS channel became less noisy. See noisetime.png & noisefreq.pdf. For that time, the minute trend shows that with the old temp-sensor power supply the temp sensor varies +/-30cts and with the new power supply, it is more like +/-5cts (and Volt/16,384cts * 1degF/10mV --> apprx +/-0.03degF). So, it's less noisy.
I kept the new temp-sensor power supply plugged in for about 8 hours, checking if new temp sensor power supply worked ok. Compared it with PSL-FSS_RMTEMP after applying an approximate calibration equation. See ver2_mc1_rmtemp_8hr_appxcal.png.
Just for kicks
Measuring time constant of temp sensor when detached from chamber. At 918858981, I heated up the temp sensor on of the mc1-mc3 chamber with my hand. Took hand off sensor at 918859253 and let it cool down to the room temperature. See temperature_sensor_tau.pdf. |
Attachment 1: compare_temperature_channels.png
|
|
Attachment 2: compare_temperature_channels_zoom1.pdf
|
|
Attachment 3: compare_temperature_channels_zoom2.pdf
|
|
Attachment 4: compare_temperature_channels_zoom4.pdf
|
|
Attachment 5: compare_temperature_chamber_air.png
|
|
Attachment 6: compare_temperature_air2chamber.pdf
|
|
Attachment 7: compare_temperature_air_1day.pdf
|
|
Attachment 8: compare_temperature_chamber_1day.pdf
|
|
Attachment 9: noisetime.pdf
|
|
Attachment 10: noisefreq.pdf
|
|
Attachment 11: ver2_mc1_rmtemp_8hr_appxcal.pdf
|
|
Attachment 12: temperature_sensor_tau.pdf
|
|
1540
|
Sat May 2 16:34:31 2009 |
caryn | DAQ | PEM | Guralp channels plugged back in | I plugged the Guralp cables back into the PEM ADCU
Guralp NS1b ---> #11
Guralp Vert1b --->#10
Guralp EW1b --->#12 |
1546
|
Tue May 5 09:22:46 2009 |
caryn | Update | PEM | zeros | For several of the channels on the PEM ADCU, zeros are occuring at the same time. Does anyone know why that might happen or how to fix it? |
Attachment 1: zerotest2.png
|
|
Attachment 2: zerotest.png
|
|
1571
|
Sun May 10 13:34:32 2009 |
caryn | Update | PEM | Unplugged Guralp channels | I unplugged Guralp EW1b and Guralp Vert1b and plugged in temp sensors temporarily. Guralp NS1b is still plugged in. |
1599
|
Mon May 18 10:06:56 2009 |
caryn | Update | PEM | Temp sensor |
Quote: | To see if Caryn's data dropouts were happening, I looked at a trend of all of our temperature channels. Looks OK now.
Although you can't see it because I zoomed in, there's a ~24 hour relaxation happening before Caryn's sensors equilibrate.
I guess that's the insulating action of the cooler? We need a picture of the cooler in the elog for posterity.[/quote
Dropouts can't been seen with a minute trend, only a second trend. No big deal, but they are still occurring. See plot below.
The 24hr relaxation period is due to the cooler and some metal blocks that were cooled in the freezer and then put in the cooler to see if the relationship between the temp sensors changed with temperature. The relationship is not linear, which probably means there is some non-linearity in each temperature sensor's relationship to temperature. So, when calibrating them with Bob's temp sensor, more than 2 data points need to be collected.
Picture of cooler for posterity is attached |
Attachment 1: datadropout.png
|
|
Attachment 2: coolerpic1.jpg
|
|
Attachment 3: coolerpic2.jpg
|
|
1624
|
Mon May 25 21:31:47 2009 |
caryn | Update | PEM | plugged in Guralp channels | Guralp Vert1b and Guralp EW1b are plugged back in to PEM ADCU #10 and #12 respectively. Guralp NS1b remains plugged in. So, PEM-SEIS_MC1_X,Y,Z should now corrsp to seismometer as before. |
1647
|
Wed Jun 3 11:28:01 2009 |
caryn | Update | PEM | Unplugged Guralp channels | |
1648
|
Wed Jun 3 12:31:13 2009 |
caryn | Update | PEM | plugged in guralp channels | |
3308
|
Wed Jul 28 12:53:32 2010 |
channa | Update | Computers | nds data listener | For the sake of writing it down: /cvs/cds/caltech/apps/linux64/rockNDS |
3310
|
Wed Jul 28 14:34:29 2010 |
channa | Update | Computers | installation on allegra | I have done the following on allegra and rosalba:
[root@allegra caltech]# yum install glade2
On rosalba the matplotlib was out of date with respect to allegra. I have no idea how the version 0.98 on allegra got there, but I left it. However I updated rosalba to the epel version
1 yum remove python-numpy
2 yum install python-matplotlib numpy scipy --enablerepo=epel --disablerepo=rpmforge
This is all to support the LIGO data listener which now has a shortcut on rosalba and allegra's desktop. It seems to work for (live mode) right now.
|
14435
|
Tue Feb 5 10:22:03 2019 |
chub | Update | | oil added to RP-1 & 3 | I added lubricating oil to roughing pumps RP1 and RP3 yesterday and this morning. Also, I found a nearly full 5 gallon jug of grade 19 oil in the lab. This should set us up for quite a while. If you need to add oil the the roughing pumps, use the oil in the quart bottle in the flammables cabinet. It is labeled as Leybold HE-175 Vacuum Pump Oil. This bottle is small enough to fill the pumps in close quarters. |
48
|
Thu Nov 1 16:51:33 2007 |
d40 | AoG | General | D40 | If you vant see D40 againn, you leave one plate goulash by N2 tank in morning.
Vit the good paprikash this time!!! |
Attachment 1: PB010001.JPG
|
|
2709
|
Wed Mar 24 12:40:25 2010 |
daisuke | Configuration | General | Periscope for green laser delivery from the BSC to PSL table | The periscope design for beam elevation of the green beams is posted. The design for the 90 deg steering version is also coming.
(2010-03-29: update drawings by daisuke)
90deg version: http://nodus.ligo.caltech.edu:8080/40m/2725

|
Attachment 2: 40m_periscope_A_100329.pdf
|
|
Attachment 3: 40m_periscope_A_dwg_100329.zip
|
2725
|
Mon Mar 29 01:45:26 2010 |
daisuke | Configuration | General | Periscope version B for green laser ... | Here the design of the periscope for the 90 deg steering version is posted.
straight version http://nodus.ligo.caltech.edu:8080/40m/2709 |
Attachment 1: 40m_periscope_B.png
|
|
Attachment 2: 40m_periscope_B_100329.pdf
|
|
Attachment 3: 40m_periscope_B_dwg_100329.zip
|
11109
|
Fri Mar 6 13:48:17 2015 |
dark kiwamu | Summary | IOO | triple resonance circuit | I was asked by Koji to point out where a schematic of the triple resonant circuit is.
It seems that I had posted a schematic of what currently is installed (see elog 4562 from almost 4 yrs ago!).
(Some transfomer story)
Then I immediately noticed that it did not show two components which were wideband RF transformers. In order to get an effective turns ratio of 1:9.8 (as indicated in the schematic) from a CoilCrfat's transformer kit in the electronics table, I had put two more transformers in series to a PWB1040L which is shown in the schematic. If I am not mistaken, this PWB1040L must be followed by a PWB1015L and PWB-16-AL in the order from the input side to the EOM side. This gives an impedance ratio of 96 or an effective turns ratio of sqrt(96) = 9.8.
(An upgrade plan document)
Also, if one wants to review and/or upgrade the circuit, this document may be helpful:
https://wiki-40m.ligo.caltech.edu/Electronics/Multi_Resonant_EOM?action=AttachFile&do=get&target=design_EOM.pdf
This is a document that I wrote some time ago describing how I wanted to make the circuit better. Apparently I did not get a chance to do it. |
9715
|
Tue Mar 11 15:14:34 2014 |
den | Summary | LSC | Composite Error Signal for ARms (1) |
Quote: |
The composite error signal

|
Very nice error signal. Still, I think we need to take into account the frequency shape of the transfer function TR -> CARM. |
9967
|
Sat May 17 14:48:06 2014 |
den | Update | PEM | yend sei isolation kit is set | Yend seismometer isolation kit (elog 8461) hosts Guralp seismometer. I made a cable for inside connection, assembled the kit and relocated the instrument from its previous position at the yend inside the kit.
Seismometer is connected to the readout box and running.

|
9968
|
Sun May 18 14:36:04 2014 |
den | Update | LSC | offsets in 3f and drmi stable lock on 1f | Eric, Den
We noticed that PRMI RIN is high when the cavity is locked on RELF33 I&Q signals. We compared the level of power fluctuations when PRMI was locked using REFL11, REFL55 and REFL 33. Attached plot "prmi_rin" shows the spectra.
Then we excited PRM and measured length to RIN coupling when PRMI was locked on REFL33 I&Q. DC offset of PRCL is only 3%. But MICH offset seems to be ~nm. When we gave offset of -15 cnts to the servo, power fluctuations improved by a factor of few.
Then we looked at DRMI. It seems that SRC macroscopic length is off but we still could lock it stably. To account for macroscopic length detuning we had to rotate REFL55 phase from 25 degrees to 50 degrees. Power at AS port increased by factor of ~2 compared to PRMI configuration. SPOP18 is decreased only by 30%. Attached plot "drmi_power" shows POP18, POP90, POPDC and ASDC in PRMI and DRMI configurations.
Plot "src_ol" shows srcl OL transfer function. UGF is 70 Hz. We have also centered SRM OL and copied the servo filters from PRM, gains are set to keep UGF at ~0.1 Hz and 7 Hz
This is a more detailed procedure:
1. Phase: REFL11: 19 degree, REFL55: 50 degrees (25 degrees for PRMI configuration)
2. Input matrix:
PRCL |
|
0.15 |
0 |
0 |
REFL11I |
MICH |
= |
0 |
0.15 |
0 |
REFL55Q |
SRCL |
|
-0.09 |
0 |
1 |
REFL55I |
3. Servo parameters:
PRCL: gain = -0.02, FM4,5 + trigger FM2,3,6,9
MICH: gain = 0.8, FM4,5 + trigger FM2
SRCL: gain = 0.25, FM4,5 + trigger FM2,3
4. Triggering:
signal is SPOP22 , levels 40:25 |
Attachment 1: prmi_rin.pdf
|
|
Attachment 2: drmi_power.png
|
|
Attachment 3: src_ol.pdf
|
|
9971
|
Mon May 19 22:44:21 2014 |
den | Update | PEM | xend sei isolation kit is set |
Quote: |
Yend seismometer isolation kit (elog 8461) hosts Guralp seismometer. I made a cable for inside connection, assembled the kit and relocated the instrument from its previous position at the yend inside the kit.
Seismometer is connected to the readout box and running.
|
Xend internal cabling and external connector is ready. We are waiting for seismometer from Gyro lab. We still need to fix the pot with clamps after we put the instrument in.
We also need a long cable from Xend to the guralp readout box. |
10032
|
Thu Jun 12 12:30:50 2014 |
den | Frogs | General | World Cup Soccer 2014 |
 |
11177
|
Fri Mar 27 04:36:46 2015 |
den | Update | LSC | als->pdh transition, prcl on 1f, alignment | Tonight I have modified transition steps from als to pdh signals. I have added 1:20 filters to CARM_A and DARM_A filter banks to make them unconditionally stable. These filters made locking more robust -- duty cycle is was ~70% tonight. I have also modified slow/ao crossover to avoid ringing up of lines above 1kHz.
Once AO is engaged with high bandwidth, REFL55 signal looks good and I transition PRCL from 165I to 55I. Optical gain compared to PRMI reduced from 55I/165I = -330 down to 55I/165I = 30 in full lock.
I worked on alignment of ETMs. Looking on the cameras I could improve arm power up to 160 and ifo visibility was 80%. POP22 fluctuated by ~50% and every few minutes we loose lock because POP22 almost touches zero. |
11181
|
Sat Mar 28 03:21:49 2015 |
den | Update | LSC | towards angular ff | Tonight I measured seismic noise coupling to beam spot on PR2. There is coherence of 0.9 from X to PIT and Y to YAW around the stack resonances. TF was fited using vectfit and put into static matrix of oaf in the elements T240X -> PRM PIT, T240Y -> PRM YAW. I think we should actuate on the error point of the PRM OL but I decided not to go for a model change tonight. Data from seismometers and POP QPD was obtained during the UTC time 04:06:00 - 04:50:00 when PRMI was locked on sideband
Interferometer was locking rather robustly and every lock lasted on the everage of 3 minutes. During these lock periods I incresed bandwidth of optical lever servos of BS and test masses from 4Hz up to 10Hz and then closed transmission QPD loops. It seems from the camera that lock losses correspond to strong motion of the beam on pop camera. Scripts that change OPLEV bandwidth are in /users/den "increase_ol_bandwidth.sh" "decrease_ol_bandwidth.sh". Script "engage_qpd_servos" turns off ETM oplevs and turns on ETM -> trans QPD servos. These scripts can be copied to locking directrly if are useful.
Please, note that transition from 3f to 1f should still be tuned. Only PRCL was stably controlled using 1f so far |
17796
|
Fri Aug 18 16:07:38 2023 |
deven | Update | PEM | Seismometer heater and temp sensors | I've turned off the power supply. I've attached a picture of the rack with the switch that I flipped circled |
Attachment 1: IMG_9136_(1).pdf
|
|
10606
|
Tue Oct 14 23:44:42 2014 |
diego | Update | Computer Scripts / Programs | Rossa and Allegra wiped, Ubuntu 12.04 installed | Allegra and Rossa wiped and updated to Ubuntu 12.04.5 by me and Ericq; the following procedure was followed:
1) create "controls" user with uid=1001, gid=1001
2) setup network configuration (IP, Mask, Gateway, DNS), .bashrc, /etc/resolv.conf
3) add synaptic package manager (Ubuntu Software Center used by default)
4) add package nfs-common (and possibly libnfs1) to mount nfs volumes; mount nfs volume adding the line "chiara:/home/cds/ /cvs/cds/ nfs rw,bg 0 0" in /etc/fstab
5) add package firmware-linux-nonfree, needed for graphics hardware recognition (ATI Radeon HD 2400 Pro): due to kernel and xorg-server versions of 12.04.5, and because ATI dropped support for legacy cards in their proprietary driver fglrx the only solution is to keep Gallium drivers
6) add packages libmotif3 grace, needed by dataviewer
7) add repository from https://www.lsc-group.phys.uwm.edu/daswg/download/repositories.html (Debian Squeeze); install lcssoft-archive-keyring as first package or apt-get will complain
8) add package lscsoft-metaio libjpeg62, needed by diaggui/awggui (Ericq: used lalmetaio on rossa)
9) add packages python-numpy python-matplotlib python-scipy ipython
10) change ownership of /opt/ to controls:controls
11) add csh package
12) add t1-xfree86-nonfree ttf-xfree86-nonfree xfonts-75dpi xfonts-100dpi, needed by diaggui/awggui (needs reboot)
13) add openssh-server
Ubuntu creates the first user during installation with uid=1000 and gid=1000; if needed, they could be changed afterwards using a second user account and the following procedure (twice, if the second users gets the 1001 uid and gid):
sudo usermod -u <NEWUID> <LOGIN>
sudo groupmod -g <NEWGID> <GROUP>
sudo find /home/ -user <OLDUID> -exec chown -h <NEWUID> {} \;
sudo find /home/ -group <OLDGID> -exec chgrp -h <NEWGID> {} \;
sudo usermod -g <NEWGID> <LOGIN> |
10648
|
Tue Oct 28 20:47:08 2014 |
diego | Update | IOO | IMC WFS sensing matrix measurement | Today I started looking into the WFS problem and improvement, after being briefed by Koji and Nicholas. I started taking some measurements of open loop transfer functions for both PIT and YAW for WFS1, WFS2 and MC2_TRANS. For both WFS1 and 2 there is a peak in close proximity of the region with gain>1, and the phase margin is not very high. Tomorrow I will make measurements of the local damping open loop transfer functions, then we'll think how to improve the sensors' behaviour. |
Attachment 1: 141028_MCWFS_WFS1_PIT_OL.pdf
|
|
Attachment 2: 141028_MCWFS_WFS1_YAW_OL.pdf
|
|
Attachment 3: 141028_MCWFS_WFS2_PIT_OL.pdf
|
|
Attachment 4: 141028_MCWFS_WFS2_YAW_OL.pdf
|
|
Attachment 5: 141028_MCWFS_MC2_TRANS_PIT_OL.pdf
|
|
Attachment 6: 141028_MCWFS_MC2_TRANS_YAW_OL.pdf
|
|
10653
|
Thu Oct 30 02:12:59 2014 |
diego | Update | IOO | IMC WFS sensing matrix measurement | [Diego,Koji]
Today we took some measurements of transfer functions and power spectra of suspensions of the MC* mirrors (open loop), for all the DOFs (PIT, POS, SIDE, YAW); the purpose is to evaluate the Q factor of the resonances and then improve the local damping system. |
Attachment 1: MC1_OL_PIT.pdf
|
|
Attachment 2: MC1_OL_POS.pdf
|
|
Attachment 3: MC1_OL_SIDE.pdf
|
|
Attachment 4: MC1_OL_YAW.pdf
|
|
Attachment 5: MC2_OL_PIT.pdf
|
|
Attachment 6: MC2_OL_POS.pdf
|
|
Attachment 7: MC2_OL_SIDE.pdf
|
|
Attachment 8: MC2_OL_YAW.pdf
|
|
Attachment 9: MC3_OL_PIT.pdf
|
|
Attachment 10: MC3_OL_POS.pdf
|
|
Attachment 11: MC3_OL_SIDE.pdf
|
|
Attachment 12: MC3_OL_YAW.pdf
|
|
10654
|
Thu Oct 30 02:54:38 2014 |
diego | Update | LSC | IR Resonance Script Status | [Diego, Jenne]
The script is moving forward and we feel we are close, however we still have a couple of issues, which are:
1) some python misbehaviour between the system environment and the anaconda one; currently we call bash commands within the python script in order to avoid using the ezca library, which is the one complaining;
2) the fine scan is somewhat not so robust yet, need to investigate more; the main suspects are the wavelet parameters given to the algorithm, and the Offset and Ramp parameters used to perform the scan.
Here is an example of a best case scenario, with 20s ramp and 500 points:
|
Attachment 1: AllPython_findIRresonance_WL_X_ramp_20_500_2.png
|
|
Attachment 2: AllPython_findIRresonance_WL_Y_ramp_20_500_2.png
|
|
Attachment 3: AllPython_findIRresonance_WL_ramp_20_500_2.png
|
|
|
ELOG V3.1.3- |