I defended today. It went well, no difficult questions, conversational, just like I wanted. I brought coffee and muffins which seemed to be adequate.
Hard to believe its almost over. I still have to file the damned thing, and there are major sections I want to add. Otherwise, the librarian is the only person left in my way.
I already received my first email with the salutation "Hello Dr. ___" Sure it was automated, but still. I paused.
Substantial amount of drinking has gone one now, but to be honest its sort of anticlimactic. I'm full of confusing emo thoughts, but I think they're only temporary. I want to celebrate, but common kid, don't get cocky.
Monday, August 29, 2011
Friday, August 26, 2011
8.26.11
So close now. The book has been written, and I'm building up defenses as we speak.
Last month or so has been spent living in latex and matlab generating plots. In a way its anticlimactic. After the last post the experiment worked. I generated some great data. I wrote about it. I went to a few conferences where people didn't violently object. San Diego was nice. Hawaii was nicer.
I didn't get to every topic I wanted to, but soon it'll be over and I'll move on to something else. Some day. Probably.
Last month or so has been spent living in latex and matlab generating plots. In a way its anticlimactic. After the last post the experiment worked. I generated some great data. I wrote about it. I went to a few conferences where people didn't violently object. San Diego was nice. Hawaii was nicer.
I didn't get to every topic I wanted to, but soon it'll be over and I'll move on to something else. Some day. Probably.
Friday, June 17, 2011
6.17.11
I've gone this far, so I guess the least I could do it make a concerted effort to keep this POS updated during the final stretch (I hope). This means I'm going to have to skip all the intriguing stuff I've been up to the last few weeks, so I'll just say its classified.
Amazingly, even at this stage I'm being pushed to increase the frame rate of the experiment. To that end I'm going to set things up to use pixel subsampling, which reduces the sensitivity of the WFS but results in about a 4x increase in the max WFS camera frame rate. I estimate that with this change I should be able to get shit done at around 70-80Hz instead of the 25 currently. At that rate I should be able to crap out volumes of data at an even higher speed. Hooray.
To that end I generated a new reference image/AOI grid today by blocking the DMs and using the reference mirrors. After establishing an oh-shit backup I'll make changes to the slope code tomorrow to get the new WFS image resolution working.
The good news is that at this point I can do stuff like this pretty quickly. Almost too quickly, since I tend to forget what I changed if I screw things up. Soon it'll be time to retire to a rocking chair by the fire, light up a pipe, and stroke by beard longingly while I tell the next generation of students tall tales about fast centroid code and spatial filter alignment.
Amazingly, even at this stage I'm being pushed to increase the frame rate of the experiment. To that end I'm going to set things up to use pixel subsampling, which reduces the sensitivity of the WFS but results in about a 4x increase in the max WFS camera frame rate. I estimate that with this change I should be able to get shit done at around 70-80Hz instead of the 25 currently. At that rate I should be able to crap out volumes of data at an even higher speed. Hooray.
To that end I generated a new reference image/AOI grid today by blocking the DMs and using the reference mirrors. After establishing an oh-shit backup I'll make changes to the slope code tomorrow to get the new WFS image resolution working.
The good news is that at this point I can do stuff like this pretty quickly. Almost too quickly, since I tend to forget what I changed if I screw things up. Soon it'll be time to retire to a rocking chair by the fire, light up a pipe, and stroke by beard longingly while I tell the next generation of students tall tales about fast centroid code and spatial filter alignment.
Friday, June 03, 2011
6.2.11
Christ, will I ever update this thing? I guess that's the paradox of a blog, the more real shit gets, the less time there is to write about it.
Today was the first time I got results I'm really happy with, and which I think are really publishable. Basically, after countless diversions and problems, the experiment is essentially working as planned. Better yet, I was able to get my hands on some experimental aero-optics data, and after even more diversions and problems, was able to use some semblance of those as disturbances.
If I say a prayer and the stars align, I can get a 20-30% improvement in the average target intensity with these disturbances over the integrator. Astoundingly I've been able to use an "optimal" integrator gain found by toying with the sensitivity transfer function.
Anyway, the main point of this right now is that I'm drinking in celebration. And that's no time to waste writing on the googles.
Today was the first time I got results I'm really happy with, and which I think are really publishable. Basically, after countless diversions and problems, the experiment is essentially working as planned. Better yet, I was able to get my hands on some experimental aero-optics data, and after even more diversions and problems, was able to use some semblance of those as disturbances.
If I say a prayer and the stars align, I can get a 20-30% improvement in the average target intensity with these disturbances over the integrator. Astoundingly I've been able to use an "optimal" integrator gain found by toying with the sensitivity transfer function.
Anyway, the main point of this right now is that I'm drinking in celebration. And that's no time to waste writing on the googles.
Thursday, April 28, 2011
4.28.11
Holy shit this thing is out of date now. That's what happens when you get busy [not]working.
Since February I've gotten things working relatively well, with one major realignment along the way to remove some barrel distortion that (I think) was caused by the beam getting too close to the edge of a lens. I've also placed L4 on a stage to mitigate the bias WF rather than manually moving L2. Relatively speaking, this lens only needs to be moved a few mm to correct for the DM bias, and using a stage keeps everything in alignment. True the imaging planes of all the following components changes, but so far that effect seems to be negligible. One boring day I'll write a long post about my thoughts on the alignment procedure.
I've also installed plane mirrors, which bypass the DMs, to create a absolute reference WF that I used to generate a SHWFS reference grid. With this latest setup I'm usually able to get the actual beam (w/ DMs) pretty close to this original position.
At the moment I've settled on using the number of modes to control the saturation problem, which seems to be less of an issue than before. Amazingly, the system seems robust enough that I can actually use the "optimal" integrator gain of 0.5 as determined from a sensitivity Bode plot, nearly an order of magnitude larger than the gain I was using before. As a result, the difference in performance between the integrator and LTI controller isn't nearly as wide as before, but now I at least have a reasonable "best case" classical controller to compare it to.
Much more has happened, but in a nutshell I spent today writing some code to compute the encircled energy. I'm still exploring just how much improvement I can eek out of the LTI controller, so tomorrow and next week I plan to experiment with progressively stronger disturbance scales and control modes to find what I can get away with.
Since February I've gotten things working relatively well, with one major realignment along the way to remove some barrel distortion that (I think) was caused by the beam getting too close to the edge of a lens. I've also placed L4 on a stage to mitigate the bias WF rather than manually moving L2. Relatively speaking, this lens only needs to be moved a few mm to correct for the DM bias, and using a stage keeps everything in alignment. True the imaging planes of all the following components changes, but so far that effect seems to be negligible. One boring day I'll write a long post about my thoughts on the alignment procedure.
I've also installed plane mirrors, which bypass the DMs, to create a absolute reference WF that I used to generate a SHWFS reference grid. With this latest setup I'm usually able to get the actual beam (w/ DMs) pretty close to this original position.
At the moment I've settled on using the number of modes to control the saturation problem, which seems to be less of an issue than before. Amazingly, the system seems robust enough that I can actually use the "optimal" integrator gain of 0.5 as determined from a sensitivity Bode plot, nearly an order of magnitude larger than the gain I was using before. As a result, the difference in performance between the integrator and LTI controller isn't nearly as wide as before, but now I at least have a reasonable "best case" classical controller to compare it to.
Much more has happened, but in a nutshell I spent today writing some code to compute the encircled energy. I'm still exploring just how much improvement I can eek out of the LTI controller, so tomorrow and next week I plan to experiment with progressively stronger disturbance scales and control modes to find what I can get away with.
Thursday, February 10, 2011
Woops
I was wrong. The file problem wasn't the only cause of the saturation although it definitely contributed. After some heavy drinking, I realized that the saturation issue is just something I'm going to have to deal with. Luckily its much more predictable now, which is almost as good as not having it at all.
At the moment its manageable unless the number of modes gets in the neighborhood of 20. Another trick that helped is eliminating the influence of the edge subapertures while identifying the poke matrix. Because these lenslets are on the edge, their centroids can experience sudden jumps if an adjacent spot edges into the wrong measurement error. This is a serious nonlinear source of noise that can create large spikes at the edges of the identified influence functions/mode. As a result, if a large disturbance shows up at an edge and is subsequently projected onto one of these erroneous spikes, the actuators pertaining to that mode can saturate almost immediately. I surmise this is why the edge actuators are the first to go.
I've been looking at ways to just reduce the influence of the edge subapertures instead of eliminating them completely. If I identify the reconstructor directly instead of the poke matrix this could be done by adding a regularization term to the least-squares problem. That route has run into some trouble with the rank of the matrix containing the slope vectors though, so I haven't gone back to it.
Another option is to identify the poke matrix, but regularize the actuator influence functions themselves. This is basically the method in [Hin07a], but obviously choosing the regularization matrix is more art than science...i.e. a pain in the ass.
Lets see, what else. We also finally got some real life, flesh and blood wavefront data. The problem (isn't there always one?) is that there's a large occlusion in the middle of the wavefront sensor image. This is a common geometry in a lot of AO telescopes. I've spent quite a bit of effort on interesting ways to fill in the hole so I can apply the wavefronts on the DM, but eventually settled on plain old least-squares. Because there's significant flow in the data, I can basically identify a "predictor" (smoother?) that fills in the hole based on the future and past sequence of wavefronts in the region around it.
Although its a Matlab indexing nightmare, the results look relatively convincing. The edge pixels aren't quite continuous all the time, but I think that can be fixed by (again) using regularization to enforce boundary conditions. If I can prove that the filled images have the same second order statistics (esp. structure function) as the original data I might be able to squeeze a short paper on it. Bonus.
In other news, I finally got my shit together wrt the target camera. Basically what I learned from that has led to even more modifications to the hardware. That deserves another post.
Somewhere in all this the driver boxes for DM31 crapped out...both of them. In the mean time its just me and my old friend Simulink working simulations.
Friday, January 14, 2011
1.14.11
Don't know what's worse, having a problem or knowing that it was something incredibly stupid all along.

Obviously the LTI controller is obliterating much of the disturbance. There's still some high frequency amplification, but I think that can be knocked out with some frequency weighting. Looking at the rms values basically tells the whole story
Note that now I'm multiplying each mode by the norm of the phase profiles they produce, so you can compare their rms values relative to each other.
As you might expect there's a jump when the loop is closed. But even this brief foray into shit-town doesn't destabilize the system. At some point it might be interesting to embed the saturation in the internal plant model.
Changing the disturbances didn't directly change the saturation issue, although it did help lower the prediction error greatly, probably since there was actually something to predict. But I noticed that there was this persistent static wavefront that even the classical loop had no effect on. Right now I'm storing the reference centroid info in a particular file that I occasionally refresh, and it turns out that there was a duplicate in a different directory...generated about the same time I started having these problems. The result was that this file would occasionally be used in stead of the correct reference, causing a "fake" bias that the actuator's couldn't reduce. Genius.
This explains a lot. The bias was usually tilt-like, explaining why the edge actuators were the first to saturate. I suspect that the main issue was that with this shit stuck in the system the disturbance sequences weren't anywhere near zero mean, and that this possibly screwed up the predictor.
Its still early, so I guess its possible this isn't the actual problem. But things got better immediately after removing the ghost file. Here are some sweet results using (fairly strong) disturbances and 25 modes

Obviously the LTI controller is obliterating much of the disturbance. There's still some high frequency amplification, but I think that can be knocked out with some frequency weighting. Looking at the rms values basically tells the whole story
Note that now I'm multiplying each mode by the norm of the phase profiles they produce, so you can compare their rms values relative to each other.Even with stuff "fixed" though, saturation can still happen. Here's what the commands look like when the LTI controller is switched on suddently
As you might expect there's a jump when the loop is closed. But even this brief foray into shit-town doesn't destabilize the system. At some point it might be interesting to embed the saturation in the internal plant model.Next week its back to target measurements. There has to be something that works with this kind of reduction in the RMS wavefront. Also, some new disturbance models might be interesting, since this current one is basically the easiest case.
Tuesday, January 11, 2011
1.11.10
Ever since the big realignment I've never been happy with the way the disturbance commands were generated. Basically they were always "random,' but it was hard to recognize any flow going on. With this saturation problem I took another look and found that its usually the actuators around the edge that hit the wall first. It turned out that sometimes the disturbance actuators around the edge sometimes also had much larger amplitudes. Coincidence?
Part of the problem is that disturbance wavefronts are mapped to commands using the DM61 poke matrix, which is prone to shittyness and can have noise around the edges. I think maybe this means that the inverse of this is causing problems with certain actuators.
It'd be nice to generate disturbances independently of the WFS, so I cooked up some code today that uses the ideal influence functions instead and an arbitrary scaling to get the command voltages. The results look much much better, and you can even see some resemblance between the SS model output and the actual phases measured on the WFS.
The turbulence now looks more like a flapping sheet, like it should if there's flow going on. I hope this means better predictor performance compared to the old commands.
Part of the problem is that disturbance wavefronts are mapped to commands using the DM61 poke matrix, which is prone to shittyness and can have noise around the edges. I think maybe this means that the inverse of this is causing problems with certain actuators.
It'd be nice to generate disturbances independently of the WFS, so I cooked up some code today that uses the ideal influence functions instead and an arbitrary scaling to get the command voltages. The results look much much better, and you can even see some resemblance between the SS model output and the actual phases measured on the WFS.
The turbulence now looks more like a flapping sheet, like it should if there's flow going on. I hope this means better predictor performance compared to the old commands.
Friday, January 07, 2011
Thursday, January 06, 2011
1.5.11
Fuck. Saturation again. This is slowly driving my insane.
Happened today after powering up the DMs from being off all night, so that pretty much eliminates the charge build-up explanation. Nothing changed in the code from yesterday's working version, and I even used the same disturbance sequences, so the problem isn't there.
I'm really out of ideas on what could be causing this other than some plant modeling error, or some problem with the WFS image that happens during the experiment. Tomorrow I'm going to display the WFS image while the test is running to see if anything shitty happens around the saturation point. I might also do a system ID on the closed loop plant to see how closely it matches the internal model.
I feel like my whole life is treading water right now because of this.
Happened today after powering up the DMs from being off all night, so that pretty much eliminates the charge build-up explanation. Nothing changed in the code from yesterday's working version, and I even used the same disturbance sequences, so the problem isn't there.
I'm really out of ideas on what could be causing this other than some plant modeling error, or some problem with the WFS image that happens during the experiment. Tomorrow I'm going to display the WFS image while the test is running to see if anything shitty happens around the saturation point. I might also do a system ID on the closed loop plant to see how closely it matches the internal model.
I feel like my whole life is treading water right now because of this.
Wednesday, January 05, 2011
1.5.11
Just got back from a week in the mountains to find the saturation problem apparently decided to solve itself. I had the DM's unpowered the whole time, so I'm wondering if its possible that the actuators are somehow accumulating a charge when I leave them on for extended periods. Obviously my code didn't change while I was gone, so that's that only thing I can think of that might change on its own.
Anyway, since things seem to be working again, I'm looking at target camera performance metrics. I have plots for a bunch of them and compared them to the approx. Strehl ratio using the Marechal approximation and the RMS wavefront error. Amazingly there's quite a nice correlation, and the PSF maximum is stationary enough to use a power in the bucket measure with reasonable bucket sizes.
In fact, the smaller the bucket the larger the increase in the average SR when the LTI loop is closed. Using 25 modes I'm seeing around a 20% increase in the average Strehl with a 3px square bucket centered on the unaberrated max PSF. I have no idea if this is satisfactory or not, but at least there's some improvement. My advisor favors this measure, so some things to look at:
- Variation of average improvement vs. bucket size
- Improvement vs. number of modes used
- Improvement with stronger/weaker disturbance amplitudes
This is assuming the sat. problem doesn't reappear. A big if.
Anyway, since things seem to be working again, I'm looking at target camera performance metrics. I have plots for a bunch of them and compared them to the approx. Strehl ratio using the Marechal approximation and the RMS wavefront error. Amazingly there's quite a nice correlation, and the PSF maximum is stationary enough to use a power in the bucket measure with reasonable bucket sizes.
In fact, the smaller the bucket the larger the increase in the average SR when the LTI loop is closed. Using 25 modes I'm seeing around a 20% increase in the average Strehl with a 3px square bucket centered on the unaberrated max PSF. I have no idea if this is satisfactory or not, but at least there's some improvement. My advisor favors this measure, so some things to look at:
- Variation of average improvement vs. bucket size
- Improvement vs. number of modes used
- Improvement with stronger/weaker disturbance amplitudes
This is assuming the sat. problem doesn't reappear. A big if.
Subscribe to:
Comments (Atom)

