cleanup and move mirror parameters to server and transfer to client

This commit is contained in:
Holler Mirko
2024-10-02 13:14:54 +02:00
committed by wakonig_k
parent fff0b8ce41
commit 2e3ed9f6f0
2 changed files with 38 additions and 298 deletions

View File

@@ -20,136 +20,9 @@ class OMNY_rt_client:
def __init__(self):
self.mirror_channel = -1
self.mirror_amplitutde_increase=0
self.mirror_parameters = {
1: {
"opt_signalchannel": "ssi_5",
"opt_mirrorname": "Inc Angle",
"opt_averaging_time": 0.1,
"opt_steps1_pos": 1,
"opt_steps1_neg": 1,
"opt_steps2_pos": 10,
"opt_steps2_neg": 10,
"opt_signal_stop": 2400,
"opt_signal_min_begin": 1000,
"opt_step_divider": 1,
"opt_amplitude1_pos": 2000,
"opt_amplitude1_neg": 2000,
"opt_amplitude2_pos": 2000,
"opt_amplitude2_neg": 2000,
},
2: {
"opt_signalchannel": "ssi_2",
"opt_mirrorname": "Inc ST OSA Y",
"opt_averaging_time": 0.1,
"opt_steps1_pos": 1,
"opt_steps1_neg": 1,
"opt_steps2_pos": 1,
"opt_steps2_neg": 1,
"opt_signal_stop": 5000,
"opt_signal_min_begin": 2000,
"opt_step_divider": 1,
"opt_amplitude1_pos": 2000,
"opt_amplitude1_neg": 2000,
"opt_amplitude2_pos": 2000,
"opt_amplitude2_neg": 2000,
},
3: {
"opt_signalchannel": "ssi_1",
"opt_mirrorname": "Inc OSA FZP Y",
"opt_averaging_time": 0.25,
"opt_steps1_pos": 1,
"opt_steps1_neg": 2,
"opt_steps2_pos": 1,
"opt_steps2_neg": 3,
"opt_signal_stop": 7200,
"opt_signal_min_begin": 3000,
"opt_step_divider": 1,
"opt_amplitude1_pos": 2500,
"opt_amplitude1_neg": 2500,
"opt_amplitude2_pos": 2500,
"opt_amplitude2_neg": 2500,
},
4: {
"opt_signalchannel": "ssi_2",
"opt_mirrorname": "OSA Y",
"opt_averaging_time": 0.1,
"opt_steps1_pos": 1,
"opt_steps1_neg": 1,
"opt_steps2_pos": 1,
"opt_steps2_neg": 1,
"opt_signal_stop": 5000,
"opt_signal_min_begin": 2000,
"opt_step_divider": 1,
"opt_amplitude1_pos": 3000,
"opt_amplitude1_neg": 3000,
"opt_amplitude2_pos": 3000,
"opt_amplitude2_neg": 3000,
},
5: {
"opt_signalchannel": "ssi_1",
"opt_mirrorname": "FZP Y",
"opt_averaging_time": 0.2,
"opt_steps1_pos": 6,
"opt_steps1_neg": 6,
"opt_steps2_pos": 8,
"opt_steps2_neg": 4,
"opt_signal_stop": 8000,
"opt_signal_min_begin": 3000,
"opt_step_divider": 1,
"opt_amplitude1_pos": 3000,
"opt_amplitude1_neg": 3000,
"opt_amplitude2_pos": 3000,
"opt_amplitude2_neg": 3000,
},
6: {
"opt_signalchannel": "ssi_4",
"opt_mirrorname": "OSA X",
"opt_averaging_time": 0.2,
"opt_steps1_pos": 2,
"opt_steps1_neg": 1,
"opt_steps2_pos": 1,
"opt_steps2_neg": 1,
"opt_signal_stop": 8850,
"opt_signal_min_begin": 3000,
"opt_step_divider": 1,
"opt_amplitude1_pos": 3000,
"opt_amplitude1_neg": 3000,
"opt_amplitude2_pos": 3700,
"opt_amplitude2_neg": 2500,
},
7: {
"opt_signalchannel": "ssi_3",
"opt_mirrorname": "FZP X",
"opt_averaging_time": 0.2,
"opt_steps1_pos": 4,
"opt_steps1_neg": 4,
"opt_steps2_pos": 4,
"opt_steps2_neg": 4,
"opt_signal_stop": 8000,
"opt_signal_min_begin": 4000,
"opt_step_divider": 1,
"opt_amplitude1_pos": 2500,
"opt_amplitude1_neg": 2500,
"opt_amplitude2_pos": 2500,
"opt_amplitude2_neg": 2500,
},
8: {
"opt_signalchannel": "ssi_1",
"opt_mirrorname": "OSA Y USING SIGNAL OSA FZP",
"opt_averaging_time": 0.2,
"opt_steps1_pos": 1,
"opt_steps1_neg": 1,
"opt_steps2_pos": 1,
"opt_steps2_neg": 1,
"opt_signal_stop": 5000,
"opt_signal_min_begin": 2000,
"opt_step_divider": 1,
"opt_amplitude1_pos": 3000,
"opt_amplitude1_neg": 3000,
"opt_amplitude2_pos": 3000,
"opt_amplitude2_neg": 3000,
}
}
self.mirror_parameters = {}
for j in range(1,9):
self.mirror_parameters[j] = dev.rtx.controller.get_mirror_parameters(j)
@staticmethod
def _get_user_param_safe(device, var):
@@ -158,118 +31,15 @@ class OMNY_rt_client:
raise OMNY_rt_clientError(f"Device {device} has no user parameter definition for {var}.")
return param.get(var)
def _omny_interferometer_openloop_steps(self, channel, steps, amplitude):
dev.rtx.controller._omny_interferometer_openloop_steps(channel, steps, amplitude)
# if channel not in range(3,5):
# raise OMNY_rt_clientError(f"invalid channel number {channel}.")
# if amplitude > 4090:
# amplitude = 4090
# elif amplitude < 10:
# amplitude = 10
# dev.oshield.controller.move_open_loop_steps(
# channel, steps, amplitude=amplitude, frequency=500
# )
# time.sleep(0.01)
# while dev.oshield.controller.is_axis_moving(channel):
# time.sleep(0.002)
# def _omny_interferometer_optimize(self, mirror_channel, channel):
# if mirror_channel == -1:
# raise OMNY_rt_clientError("no mirror channel selected")
# #mirror channel is mirror number and channel is smaract channel, i.e. axis of the mirror
# if channel == 3:
# steps_pos = self.mirror_parameters[mirror_channel]["opt_steps1_pos"]
# steps_neg = self.mirror_parameters[mirror_channel]["opt_steps1_neg"]
# opt_amplitude_pos = self.mirror_parameters[mirror_channel]["opt_amplitude1_pos"]
# opt_amplitude_neg = self.mirror_parameters[mirror_channel]["opt_amplitude1_neg"]
# elif channel == 4:
# steps_pos = self.mirror_parameters[mirror_channel]["opt_steps2_pos"]
# steps_neg = self.mirror_parameters[mirror_channel]["opt_steps2_neg"]
# opt_amplitude_pos = self.mirror_parameters[mirror_channel]["opt_amplitude2_pos"]
# opt_amplitude_neg = self.mirror_parameters[mirror_channel]["opt_amplitude2_neg"]
# else:
# raise OMNY_rt_clientError(f"invalid channel number {channel}.")
# previous_signal = dev.rtx.controller._omny_interferometer_get_signalsample(self.mirror_parameters[mirror_channel]["opt_signalchannel"], self.mirror_parameters[mirror_channel]["opt_averaging_time"])
# min_begin = self.mirror_parameters[mirror_channel]["opt_signal_min_begin"]
# if previous_signal < min_begin:
# #raise OMNY_rt_clientError("error1") #(f"Minimum signal of axis {self.mirror_parameters[mirror_channel]["opt_mirrorname"]} to start alignment not present.")
# print(f"\rMinimum signal for auto alignment {min_begin} not reached.")
# return
# elif previous_signal > self.mirror_parameters[mirror_channel]["opt_signal_stop"]:
# print(f"\rInterferometer signal of axis is good") # {self.mirror_parameters[mirror_channel]["opt_mirrorname"]} is good.")
# return
# else:
# direction = 1
# cycle_counter=0
# cycle_max=20
# reversal_counter=0
# reversal_max=4
# self.mirror_amplitutde_increase=0
# current_sample = dev.rtx.controller._omny_interferometer_get_signalsample(self.mirror_parameters[mirror_channel]["opt_signalchannel"], self.mirror_parameters[mirror_channel]["opt_averaging_time"])
# max=current_sample
# while current_sample < self.mirror_parameters[mirror_channel]["opt_signal_stop"] and cycle_counter<cycle_max and reversal_counter < reversal_max:
# # if current_sample < self.mirror_parameters[mirror_channel]["opt_signal_min_begin"]:
# # raise OMNY_rt_clientError("error2") #(f"Minimum signal of axis {self.mirror_parameters[mirror_channel]["opt_mirrorname"]} to start alignment not present.")
# if direction>0:
# self._omny_interferometer_openloop_steps(channel, steps_pos, opt_amplitude_pos)
# verbose_str = f"channel {channel}, steps {steps_pos}"
# else:
# self._omny_interferometer_openloop_steps(channel, -steps_neg, opt_amplitude_neg)
# verbose_str = f"auto action {channel}, steps {-steps_pos}"
# #print(f"Aligning axis ") #{self.mirror_parameters[mirror_channel]["opt_mirrorname"]}. Target: {self.mirror_parameters[mirror_channel]["opt_signal_stop"]}, current {current_sample}")
# current_sample = dev.rtx.controller._omny_interferometer_get_signalsample(self.mirror_parameters[mirror_channel]["opt_signalchannel"], self.mirror_parameters[mirror_channel]["opt_averaging_time"])
# opt_mirrorname = self.mirror_parameters[self.mirror_channel]["opt_mirrorname"]
# info_str = f"\rAuto aligning Channel {self.mirror_channel}, {opt_mirrorname}, Current signal: {current_sample:.0f}"
# filling = " " * (50-len(info_str))
# # Calculate the number of filled and unfilled segments
# length = 30
# percentage = current_sample / max
# filled_length = int(length * percentage)
# unfilled_length = length - filled_length
# bar = '#' * filled_length + '-' * unfilled_length
# print(info_str + filling + " " + bar + f" {max:.0f} "+verbose_str+" (q)uit \r", end='')
# if previous_signal>current_sample:
# if direction<0:
# steps_pos=int(steps_pos/2)
# steps_neg=int(steps_neg/2)
# if steps_pos<1:
# steps_pos=1
# if steps_neg<1:
# steps_neg=1
# direction=direction*(-1)
# reversal_counter+=1
# previous_signal=current_sample
# cycle_counter+=1
# print(f"\r\nFinished aligning channel {channel} of mirror {mirror_channel}\n\r") # {self.mirror_parameters[mirror_channel]["opt_mirrorname"]}. Target: {self.mirror_parameters[mirror_channel]["opt_signal_stop"]}, current {current_sample}")
def interferometer_tweaking(self):
self._tweak_interferometer()
def _tweak_interferometer(self):
# global _omny_interferometer_opt_signalchannel
# global _omny_interferometer_opt_mirrorname
self.mirror_channel=-1
# Save the current terminal settings
fd = sys.stdin.fileno()
old_term = termios.tcgetattr(fd)
@@ -374,22 +144,7 @@ class OMNY_rt_client:
def omny_interferometer_align_incoupling_angle(self):
self.mirror_channel=1
signal = dev.rtx.controller._omny_interferometer_get_signalsample(self.mirror_parameters[self.mirror_channel]["opt_signalchannel"], self.mirror_parameters[self.mirror_channel]["opt_averaging_time"])
if signal > self.mirror_parameters[self.mirror_channel]["opt_signal_stop"]:
print(f"Interferometer signal of axis {self.mirror_parameters[self.mirror_channel]['opt_mirrorname']} is good, no alignment needed.")
else:
dev.rtx.controller._omny_interferometer_switch_channel(self.mirror_channel)
time.sleep(0.1)
self._omny_interferometer_optimize(self.mirror_channel, 3)
self._omny_interferometer_optimize(self.mirror_channel, 4)
self._omny_interferometer_optimize(self.mirror_channel, 3)
self._omny_interferometer_optimize(self.mirror_channel, 4)
dev.rtx.controller._omny_interferometer_switch_alloff()
dev.rtx.controller.show_signal_strength_interferometer()
self.mirror_channel=-1
dev.rtx.controller.omny_interferometer_align_incoupling_angle()
def omny_interferometer_tweak_otrack(self):
self.OMNYTools.tweak_cursor(dev.otrackz,.1,dev.otracky,.1,special_command=dev.rtx.controller.laser_tracker_print_intensity_for_otrack_tweaking)
@@ -413,42 +168,7 @@ class OMNY_rt_client:
def omny_interferometer_align_tracking(self):
dev.rtx.controller.omny_interferometer_align_tracking()
# self.mirror_channel=6
# signal = dev.rtx.controller._omny_interferometer_get_signalsample(self.mirror_parameters[self.mirror_channel]["opt_signalchannel"], self.mirror_parameters[self.mirror_channel]["opt_averaging_time"])
# if signal > self.mirror_parameters[self.mirror_channel]["opt_signal_stop"]:
# print(f"Interferometer signal of axis {self.mirror_parameters[self.mirror_channel]['opt_mirrorname']} is good, no alignment needed.")
# else:
# dev.rtx.controller._omny_interferometer_switch_channel(self.mirror_channel)
# time.sleep(0.1)
# self._omny_interferometer_optimize(self.mirror_channel, 3)
# self._omny_interferometer_optimize(self.mirror_channel, 4)
# self._omny_interferometer_optimize(self.mirror_channel, 3)
# self._omny_interferometer_optimize(self.mirror_channel, 4)
# dev.rtx.controller._omny_interferometer_switch_alloff()
# dev.rtx.controller.show_signal_strength_interferometer()
# self.mirror_channel=-1
def laser_tracker_check_and_wait_for_signalstrength(self):
dev.rtx.controller.laser_tracker_check_and_wait_for_signalstrength()
# #first check on target
# dev.rtx.controller.laser_tracker_wait_on_target()
# signal = dev.rtx.controller._omny_interferometer_get_signalsample("ssi_4",0.1)
# min_signal = self.OMNYTools._get_user_param_safe("rtx","min_signal")
# low_signal = self.OMNYTools._get_user_param_safe("rtx","low_signal")
# wait_counter = 0
# while signal < min_signal and wait_counter<10:
# print(
# f"The signal of the tracker {signal} is below the minimum required signal of {min_signal}. Waiting..."
# )
# wait_counter+=1
# time.sleep(0.4)
# self.feedback_get_status_and_ssi()
# signal = dev.rtx.controller._omny_interferometer_get_signalsample("ssi_4",0.1)
# if signal < low_signal:
# print(
# f"\x1b[91mThe signal of the tracker {signal} is below the low limit of {low_signal}. Auto readjustment...\x1b[0m"
# )
# self.omny_interferometer_align_tracking()

