视觉应用中的绝对坐标值和相对偏移量

目 录
1. 介绍 Introduction 4
1.1 方案目的 Purpose of this proposal 4
1.2 硬件设备列表 Hardware equipment 4
1.3 电源要求 Power supply 4
2. 方案描述 Proposal description 4
2.1 概要 4
2.2 详细设计 5
2.2.1 CCD发送目标物在机座坐标系下绝对坐标UR程序代码实现 5
2.2.2 CCD发送目标物相对偏差值UR程序代码实现 7
介绍 Introduction
1.1 方案目的 Purpose of this proposal
本文介绍了优傲机器人在视觉应用中如何获取并应用绝对位移和相对位移值的实现方法,以便后续类似的应用方案参考。
1.2 硬件设备列表 Hardware equipment
本方案使用以下产品:
优傲机器人型号: UR3、UR5、UR10/ CB3。
1.3 电源要求 Power supply
UR机器人:单相220V AC 10A
方案描述 Proposal description
2.1 概要
优傲机器人可以配合任意第三方品牌视觉系统实现视觉应用。由于视觉系统和机器人的机械坐标系经过标定后,传递给优傲机器人的坐标值可能是相对偏移位移量(相对于标准靶值坐标),也可能是目标位置在标定坐标系下的绝对位置。本文介绍了优傲机器人在视觉应用中如何获取并应用绝对位移和相对位移值的实现方法。
2.2 详细设计
2.2.1 CCD发送目标物在机座坐标系下绝对坐标UR程序代码实现

图 1
程序
BeforeStart
调用 GetUUTCalibra
调用 InitialData
调用 InitialConnect
机器人程序
等待: 0.008
GoToCamera
MoveL
paizhao
等待: 0.2
调用 CallCameraSnap
调用 GetCameraData
RPY≔rotvec2rpy([CalibrationPos[3],CalibrationPos[4],CalibrationPos[5]])
RPY_absolute≔[RPY[0],RPY[1],TargetPos[3]/180*3.14]
RotVec_absolute≔rpy2rotvec([RPY_absolute[0],RPY_absolute[1],RPY_absolute[2]])
Pos_Install≔p[TargetPos[1],TargetPos[2],CalibrationPos[2],RotVec_absolute[0],RotVec_absolute[1],RotVec_absolute[2]]
Pos_Install_up≔pose_add(Pos_Install,p[0,0,0.2,0,0,0])
MoveL
Pos_Install_up
Pos_Install
GetUUTCalibra
MoveL
GraspCal
CalibrationPos≔get_actual_tcp_pose()
InitialData
TargetPos≔[0,0,99,0]
ccd_num≔0
GetCameraData
循环 TargetPos[0]≟0
TargetPos≔socket_read_ascii_float(3,"socket0")
CallCameraSnap
socket_send_string("$snap1#","socket0")
'If Current_work≟1'
InitialConnect
conn≔ False
循环 conn≟ False
conn≔socket_open("192.168.0.110",5000,"socket0")
等待: 0.1
此案例中,CCD视觉系统通过TCP SOCKET将目标物体的X,Y,及旋转角以UR机座坐标系的下的绝对坐标值(TargetPos[1],TargetPos[2],TargetPos[3])发送给UR机器人。参照于标定的目标物体的靶值坐标位姿CalibrationPos,需要对CalibrationPos位姿的X,Y及RZ坐标进行调整。TargetPos[3]为RPY角下的轴旋转角,且为角度单位,所以在程序中使用了rpy2rotvec(rpy vector)脚本函数先将机器人位姿坐标的旋转矢量RX,RY,RZ转换为RPY角。在RPY角下进行了Roll角的简单替换TargetPos[3]后,再将得到RPY角度进行rotvec2rpy(rotation vector)的逆运算,转换为实际目标靶值坐标位姿的旋转矢量。而在基座坐标系下的目标物校准靶值的X,Y坐标值则只需要进行用相机发送过来的TargetPos[1],TargetPos[2]进行简单的替换,转换为实际的目标靶值的X,Y坐标值。
2.2.2 CCD发送目标物相对偏差值UR程序代码实现

图 2
程序
BeforeStart
调用 GetUUTCalibra
调用 InitialData
调用 InitialConnect
机器人程序
等待: 0.008
GoToCamera
MoveL
paizhao
等待: 0.2
调用 CallCameraSnap
调用 GetCameraData
Pos_Install≔pose_add(CalibrationPos,p[TargetPos[1],TargetPos[2],0,0,0,TargetPos[3]])
Pos_Install_up≔pose_add(Pos_Install,p[0,0,0.2,0,0,0])
MoveL
Pos_Install_up
Pos_Install
GetUUTCalibra
MoveL
GraspCal
CalibrationPos≔get_actual_tcp_pose()
InitialData
TargetPos≔[0,0,99,0]
ccd_num≔0
GetCameraData
循环 TargetPos[0]≟0
TargetPos≔socket_read_ascii_float(3,"socket0")
CallCameraSnap
socket_send_string("$snap1#","socket0")
'If Current_work≟1'
InitialConnect
conn≔ False
循环 conn≟ False
conn≔socket_open("192.168.0.110",5000,"socket0")
等待: 0.1
此案例中,CCD视觉系统通过TCP SOCKET将目标物体的X,Y,及旋转角以UR机座坐标系的下的X\Y偏移值和角度偏移(TargetPos[1],TargetPos[2],TargetPos[3])发送给UR机器人。参照于标定的目标物体的靶值坐标位姿CalibrationPos,在机座坐标系中利用pose_add进行运算即可得到实际物体的位姿信息。
更多技术参考, 公众号文章:
Airking Robots
北京艾科伯特科技有限公司,是专注协作机器人和移动机器人的技术公司,Airking Robots——艾科伯特立足于航空/航天,专注于机器人智能制造方向,Airking Robots是优傲机器人,Robotiq等协作机器人方向中国区域金牌提供商
商务联系:

更多案例请关注公众号:





