目的:
将第三方相机的视野坐标与EPSON机器人的坐标进行校准,建立转换关系
基本思路:
1. 相机通过以太网或RS232同机器人通信,按机器人校正指令的要求获取、分离相机发送过来的信息
2. 按照校准步骤,记录机械手校准点的机器人坐标和视觉像素坐标
3. 使用校准指令,建立机械手和视觉的坐标转换关系
视觉工作时,将检测到的工件的坐标发给机器人,机器人根据坐标转换关系,转换为机器人坐标后再去做抓取、装配等相应动作
准备工作:
1. 相机安装固定、焦距、光源调整(一旦相机移动了或焦距调整过,需要重新校准)
2. 机器人原点位置检查:打开电机,命令行窗口中输入Pulse 0,0,0,0看机器人是否运动到原点位置。如果不准,检查机器人的序列号与控制器是否配套,或者需要重新调整原点。
3. 制作9宫图校准板(注意4-5-6的方向是相反的,即上左->上中->上右->中右->中中->中左->下左->下中->下右)
4. 做作机器人工件坐标的校准工具。一般要求末端是尖端,方便对位,可以稳固的装在Z轴或抓手上)
相机安装方式:
相机安装方式有以下几种:
1 独立安装(相机坐标与机械手坐标不需要相互转换)
2 固定安装(固定向上、固定向下)
3 移动相机(J2轴移动,J4轴移动,J5J6轴移动)
安装方式比较:
使用固定安装,相机无法移动,拍摄范围小;但是视觉检测的时间一般可以用机器人工作的时间并列运行,节省节拍时间。
使用移动相机,相机跟随机器人移动,可以拍摄的范围大;但是视觉进行检测前,机器人必须有一定的静止时间(0.2s~0.5s);视觉进行检测时,机器人一般需要停止不动,不能进行其他工作;整体节拍时间会更长。
因为机器人本身有定位精度,使用移动相机时,视觉检测的精度一般也比使用固定相机的低。
校准步骤:
每种安装方式均需要不同的校准方式。
独立安装:使用9宫格校准板,精确的测量该板9个点之间的坐标关系
固定安装(固定向下)
·使用九宫格校准板
·机器人末端安装校准治具
·按照九宫图的顺序,机械手末端依次对准9个位置,机器人管理器中选择对应的Tool n,并保持点位置(如保持到P1到P9)
·移开机器人,视觉识别九宫图上的9个点的像素坐标,同样按照九宫图顺序,将其像素坐标XY依次保存到P11-P19中。
固定安装(固定向上)
机械手可以在相机中移动,不需要九宫图校准板
·在机械手治具上找一个视觉容易识别的、唯一的特征点,建议圆形、圆孔。或者机械手抓取需要识别的工件,在工件上找特征。
·使用机器人管理器的工具向导,根据提示,在相机视野中,示教工具坐标Tool n(将特征点移动到相机中心附近,先用视觉的功能抓取该特征点的中心并记录下来,该点示教为工具坐标的第一个点;旋转U轴,再平移XY,将该特征移回到视觉上一次抓取的位置,示教为工具坐标的第二点)
·按照九宫图的顺序,依次将特征点移动到相机视野中的上左->上中->上右->中右->中中->中左->下左->下中->下右等位置,共移动9次,并在Tool n下保存机器人位置到P1-P9。同时视觉依次抓取9个特征点的中心像素值,记录为P11-P19
移动相机校准:
移动相机需要按机器人末端安装校准治具,并在相机工作视野平面上,找一个视觉容易识别且唯一的特征点。
·示教校准治具末端的工具坐标Tool n
将治具末端对准特征点,在Tool n下保存该位置为P0
·机器人管理器中,将Tool切换到Tool 0
·将相机移动到特征点上方,让特征点按照九宫图顺序,即视野的上左->上中->上右->中右->中中->中左->下左->下中->下右位置。Tool 0下记录下每个位置的机器人坐标为P1-P9;
·同时每走一个位置时,视觉抓取该特征点的中心像素值,依次记录到P11-P19
校准程序:
校准指令
VxCalib 0, VISION_CAMORIENT_STANDALONE, P(11:19), P(1:9)
固定向下:
VxCalib 0, VISION_CAMORIENT_FIXEDDOWN, P(11:19), P(1:9)
固定向上:
VxCalib 0, VISION_CAMORIENT_FIXEDUP, P(11:19), P(1:9)
第二轴移动相机:
VxCalib 0, VISION_CAMORIENT_MOBILEJ2, P(11:19), P(1:9), P0
第四轴移动相机:
VxCalib 0, VISION_CAMORIENT_MOBILEJ4, P(11:19), P(1:9), P0
校准结果
使用VxcalInfo指令来查询校准结果。
If VxCalInfo(0, 1) = True Then
Print "相机校准成功,结果如下:"
Print " X方向の平均偏差[mm]:", VxCalInfo(0, 2)
Print " X方向の最大偏差[mm]:", VxCalInfo(0, 3)
Print " X方向一个像素/毫米( mm ):", VxCalInfo(0, 4)
Print " X方向的倾斜角度( deg ):", VxCalInfo(0, 5)
Print " Y方向の平均偏差[mm]:", VxCalInfo(0, 6)
Print " Y方向の最大偏差[mm]:", VxCalInfo(0, 7)
Print " Y方向一个像素/毫米( mm ):", VxCalInfo(0, 8)
Print " Y方向的倾斜角度( deg ):", VxCalInfo(0, 9)
Else
Print "相机校准失败,请重新示教点校准相机!"
EndIf
校准保存与读取
可以将校准结果保存在后缀名为CAA的文件中,方便下次运行视觉程序时可以直接读取而不用再次运行校准。
保存时,会同时保存校准编号0-15至文件中。因此,如果需要把多个相机的校准都保存到同一个文件,每次运行校准保存前先用Vxcalload “Calibration.caa”加载文件。
VxCalLoad "CCD_Calib.caa" '加载校准文件
VxCalSave "CCD_Calib.caa" '保存校准文件
视觉数据转换
固定相机:
vx = 100 '拍摄工件的视觉坐标x
vy = 100 '拍摄工件的视觉坐标y
vu = 90 '拍摄工件的视觉坐标角度u
P50 = XY(vx, vy, 0, vu)
Print "转换前的视觉坐标为:", P50
P60 = VxTrans(0, P50)
Print "转换后的机器人坐标为:", P60
Tool 1
移动相机:移动相机拍照时,需要把机械手的拍照位置(Tool 0)也计算进去。同时相机的角度也是随着机械手移动而改变的,需要计算相机的当前角度。
'第二轴移动相机
Tool 0
Jump P40 '移动到拍照位置
uCamera = PAgl(P40, 1) + PAgl(P40, 2) '相机角度=第一关节角度+第二关节角度
vx = 100 '拍摄工件的视觉坐标x
vy = 100 '拍摄工件的视觉坐标y
vu = 90 '拍摄工件的视觉坐标角度u
P50 = XY(vx, vy, 0, vu + uCamera)
Print "转换前的视觉坐标为:", P50
P60 = VxTrans(0, P50, P40)
Print "转换后的机器人坐标为:", P60
Tool 1
Jump P60
'第四轴移动相机
Tool 0
Jump P40 '移动到拍照位置
uCamera = CU(Here) '相机角度=U轴角度
vx = 100 '拍摄工件的视觉坐标x
vy = 100 '拍摄工件的视觉坐标y
vu = 90 '拍摄工件的视觉坐标角度u
P50 = XY(vx, vy, 0, vu + uCamera)
Print "转换前的视觉坐标为:", P50
Print "转换后的机器人坐标为:", P60
Tool 1
Jump P60
注意:有些视觉系统中角度的方向与机器人相反,因此在取视觉发过来的u角度数值时,需要取相反数值vu = -vu。视觉的角度正方向可以通过测试得知
校准验证
校准完成后,可以在相机视野中找任意一点,将其视觉坐标进行转换,再切换工具坐标,让机械手的工具末端走到对应的位置,看位置是否能够重叠。如果重叠,说明视觉校准是准确的。
参考程序:(RC+7.0版本)
---------------------
作者:hackpig
来源:www.skcircle.com
版权声明:本文为博主原创文章,转载请附上博文链接!

