Files
mxsc/script/motion/tools.py
gac-S_Changer fb1e1221f1
2018-05-29 10:32:34 +02:00

99 lines
3.0 KiB
Python

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 d<POSITION_TOLERANCE:
print "FROM LASER"
robot.movel("pLaser", robot.tool, DESC_SCAN, sync = True)
return
d = robot.get_distance_to_pnt("pLaserHome")
if d<0:
raise Exception ("Error calculating distance to laser appro: " + str(d))
if d<POSITION_TOLERANCE:
print "FROM APPRO"
robot.movel("pLaser", robot.tool, DESC_SCAN, sync = True)
return
d = robot.get_distance_to_pnt("pHome")
if d<0:
raise Exception ("Error calculating distance to home: " + str(d))
if d<POSITION_TOLERANCE:
print "FROM HOME"
robot.movej("pLaserHome", robot.tool, DESC_DEFAULT)
robot.movel("pLaser", robot.tool, DESC_SCAN, sync = True)
return
raise Exception ("Must be in home position to start move to laser")
def update_tool(tool=None, x_offset=0.0, y_offset=0.0, z_offset=0.0):
#Updating tool:
t=robot.get_tool_trsf(tool)
t[0]=t[0] - x_offset
t[1]=t[1] - y_offset
t[2]=t[2] - z_offset
robot.set_tool_trsf(t, tool)
print "Updated " + (str(robot.tool) if (tool is None) else tool) + ": " + str(t)
robot.save_program()
def assertValidAddress(segment, puck, sample):
if type(segment) == str:
segment = ord(segment.upper()) - ord('A') +1
if segment<=0 or segment >6:
raise Excepton ("Invalid segment")
if puck<=0 or puck >5:
raise Excepton ("Invalid puck")
if sample<=0 or sample >16:
raise Excepton ("Invalid sample")