From 388734cb8b137346194faef83843f1816670cdc5 Mon Sep 17 00:00:00 2001 From: gac-S_Changer Date: Mon, 19 Mar 2018 11:36:12 +0100 Subject: [PATCH] --- config/config.properties | 2 +- config/devices.properties | 57 ++++- config/tasks.properties | 1 + devices/Time.properties | 9 + devices/air_pressure.properties | 5 + devices/dewar_level.properties | 5 + ...ctrl1.properties => led_ctrl_1.properties} | 2 +- ...ctrl2.properties => led_ctrl_2.properties} | 2 +- devices/led_ctrl_3.properties | 8 + devices/n2_pressure.properties | 5 + devices/phase_separator.properties | 8 + devices/phase_separator_level.properties | 5 + devices/rim_heater_temp.properties | 5 + devices/{dewar.properties => wago.properties} | 2 +- plugins/MXSC-1.6.0.jar | Bin 33911 -> 0 bytes plugins/MXSC-1.7.0.jar | Bin 34708 -> 0 bytes plugins/MXSC-1.8.0.jar | Bin 34708 -> 0 bytes plugins/MXSC-1.9.0.jar | Bin 0 -> 47380 bytes script/HillClimbingXZ.py | 45 ++++ script/LevelMonitoring.scd | 12 ++ script/calibration/BinarySearchXZ.py | 29 +++ script/calibration/ScanXZ.py | 10 +- script/devices/BarcodeReader.py | 11 + script/devices/LaserDistance.py | 17 ++ script/devices/LedCtrl.py | 25 +++ script/devices/RobotMotors.py | 4 +- script/devices/RobotSC.py | 4 + script/devices/RobotTCP.py | 10 +- script/devices/Wago.py | 111 ++++++++++ script/imgproc/LedDetectionProc.py | 9 +- script/imgproc/Utils.py | 87 ++++++++ script/local.py | 200 +++--------------- script/motion/tools.py | 18 ++ script/tasks/LedMonitoring.py | 26 +++ script/tools/Math.py | 60 ++++++ 35 files changed, 590 insertions(+), 204 deletions(-) create mode 100644 devices/Time.properties create mode 100644 devices/air_pressure.properties create mode 100644 devices/dewar_level.properties rename devices/{led_ctrl1.properties => led_ctrl_1.properties} (68%) rename devices/{led_ctrl2.properties => led_ctrl_2.properties} (68%) create mode 100644 devices/led_ctrl_3.properties create mode 100644 devices/n2_pressure.properties create mode 100644 devices/phase_separator.properties create mode 100644 devices/phase_separator_level.properties create mode 100644 devices/rim_heater_temp.properties rename devices/{dewar.properties => wago.properties} (82%) delete mode 100644 plugins/MXSC-1.6.0.jar delete mode 100644 plugins/MXSC-1.7.0.jar delete mode 100644 plugins/MXSC-1.8.0.jar create mode 100644 plugins/MXSC-1.9.0.jar create mode 100644 script/HillClimbingXZ.py create mode 100644 script/LevelMonitoring.scd create mode 100644 script/calibration/BinarySearchXZ.py create mode 100644 script/devices/BarcodeReader.py create mode 100644 script/devices/LaserDistance.py create mode 100644 script/devices/LedCtrl.py create mode 100644 script/devices/Wago.py create mode 100644 script/imgproc/Utils.py create mode 100644 script/tasks/LedMonitoring.py create mode 100644 script/tools/Math.py diff --git a/config/config.properties b/config/config.properties index 116cb38..c0aa27e 100644 --- a/config/config.properties +++ b/config/config.properties @@ -1,4 +1,4 @@ -#Fri Nov 17 14:23:32 CET 2017 +#Mon Mar 19 11:35:49 CET 2018 autoSaveScanData=true createSessionFiles=false dataLayout=default diff --git a/config/devices.properties b/config/devices.properties index 58cd10e..28feb86 100644 --- a/config/devices.properties +++ b/config/devices.properties @@ -1,10 +1,10 @@ -img=ch.psi.pshell.prosilica.Prosilica|25001 ""||-100|false +img=ch.psi.pshell.prosilica.Prosilica|25001 "PacketSize=1522"|||false microscan=ch.psi.pshell.serial.TcpDevice|129.129.126.200:2001||| microscan_cmd=ch.psi.pshell.serial.TcpDevice|129.129.126.200:2003||| -ue=LaserUE|COM4||| +ue=LaserUE|COM4|||false #robot=RobotTcp|127.0.0.1:1000||| #onewire=ch.psi.pshell.serial.TcpDevice|129.129.126.83:5000||| -#puck_detection=ch.psi.mxsc.PuckDetection|raspberrypi:5556||| +puck_detection=ch.psi.mxsc.PuckDetection|raspberrypi:5556||| #robot_modbus=ch.psi.pshell.modbus.ModbusTCP|129.129.126.100:502||| #jf1=ch.psi.pshell.modbus.AnalogInput|robot_modbus 0||100| #jf2=ch.psi.pshell.modbus.AnalogInput|robot_modbus 1||100| @@ -18,12 +18,49 @@ ue=LaserUE|COM4||| #robot_req=ch.psi.pshell.modbus.AnalogOutput|robot_modbus 13||| #robot_ack=ch.psi.pshell.modbus.AnalogInput|robot_modbus 14||| #robot_ret=ch.psi.pshell.modbus.AnalogInputArray|robot_modbus 15 12||| -dewar=ch.psi.pshell.modbus.ModbusTCP|SF-TEST-WAGO1:502||| -relays=ch.psi.pshell.modbus.DigitalOutputArray|dewar 0 16||1000| -relay1=ch.psi.pshell.modbus.DigitalOutput|dewar 0||1000| -relay2=ch.psi.pshell.modbus.DigitalOutput|dewar 1||1000| -$temperature=ch.psi.pshell.modbus.AnalogInput|dewar 0||| -led_ctrl1=ch.psi.pshell.modbus.ProcessVariable|dewar 0||| -led_ctrl2=ch.psi.pshell.modbus.ProcessVariable|dewar 1||| +#wago_back=ch.psi.pshell.modbus.ModbusTCP|SF-TEST-WAGO1:502||| +wago=ch.psi.pshell.modbus.ModbusTCP|wago-mxsc-1:502||| +led_ok_1=ch.psi.pshell.modbus.DigitalInput|wago 0||1000| +led_ok_2=ch.psi.pshell.modbus.DigitalInput|wago 1||1000| +led_ok_3=ch.psi.pshell.modbus.DigitalInput|wago 2||1000| +feedback_local_safety=ch.psi.pshell.modbus.DigitalInput|wago 3||1000| +feedback_psys_safety=ch.psi.pshell.modbus.DigitalInput|wago 4||1000| +filling_phase_separator=ch.psi.pshell.modbus.DigitalInput|wago 5||1000| +filling_dewar=ch.psi.pshell.modbus.DigitalInput|wago 6||1000| +dewar_level_high_alarm=ch.psi.pshell.modbus.DigitalInput|wago 7||1000| +guiding_tool_park=ch.psi.pshell.modbus.DigitalInput|wago 8||1000| +air_pressure_ok=ch.psi.pshell.modbus.DigitalInput|wago 9||1000|false +n2_pressure_ok=ch.psi.pshell.modbus.DigitalInput|wago 10||1000| +he_chamber_valve_1=ch.psi.pshell.modbus.DigitalInput|wago 15||1000| +he_chamber_valve_2=ch.psi.pshell.modbus.DigitalInput|wago 16||1000| +relays=ch.psi.pshell.modbus.DigitalOutputArray|wago 0 16||1000| +release_local_safety=ch.psi.pshell.modbus.DigitalOutput|wago 0||| +release_psys_safety=ch.psi.pshell.modbus.DigitalOutput|wago 1||| +ln2_main_power=ch.psi.pshell.modbus.DigitalOutput|wago 2||| +rim_heater=ch.psi.pshell.modbus.DigitalOutput|wago 3||| +phase_separator_ln2=ch.psi.pshell.modbus.DigitalOutput|wago 4||| +dewar_ln2=ch.psi.pshell.modbus.DigitalOutput|wago 5|||false +valve_he_chamber=ch.psi.pshell.modbus.DigitalOutput|wago 6||| +gripper_dryer=ch.psi.pshell.modbus.DigitalOutput|wago 7||| +valve_1=ch.psi.pshell.modbus.DigitalOutput|wago 8||| +valve_2=ch.psi.pshell.modbus.DigitalOutput|wago 9||| +valve_3=ch.psi.pshell.modbus.DigitalOutput|wago 10||| +valve_4=ch.psi.pshell.modbus.DigitalOutput|wago 11||| +#spare_do_1=ch.psi.pshell.modbus.DigitalOutput|wago 12||| +#spare_do_2=ch.psi.pshell.modbus.DigitalOutput|wago 13||| +#spare_do_3=ch.psi.pshell.modbus.DigitalOutput|wago 14||| +#spare_do_4=ch.psi.pshell.modbus.DigitalOutput|wago 15||| +phase_separator_level=ch.psi.pshell.modbus.ReadonlyProcessVariable|wago 0||10000| +dewar_level=ch.psi.pshell.modbus.ReadonlyProcessVariable|wago 1||10000| +rim_heater_temp=ch.psi.pshell.modbus.ReadonlyProcessVariable|wago 2||10000| +air_pressure=ch.psi.pshell.modbus.ReadonlyProcessVariable|wago 3||10000| +n2_pressure=ch.psi.pshell.modbus.ReadonlyProcessVariable|wago 4||10000| +#spare_ai_1=ch.psi.pshell.modbus.AnalogInput|wago 5||| +#spare_ai_2=ch.psi.pshell.modbus.AnalogInput|wago 6||| +#spare_ai_3=ch.psi.pshell.modbus.AnalogInput|wago 7||| +led_ctrl_1=ch.psi.pshell.modbus.ProcessVariable|wago 0||| +led_ctrl_2=ch.psi.pshell.modbus.ProcessVariable|wago 1||| +led_ctrl_3=ch.psi.pshell.modbus.ProcessVariable|wago 2||| +#spare_ao_3=ch.psi.pshell.modbus.AnalogOutput|wago 3||| #cam=ch.psi.pshell.epics.AreaDetector|MX-SAMCAM||| #img_back=ch.psi.pshell.imaging.CameraSource|cam||-100| diff --git a/config/tasks.properties b/config/tasks.properties index e69de29..e291198 100644 --- a/config/tasks.properties +++ b/config/tasks.properties @@ -0,0 +1 @@ +tasks/LedMonitoring=120 diff --git a/devices/Time.properties b/devices/Time.properties new file mode 100644 index 0000000..6d228d7 --- /dev/null +++ b/devices/Time.properties @@ -0,0 +1,9 @@ +#Thu Mar 01 15:25:39 CET 2018 +maxValue=NaN +minValue=NaN +offset=0.0 +precision=-1 +resolution=NaN +rotation=false +scale=1.0 +unit=null diff --git a/devices/air_pressure.properties b/devices/air_pressure.properties new file mode 100644 index 0000000..e476b09 --- /dev/null +++ b/devices/air_pressure.properties @@ -0,0 +1,5 @@ +#Thu Mar 01 11:13:34 CET 2018 +offset=0.0 +precision=-1 +scale=1.0 +unit=null diff --git a/devices/dewar_level.properties b/devices/dewar_level.properties new file mode 100644 index 0000000..dd9a525 --- /dev/null +++ b/devices/dewar_level.properties @@ -0,0 +1,5 @@ +#Thu Mar 01 16:16:41 CET 2018 +offset=-25.81632 +precision=2 +scale=0.003888 +unit=% diff --git a/devices/led_ctrl1.properties b/devices/led_ctrl_1.properties similarity index 68% rename from devices/led_ctrl1.properties rename to devices/led_ctrl_1.properties index 2b7fcb9..71acac2 100644 --- a/devices/led_ctrl1.properties +++ b/devices/led_ctrl_1.properties @@ -1,4 +1,4 @@ -#Wed Jul 12 15:09:13 CEST 2017 +#Fri Mar 09 17:05:09 CET 2018 maxValue=0.4 minValue=0.0 offset=0.0 diff --git a/devices/led_ctrl2.properties b/devices/led_ctrl_2.properties similarity index 68% rename from devices/led_ctrl2.properties rename to devices/led_ctrl_2.properties index 2b7fcb9..71acac2 100644 --- a/devices/led_ctrl2.properties +++ b/devices/led_ctrl_2.properties @@ -1,4 +1,4 @@ -#Wed Jul 12 15:09:13 CEST 2017 +#Fri Mar 09 17:05:09 CET 2018 maxValue=0.4 minValue=0.0 offset=0.0 diff --git a/devices/led_ctrl_3.properties b/devices/led_ctrl_3.properties new file mode 100644 index 0000000..71acac2 --- /dev/null +++ b/devices/led_ctrl_3.properties @@ -0,0 +1,8 @@ +#Fri Mar 09 17:05:09 CET 2018 +maxValue=0.4 +minValue=0.0 +offset=0.0 +precision=2 +resolution=NaN +scale=3.0E-4 +unit=V diff --git a/devices/n2_pressure.properties b/devices/n2_pressure.properties new file mode 100644 index 0000000..e476b09 --- /dev/null +++ b/devices/n2_pressure.properties @@ -0,0 +1,5 @@ +#Thu Mar 01 11:13:34 CET 2018 +offset=0.0 +precision=-1 +scale=1.0 +unit=null diff --git a/devices/phase_separator.properties b/devices/phase_separator.properties new file mode 100644 index 0000000..122f8e9 --- /dev/null +++ b/devices/phase_separator.properties @@ -0,0 +1,8 @@ +#Wed Feb 28 17:35:59 CET 2018 +maxValue=30000.0 +minValue=0.0 +offset=0.0 +precision=-1 +resolution=NaN +scale=0.1 +unit=% diff --git a/devices/phase_separator_level.properties b/devices/phase_separator_level.properties new file mode 100644 index 0000000..5e72524 --- /dev/null +++ b/devices/phase_separator_level.properties @@ -0,0 +1,5 @@ +#Thu Mar 01 15:21:07 CET 2018 +offset=-25.81632 +precision=2 +scale=0.003888 +unit=% diff --git a/devices/rim_heater_temp.properties b/devices/rim_heater_temp.properties new file mode 100644 index 0000000..534b987 --- /dev/null +++ b/devices/rim_heater_temp.properties @@ -0,0 +1,5 @@ +#Thu Mar 01 15:51:40 CET 2018 +offset=-25.81632 +precision=2 +scale=0.003888 +unit=C diff --git a/devices/dewar.properties b/devices/wago.properties similarity index 82% rename from devices/dewar.properties rename to devices/wago.properties index 90ef636..f2650ea 100644 --- a/devices/dewar.properties +++ b/devices/wago.properties @@ -1,4 +1,4 @@ -#Thu Jan 05 11:15:34 CET 2017 +#Wed Feb 28 16:27:51 CET 2018 offsetReadAnalogInput=0 offsetReadAnalogOutput=0x200 offsetReadDigitalInput=0 diff --git a/plugins/MXSC-1.6.0.jar b/plugins/MXSC-1.6.0.jar deleted file mode 100644 index 4266cf092205da4c05042196f10c701013b27bf1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 33911 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 diff --git a/plugins/MXSC-1.7.0.jar b/plugins/MXSC-1.7.0.jar deleted file mode 100644 index a4c4d75b40fb452e2eb73fcd2a2f1dc4d10e5102..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 34708 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 diff --git a/plugins/MXSC-1.9.0.jar b/plugins/MXSC-1.9.0.jar new file mode 100644 index 0000000000000000000000000000000000000000..ea9f5b21ed9cf478551c5e7e53aa40092a7d4482 GIT binary patch literal 47380 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 QOAx)NfC37Z{`mC&04AxVkpKVy literal 0 HcmV?d00001 diff --git a/script/HillClimbingXZ.py b/script/HillClimbingXZ.py new file mode 100644 index 0000000..2fcab26 --- /dev/null +++ b/script/HillClimbingXZ.py @@ -0,0 +1,45 @@ +import plotutils +import math + + +#STRATEGY = "Normal" +STRATEGY = "Boundary" +#STRATEGY = "FullNeighborhood" +RANGE = [-5.0, 5.0] +INITIAL_STEP = 1.0 +STEP_SIZE = 0.05 +LATENCY = 0.05 +NOISE_FILTER = 1 + + +robot.enable() +move_to_laser() + + +robot.set_motors_enabled(True) + +current_x = robot_x.getPosition() +current_z = robot_z.getPosition() + + + + +class Distance(Readable): + def read(self): + ret = ue.readable.read() + ret = 0.0 if math.isnan(ret) else ret + return ret + +laser_distance=Distance() +start = time.time() +r = hsearch([robot_x, robot_z],laser_distance, [RANGE[0], RANGE[0]], [RANGE[1], RANGE[1]], [INITIAL_STEP,INITIAL_STEP], [STEP_SIZE,STEP_SIZE], NOISE_FILTER, relative = True, maximum=True, latency = LATENCY, title = "Hill Climbing XZ") + + + +print r.print() +opt_x, opt_z= r.getOptimalPosition() +offset_x, offset_z = opt_x - current_x, opt_z - current_z + +print "offset_x: ", offset_x, " offset_z: ", offset_z + + diff --git a/script/LevelMonitoring.scd b/script/LevelMonitoring.scd new file mode 100644 index 0000000..5907f37 --- /dev/null +++ b/script/LevelMonitoring.scd @@ -0,0 +1,12 @@ +[ + [ [ true, "phase_separator_level", "Device", 1, 1, "255,0,0" ], + [ true, "dewar_level", "Device", 1, 1, "0,0,255" ] ], + [ [ "1", 0.0, 100.0, null, null, 100000.0, true ], + [ "2", null, null, null, null, null, null ], + [ "3", null, null, null, null, null, null ], + [ "4", null, null, null, null, null, null ], + [ "5", null, null, null, null, null, null ] ], + [ [ ] ], + [ [ "", 20000, 100 ], + [ "", "" ] ] +] \ No newline at end of file diff --git a/script/calibration/BinarySearchXZ.py b/script/calibration/BinarySearchXZ.py new file mode 100644 index 0000000..c3c5106 --- /dev/null +++ b/script/calibration/BinarySearchXZ.py @@ -0,0 +1,29 @@ +import plotutils +import math + + +#STRATEGY = "Normal" +#STRATEGY = "Boundary" +#STRATEGY = "FullNeighborhood" +RANGE = [-5.0, 5.0] +STEP_SIZE = 0.1 +LATENCY = 0.05 + + +robot.enable() +move_to_laser() + + +robot.set_motors_enabled(True) +current_x = robot_x.getPosition() +current_z = robot_z.getPosition() + + +r = bsearch([robot_x, robot_z], laser_distance,[RANGE[0], RANGE[0]], [RANGE[1], RANGE[1]], [STEP_SIZE,STEP_SIZE], relative = True, maximum=True, strategy = STRATEGY, latency = LATENCY, title = "Binary Search XZ") + + +print r.print() +opt_x, opt_z= r.getOptimalPosition() +offset_x, offset_z = opt_x - current_x, opt_z - current_z + +print "offset_x: ", offset_x, " offset_z: ", offset_z \ No newline at end of file diff --git a/script/calibration/ScanXZ.py b/script/calibration/ScanXZ.py index 8bc3b26..e5df77d 100644 --- a/script/calibration/ScanXZ.py +++ b/script/calibration/ScanXZ.py @@ -9,13 +9,17 @@ else: STEP_Z_FINAL = 0.1 RANGE = [-5.0, 5.0] -LATENCY = 0.005 +LATENCY = 0.05 Z_FINAL_OFFSET = 0.0 +SINGLE_PASS = True +STEP_SIZE = 0.1 + + robot.enable() -#move_to_laser() +move_to_laser() step_x = STEP_SIZE step_z = STEP_SIZE @@ -27,7 +31,7 @@ current_x = robot_x.getPosition() current_z = robot_z.getPosition() print "Current pos x,z" , current_x, ",", current_z -ret = ascan([robot_x, robot_z], ue.readable, [range_x[0], range_z[0]], [range_x[1], range_z[1]], [step_x,step_z], latency = LATENCY, relative = True , zigzag=False, title = "2d Scan") +ret = ascan([robot_x, robot_z], ue.readable, [range_x[0], range_z[0]], [range_x[1], range_z[1]], [step_x,step_z], latency = LATENCY, relative = True , zigzag=False, title = "Scan XY") data = ret.getData(0)[0] #plot(Convert.transpose(data), title="Data") diff --git a/script/devices/BarcodeReader.py b/script/devices/BarcodeReader.py new file mode 100644 index 0000000..06ef873 --- /dev/null +++ b/script/devices/BarcodeReader.py @@ -0,0 +1,11 @@ +def enable_barcode_reader(): + microscan_cmd.write("") + +def disable_barcode_reader(): + microscan_cmd.write("") + +def read_barcode(timeout): + try: + return microscan.waitString(int(timeout * 1000)) + except: + return None \ No newline at end of file diff --git a/script/devices/LaserDistance.py b/script/devices/LaserDistance.py new file mode 100644 index 0000000..4b539dc --- /dev/null +++ b/script/devices/LaserDistance.py @@ -0,0 +1,17 @@ +class LaserDistance(ReadonlyRegisterBase): + def __init__(self): + ReadonlyRegisterBase.__init__(self, "laser_distance") + def doRead(self): + ret = ue.readable.read() + ret = 0.0 if math.isnan(ret) else ret + return ret + +class ListenerAI (DeviceListener): + def onValueChanged(self, device, value, former): + laser_distance.setCache( 0.0 if math.isnan(value) else value, None) + +listenerAI = ListenerAI() +ue.addListener(listenerAI) + +laser_distance=LaserDistance() +add_device(laser_distance, True) \ No newline at end of file diff --git a/script/devices/LedCtrl.py b/script/devices/LedCtrl.py new file mode 100644 index 0000000..3089d36 --- /dev/null +++ b/script/devices/LedCtrl.py @@ -0,0 +1,25 @@ +import ch.psi.pshell.device.DiscretePositionerBase as DiscretePositionerBase + + +class LedPositioner(DiscretePositionerBase): + def __init__(self): + DiscretePositionerBase.__init__(self, "led_ctrl", ["On", "Off"]) + self.setState(State.Ready) + self.val = self.doReadReadback() + + def doRead(self): + return self.val + + def doReadReadback(self): + return "On" if get_led_state() else "Off" + + def doWrite(self, val): + self.val = val + if self.val == "On": + set_led_state(True) + else: + set_led_state(False) + + +add_device(LedPositioner(), True) +led_ctrl.polling = 1000 \ No newline at end of file diff --git a/script/devices/RobotMotors.py b/script/devices/RobotMotors.py index 623da7f..1057ef1 100644 --- a/script/devices/RobotMotors.py +++ b/script/devices/RobotMotors.py @@ -17,12 +17,12 @@ class RobotCartesianMotor (PositionerBase): self.setCache(self.doRead(), None) def doRead(self): - return float("nan") if self.robot.cartesian_destination is None else float(robot.cartesian_destination[self.index]) + return float("nan") if self.robot.cartesian_destination is None else float(self.robot.cartesian_destination[self.index]) def doWrite(self, value): if self.robot.cartesian_destination is not None: print "Move " + ROBOT_MOTORS[self.index] + " to " + str(value) - robot.cartesian_destination[self.index] = float(value) + self.robot.cartesian_destination[self.index] = float(value) self.robot.set_pnt(robot.cartesian_destination , "tcp_p") self.robot.movel("tcp_p", self.robot.tool , DESC_SCAN) diff --git a/script/devices/RobotSC.py b/script/devices/RobotSC.py index da3648e..5df0a00 100644 --- a/script/devices/RobotSC.py +++ b/script/devices/RobotSC.py @@ -70,6 +70,9 @@ robot.high_level_tasks = ["mount", "firstmount"] robot.set_tool(TOOL_CALIBRATION) robot.setPolling(500) +robot.set_motors_enabled(True) +robot.set_joint_motors_enabled(True) + #robot.set_monitor_speed(20) @@ -110,5 +113,6 @@ if joint_forces: add_device(jfc(), force = True) + """ \ No newline at end of file diff --git a/script/devices/RobotTCP.py b/script/devices/RobotTCP.py index 89a91c8..bbd7e28 100644 --- a/script/devices/RobotTCP.py +++ b/script/devices/RobotTCP.py @@ -48,11 +48,10 @@ class RobotTCP(TcpDevice, Stoppable): def set_tool(self,tool): self.tool = tool #self.tool_trsf = self.get_tool_trsf() + self.evaluate("tcp_curtool=" + tool) if self.cartesian_motors_enabled: - self.update() - for m in self.cartesian_motors: - m.initialize() - m.update() + self.update() + self.set_motors_enabled(True) def get_tool(self): @@ -449,7 +448,8 @@ class RobotTCP(TcpDevice, Stoppable): try: start = time.time() #sts = self._sendReceive("EVT").strip().split(self.array_separator) - sts = self.execute("get_status", self.current_task, self.tool, self.frame) + #sts = self.execute("get_status", self.current_task, self.tool, self.frame) + sts = self.execute("get_status", self.current_task) self._update_working_mode(int(sts[0]), int(sts[1])) self.powered = sts[2] == "1" self.speed = int(sts[3]) diff --git a/script/devices/Wago.py b/script/devices/Wago.py new file mode 100644 index 0000000..e255e2f --- /dev/null +++ b/script/devices/Wago.py @@ -0,0 +1,111 @@ + + + +""" +wago=ch.psi.pshell.modbus.ModbusTCP|wago-mxsc-1:502||| +relays=ch.psi.pshell.modbus.DigitalOutputArray|wago 0 16||1000| +release_local_safety=ch.psi.pshell.modbus.DigitalOutput|wago 0||| +release_psys_safety=ch.psi.pshell.modbus.DigitalOutput|wago 1||| +ln2_main_power=ch.psi.pshell.modbus.DigitalOutput|wago 2||| +rim_heater=ch.psi.pshell.modbus.DigitalOutput|wago 3||| +phase_separator_ln2=ch.psi.pshell.modbus.DigitalOutput|wago 4||| +dewar_ln2=ch.psi.pshell.modbus.DigitalOutput|wago 5|||false +valve_he_chamber=ch.psi.pshell.modbus.DigitalOutput|wago 6||| +gripper_dryer=ch.psi.pshell.modbus.DigitalOutput|wago 7||| +valve_1=ch.psi.pshell.modbus.DigitalOutput|wago 8||| +valve_2=ch.psi.pshell.modbus.DigitalOutput|wago 9||| +valve_3=ch.psi.pshell.modbus.DigitalOutput|wago 10||| +valve_4=ch.psi.pshell.modbus.DigitalOutput|wago 11||| +#spare_do_1=ch.psi.pshell.modbus.DigitalOutput|wago 12||| +#spare_do_2=ch.psi.pshell.modbus.DigitalOutput|wago 13||| +#spare_do_3=ch.psi.pshell.modbus.DigitalOutput|wago 14||| +#spare_do_4=ch.psi.pshell.modbus.DigitalOutput|wago 15||| +phase_separator_level=ch.psi.pshell.modbus.ReadonlyProcessVariable|wago 0||1000| +dewar_level=ch.psi.pshell.modbus.ReadonlyProcessVariable|wago 1||1000| +rim_heater_temp=ch.psi.pshell.modbus.ReadonlyProcessVariable|wago 2||1000| +air_pressure=ch.psi.pshell.modbus.ReadonlyProcessVariable|wago 3||1000| +n2_pressure=ch.psi.pshell.modbus.ReadonlyProcessVariable|wago 4||1000| +#spare_ai_1=ch.psi.pshell.modbus.AnalogInput|wago 5||| +#spare_ai_2=ch.psi.pshell.modbus.AnalogInput|wago 6||| +#spare_ai_3=ch.psi.pshell.modbus.AnalogInput|wago 7||| +led_ctrl_1=ch.psi.pshell.modbus.ProcessVariable|wago 0||| +led_ctrl_2=ch.psi.pshell.modbus.ProcessVariable|wago 1||| +led_ctrl_3=ch.psi.pshell.modbus.ProcessVariable|wago 2||| +""" +################################################################################################### +# Leds +################################################################################################### + +def set_led_state(value): + """ + Turn leds on and off + """ + if value: + led_ctrl_1.write(led_ctrl_1.config.maxValue) + led_ctrl_2.write(led_ctrl_2.config.maxValue) + led_ctrl_3.write(led_ctrl_3.config.maxValue) + else: + led_ctrl_1.write(0.0) + led_ctrl_2.write(0.0) + led_ctrl_3.write(0.0) + + + +def get_led_state(): + """ + Returns led state (on/off) + """ + return led_ctrl_1.read() > 0 + +#TODO: The range should be set automatically reading LN2 sensor. +def set_led_range(room_temp = True): + """ + Led range should be limitted in room temperature + """ + max_val = 0.40 if room_temp else 1.20 + led_ctrl_1.config.maxValue = max_val + led_ctrl_1.config.save() + led_ctrl_2.config.maxValue = max_val + led_ctrl_2.config.save() + led_ctrl_3.config.maxValue = max_val + led_ctrl_3.config.save() + led_ctrl_1.initialize() + led_ctrl_2.initialize() + led_ctrl_3.initialize() + if led_ctrl_1.read() > max_val: + led_ctrl_1.write(max_val) + if led_ctrl_2.read() > max_val: + led_ctrl_2.write(max_val) + if led_ctrl_3.read() > max_val: + led_ctrl_3.write(max_val) + + +def is_led_room_temp(): + return led_ctrl_1.config.maxValue <= 0.50 + + + +################################################################################################### +# Safety release +################################################################################################### + +def release_local(): + """ + Release local safety + """ + release_local_safety.write(False) + time.sleep(0.01) + release_local_safety.write(True) + time.sleep(0.01) + release_local_safety.write(False) + +def release_psys(): + """ + Release psys safety + """ + release_psys_safety.write(False) + time.sleep(0.01) + release_psys_safety.write(True) + time.sleep(0.01) + release_psys_safety.write(False) + diff --git a/script/imgproc/LedDetectionProc.py b/script/imgproc/LedDetectionProc.py index d467a9b..4b70704 100644 --- a/script/imgproc/LedDetectionProc.py +++ b/script/imgproc/LedDetectionProc.py @@ -15,8 +15,7 @@ exclude_edges = True set_led_range(room_temp) img.backgroundEnabled=False -led_ctrl1.write(0.0) -led_ctrl2.write(0.0) +set_led_state(False) time.sleep(0.1) img.waitNext(100) @@ -27,14 +26,12 @@ background = average_frames(number_backgrounds) #show_panel(img.backgroundImage) #img.backgroundEnabled = True -led_ctrl1.write(led_ctrl1.config.maxValue) -led_ctrl2.write(led_ctrl2.config.maxValue) +set_led_state(True) time.sleep(0.1) img.waitNext(100) image = average_frames(number_frames) -led_ctrl1.write(0.0) -led_ctrl2.write(0.0) +set_led_state(False) op_image(image, background, "subtract", float_result=True, in_place=True) diff --git a/script/imgproc/Utils.py b/script/imgproc/Utils.py new file mode 100644 index 0000000..bca30c8 --- /dev/null +++ b/script/imgproc/Utils.py @@ -0,0 +1,87 @@ + +################################################################################################### +# Image processing utilities +################################################################################################### + + +from ijutils import * +from ch.psi.pshell.imaging.Overlays import * +import ch.psi.pshell.imaging.Pen as Pen + +def in_roi(x,y): + return math.hypot(x-roi_radius, y-roi_radius) < roi_radius + + +def integrate(ips): + roi = get_roi() + aux = None + for i in range(len(ips)): + if i==0: + aux = new_image(roi[2], roi[3], image_type="float", title = "sum", fill_color = None) + op_image(aux, ips[i], "add", float_result=True, in_place=True) + return aux + +def average (ips): + aux = integrate(ips) + op_const(aux, "divide", len(ips), in_place=True) + return aux + +def grab_frames(samples): + frames = [] + for i in range(samples): + aux = get_image() + frames.append(aux) + return frames + +def average_frames(samples = 1): + return average(grab_frames(samples)) + +def integrate_frames(samples = 1): + return integrate(grab_frames(samples)) + + +roi_center = (800, 600) +roi_radius = 600 + +def get_roi(): + return (roi_center[0] - roi_radius, roi_center[1] - roi_radius, 2* roi_radius, 2*roi_radius) + + +def get_image(): + roi = get_roi() + ip = load_image(img.image) + ret = sub_image(ip, roi[0], roi[1], roi[2], roi[3]) + grayscale(ret, do_scaling=True) + return ret + +#def detect_pucks(ip): +# """ +# """ +# aux = grayscale(ip, in_place=False) +# threshold(aux,0,50) +# binary_fill_holes(aux) +# return analyse_particles(aux, 10000,50000, +# fill_holes = False, exclude_edges = True,print_table=True, +# output_image = "outlines", minCirc = 0.4, maxCirc = 1.0) +# +#def detect_samples(ip): +# """ +# """ +# aux = grayscale(ip, in_place=False) +# invert(aux) +# subtract_background(aux) +# auto_threshold(aux) +# binary_open(aux) +# return analyse_particles(aux, 250,1000, +# fill_holes = False, exclude_edges = True,print_table=True, + + +r,g,b = [0]*256,[0]*256,[0]*256 +b[0]=0xFF +b[1]=0xFF ; g[1] = 0x80; r[1] = 0x80 +outline_lut1 = (r,g,b) + +r,g,b = [0]*256,[0]*256,[0]*256 +g[0]=0x80;r[0]=0x80; +g[1]=0xFF ; r[1] = 0x80; b[1] = 0x80 +outline_lut2 = (r,g,b) diff --git a/script/local.py b/script/local.py index 546724f..1a092e5 100644 --- a/script/local.py +++ b/script/local.py @@ -1,214 +1,66 @@ ################################################################################################### # Deployment specific global definitions - executed after startup.py ################################################################################################### - +import traceback from ch.psi.pshell.serial import TcpDevice from ch.psi.pshell.modbus import ModbusTCP + run("setup/Layout") ################################################################################################### -# Scripted devices +# Scripted devices and pseudo-devices ################################################################################################### - -run("devices/RobotSC") -#run("devices/RobotModbus") -#run("devices/OneWire") - - -#Raspberry login: usr=pi pwd=Buntschu +for script in ["devices/RobotSC", "devices/Wago", "devices/BarcodeReader", "devices/LaserDistance", \ + "devices/LedCtrl"]: + try: + run(script) + except: + print >> sys.stderr, traceback.format_exc() add_device(img.getContrast(), force = True) add_device(img.getCamera(), force = True) -#TODO: The range should be set automatically reading LN2 sensor. -def set_led_range(room_temp = True): - led_ctrl1.config.maxValue = 0.40 if room_temp else 1.20 - led_ctrl1.config.save() - led_ctrl2.config.maxValue = 0.40 if room_temp else 1.20 - led_ctrl2.config.save() - - ################################################################################################### -# Motion modules +# Utility modules ################################################################################################### run("motion/tools") +run("imgproc/Utils") +run("tools/Math") ################################################################################################### -# Barcode reader +# Device initialization ################################################################################################### -def enable_barcode_reader(): - microscan_cmd.write("") +import ch.psi.pshell.device.Camera as Camera +img.camera.setColorMode(Camera.ColorMode.Mono) +img.camera.setDataType(Camera.DataType.UInt8) +img.camera.setGrabMode(Camera.GrabMode.Continuous) +img.camera.setTriggerMode(Camera.TriggerMode.Fixed_Rate) +img.camera.setExposure(50.00) +img.camera.setAcquirePeriod(200.00) +img.camera.setGain(0.0) -def disable_barcode_reader(): - microscan_cmd.write("") -def read_barcode(timeout): - try: - return microscan.waitString(int(timeout * 1000)) - except: - return None +release_local_safety.write(False) +release_psys_safety.write(False) ################################################################################################### -# Image processing utilities +# Global variables ################################################################################################### -from ijutils import * -from ch.psi.pshell.imaging.Overlays import * -import ch.psi.pshell.imaging.Pen as Pen - -def in_roi(x,y): - return math.hypot(x-roi_radius, y-roi_radius) < roi_radius - - -def integrate(ips): - roi = get_roi() - aux = None - for i in range(len(ips)): - if i==0: - aux = new_image(roi[2], roi[3], image_type="float", title = "sum", fill_color = None) - op_image(aux, ips[i], "add", float_result=True, in_place=True) - return aux - -def average (ips): - aux = integrate(ips) - op_const(aux, "divide", len(ips), in_place=True) - return aux - -def grab_frames(samples): - frames = [] - for i in range(samples): - aux = get_image() - frames.append(aux) - return frames - -def average_frames(samples = 1): - return average(grab_frames(samples)) - -def integrate_frames(samples = 1): - return integrate(grab_frames(samples)) - - -roi_center = (800, 600) -roi_radius = 600 - -def get_roi(): - return (roi_center[0] - roi_radius, roi_center[1] - roi_radius, 2* roi_radius, 2*roi_radius) - - -def get_image(): - roi = get_roi() - ip = load_image(img.image) - ret = sub_image(ip, roi[0], roi[1], roi[2], roi[3]) - grayscale(ret, do_scaling=True) - return ret - -#def detect_pucks(ip): -# """ -# """ -# aux = grayscale(ip, in_place=False) -# threshold(aux,0,50) -# binary_fill_holes(aux) -# return analyse_particles(aux, 10000,50000, -# fill_holes = False, exclude_edges = True,print_table=True, -# output_image = "outlines", minCirc = 0.4, maxCirc = 1.0) -# -#def detect_samples(ip): -# """ -# """ -# aux = grayscale(ip, in_place=False) -# invert(aux) -# subtract_background(aux) -# auto_threshold(aux) -# binary_open(aux) -# return analyse_particles(aux, 250,1000, -# fill_holes = False, exclude_edges = True,print_table=True, - - -r,g,b = [0]*256,[0]*256,[0]*256 -b[0]=0xFF -b[1]=0xFF ; g[1] = 0x80; r[1] = 0x80 -outline_lut1 = (r,g,b) - -r,g,b = [0]*256,[0]*256,[0]*256 -g[0]=0x80;r[0]=0x80; -g[1]=0xFF ; r[1] = 0x80; b[1] = 0x80 -outline_lut2 = (r,g,b) - - - -################################################################################################### -# Math utilities -################################################################################################### - - -from mathutils import estimate_peak_indexes, fit_gaussians, create_fit_point_list, Gaussian -import java.awt.Color as Color - -import mathutils -mathutils.MAX_ITERATIONS = 100000 - -def fit(ydata, xdata = None, draw_plot = True): - if xdata is None: - xdata = frange(0, len(ydata), 1) - max_y= max(ydata) - index_max = ydata.index(max_y) - max_x= xdata[index_max] - #print "Max index:" + str(index_max), - #print " x:" + str(max_x), - #print " y:" + str(max_y) - - if draw_plot: - plots = plot([ydata],["data"],[xdata], title="Fit" ) - p = None if plots is None else plots[0] - - gaussians = fit_gaussians(ydata, xdata, [index_max,]) - if gaussians[0] is None: - if draw_plot and (p is not None): - p.addMarker(max_x, None, "Max="+str(round(max_x,4)), Color.GRAY) - print "Fitting error" - return (None, None, None) - - (norm, mean, sigma) = gaussians[0] - if draw_plot: - fitted_gaussian_function = Gaussian(norm, mean, sigma) - scale_x = [float(min(xdata)), float(max(xdata)) ] - points = max((len(xdata)+1), 100) - resolution = (scale_x[1]-scale_x[0]) / points - fit_y = [] - fit_x = frange(scale_x[0],scale_x[1],resolution, True) - for x in fit_x: - fit_y.append(fitted_gaussian_function.value(x)) - #Server - if p is None: - plot([ydata,fit_y],["data","fit"],[xdata,fit_x], title="Fit") - draw_plot = False - else: - p.addSeries(LinePlotSeries("fit")) - p.getSeries(1).setData(fit_x, fit_y) - - if abs(mean - xdata[index_max]) < abs((scale_x[0] + scale_x[1])/2): - if draw_plot: - p.addMarker(mean, None, "Mean="+str(round(mean,4)), Color.MAGENTA.darker()) - #print "Mean -> " + str(mean) - return (norm, mean, sigma) - else: - if draw_plot: - p.addMarker(max_x, None, "Max="+str(round(max_x,4)), Color.GRAY) - #print "Invalid gaussian fit: " + str(mean) - return (None, None, None) - context = get_context() +update() +print "Initialization complete" \ No newline at end of file diff --git a/script/motion/tools.py b/script/motion/tools.py index 08d2f05..863214d 100644 --- a/script/motion/tools.py +++ b/script/motion/tools.py @@ -1,5 +1,23 @@ POSITION_TOLERANCE = 50 +def enable_power(): + """ + Check safety and enable arm power + """ + release_psys() + time.sleep(0.1) + if feedback_psys_safety.read() == False: + raise Exception("Cannot enable power: check doors") + release_local() + if feedback_local_safety.read() == False: + raise Exception("Cannot enable power: check sample changer emergency stop button") + time.sleep(0.25) + if not robot.state.isNormal(): + raise Exception("Cannot enable power: robot state is " + str(robot.state)) + robot.enable() + + + def wait_end_of_move(): robot.update() while (not robot.settled) or (not robot.empty) or (not robot.isReady()) : diff --git a/script/tasks/LedMonitoring.py b/script/tasks/LedMonitoring.py new file mode 100644 index 0000000..5182a77 --- /dev/null +++ b/script/tasks/LedMonitoring.py @@ -0,0 +1,26 @@ +DEWAR_LEVEL_LED = 25.0 + +try: + _level = dewar_level.read() +except: + log("Cannot read Dewar level", False) + _level = 0.0 + +try: + _led_room_temp = is_led_room_temp() +except: + log("Cannot get LED configuration", False) + _led_room_temp = False + +if _level <= DEWAR_LEVEL_LED: + if not _led_room_temp: + log_str="LED Monitoring: Setting LEDs to room temperature range" + log(log_str, False) + print (log_str) + set_led_range(room_temp = True) +else: + if _led_room_temp: + log_str="LED Monitoring: Setting LEDs to LN2 range" + log(log_str, False) + print (log_str) + set_led_range(room_temp = False) diff --git a/script/tools/Math.py b/script/tools/Math.py new file mode 100644 index 0000000..dc88540 --- /dev/null +++ b/script/tools/Math.py @@ -0,0 +1,60 @@ +################################################################################################### +# Math utilities +################################################################################################### + + +from mathutils import estimate_peak_indexes, fit_gaussians, create_fit_point_list, Gaussian +import java.awt.Color as Color + +import mathutils +mathutils.MAX_ITERATIONS = 100000 + +def fit(ydata, xdata = None, draw_plot = True): + if xdata is None: + xdata = frange(0, len(ydata), 1) + max_y= max(ydata) + index_max = ydata.index(max_y) + max_x= xdata[index_max] + #print "Max index:" + str(index_max), + #print " x:" + str(max_x), + #print " y:" + str(max_y) + + if draw_plot: + plots = plot([ydata],["data"],[xdata], title="Fit" ) + p = None if plots is None else plots[0] + + gaussians = fit_gaussians(ydata, xdata, [index_max,]) + if gaussians[0] is None: + if draw_plot and (p is not None): + p.addMarker(max_x, None, "Max="+str(round(max_x,4)), Color.GRAY) + print "Fitting error" + return (None, None, None) + + (norm, mean, sigma) = gaussians[0] + if draw_plot: + fitted_gaussian_function = Gaussian(norm, mean, sigma) + scale_x = [float(min(xdata)), float(max(xdata)) ] + points = max((len(xdata)+1), 100) + resolution = (scale_x[1]-scale_x[0]) / points + fit_y = [] + fit_x = frange(scale_x[0],scale_x[1],resolution, True) + for x in fit_x: + fit_y.append(fitted_gaussian_function.value(x)) + #Server + if p is None: + plot([ydata,fit_y],["data","fit"],[xdata,fit_x], title="Fit") + draw_plot = False + else: + p.addSeries(LinePlotSeries("fit")) + p.getSeries(1).setData(fit_x, fit_y) + + if abs(mean - xdata[index_max]) < abs((scale_x[0] + scale_x[1])/2): + if draw_plot: + p.addMarker(mean, None, "Mean="+str(round(mean,4)), Color.MAGENTA.darker()) + #print "Mean -> " + str(mean) + return (norm, mean, sigma) + else: + if draw_plot: + p.addMarker(max_x, None, "Max="+str(round(max_x,4)), Color.GRAY) + #print "Invalid gaussian fit: " + str(mean) + return (None, None, None) \ No newline at end of file