View File

@@ -237,7 +237,6 @@ class RtOMNYController(Controller):
"opt_amplitude2_neg": 3000,
}
}
self.mirror_channel = -1
# def is_axis_moving(self, axis_Id) -> bool:
# # this checks that axis is on target
@@ -263,8 +262,8 @@ class RtOMNYController(Controller):
threading.Thread(target=send_positions, args=(self, positions), daemon=True).start()
def get_mirror_parameters(self, mirror_number):
return self.mirror_parameters[mirror_number]
def get_mirror_parameters(self,channel):
return self.mirror_parameters[channel]
def laser_tracker_check_and_wait_for_signalstrength(self):
@@ -294,22 +293,43 @@ class RtOMNYController(Controller):
print("Checking laser tracker completed.")
def omny_interferometer_align_tracking(self):
self.mirror_channel=6
signal = self._omny_interferometer_get_signalsample(self.mirror_parameters[self.mirror_channel]["opt_signalchannel"], self.mirror_parameters[self.mirror_channel]["opt_averaging_time"])
mirror_channel=6
signal = self._omny_interferometer_get_signalsample(self.mirror_parameters[mirror_channel]["opt_signalchannel"], self.mirror_parameters[mirror_channel]["opt_averaging_time"])
if signal > self.mirror_parameters[self.mirror_channel]["opt_signal_stop"]:
print(f"Interferometer signal of axis {self.mirror_parameters[self.mirror_channel]['opt_mirrorname']} is good, no alignment needed.")
if signal > self.mirror_parameters[mirror_channel]["opt_signal_stop"]:
print(f"Interferometer signal of axis {self.mirror_parameters[mirror_channel]['opt_mirrorname']} is good, no alignment needed.")
else:
self._omny_interferometer_switch_channel(self.mirror_channel)
self._omny_interferometer_switch_channel(mirror_channel)
time.sleep(0.1)
self._omny_interferometer_optimize(self.mirror_channel, 3)
self._omny_interferometer_optimize(self.mirror_channel, 4)
self._omny_interferometer_optimize(self.mirror_channel, 3)
self._omny_interferometer_optimize(self.mirror_channel, 4)
self._omny_interferometer_optimize(mirror_channel, 3)
self._omny_interferometer_optimize(mirror_channel, 4)
self._omny_interferometer_optimize(mirror_channel, 3)
self._omny_interferometer_optimize(mirror_channel, 4)
self._omny_interferometer_switch_alloff()
self.show_signal_strength_interferometer()
self.mirror_channel=-1
mirror_channel=-1
def omny_interferometer_align_incoupling_angle(self):
mirror_channel=1
signal = self._omny_interferometer_get_signalsample(self.mirror_parameters[mirror_channel]["opt_signalchannel"], self.mirror_parameters[mirror_channel]["opt_averaging_time"])
if signal > self.mirror_parameters[mirror_channel]["opt_signal_stop"]:
print(f"Interferometer signal of axis {self.mirror_parameters[mirror_channel]['opt_mirrorname']} is good, no alignment needed.")
else:
self._omny_interferometer_switch_channel(mirror_channel)
time.sleep(0.1)
self._omny_interferometer_optimize(mirror_channel, 3)
self._omny_interferometer_optimize(mirror_channel, 4)
self._omny_interferometer_optimize(mirror_channel, 3)
self._omny_interferometer_optimize(mirror_channel, 4)
self._omny_interferometer_switch_alloff()
self.show_signal_strength_interferometer()
mirror_channel=-1
def _omny_interferometer_openloop_steps(self, channel, steps, amplitude):
if channel not in range(3,5):