interferometer tuning added to rt client
This commit is contained in:
@@ -13,572 +13,347 @@ class OMNY_rt_clientError(Exception):
|
||||
pass
|
||||
|
||||
class OMNY_rt_client:
|
||||
@staticmethod
|
||||
def _get_user_param_safe(device, var):
|
||||
param = dev[device].user_parameter
|
||||
if not param or param.get(var) is None:
|
||||
raise OMNY_rt_clientError(f"Device {device} has no user parameter definition for {var}.")
|
||||
return param.get(var)
|
||||
def __init__(self):
|
||||
self.mirror_channel = -1
|
||||
self.mirror_amplitutde_increase=0
|
||||
self.mirror_parameters = {
|
||||
1: {
|
||||
"opt_signalchannel": 4,
|
||||
"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": 1,
|
||||
"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": 0,
|
||||
"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": 1,
|
||||
"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": 0,
|
||||
"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": 3,
|
||||
"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": 2,
|
||||
"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": 0,
|
||||
"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,
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
def start_tweak_cursor():
|
||||
curses.wrapper(_tweak_cursor)
|
||||
|
||||
def _tweak_cursor(stdscr):
|
||||
# Set up the curses environment
|
||||
#curses.curs_set(0) # Hide the cursor
|
||||
stdscr.nodelay(True) # Do not wait for user input
|
||||
stdscr.timeout(100) # Refresh every 100ms
|
||||
|
||||
while True:
|
||||
key = stdscr.getch()
|
||||
|
||||
if key == ord('q'):
|
||||
break
|
||||
elif key == ord('1'):
|
||||
print("1 pushed\n")
|
||||
elif key == ord('1'):
|
||||
print("2 pushed\n")
|
||||
elif key == curses.KEY_UP:
|
||||
print("arrow key up pushed\n")
|
||||
elif key == curses.KEY_DOWN:
|
||||
print("arrow key down pushed\n")
|
||||
elif key == curses.KEY_LEFT:
|
||||
print("arrow key left pushed\n")
|
||||
elif key == curses.KEY_RIGHT:
|
||||
print("arrow key right pushed\n")
|
||||
|
||||
|
||||
# def _omny_interferometer_openloop_steps(channel, steps, amplitude) '{
|
||||
# _smar_rt_move_openloop_steps(0,channel,steps,amplitude)
|
||||
# printf("Channel %d, steps %d, Amplitude %d ",channel,steps,amplitude)
|
||||
# sleep(0.01)
|
||||
# while(_smar_rt_is_stepping_open_loop(0,channel)) {
|
||||
# sleep(0.002)
|
||||
# }
|
||||
# }'
|
||||
|
||||
|
||||
# def _omny_interferometer_optimize(channel) '{
|
||||
|
||||
# global _omny_interferometer_opt_signalchannel
|
||||
# global _omny_interferometer_opt_mirrorname
|
||||
# global _omny_interferometer_opt_averaging_time
|
||||
# global _omny_interferometer_opt_steps1_pos
|
||||
# global _omny_interferometer_opt_steps1_neg
|
||||
# global _omny_interferometer_opt_steps2_pos
|
||||
# global _omny_interferometer_opt_steps2_neg
|
||||
# global _omny_interferometer_opt_signal_stop
|
||||
# global _omny_interferometer_opt_signal_min_begin
|
||||
# global _omny_interferometer_opt_step_divider
|
||||
# global _omny_interferometer_opt_amplitude1_pos
|
||||
# global _omny_interferometer_opt_amplitude1_neg
|
||||
# global _omny_interferometer_opt_amplitude2_pos
|
||||
# global _omny_interferometer_opt_amplitude2_neg
|
||||
|
||||
# if (channel != 3 && channel != 4) {
|
||||
# printf("invalid channel number %d.\n", channel)
|
||||
# exit
|
||||
# }
|
||||
|
||||
# local previous_signal
|
||||
# local current_sample
|
||||
# local direction
|
||||
# local cycle_counter
|
||||
# local cycle_max
|
||||
# local reversal_counter
|
||||
# local reversal_max
|
||||
# local steps_pos
|
||||
# local steps_neg
|
||||
# local _omny_interferometer_opt_amplitude_pos
|
||||
# local _omny_interferometer_opt_amplitude_neg
|
||||
|
||||
|
||||
# if (channel == 3) {
|
||||
# steps_pos = _omny_interferometer_opt_steps1_pos
|
||||
# steps_neg = _omny_interferometer_opt_steps1_neg
|
||||
# _omny_interferometer_opt_amplitude_pos = _omny_interferometer_opt_amplitude1_pos
|
||||
# _omny_interferometer_opt_amplitude_neg = _omny_interferometer_opt_amplitude1_neg
|
||||
# }
|
||||
|
||||
# if (channel == 4) {
|
||||
# steps_pos = _omny_interferometer_opt_steps2_pos
|
||||
# steps_neg = _omny_interferometer_opt_steps2_neg
|
||||
# _omny_interferometer_opt_amplitude_pos = _omny_interferometer_opt_amplitude2_pos
|
||||
# _omny_interferometer_opt_amplitude_neg = _omny_interferometer_opt_amplitude2_neg
|
||||
# }
|
||||
|
||||
|
||||
# previous_signal=_omny_interferometer_get_signalsample()
|
||||
|
||||
# if (previous_signal<_omny_interferometer_opt_signal_min_begin) {
|
||||
# printf("Minimum signal of axis \"%s\" to start alignment not present. Aborting.\n", _omny_interferometer_opt_mirrorname)
|
||||
# exit
|
||||
# }
|
||||
|
||||
# if (previous_signal>_omny_interferometer_opt_signal_stop) {
|
||||
# printf("Interferometer signal of axis \"%s\" is good, no alignment needed anymore.\n", _omny_interferometer_opt_mirrorname)
|
||||
# }
|
||||
# else {
|
||||
|
||||
# direction = 1
|
||||
# cycle_counter=0
|
||||
# cycle_max=20
|
||||
# reversal_counter=0
|
||||
# reversal_max=4
|
||||
|
||||
# while(_omny_interferometer_ssi[_omny_interferometer_opt_signalchannel]<_omny_interferometer_opt_signal_stop && cycle_counter<cycle_max && reversal_counter<reversal_max) {
|
||||
# if (previous_signal<_omny_interferometer_opt_signal_min_begin) {
|
||||
# printf("Minimum signal of axis \"%s\" to continue alignment not present. Aborting.\n", _omny_interferometer_opt_mirrorname)
|
||||
# exit
|
||||
# }
|
||||
|
||||
# if(direction>0) {
|
||||
# _omny_interferometer_openloop_steps(channel, steps_pos,_omny_interferometer_opt_amplitude_pos)
|
||||
# printf("Aligning axis \"%s\". target: %d, current %d, step %d.\r", _omny_interferometer_opt_mirrorname, _omny_interferometer_opt_signal_stop, previous_signal, steps_pos)
|
||||
# }
|
||||
# else {
|
||||
# _omny_interferometer_openloop_steps(channel, -steps_neg,_omny_interferometer_opt_amplitude_neg)
|
||||
# printf("Aligning axis \"%s\". target: %d, current %d, step %d.\r", _omny_interferometer_opt_mirrorname, _omny_interferometer_opt_signal_stop, previous_signal, -steps_neg)
|
||||
# }
|
||||
# current_sample = _omny_interferometer_get_signalsample()
|
||||
# if (previous_signal>current_sample) {
|
||||
# # if (direction<0||cycle_counter>1) {
|
||||
# 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++
|
||||
# }
|
||||
# previous_signal=current_sample
|
||||
# cycle_counter++
|
||||
# }
|
||||
# printf("Finished aligning axis \"%s\". target: %d, current %d.\n", _omny_interferometer_opt_mirrorname, _omny_interferometer_opt_signal_stop, previous_signal)
|
||||
|
||||
# }
|
||||
# }'
|
||||
@staticmethod
|
||||
def _get_user_param_safe(device, var):
|
||||
param = dev[device].user_parameter
|
||||
if not param or param.get(var) is None:
|
||||
raise OMNY_rt_clientError(f"Device {device} has no user parameter definition for {var}.")
|
||||
return param.get(var)
|
||||
|
||||
|
||||
|
||||
# def _omny_interferometer_setup_channel(mirror_channel) '{
|
||||
# global _omny_interferometer_opt_signalchannel
|
||||
# global _omny_interferometer_opt_mirrorname
|
||||
# global _omny_interferometer_opt_averaging_time
|
||||
# global _omny_interferometer_opt_steps1_pos
|
||||
# global _omny_interferometer_opt_steps1_neg
|
||||
# global _omny_interferometer_opt_steps2_pos
|
||||
# global _omny_interferometer_opt_steps2_neg
|
||||
# global _omny_interferometer_opt_signal_stop
|
||||
# global _omny_interferometer_opt_signal_min_begin
|
||||
# global _omny_interferometer_opt_step_divider
|
||||
# global _omny_interferometer_opt_amplitude1_pos
|
||||
# global _omny_interferometer_opt_amplitude1_neg
|
||||
# global _omny_interferometer_opt_amplitude2_pos
|
||||
# global _omny_interferometer_opt_amplitude2_neg
|
||||
|
||||
# #default
|
||||
# _omny_interferometer_opt_amplitude1_pos=2500
|
||||
# _omny_interferometer_opt_amplitude1_neg=2500
|
||||
# _omny_interferometer_opt_amplitude2_pos=2500
|
||||
# _omny_interferometer_opt_amplitude2_neg=2500
|
||||
def _omny_interferometer_openloop_steps(self, 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)
|
||||
|
||||
|
||||
# #####################################
|
||||
# #incoupling of angle interferometer
|
||||
# #####################################
|
||||
# if(mirror_channel==1)
|
||||
# {
|
||||
# _omny_interferometer_opt_signalchannel = 4
|
||||
# _omny_interferometer_opt_mirrorname = "Inc Angle"
|
||||
# _omny_interferometer_opt_averaging_time = 0.1
|
||||
# _omny_interferometer_opt_steps1_pos = 1
|
||||
# _omny_interferometer_opt_steps1_neg = 1
|
||||
# _omny_interferometer_opt_steps2_pos = 10
|
||||
# _omny_interferometer_opt_steps2_neg = 10
|
||||
# _omny_interferometer_opt_signal_stop = 2400
|
||||
# _omny_interferometer_opt_signal_min_begin = 1000
|
||||
# _omny_interferometer_opt_step_divider = 1
|
||||
# _omny_interferometer_opt_amplitude1_pos=2000
|
||||
# _omny_interferometer_opt_amplitude1_neg=2000
|
||||
# _omny_interferometer_opt_amplitude2_pos=2000
|
||||
# _omny_interferometer_opt_amplitude2_neg=2000
|
||||
# }
|
||||
# #####################################
|
||||
# #incoupling of ST OSA Y
|
||||
# #####################################
|
||||
# if(mirror_channel==2)
|
||||
# {
|
||||
# _omny_interferometer_opt_signalchannel = 1
|
||||
# _omny_interferometer_opt_mirrorname = "Inc ST OSA Y"
|
||||
# _omny_interferometer_opt_averaging_time = 0.1
|
||||
# _omny_interferometer_opt_steps1_pos = 1
|
||||
# _omny_interferometer_opt_steps1_neg = 1
|
||||
# _omny_interferometer_opt_steps2_pos = 1
|
||||
# _omny_interferometer_opt_steps2_neg = 1
|
||||
# _omny_interferometer_opt_signal_stop = 5000
|
||||
# _omny_interferometer_opt_signal_min_begin = 2000
|
||||
# _omny_interferometer_opt_step_divider = 1
|
||||
# _omny_interferometer_opt_amplitude1_pos=2000
|
||||
# _omny_interferometer_opt_amplitude1_neg=2000
|
||||
# _omny_interferometer_opt_amplitude2_pos=2000
|
||||
# _omny_interferometer_opt_amplitude2_neg=2000
|
||||
# }
|
||||
# #####################################
|
||||
# #incoupling of OSA FZP Y
|
||||
# #####################################
|
||||
# if(mirror_channel==3)
|
||||
# {
|
||||
# _omny_interferometer_opt_signalchannel = 0
|
||||
# _omny_interferometer_opt_mirrorname = "Inc OSA FZP Y"
|
||||
# _omny_interferometer_opt_averaging_time = 0.25
|
||||
# _omny_interferometer_opt_steps1_pos = 1
|
||||
# _omny_interferometer_opt_steps1_neg = 2
|
||||
# _omny_interferometer_opt_steps2_pos = 1
|
||||
# _omny_interferometer_opt_steps2_neg = 3
|
||||
# _omny_interferometer_opt_signal_stop = 7200
|
||||
# _omny_interferometer_opt_signal_min_begin = 3000
|
||||
# _omny_interferometer_opt_step_divider = 1
|
||||
# _omny_interferometer_opt_amplitude1_pos=2500
|
||||
# _omny_interferometer_opt_amplitude1_neg=2500
|
||||
# _omny_interferometer_opt_amplitude2_pos=2500
|
||||
# _omny_interferometer_opt_amplitude2_neg=2500
|
||||
# }
|
||||
# #####################################
|
||||
# #OSA Y
|
||||
# #####################################
|
||||
# if(mirror_channel==4)
|
||||
# {
|
||||
# _omny_interferometer_opt_signalchannel = 1
|
||||
# _omny_interferometer_opt_mirrorname = "OSA Y"
|
||||
# _omny_interferometer_opt_averaging_time = 0.1
|
||||
# _omny_interferometer_opt_steps1_pos = 1
|
||||
# _omny_interferometer_opt_steps1_neg = 1
|
||||
# _omny_interferometer_opt_steps2_pos = 1
|
||||
# _omny_interferometer_opt_steps2_neg = 1
|
||||
# _omny_interferometer_opt_signal_stop = 5000
|
||||
# _omny_interferometer_opt_signal_min_begin = 2000
|
||||
# _omny_interferometer_opt_step_divider = 1
|
||||
# _omny_interferometer_opt_amplitude1_pos=3000
|
||||
# _omny_interferometer_opt_amplitude1_neg=3000
|
||||
# _omny_interferometer_opt_amplitude2_pos=3000
|
||||
# _omny_interferometer_opt_amplitude2_neg=3000
|
||||
# }
|
||||
# #####################################
|
||||
# #FZP Y
|
||||
# #####################################
|
||||
# if(mirror_channel==5)
|
||||
# {
|
||||
# _omny_interferometer_opt_signalchannel = 0
|
||||
# _omny_interferometer_opt_mirrorname = "FZP Y"
|
||||
# _omny_interferometer_opt_averaging_time = 0.2
|
||||
# _omny_interferometer_opt_steps1_pos = 6
|
||||
# _omny_interferometer_opt_steps1_neg = 6
|
||||
# _omny_interferometer_opt_steps2_pos = 8
|
||||
# _omny_interferometer_opt_steps2_neg = 4
|
||||
# _omny_interferometer_opt_signal_stop = 8000
|
||||
# _omny_interferometer_opt_signal_min_begin = 3000
|
||||
# _omny_interferometer_opt_step_divider = 1
|
||||
# _omny_interferometer_opt_amplitude1_pos=3000
|
||||
# _omny_interferometer_opt_amplitude1_neg=3000
|
||||
# _omny_interferometer_opt_amplitude2_pos=3000
|
||||
# _omny_interferometer_opt_amplitude2_neg=3000
|
||||
# }
|
||||
# #####################################
|
||||
# #OSA X
|
||||
# #####################################
|
||||
# if(mirror_channel==6)
|
||||
# {
|
||||
# if (!_laser_tracker_check_on_target()) {
|
||||
# sleep(5)
|
||||
# }
|
||||
def _omny_interferometer_optimize(self, mirror_channel, channel):
|
||||
#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"])
|
||||
|
||||
|
||||
if previous_signal < self.mirror_parameters[mirror_channel]["opt_signal_min_begin"]:
|
||||
raise OMNY_rt_clientError(f"Minimum signal of axis {self.mirror_parameters[mirror_channel]["opt_mirrorname"]} to start alignment not present.")
|
||||
|
||||
elif previous_signal > self.mirror_parameters[mirror_channel]["opt_signal_stop"]:
|
||||
print(f"Interferometer signal of axis {self.mirror_parameters[mirror_channel]["opt_mirrorname"]} is good.")
|
||||
|
||||
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"])
|
||||
|
||||
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(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, self.mirror_parameters[mirror_channel]["opt_amplitude_pos"])
|
||||
else:
|
||||
self._omny_interferometer_openloop_steps(channel, steps_neg, self.mirror_parameters[mirror_channel]["opt_amplitude_neg"])
|
||||
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"])
|
||||
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"Finished aligning axis {self.mirror_parameters[mirror_channel]["opt_mirrorname"]}. Target: {self.mirror_parameters[mirror_channel]["opt_signal_stop"]}, current {current_sample}")
|
||||
|
||||
def omny_tweak_interferometer(self):
|
||||
curses.wrapper(self._tweak_interferometer)
|
||||
|
||||
def _tweak_interferometer(self, stdscr):
|
||||
# global _omny_interferometer_opt_signalchannel
|
||||
# global _omny_interferometer_opt_mirrorname
|
||||
self.mirror_channel=-1
|
||||
|
||||
# Set up the curses environment
|
||||
#curses.curs_set(0) # Hide the cursor
|
||||
stdscr.nodelay(True) # Do not wait for user input
|
||||
stdscr.timeout(100) # Refresh every 100ms
|
||||
|
||||
print("Ready to tweak the interferometer. Press q to quit.")
|
||||
print("The arrows adjust directions.")
|
||||
print("Numbers select the mirror aligner.")
|
||||
|
||||
while True:
|
||||
key = stdscr.getch()
|
||||
|
||||
|
||||
# if (_laser_tracker_check_on_target()) {
|
||||
# _omny_interferometer_opt_signalchannel = 3
|
||||
# _omny_interferometer_opt_mirrorname = "OSA X"
|
||||
# _omny_interferometer_opt_averaging_time = 0.2
|
||||
# _omny_interferometer_opt_steps1_pos = 2
|
||||
# _omny_interferometer_opt_steps1_neg = 1
|
||||
# _omny_interferometer_opt_steps2_pos = 1
|
||||
# _omny_interferometer_opt_steps2_neg = 1
|
||||
# # _omny_interferometer_opt_signal_stop = 9000
|
||||
# _omny_interferometer_opt_signal_stop = 8850
|
||||
# _omny_interferometer_opt_signal_min_begin = 3000
|
||||
# _omny_interferometer_opt_step_divider = 1
|
||||
# _omny_interferometer_opt_amplitude1_pos=3000
|
||||
# _omny_interferometer_opt_amplitude1_neg=3000
|
||||
# _omny_interferometer_opt_amplitude2_pos=3700
|
||||
# _omny_interferometer_opt_amplitude2_neg=2500
|
||||
# }
|
||||
# else {
|
||||
# text_bf
|
||||
# printf("Tracker is not on target! Not aligning!\n")
|
||||
# text_non_bf
|
||||
# _omny_interferometer_opt_signalchannel = -1
|
||||
# _omny_interferometer_opt_steps1_pos = 0
|
||||
# _omny_interferometer_opt_steps1_neg = 0
|
||||
# _omny_interferometer_opt_steps2_pos = 0
|
||||
# _omny_interferometer_opt_steps2_neg = 0
|
||||
# }
|
||||
# }
|
||||
# #####################################
|
||||
# #FZP Y
|
||||
# #####################################
|
||||
# if(mirror_channel==7)
|
||||
# {
|
||||
# _omny_interferometer_opt_signalchannel = 2
|
||||
# _omny_interferometer_opt_mirrorname = "FZP X"
|
||||
# _omny_interferometer_opt_averaging_time = 0.2
|
||||
# _omny_interferometer_opt_steps1_pos = 4
|
||||
# _omny_interferometer_opt_steps1_neg = 4
|
||||
# _omny_interferometer_opt_steps2_pos = 4
|
||||
# _omny_interferometer_opt_steps2_neg = 4
|
||||
# _omny_interferometer_opt_signal_stop = 8000
|
||||
# _omny_interferometer_opt_signal_min_begin = 4000
|
||||
# _omny_interferometer_opt_step_divider = 1
|
||||
# _omny_interferometer_opt_amplitude1_pos=2500
|
||||
# _omny_interferometer_opt_amplitude1_neg=2500
|
||||
# _omny_interferometer_opt_amplitude2_pos=2500
|
||||
# _omny_interferometer_opt_amplitude2_neg=2500
|
||||
# }
|
||||
# #####################################
|
||||
# #OSA Y
|
||||
# #####################################
|
||||
# if(mirror_channel==8)
|
||||
# {
|
||||
# _omny_interferometer_opt_signalchannel = 0
|
||||
# _omny_interferometer_opt_mirrorname = "OSA Y USING SIGNAL OSA FZP"
|
||||
# _omny_interferometer_opt_averaging_time = 0.2
|
||||
# _omny_interferometer_opt_steps1_pos = 1
|
||||
# _omny_interferometer_opt_steps1_neg = 1
|
||||
# _omny_interferometer_opt_steps2_pos = 1
|
||||
# _omny_interferometer_opt_steps2_neg = 1
|
||||
# _omny_interferometer_opt_signal_stop = 5000
|
||||
# _omny_interferometer_opt_signal_min_begin = 2000
|
||||
# _omny_interferometer_opt_step_divider = 1
|
||||
# _omny_interferometer_opt_amplitude1_pos=3000
|
||||
# _omny_interferometer_opt_amplitude1_neg=3000
|
||||
# _omny_interferometer_opt_amplitude2_pos=3000
|
||||
# _omny_interferometer_opt_amplitude2_neg=3000
|
||||
# }
|
||||
# if(mirror_channel<1 || mirror_channel>8)
|
||||
# {
|
||||
# _omny_interferometer_opt_signalchannel = -1
|
||||
# _omny_interferometer_opt_mirrorname = "none"
|
||||
# }
|
||||
# }'
|
||||
if key == ord('q'):
|
||||
self.mirror_amplitutde_increase=0
|
||||
self.mirror_channel=-1
|
||||
break
|
||||
|
||||
# def _omny_interferometer_channel_is_selected(channel) '{
|
||||
# if(channel == -1) {
|
||||
# printf("Sorry, no channel is selected. Use numbers to select.\n")
|
||||
# printf("1: Incoupling angle interferometer\n")
|
||||
# return(-1)
|
||||
# }
|
||||
# else
|
||||
# {
|
||||
# return(1)
|
||||
# }
|
||||
# }'
|
||||
if key == curses.KEY_LEFT:
|
||||
if self.mirror_channel != -1:
|
||||
self._omny_interferometer_openloop_steps(self.mirror_channel, self.mirror_parameters[self.mirror_channel]["opt_steps1_pos"], self.mirror_parameters[self.mirror_channel]["opt_amplitude1_pos"]+self.mirror_amplitutde_increase)
|
||||
|
||||
# def _omny_interferometer_tweak '{
|
||||
# global _omny_interferometer_opt_signalchannel
|
||||
# global _omny_interferometer_opt_mirrorname
|
||||
# local _key1
|
||||
# local _mirror_channel
|
||||
# _mirror_channel=-1
|
||||
elif key == curses.KEY_RIGHT:
|
||||
if self.mirror_channel != -1:
|
||||
self._omny_interferometer_openloop_steps(self.mirror_channel, self.mirror_parameters[self.mirror_channel]["opt_steps1_neg"], self.mirror_parameters[self.mirror_channel]["opt_amplitude1_neg"]+self.mirror_amplitutde_increase)
|
||||
|
||||
# global _omny_interferometer_opt_steps1_pos
|
||||
# global _omny_interferometer_opt_steps1_neg
|
||||
# global _omny_interferometer_opt_steps2_pos
|
||||
# global _omny_interferometer_opt_steps2_neg
|
||||
# global _omny_interferometer_opt_amplitude1_pos
|
||||
# global _omny_interferometer_opt_amplitude1_neg
|
||||
# global _omny_interferometer_opt_amplitude2_pos
|
||||
# global _omny_interferometer_opt_amplitude2_neg
|
||||
elif key == curses.KEY_DOWN:
|
||||
if self.mirror_channel != -1:
|
||||
self._omny_interferometer_openloop_steps(self.mirror_channel, self.mirror_parameters[self.mirror_channel]["opt_steps2_pos"], self.mirror_parameters[self.mirror_channel]["opt_amplitude2_pos"]+self.mirror_amplitutde_increase)
|
||||
|
||||
# printf("This macro allows you to tweak the laser tracker.\n")
|
||||
# #printf("First checking that the tracker is running.\n")
|
||||
# global _rt_enabled
|
||||
# if(!_rt_enabled){
|
||||
# printf("rt is not enabled. please enable rt and try again.\n")
|
||||
# exit
|
||||
# }
|
||||
|
||||
|
||||
|
||||
# # loop until stopped by pressing ESC or CTRL-C
|
||||
# _key1 = 0
|
||||
# printf("Ready to tweak the interferometer. Press q to quit.\n")
|
||||
# printf("The arrows adjust directions.\n")
|
||||
# printf("Numbers select the mirror aligner.\n")
|
||||
|
||||
# local gotkey
|
||||
# while ((_key1 != 27) && (_key1 != asc("q")) && (_key1 != asc("Q"))) {
|
||||
# gotkey=0
|
||||
# _key1 = asc(input(-1))
|
||||
# if (_key1 == _key_esc) {
|
||||
# _key1 = _get_esc_key()
|
||||
# }
|
||||
|
||||
# if (_key1 == _key_left) {
|
||||
# if(_omny_interferometer_channel_is_selected(_mirror_channel)==1)
|
||||
# _omny_interferometer_openloop_steps(3, _omny_interferometer_opt_steps1_pos,_omny_interferometer_opt_amplitude1_pos)
|
||||
# gotkey=1
|
||||
# }
|
||||
|
||||
# if (_key1 == _key_right) {
|
||||
# if(_omny_interferometer_channel_is_selected(_mirror_channel)==1)
|
||||
# _omny_interferometer_openloop_steps(3, -_omny_interferometer_opt_steps1_neg,_omny_interferometer_opt_amplitude1_neg)
|
||||
# gotkey=1
|
||||
# }
|
||||
|
||||
# if (_key1 == _key_down) {
|
||||
# if(_omny_interferometer_channel_is_selected(_mirror_channel)==1)
|
||||
# _omny_interferometer_openloop_steps(4, _omny_interferometer_opt_steps2_pos,_omny_interferometer_opt_amplitude2_pos)
|
||||
# gotkey=1
|
||||
# }
|
||||
|
||||
# if (_key1 == _key_up) {
|
||||
# if(_omny_interferometer_channel_is_selected(_mirror_channel)==1)
|
||||
# _omny_interferometer_openloop_steps(4, -_omny_interferometer_opt_steps2_neg,_omny_interferometer_opt_amplitude2_neg)
|
||||
# gotkey=1
|
||||
# }
|
||||
elif key == curses.KEY_UP:
|
||||
if self.mirror_channel != -1:
|
||||
self._omny_interferometer_openloop_steps(self.mirror_channel, self.mirror_parameters[self.mirror_channel]["opt_steps2_neg"], self.mirror_parameters[self.mirror_channel]["opt_amplitude2_neg"]+self.mirror_amplitutde_increase)
|
||||
|
||||
# if (_key1 == asc("1")) {
|
||||
# _mirror_channel=1
|
||||
# gotkey=1
|
||||
# }
|
||||
# if (_key1 == asc("2")) {
|
||||
# _mirror_channel=2
|
||||
# gotkey=1
|
||||
# }
|
||||
# if (_key1 == asc("3")) {
|
||||
# _mirror_channel=3
|
||||
# gotkey=1
|
||||
# }
|
||||
# if (_key1 == asc("4")) {
|
||||
# _mirror_channel=4
|
||||
# gotkey=1
|
||||
# }
|
||||
# if (_key1 == asc("5")) {
|
||||
# _mirror_channel=5
|
||||
# gotkey=1
|
||||
# }
|
||||
# if (_key1 == asc("6")) {
|
||||
# _mirror_channel=6
|
||||
# gotkey=1
|
||||
# }
|
||||
# if (_key1 == asc("7")) {
|
||||
# _mirror_channel=7
|
||||
# gotkey=1
|
||||
# }
|
||||
# if (_key1 == asc("8")) {
|
||||
# _mirror_channel=8
|
||||
# gotkey=1
|
||||
# }
|
||||
# if (_key1 >= asc("1") && _key1 <= asc("8")) {
|
||||
# _omny_interferometer_setup_channel(_mirror_channel)
|
||||
# _omny_interferometer_switch_channel(_mirror_channel)
|
||||
# }
|
||||
elif key == ord('1'):
|
||||
self.mirror_channel = 1
|
||||
elif key == ord('2'):
|
||||
self.mirror_channel = 2
|
||||
elif key == ord('3'):
|
||||
self.mirror_channel = 3
|
||||
elif key == ord('4'):
|
||||
self.mirror_channel = 4
|
||||
elif key == ord('5'):
|
||||
self.mirror_channel = 5
|
||||
elif key == ord('6'):
|
||||
self.mirror_channel = 6
|
||||
elif key == ord('7'):
|
||||
self.mirror_channel = 7
|
||||
elif key == ord('8'):
|
||||
self.mirror_channel = 8
|
||||
elif key == ord('+'):
|
||||
print("Increasing voltage amplitudes by 100.")
|
||||
self.mirror_amplitutde_increase+=100
|
||||
elif key == ord('-'):
|
||||
print("Decreasing voltage amplitudes by 100.")
|
||||
self.mirror_amplitutde_increase-=100
|
||||
elif key == ord('a'):
|
||||
if self.mirror_channel != -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)
|
||||
|
||||
# if (_key1 == asc("+")) {
|
||||
# printf("Increasing voltage amplitudes by 100.\n")
|
||||
# _omny_interferometer_opt_amplitude1_pos=_omny_interferometer_opt_amplitude1_pos+100
|
||||
# _omny_interferometer_opt_amplitude1_neg=_omny_interferometer_opt_amplitude1_neg+100
|
||||
# _omny_interferometer_opt_amplitude2_pos=_omny_interferometer_opt_amplitude2_pos+100
|
||||
# _omny_interferometer_opt_amplitude2_neg=_omny_interferometer_opt_amplitude2_neg+100
|
||||
# }
|
||||
# if (_key1 == asc("-")) {
|
||||
# printf("Decreasing voltage amplitudes by 100.\n")
|
||||
# _omny_interferometer_opt_amplitude1_pos=_omny_interferometer_opt_amplitude1_pos-100
|
||||
# _omny_interferometer_opt_amplitude1_neg=_omny_interferometer_opt_amplitude1_neg-100
|
||||
# _omny_interferometer_opt_amplitude2_pos=_omny_interferometer_opt_amplitude2_pos-100
|
||||
# _omny_interferometer_opt_amplitude2_neg=_omny_interferometer_opt_amplitude2_neg-100
|
||||
# }
|
||||
if key >= ord('1') and key <= ord('8'):
|
||||
dev.rtx.controller._omny_interferometer_switch_channel(self.mirror_channel)
|
||||
|
||||
# if (_key1 == asc("a")) {
|
||||
# if(_omny_interferometer_channel_is_selected(_mirror_channel)==1) {
|
||||
# _omny_interferometer_optimize(3)
|
||||
# _omny_interferometer_optimize(4)
|
||||
# _omny_interferometer_optimize(3)
|
||||
# _omny_interferometer_optimize(4)
|
||||
# }
|
||||
# }
|
||||
|
||||
|
||||
# if(_omny_interferometer_opt_amplitude1_pos<1)
|
||||
# _omny_interferometer_opt_amplitude1_pos=100
|
||||
# if(_omny_interferometer_opt_amplitude1_neg<1)
|
||||
# _omny_interferometer_opt_amplitude1_neg=100
|
||||
# if(_omny_interferometer_opt_amplitude2_pos<1)
|
||||
# _omny_interferometer_opt_amplitude2_pos=100
|
||||
# if(_omny_interferometer_opt_amplitude2_neg<1)
|
||||
# _omny_interferometer_opt_amplitude2_neg=100
|
||||
|
||||
# if(_omny_interferometer_opt_amplitude1_pos>4090)
|
||||
# _omny_interferometer_opt_amplitude1_pos=4090
|
||||
# if(_omny_interferometer_opt_amplitude1_neg>4090)
|
||||
# _omny_interferometer_opt_amplitude1_neg=4090
|
||||
# if(_omny_interferometer_opt_amplitude2_pos>4090)
|
||||
# _omny_interferometer_opt_amplitude2_pos=4090
|
||||
# if(_omny_interferometer_opt_amplitude2_neg>4090)
|
||||
# _omny_interferometer_opt_amplitude2_neg=4090
|
||||
|
||||
|
||||
# sleep(0.01)
|
||||
# if (gotkey==1)
|
||||
# if(_omny_interferometer_channel_is_selected(_mirror_channel)==1)
|
||||
# printf("Channel %d - %s - Autostop %d - Signal %d\n",_mirror_channel,_omny_interferometer_opt_mirrorname,_omny_interferometer_opt_signal_stop,_omny_interferometer_get_signalsample())
|
||||
# }
|
||||
# _omny_interferometer_switch_alloff
|
||||
# rt_show_signalstrength_interferometer
|
||||
# }'
|
||||
|
||||
# def _omny_interferometer_align_incoupling_angle '{
|
||||
# local _mirror_channel
|
||||
# _mirror_channel=1
|
||||
|
||||
# _omny_interferometer_setup_channel(_mirror_channel)
|
||||
|
||||
# if (_omny_interferometer_get_signalsample()>_omny_interferometer_opt_signal_stop) {
|
||||
# printf("Interferometer signal of axis \"%s\" is good, no alignment needed.\n", _omny_interferometer_opt_mirrorname)
|
||||
# }
|
||||
# else {
|
||||
# _omny_interferometer_switch_channel(_mirror_channel)
|
||||
# _omny_interferometer_optimize(3)
|
||||
# _omny_interferometer_optimize(4)
|
||||
# _omny_interferometer_optimize(3)
|
||||
# _omny_interferometer_optimize(4)
|
||||
# _omny_interferometer_switch_alloff
|
||||
# rt_show_signalstrength_interferometer
|
||||
# }
|
||||
# }'
|
||||
|
||||
# def _omny_interferometer_align_tracking '{
|
||||
# local _mirror_channel
|
||||
# _mirror_channel=6
|
||||
|
||||
# _omny_interferometer_setup_channel(_mirror_channel)
|
||||
|
||||
# if (_omny_interferometer_get_signalsample()>_omny_interferometer_opt_signal_stop) {
|
||||
# printf("Interferometer signal of axis \"%s\" is good, no alignment needed.\n", _omny_interferometer_opt_mirrorname)
|
||||
# }
|
||||
# else {
|
||||
# _omny_interferometer_switch_channel(_mirror_channel)
|
||||
# _omny_interferometer_optimize(4)
|
||||
# _omny_interferometer_optimize(4)
|
||||
# _omny_interferometer_optimize(3)
|
||||
# _omny_interferometer_optimize(4)
|
||||
# _omny_interferometer_optimize(3)
|
||||
# _omny_interferometer_switch_alloff
|
||||
# rt_show_signalstrength_interferometer
|
||||
# }
|
||||
# }'
|
||||
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"])
|
||||
|
||||
|
||||
time.sleep(0.01)
|
||||
print(f"Channel {self.mirror_channel} - {self.mirror_parameters[self.mirror_channel]['opt_mirrorname']} - Autostop {self.mirror_parameters[self.mirror_channel]['opt_signal_stop']} - Signal {signal}")
|
||||
|
||||
dev.rtx.controller._omny_interferometer_switch_alloff()
|
||||
self.mirror_channel = -1
|
||||
self.mirror_amplitutde_increase = 0
|
||||
dev.rtx.controller.show_signal_strength_interferometer()
|
||||
|
||||
|
||||
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
|
||||
|
||||
|
||||
def omny_interferometer_align_tracking(self):
|
||||
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
|
||||
|
||||
|
||||
Reference in New Issue
Block a user