安装第三方库
pip install urx
导入第三方库
import urx
调用Robot方法,该函数有两个参数,host为UR20机器人的ip地址,use_rt为是否对机器人继续实时监控。当设置为True时,可以时刻读取机械臂的运行状态,当设置为False时,无法返回机械臂的运行状态,返回值为None。
ur20 = urx.Robot(host="192.168.0.215", use_rt=True)
ip地址获取方法:
1.已知机械臂ip地址的情况:
将ip地址直接赋值给host。
2.未知机械臂ip地址的情况:
可使用UR系列机械臂配套的示教器,在设置中查看该机械臂的ip地址。
设置机器人法兰到刀尖的转换,其中tcp输入参数为坐标值,在UR20机器人中,坐标值为p[x,y,z,rx,ry,rz],其中包括坐标以及角度。
ur20.set_tcp(tcp=(0, 0, 0.1, 0, 0, 0))
weight参数为以千克为单位设置有效载荷,cog参数为cog 是一个 x、y、z 矢量,如果未指定 cog,则使用刀具中心点
ur20.set_payload(weight=2, cog=(0, 0, 0.1))
joints参数为机器人的坐标,依然是p[x,y,z,rx,ry,rz]格式的数据,acc参数为加速度,vel参数为速度。
ur20.movej(joints=(1, 2, 3, 4, 5, 6), acc=a, vel=v)
涉及 MoveJ 的交融 MoveJ 交融会在关节空间生成一条平滑的曲线。这适用于从 MoveJ 到 MoveJ、MoveJ 到 MoveL 和 MoveL到 MoveJ 的交融。与没有交融的移动相比,交融会产生更加平滑和更快的轨迹( (see Figure 15.6)) 。如果使用速度和加速度来指定速度曲线,则在交融过程中,交融保持在交融半径内。如果使用时间而非速度和加速度来指定两个运动的速度曲线,则交融轨迹将遵循原始 MoveJ 的轨迹。如果两个运动的时间受限,则使用交融不会节约时间。
tpose参数为机器人的坐标,依然是p[x,y,z,rx,ry,rz]格式的数据,acc参数为加速度,vel参数为速度。
ur20.movel(tpose=(1, 2, 3, 4, 5, 6), acc=a, vel=v)
MoveL中的交融在MoveL中交融时,交融的位置以恒定速度遵循圆弧路径。方向与两条轨迹之间的平滑插值交融。机器人可以在遵循圆弧路径之前在轨迹上减速以避免非常高的加速度( 例如,如果两个轨迹之间的角度接近 180 度) 。
tpose参数为机器人的坐标,依然是p[x,y,z,rx,ry,rz]格式的数据,acc参数为加速度,vel参数为速度。
ur20.movep(tpose=(1, 2, 3, 4, 5, 6), acc=a, vel=v)
MoveP 中的交融 在 MoveP 中交融时,交融的位置以恒定速度遵循圆弧路径。方向与两条轨迹之间的平滑插值交融。您可以交融 MoveJ 或 MoveL 到 MoveP 内。在这种情况下,机器人使用MoveP 的圆弧交融,并插入两个运动的速度。您不可以交融MoveP 到 MoveJ 或 MoveL 内。相反,MoveP 的最后一个路点被视为没有交融的停止点。如果两条轨迹处于接近 180 度( 反向)的角度,则无法执行交融,因为它会创建一个半径非常小的圆弧,机器人无法以恒定速度遵循。这会导致程序中的运行时异常,这种情况可通过调整路点来纠正,以形成一个不太尖锐的角。
pose_via和pose_to参数为机器人的坐标,依然是p[x,y,z,rx,ry,rz]格式的数据,代表机器人的起始未知和终止未知,机器人内部自动计算运动半径。acc参数为加速度,vel参数为速度。
ur20.movec(pose_via=(1,2,3,4,5,6), pose_to=(2,3,4,5,6,7), acc=a, vel=v)
MoveCircle 命令可以通过创建一个半圆来创建圆周移动。您只能通过 MoveP 命令添加 CircleMove。
在基坐标中移动工具,保持方向,vect为向量坐标x,y,z。输入后会与机器人当前坐标相加,得到新的坐标,从而控制机器人运动。acc参数为加速度,vel参数为速度。
ur20.translate(vect=(0.1, 0, 0), acc=a, vel=v)
添加一个 stopj() 或一个 stopl(),以缓慢使机器人手臂减速。运动方式与上述movej和movel的运动方式相同,acc参数为加速度。
ur20.stopj(acc=a)
获取关节位置
currt_pose = ur20.getj()
返回当前从 tcp 到当前 csys 的转换
translate = ur20.getl()
如果机器人正在运行,则返回 True(不一定要运行程序,也可能是空闲状态)
UR_State = ur20.is_running()
检查程序是否正在运行。 警告!!!: 发送程序后,机器人可能需要 10 分之几秒才能进入运行状态。
秒后,机器人才会进入运行状态
UR_State = ur20.is_program_running()
get_tcp_force 返回的力向量长度,如果 wait==True 则等待下一个数据包后返回
force = ur20.get_force()
返回在 TCP 中测量的力
force = ur20.get_force()
nb参数为引脚口。
ur20.get_analog_in(nb)
output参数为引脚口,val为输出值,为模拟信号。
ur20.set_analog_out(output, val)
nb参数为引脚口。
ur20.get_digital_in(nb)
output参数为引脚口,val为输出值,高电平或低电平信号。
ur20.set_digital_out(output, val)