################################################################################################### # Deployment specific global definitions - executed after startup.py ################################################################################################### import traceback from ch.psi.pshell.serial import TcpDevice from ch.psi.pshell.modbus import ModbusTCP import ch.psi.mxsc.Controller as Controller import ch.psi.pshell.core.Nameable as Nameable run("setup/Layout") ################################################################################################### # Configuration ################################################################################################### def is_imaging_enabled(): setting = get_setting("ImagingEnabled") return not (str(setting) == 'False') def set_imaging_enabled(value): set_setting("ImagingEnabled", True if value else False ) def assert_imaging_enabled(): if is_imaging_enabled() == False: raise Exception ("Imaging is disabled") #"unipuck", "minispine" or "mixed" def set_puck_types(value): set_setting("ImagingEnabled", True if value else False ) def get_puck_types(): setting = get_setting("ImagingEnabled") if setting == "unipuck" or setting == "minispine": return setting return "mixed" #In order to apply current config set_imaging_enabled(is_imaging_enabled()) set_puck_types(get_puck_types()) ################################################################################################### # Scripted devices and pseudo-devices ################################################################################################### for script in ["devices/RobotSC", "devices/Wago", "devices/BarcodeReader", "devices/LaserDistance", \ "devices/LedCtrl", "devices/SmartMagnet", "devices/HexiPosi", "devices/Gonio"]: try: run(script) except: print >> sys.stderr, traceback.format_exc() add_device(img.getContrast(), force = True) add_device(img.getCamera(), force = True) ################################################################################################### # Utility modules ################################################################################################### run("data/samples") run("motion/tools") run("motion/mount") run("motion/unmount") run("motion/get_dewar") run("motion/put_dewar") run("motion/get_gonio") run("motion/put_gonio") run("motion/move_dewar") run("motion/move_gonio") run("motion/move_heater") run("motion/move_home") run("motion/move_park") run("motion/move_scanner") run("motion/dry") run("motion/homing_hexiposi") run("motion/robot_recover") run("motion/recover") run("imgproc/Utils") run("tools/Math") def system_check(robot_move=True): if not air_pressure_ok.read(): raise Exception("Air pressure is not ok") if not n2_pressure_ok.read(): raise Exception("N2 pressure is not ok") if robot_move: if not feedback_local_safety.read(): raise Exception("Local safety not released") if not feedback_psys_safety.read(): raise Exception("Psys safety not released") if not guiding_tool_park().read(): raise Exception("Guiding tool not parked") def get_puck_elect_detection(segment, puck): return str(Controller.getInstance().getPuck(str(segment).upper() + str(puck)).detection) def get_puck_img_detection(segment, puck): return str(Controller.getInstance().getPuck(str(segment).upper() + str(puck)).imageDetection) def assert_puck_detected(segment, puck): if get_puck_elect_detection(segment, puck) != "Present": raise Exception ("Puck " + str(segment).upper() + str(puck) + " not present") def start_puck_detection(): run("tools/RestartPuckDetection") def check_puck_detection(): return run("tools/CheckPuckDetection") def stop_puck_detection(): run("tools/StopPuckDetection") ################################################################################################### # Device initialization ################################################################################################### try: set_heater(False) set_air_stream(False) except: print >> sys.stderr, traceback.format_exc() try: release_local_safety.write(False) release_psys_safety.write(False) except: print >> sys.stderr, traceback.format_exc() try: hexiposi.polling=500 except: print >> sys.stderr, traceback.format_exc() try: robot.setPolling(DEFAULT_ROBOT_POLLING) robot.set_tool(TOOL_DEFAULT) robot.set_motors_enabled(True) robot.set_joint_motors_enabled(True) except: print >> sys.stderr, traceback.format_exc() try: 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(25.00) img.camera.setAcquirePeriod(200.00) img.camera.setGain(0.0) #img.camera.setROI(200, 0,1200,1200) """ img.camera.setROI(300, 200,1000,1000) img.config.rotation=17 img.config.rotationCrop=True img.config.roiX,img.config.roiY, img.config.roiWidth,img.config.roiHeight = 50,50,900,900 """ img.camera.setROI(int(get_setting("roi_x")), int(get_setting("roi_y")), int(get_setting("roi_w")), int(get_setting("roi_h"))) img.camera.stop() img.camera.start() except: print >> sys.stderr, traceback.format_exc() #gripper_cam.paused = True ################################################################################################### # Device monitoring ################################################################################################### DEWAR_LEVEL_RT = 5.0 is_room_temperature = False def is_room_temp(): return is_room_temperature class DewarLevelListener (DeviceListener): def onValueChanged(self, device, value, former): global is_room_temperature if value is not None: is_room_temperature = value <= DEWAR_LEVEL_RT dewar_level_listener = DewarLevelListener() for l in dewar_level.listeners: #if isinstance(l, DewarLevelListener): #Class changes... if Nameable.getShortClassName(l.getClass()) == "DewarLevelListener": dewar_level.removeListener(l) dewar_level.addListener(dewar_level_listener) dewar_level_listener.onValueChanged(dewar_level, dewar_level.take(), None) ################################################################################################### # Global variables ################################################################################################### context = get_context() cover_detection_debug = False update() print "Initialization complete"