wombat issueshttps://git.gsi.de/phelix/lv/wombat/-/issues2021-11-25T12:13:29Zhttps://git.gsi.de/phelix/lv/wombat/-/issues/97AnalysisActor: Beamshape calculation2021-11-25T12:13:29ZUdo Eisenbarthu.eisenbarth@gsi.deAnalysisActor: Beamshape calculationAdd Switch for selecting the calculation method. Currently it's 13% of the max intensity. Make this value variable or altenatively use all valid Points for Ellipse calculation.Add Switch for selecting the calculation method. Currently it's 13% of the max intensity. Make this value variable or altenatively use all valid Points for Ellipse calculation.https://git.gsi.de/phelix/lv/wombat/-/issues/94Wrong beamshape estimation for asymmetric double beams2019-02-11T12:37:32ZUdo Eisenbarthu.eisenbarth@gsi.deWrong beamshape estimation for asymmetric double beamsSee the following screenshot
![Wombat_Doppelstrahl](/uploads/87e7f8e3dc202335385d4b039219e867/Wombat_Doppelstrahl.png)
It would be better to first calculate the convex hull and determine the beamshape ellipse from it.See the following screenshot
![Wombat_Doppelstrahl](/uploads/87e7f8e3dc202335385d4b039219e867/Wombat_Doppelstrahl.png)
It would be better to first calculate the convex hull and determine the beamshape ellipse from it.https://git.gsi.de/phelix/lv/wombat/-/issues/93Implementation of global states2019-02-06T12:58:30Zj.b.ohlandImplementation of global statesSome creative brainstorming:
For operation, some global states / switches would be very useful, that would ideally be customizable. In our case, a "10Hz Mode", "Pre-Shot" and "Shot Mode" state might be suitable.
State-changes could be ...Some creative brainstorming:
For operation, some global states / switches would be very useful, that would ideally be customizable. In our case, a "10Hz Mode", "Pre-Shot" and "Shot Mode" state might be suitable.
State-changes could be either performed manually, or externally controlled (by the PCS?)
On state-change, all modules would be messaged. Wherever possible / necessary, the user can select which setting shall be used in which state. Some examples:
* In "10Hz Mode", the averaging in the Analysis is set to 20. In "Shot Mode", the averaging is set to 1, so no measurement is lost.
* A Wavefront offset in the AO Control Actor is enabled / disabled / selected, depending on the mode. Recorded shot-aberrations will automatically be pre-compensated, once "Pre-Shot" is selected.
A state could also be implemented as a layout-file, that can be saved for each state: Customize WOMBAT -> Save to State A. Customize again -> Save to State B. In this case, however, on-the-fly-changes would either be omited on state change or saved to the previous state. Maybe with a dialogue asking, what option should be performedhttps://git.gsi.de/phelix/lv/wombat/-/issues/77Idea: Combine phase and intensity to complex field2018-11-20T12:06:42ZUdo Eisenbarthu.eisenbarth@gsi.deIdea: Combine phase and intensity to complex fieldIntroducing a new class (Wavefield ...) or modify existing Wavefront class. This would simplify data transport (saves one variant) and would make calculation of farfield as well a intensity weighted PtV/RMS a bit smoother...What do you t...Introducing a new class (Wavefield ...) or modify existing Wavefront class. This would simplify data transport (saves one variant) and would make calculation of farfield as well a intensity weighted PtV/RMS a bit smoother...What do you think?https://git.gsi.de/phelix/lv/wombat/-/issues/59AO Control: Substitude reference2021-08-26T13:46:24Zj.b.ohlandAO Control: Substitude referenceSometimes, a relative reference is changed for convenience of the operator. The mirror response would in principle still work fine as the nearfield did not shift and the irradiation of the sensor stays the same. However, a new response h...Sometimes, a relative reference is changed for convenience of the operator. The mirror response would in principle still work fine as the nearfield did not shift and the irradiation of the sensor stays the same. However, a new response has to be recorded in order to match the MD5-hash of the reference.
It would be more convenient if the reference-hash could just be substituded if the rows and cols of the gradient field match the expected ones. Of course, this has to be veryfied by the user. If this criterion is false, the closed loop is aborted with an error message as known. If not, a dialogue could be shown:
"The the current reference does not match the mirror response. However, it features the same resolution. Do you want to substitute the reference hash and continue the control-loop? (WARNING: If the beam properties did change, the control might fail. -> Yes / No"https://git.gsi.de/phelix/lv/wombat/-/issues/56AOGroupCalibrator: Re-Implement Response-class2018-10-05T11:34:43Zj.b.ohlandAOGroupCalibrator: Re-Implement Response-classFor recording-purposes, a response-class would simplify the code. An array (length = channels) containing clusters containing 2 arrays (length = repetitions) for background and channel AVGs would store the recorded values.
Handling of th...For recording-purposes, a response-class would simplify the code. An array (length = channels) containing clusters containing 2 arrays (length = repetitions) for background and channel AVGs would store the recorded values.
Handling of the data would be simplified as averaging etc. can be implemented in class methods.https://git.gsi.de/phelix/lv/wombat/-/issues/55AO ControlChain: Move calculation of channel-values to class-method2018-10-05T11:23:53Zj.b.ohlandAO ControlChain: Move calculation of channel-values to class-methodA lot of properties are currently handled in the AO Control Actor, which defies the goal to have functionaly in the libraries.
- Why does the actor have to know the control matrix? Just write the # of Eigenmodes into the CtlChain and let...A lot of properties are currently handled in the AO Control Actor, which defies the goal to have functionaly in the libraries.
- Why does the actor have to know the control matrix? Just write the # of Eigenmodes into the CtlChain and let the magic happen there.
- Why is the wavefront-offset stored in the actor itself? It could be updated from the WFMod-objects and just written into the CTL-chain and displayed directly.
- The current channel values and residual values can still be calculated in the actor.https://git.gsi.de/phelix/lv/wombat/-/issues/54GradientField: Unify all gradient representations2018-10-30T14:32:47Zj.b.ohlandGradientField: Unify all gradient representationsCurrently, there are 4 ways a gradient can be represented:
- The regular GradientField
- The SAbber-format, a GradiendField-child containing a MD5-hash of the used reference
- The WeightedGradField-cluster for adding, subtracting, multip...Currently, there are 4 ways a gradient can be represented:
- The regular GradientField
- The SAbber-format, a GradiendField-child containing a MD5-hash of the used reference
- The WeightedGradField-cluster for adding, subtracting, multiplying ...
- The vector-representation that is used for the controll-loops
Those don't need to be completely separated objects as they contain basically the same properties. Therefore, a unification of those to a single class would simplify the handling of gradients in wide parts of the code. Here are some thoughts:
- The MD5-hash of the reference can be a regular field. If it is an empty string, the Read-vi could return a "false" flag, otherwise true.
- Weights were removed earlier as they are not needed for most applycations. If they were saved in a separated array however, this can stay empty until it is actually needed, not eating up unnecessary ressources.
- The vector-representation could be generated on the fly within a class method if needed. On the other hand, a vector can be written and transformed into a regular gradient field, checking if every value is NaN or not.
ADDITIONALLY: What about diagonal gradients? (dxy and dx-y) They would be calculated from dx and dy for the improved Southwell reconstructor (see #17). On the other hand, if the evaluation of the SID4/QWLSI-sensor is implemented, actual diagonal gradients will be measured! Corresponding fields will be needed. Therefore, why not include them in the GradientField class? As with the weights, it might be beneficial to use a separated array so there won't be wasted ressources if those fields stay unused.
A CalcDiagGrads.vi could be implemented to auto-fill those arrays from dx and dy for the improved southwell-algorithm.https://git.gsi.de/phelix/lv/wombat/-/issues/48AdaptiveOpticsActor: Introduce range check and error-messaging2021-08-26T13:48:14Zj.b.ohlandAdaptiveOpticsActor: Introduce range check and error-messagingRight now, there is (probably) no check if all channel-values to be set are within their ranges. Also, if a timeout occures on the driver site, there is no corresponding message sent back to th SimpleCtrlActor.
Both should be handled pr...Right now, there is (probably) no check if all channel-values to be set are within their ranges. Also, if a timeout occures on the driver site, there is no corresponding message sent back to th SimpleCtrlActor.
Both should be handled properly.https://git.gsi.de/phelix/lv/wombat/-/issues/44Implement Global Device Actor / Device Pool2018-09-18T12:21:40Zj.b.ohlandImplement Global Device Actor / Device PoolIn preparation for the adaptive groups and to suppress the usage of hardware-drivers for several actors, a centralized management for devices and channels has to be implemented.In preparation for the adaptive groups and to suppress the usage of hardware-drivers for several actors, a centralized management for devices and channels has to be implemented.https://git.gsi.de/phelix/lv/wombat/-/issues/39GradientField: Fit Plane error msg if bad image...2018-09-04T07:45:42ZUdo Eisenbarthu.eisenbarth@gsi.deGradientField: Fit Plane error msg if bad image...Fehlermeldung Analysis: Die Anzahl der Datenpunkte im Array der Y-Werte muss größer als die Ordnung sein.Fehlermeldung Analysis: Die Anzahl der Datenpunkte im Array der Y-Werte muss größer als die Ordnung sein.https://git.gsi.de/phelix/lv/wombat/-/issues/33Add option/module to measure the effective focal length of optical components2021-12-09T07:50:08ZUdo Eisenbarthu.eisenbarth@gsi.deAdd option/module to measure the effective focal length of optical componentsThis can be achieved by fitting a spherical surface to a wavefront. Radius=focal lengthThis can be achieved by fitting a spherical surface to a wavefront. Radius=focal lengthhttps://git.gsi.de/phelix/lv/wombat/-/issues/28Zernike Analysis: Add possibility to change function base2018-05-16T08:35:18ZUdo Eisenbarthu.eisenbarth@gsi.deZernike Analysis: Add possibility to change function baseAdd possibility to use e.g. Lengendre polynomes as base which are better suited for rectangular beams. In this case the "Zernike Analysis" would become rather something like a "Modal Analysis".Add possibility to use e.g. Lengendre polynomes as base which are better suited for rectangular beams. In this case the "Zernike Analysis" would become rather something like a "Modal Analysis".https://git.gsi.de/phelix/lv/wombat/-/issues/26Hybrid reconstructor2018-05-16T08:31:42Zj.b.ohlandHybrid reconstructorA reconstruction-algorithm that might be more reliable and precise than the existing ones might be a hybrid of a zonal and a modal algorithm:
First, a modal zernike-reconstruction could be done, reconstructing all the low-frequent parts...A reconstruction-algorithm that might be more reliable and precise than the existing ones might be a hybrid of a zonal and a modal algorithm:
First, a modal zernike-reconstruction could be done, reconstructing all the low-frequent parts of the wavefront. The remaining gradient could then be fed into a zonal algorithm, e.g. southwell, to reconstruct the high-frequent parts.
Before adding the high-frequent parts, they should be passed through a zernike-filter to remove all the low-frequent reconstruction errors.https://git.gsi.de/phelix/lv/wombat/-/issues/22WF Modifier: 3D-focus-control2021-08-26T13:50:31Zj.b.ohlandWF Modifier: 3D-focus-controlKnowing the F-number of the final focussing optic, one can calculate the X/Y-tilt and defocus necessary to move the focal-spot about a specific distance in space, given in micrometers. This might be a cool feature.
Inspired by Imagine O...Knowing the F-number of the final focussing optic, one can calculate the X/Y-tilt and defocus necessary to move the focal-spot about a specific distance in space, given in micrometers. This might be a cool feature.
Inspired by Imagine Optics :-)
---
EDIT: As wavefront modifiers are now used, this would be the proper way to implement that.https://git.gsi.de/phelix/lv/wombat/-/issues/21AO Control / Response: Compensate for nearfield shifts?2018-05-07T08:56:03ZUdo Eisenbarthu.eisenbarth@gsi.deAO Control / Response: Compensate for nearfield shifts?If the nearfield on the SHS sensor moves, the response is no longer valid. Is it possible to correct for this e.g. use response relative to the nearfield beam center?
This effect might be responsible for the observation that the regulati...If the nearfield on the SHS sensor moves, the response is no longer valid. Is it possible to correct for this e.g. use response relative to the nearfield beam center?
This effect might be responsible for the observation that the regulation becomes worse and worse over time which can be improved by recording a new response...https://git.gsi.de/phelix/lv/wombat/-/issues/18Implement "Relax" function of Kentech driver.2018-05-07T08:52:36ZUdo Eisenbarthu.eisenbarth@gsi.deImplement "Relax" function of Kentech driver.See post from Bryn Perry:
H Udo,
Relax is something we requested be implemented at firmware level in the Kentech driver. The relax function cycles all outputs through a diminishing sequence of sinusoidal voltage waves, from +Vmax, to ...See post from Bryn Perry:
H Udo,
Relax is something we requested be implemented at firmware level in the Kentech driver. The relax function cycles all outputs through a diminishing sequence of sinusoidal voltage waves, from +Vmax, to -Vmax, then +Vmax/2 to Vmax/2, etc in order to combat hysteresis. This was something Chris previously came up with and is a feature in our ancient home-made software. I believe that Jonas saw a definite difference when using it during the mirror characterisation. To start with he was triggering it with a command over HyperTerminal, but decided it would save time to add it to the software. He hacked it in at the time, but said he would do so properly later.https://git.gsi.de/phelix/lv/wombat/-/issues/17Possible improvement of Southwell algorithm2018-10-05T10:57:22ZUdo Eisenbarthu.eisenbarth@gsi.dePossible improvement of Southwell algorithmsee attached paper...[Pathak_2014_J._Opt._16_055403_Southwell_improvement.pdf](/uploads/e5b977b0ed0121fc9ae407834ed20147/Pathak_2014_J._Opt._16_055403_Southwell_improvement.pdf)see attached paper...[Pathak_2014_J._Opt._16_055403_Southwell_improvement.pdf](/uploads/e5b977b0ed0121fc9ae407834ed20147/Pathak_2014_J._Opt._16_055403_Southwell_improvement.pdf)https://git.gsi.de/phelix/lv/wombat/-/issues/15AO Control: Implement auto regulate function2018-05-07T08:58:13ZUdo Eisenbarthu.eisenbarth@gsi.deAO Control: Implement auto regulate functionTHis was already present in the standalone version: Automatically stop closed loop if wavefront is optimized (e.g. cannot be further optimized after some regulation cycles).THis was already present in the standalone version: Automatically stop closed loop if wavefront is optimized (e.g. cannot be further optimized after some regulation cycles).https://git.gsi.de/phelix/lv/wombat/-/issues/14AO: All-channel-increment range-checks2018-05-07T08:58:49Zj.b.ohlandAO: All-channel-increment range-checksCurrently, if a set-all-channels-command is sent to the AO Actor, one channel after the other is set. If one is out of range, an error occurs and the wavefront is left in a more or less uncontrolled state.
To prevent this, all new chann...Currently, if a set-all-channels-command is sent to the AO Actor, one channel after the other is set. If one is out of range, an error occurs and the wavefront is left in a more or less uncontrolled state.
To prevent this, all new channel-values should be checked if they are in range before they would be set.
As another idea: If the increment in the channels appears to be out of range in some, it could be scaled so that one channel hits its limit exactly. Therefore there would be still some improvement towards the desired wavefront, even though the optimum cannot be reached.
Of course, this event should be handled properly, interrupting the loop or something.