wombat issueshttps://git.gsi.de/phelix/lv/wombat/-/issues2024-02-20T06:55:23Zhttps://git.gsi.de/phelix/lv/wombat/-/issues/223FROG Calibrator: Additionally save raw camera data user input in order to per...2024-02-20T06:55:23Zj.hornungFROG Calibrator: Additionally save raw camera data user input in order to perform a post-analysis of the calibrationInstead of saving the spectral and temporal calibration results only, it would be very good to also save additional values / acquisitions in order to perform a post-analysis of the calibration:
Spectral calibration:
- Wavelengths used f...Instead of saving the spectral and temporal calibration results only, it would be very good to also save additional values / acquisitions in order to perform a post-analysis of the calibration:
Spectral calibration:
- Wavelengths used for the calibration
- Respective pixel cooresponding to the different wavelengths (raw value)
- Acquired image used for the calibation
Temporal calibration:
- Delay stage values (µm)
- Respective pixel corresponding to the maximum of the FROG trace in time-axis direction (raw value)
- Image for each acquired time-/ delay-stepj.hornungj.hornunghttps://git.gsi.de/phelix/lv/wombat/-/issues/204Nearfield Analysis: Fixed angles2022-01-25T07:45:05ZUdo Eisenbarthu.eisenbarth@gsi.deNearfield Analysis: Fixed anglesAdd option to set fixed ellipse angles. This would prevent an major/minor axis flip while measuring a Gaussian mode / M^2Add option to set fixed ellipse angles. This would prevent an major/minor axis flip while measuring a Gaussian mode / M^2https://git.gsi.de/phelix/lv/wombat/-/issues/203Gauss Mode Measurement: Export to CSV2022-01-25T07:42:27ZUdo Eisenbarthu.eisenbarth@gsi.deGauss Mode Measurement: Export to CSVExport / Import measured values (positions / beam diamters) to a CSV file.Export / Import measured values (positions / beam diamters) to a CSV file.https://git.gsi.de/phelix/lv/wombat/-/issues/201Implement more robust DM response recording scheme with Hadamard modes2021-12-10T13:58:45Zj.b.ohlandImplement more robust DM response recording scheme with Hadamard modesWe've been doing it wrong all the time ... again. Recording a response using individual actuator pokes is "the worst possible way" to do it as the signal to noise ratio is very bad and the temporal evolution of the wavefront during recor...We've been doing it wrong all the time ... again. Recording a response using individual actuator pokes is "the worst possible way" to do it as the signal to noise ratio is very bad and the temporal evolution of the wavefront during recording is not cancelled out very efficient. Turns out that acting on all the DM channels all the time in an orthogonal fashion is very beneficial and will lead to a much cleaner response, which increases stability and convergence speed of the loop. Using Hadamard modes as channel offsets seems to be an excellent approach.
Here's a paper - you can skip to section 5.
https://www.researchgate.net/publication/241763342_Calibration_of_a_curvature_sensor_bimorph_mirror_AO_system_Interactiocn_matrix_measurement_on_MACAO_systemshttps://git.gsi.de/phelix/lv/wombat/-/issues/194Camera: Add wavelength as config param2021-11-25T12:11:43ZUdo Eisenbarthu.eisenbarth@gsi.deCamera: Add wavelength as config paramAlthough this parameter is not needed by the cam actor itself it could be handed over to various other modules such as shs calibrator, focus reconstructor, gauss mode / M^2 measurement etc...Although this parameter is not needed by the cam actor itself it could be handed over to various other modules such as shs calibrator, focus reconstructor, gauss mode / M^2 measurement etc...https://git.gsi.de/phelix/lv/wombat/-/issues/187JustX: Show numeric value in intensity bar2021-10-12T10:44:54ZUdo Eisenbarthu.eisenbarth@gsi.deJustX: Show numeric value in intensity barhttps://git.gsi.de/phelix/lv/wombat/-/issues/178Design backwards-compatible data saving system2021-08-31T08:54:26Zj.b.ohlandDesign backwards-compatible data saving systemI think it may be well spent time to think about how one could save LV-Objects in a manner that still allows to load it after the class was updated.
Example: During I020, I saved some SABER-files that I wish to use for data evaluation no...I think it may be well spent time to think about how one could save LV-Objects in a manner that still allows to load it after the class was updated.
Example: During I020, I saved some SABER-files that I wish to use for data evaluation now. Since the "valid"-field was removed from the class, I cannot load them in the latest versions of WOMBAT and need to check out older versions.
The solution may not be trivial, but a combination of object serialization (maybe XML?) and object specific version IDs that are stored in the class itself could work. Here, one could implement a deserialization method that first retrieves the version ID and then converts the rest of the data accordingly into the most recent version.https://git.gsi.de/phelix/lv/wombat/-/issues/145SHS Analysis: Remove outliers in Shifts2021-08-26T11:06:35Zj.b.ohlandSHS Analysis: Remove outliers in ShiftsXRays may cause hotpixels on shot, which may be falsely detected as a spot by the analysis and result in crazy large gradients in single points - which or course mess up the reconstructed wavefront.
One could investigate an algorithm to...XRays may cause hotpixels on shot, which may be falsely detected as a spot by the analysis and result in crazy large gradients in single points - which or course mess up the reconstructed wavefront.
One could investigate an algorithm to detect these outliers, e.g. by subtracting the tilt and comparing the amplitude of the shifts. If one or two shifts exceed 2 or 3 sigma from the main distribution, they could be considered outliers and can be removed from the Gradient.
Excample images with XRays like these were recorded at PTAS during I020 - one can look up the shotnumbers in the shotbooks. According comments have been made in the "WF"-row.https://git.gsi.de/phelix/lv/wombat/-/issues/134Add "remaining time" to AO degauss module2022-10-12T13:00:38ZUdo Eisenbarthu.eisenbarth@gsi.deAdd "remaining time" to AO degauss modulev1.5 M1Udo Eisenbarthu.eisenbarth@gsi.deUdo Eisenbarthu.eisenbarth@gsi.dehttps://git.gsi.de/phelix/lv/wombat/-/issues/133Investigate LIFT Technology2021-04-26T06:57:08ZUdo Eisenbarthu.eisenbarth@gsi.deInvestigate LIFT TechnologySee paper:
[LIFT_meimon2014.pdf](/uploads/f7abac31befe7dbf816892906f925875/LIFT_meimon2014.pdf)See paper:
[LIFT_meimon2014.pdf](/uploads/f7abac31befe7dbf816892906f925875/LIFT_meimon2014.pdf)https://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/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/45Change structure for multiple datasources2021-11-24T12:42:26Zj.b.ohlandChange structure for multiple datasourcesSome actors may need a data-feed for several datasources (e.g. #16 ).Some actors may need a data-feed for several datasources (e.g. #16 ).v1.5 M1https://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.