POSITION_TOLERANCE = 50 def enable_motion(): """ Check safety and enable arm power if in remote mode """ if robot.working_mode != "manual": 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") if robot.working_mode == "manual": pass else: time.sleep(0.25) if not robot.state.isNormal(): raise Exception("Cannot enable power: robot state is " + str(robot.state)) robot.enable() def set_hexiposi(pos): """ Set the hexiposi posiiton in remote mode, or wait for it to be set in manual mode """ if robot.working_mode == "manual": set_status("Move Hexiposi to position " + str(pos) + " ...") try: hexiposi.waitInPosition(pos, -1) finally: set_status(None) else: hexiposi.move(pos) def wait_end_of_move(): robot.update() while (not robot.settled) or (not robot.empty) or (not robot.isReady()) : time.sleep(0.01) def move_home(): #robot.reset_motion("jHome") robot.movej("pHome", robot.tool , DESC_SCAN) wait_end_of_move() def move_to_laser(): robot.reset_motion() tool = robot.tool d = robot.get_distance_to_pnt("pLaser") if d<0: raise Exception ("Error calculating distance to laser: " + str(d)) if d6: raise Excepton ("Invalid segment") if puck<=0 or puck >5: raise Excepton ("Invalid puck") if sample<=0 or sample >16: raise Excepton ("Invalid sample")