https://github.com/SintefManufacturing/python-urx
Example use:
下面展示一些 例句
。
import urx
rob = urx.Robot("192.168.0.100") #将机械臂IP赋予变量rob
rob.set_tcp((0, 0, 0.1, 0, 0, 0)) #The track point of the tool
rob.set_payload(2, (0, 0, 0.1)) #The barycenter of the tool
sleep(0.2) #leave some time to robot to process the setup commands
rob.movej((1, 2, 3, 4, 5, 6), a, v) #move in joint space,acc=0.1,vel=0.05
rob.movel((x, y, z, rx, ry, rz), a, v) #Send a movel command to the robot
print "Current tool pose is: ", rob.getl() #get TCP position
rob.movel((0.1, 0, 0, 0, 0, 0), a, v, relative=true) # move relative to current pose
rob.translate((0.1, 0, 0), a, v) #move tool in base coordinate and keep orientation
rob.stopj(a)
robot.movel(x, y, z, rx, ry, rz), wait=False)
while True :
sleep(0.1) #sleep first since the robot may not have processed the command yet
if robot.is_program_running():
break
robot.movel(x, y, z, rx, ry, rz), wait=False)
while.robot.getForce() < 50:
sleep(0.01)
if not robot.is_program_running():
break
robot.stopl()
try:
robot.movel((0,0,0.1,0,0,0), relative=True)
except RobotError, ex:
print("Robot could not execute move (emergency stop for example), do something", ex)
Development using Transform objects from math3d library:
from urx import Robot
import math3d as m3d
robot = Robot("192.168.1.1")
mytcp = m3d.Transform() # create a matrix for our tool tcp
mytcp.pos.z = 0.18
mytcp.orient.rotate_zb(pi/3)
robot.set_tcp(mytcp)
time.sleep(0.2) # get current pose, transform it and move robot to new pose
trans = robot.get_pose() # get current transformation matrix (tool to base)
trans.pos.z += 0.3
trans.orient.rotate_yb(pi/2)
robot.set_pose(trans, acc=0.5, vel=0.2) # apply the new pose
#or only work with orientation part
o = robot.get_orientation()
o.rotate_yb(pi)
robot.set_orientation(o)
Other interactive methods/properties
from urx import Robot
rob = Robot("192.168.1.1")
rob.x # returns current x
rob.rx # returns 0 (could return x component of axis vector, but it is not very usefull
rob.rx -= 0.1 # rotate tool around X axis
rob.z_t += 0.01 # move robot in tool z axis for +1cm
csys = rob.new_csys_from_xpy() # generate a new csys from 3 points: X, origin, Y
rob.set_csys(csys)
Robotiq Gripper Example use:
import sys
import urx
from urx.robotiq_two_finger_gripper import Robotiq_Two_Finger_Gripper
if __name__ == '__main__':
rob = urx.Robot("192.168.0.100")
robotiqgrip = Robotiq_Two_Finger_Gripper()
if(len(sys.argv) != 2):
print "false"
sys.exit()
if(sys.argv[1] == "close") :
robotiqgrip.close_gripper()
if(sys.argv[1] == "open") :
robotiqgrip.open_gripper()
rob.send_program(robotiqgrip.ret_program_to_run())
rob.close()
print "true"
sys.exit()