UR20机械臂学习笔记
一.使用UR系列机器人第三方库
安装第三方库
pip install urx
导入第三方库
import urx
二.UR机器人的初始化
1.连接UR机器人
调用Robot方法,该函数有两个参数,host为UR20机器人的ip地址,use_rt为是否对机器人继续实时监控。当设置为True时,可以时刻读取机械臂的运行状态,当设置为False时,无法返回机械臂的运行状态,返回值为None。
ur20 = urx.Robot(host="192.168.0.215", use_rt=True)
ip地址获取方法:
2.未知机械臂ip地址的情况:
2.设置机器人末端法兰(tcp)
设置机器人法兰到刀尖的转换,其中tcp输入参数为坐标值,在UR20机器人中,坐标值为p[x,y,z,rx,ry,rz],其中包括坐标以及角度。
ur20.set_tcp(tcp=(0, 0, 0.1, 0, 0, 0))
3.设置机器人末端负载
weight参数为以千克为单位设置有效载荷,cog参数为cog 是一个 x、y、z 矢量,如果未指定 cog,则使用刀具中心点
ur20.set_payload(weight=2, cog=(0, 0, 0.1))
三.机器人运动程序
1.机器人移动
(1) MoveJ
joints参数为机器人的坐标,依然是p[x,y,z,rx,ry,rz]格式的数据,acc参数为加速度,vel参数为速度。
ur20.movej(joints=(1, 2, 3, 4, 5, 6), acc=a, vel=v)
(2) MoveL
tpose参数为机器人的坐标,依然是p[x,y,z,rx,ry,rz]格式的数据,acc参数为加速度,vel参数为速度。
ur20.movel(tpose=(1, 2, 3, 4, 5, 6), acc=a, vel=v)
(3) MoveP
tpose参数为机器人的坐标,依然是p[x,y,z,rx,ry,rz]格式的数据,acc参数为加速度,vel参数为速度。
ur20.movep(tpose=(1, 2, 3, 4, 5, 6), acc=a, vel=v)
(4) MoveC
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)
(5) Translate
在基坐标中移动工具,保持方向,vect为向量坐标x,y,z。输入后会与机器人当前坐标相加,得到新的坐标,从而控制机器人运动。acc参数为加速度,vel参数为速度。
ur20.translate(vect=(0.1, 0, 0), acc=a, vel=v)
(6) Stop
添加一个 stopj() 或一个 stopl(),以缓慢使机器人手臂减速。运动方式与上述movej和movel的运动方式相同,acc参数为加速度。
ur20.stopj(acc=a)
2.获取机器人状态
(1) Getj
获取关节位置
currt_pose = ur20.getj()
(2) Getl
返回当前从 tcp 到当前 csys 的转换
translate = ur20.getl()
(3) is_running
如果机器人正在运行,则返回 True(不一定要运行程序,也可能是空闲状态)
UR_State = ur20.is_running()
(4) is_program_running
检查程序是否正在运行。 警告!!!: 发送程序后,机器人可能需要 10 分之几秒才能进入运行状态。
秒后,机器人才会进入运行状态
UR_State = ur20.is_program_running()
(5) get_force
get_tcp_force 返回的力向量长度,如果 wait==True 则等待下一个数据包后返回
force = ur20.get_force()
(6) get_tcp_force
返回在 TCP 中测量的力
force = ur20.get_force()
3.控制IO口输入输出
(1) 模拟IO口输入
nb参数为引脚口。
ur20.get_analog_in(nb)
(2) 模拟IO口输出
output参数为引脚口,val为输出值,为模拟信号。
ur20.set_analog_out(output, val)
(3) 数字IO口输入
nb参数为引脚口。
ur20.get_digital_in(nb)
(4) 数字IO口输出
output参数为引脚口,val为输出值,高电平或低电平信号。
ur20.set_digital_out(output, val)