这些天频繁听到一些人在讨论或者纠结一类问题:为什么机械手要做标定?不带相机的机械手要不要坐标定?九点标定是干什么的?为什么标定后机械手就可以受相机控制?。。。。。。这些问题的产生,说明了他们也在思考,求索这其中的奥妙。同样的这些问题,也十分的吸引我,解决这些问题对我的工作也有积极的推动作用,于是就去查阅资料,弄清这其中的原理和知识。所幸有了些收获,再此作一个分享,一方面加深理解,另一方面共享知识。机械手与相机间的标定,也被称为手眼标定,为什么这么说,当你真正理解标定的意义,就会明白,手眼一词的准确和形象。先来说下机械手,我们使用手编时,都了解到,机械手有一个坐标系,是XYZR,就是横向,纵向,垂直,旋转四个轴,这四个轴的移动,完成了机械手运动的效果,运动的范围,就是机械手的工作区域。下图是查阅资料给出的雅马哈机械手的运动范围。没有配备工具的机械手,运行的范围就是两节机械臂所绘制的一个心形区域。底座周围的空心圆,是因为机械臂弯折后,无法触及的区域。机械手通过四个轴的移动,可以实现空间定位,这个位置,在手编上显示为一个坐标。在这里仅分析标定相关问题,那么就只需要讨论两个坐标即可,就是平面坐标XY。假设我从上往下看,绘制了机械手的XY坐标极限位范围图。如下图坐标系的正方向我使用了笛卡尔坐标系判定方法来作,实际使用中,不影响。笛卡尔坐标系判定方法如下图。有了这个机械手的世界坐标系,就可以把机械手可以移动的坐标点位给确定出来了,X最大值为两个机械臂之和,最小值为负的机械臂2的长度,Y的正负值均为两机械臂之和。另外机械臂分为左手系统和右手系统,使用中需注意操作,避免撞机。假设机械臂1长度mm,机械臂2长度70mm。则X坐标轴取值范围(-70,),Y坐标轴取值范围(-,)将坐标值引入图中。这是俯视看的机械臂的XY平面世界坐标系,周围我用网格线绘制了坐标,不是很精确,重在说明原理。假设机械臂转动到(60,-20)位置,看下大致图示。机械手的坐标先按下不说,我们再来看下相机的相关参数。相机,就是拍摄照片的设备,在使用中,我们会了解到有焦距、光圈、曝光等等这些专业术语。通俗的理解,焦距就是相机聚焦的远近,直观反映到显示屏上就是,你需要它拍摄的图像在显示屏上显示的清晰和模糊,调焦,就是让图像变得清晰,由于相机的最大焦距是出厂设置好的,所以当超出焦距时,呈现的图像就是比较模糊的。追求清晰度的,可以更换合适焦距的相机镜头解决。光圈就是相机进光量的大小,可以比拟为我们在比较明亮刺眼的阳光下看东西,会眯起眼睛,就是减小进光量,不然看不清,都是白茫茫的。在夜晚的路上,昏暗的环境,会瞪大眼睛,增加进光量,此时眯起眼睛,那就什么也看不见了,调整合适的光圈对后期的图案清晰度也有帮助。曝光,可以理解为照片的明暗程度,它是综合因素决定的,体现在视觉上就是,曝光大的显示出来比较白,更加明亮,曝光小的就更加昏暗,与光圈有一定联系。光圈的调整就会影响到曝光的效果。然后,在相机拍照完成后,还会遇到像素,对比度等新的名词。像素就是相机所能显示的最小单位,后边再详细解释。对比度是一个相对的,也叫灰度,一般的参照白色和黑色完成计量,白色为,黑色为0。相机拍出照片后,就会保存为一个图片,这个图片有一个大小,比较常见的*,*等等,当然也有更高的,这个就是相机的像素,长像素,宽像素,那么总共就有像素点,我们使用的相机,就是万像素的,假设是正方形图片,图片大小就是*。一个10*10像素的照片如下图呈现的如同马赛克一样,显示基本的数字和字符没有问题,但是显示丰富的图像就比较困难了。下图是一个实际的相机拍摄的例子,这是一个像素18*20的图片。好的,至此我们理解了图片其实就是一些基本的小像素方格组成的,一张图片就是由这些像素方格整齐排列构成。当图片确定后,每个像素的位置,也是可以确定的,以上图为例,像素(8,15)的位置如下。像素的坐标也是一个两位的,跟机械臂的XY一样,都是平面坐标系。假设我在机械手的移动范围内拍摄了一张照片,如下图。网格线就是相机的视野,是一个50*50像素的照片,可以看到像素整齐排列,机械臂的端点(60,-20)在视野范围内,跟像素点(34,22)重合。那么,只要相机不动,机械臂的位置也固定,就可以认为,相机的像素坐标系,跟机械臂的世界坐标系是稳定重合,没有变动的。也就是说,任何时候,只要机械臂移动到(60,-20)点,就会在照片中移动到像素点(34,22)上,这就是说两个坐标系可以建立一种关系,把机械臂的坐标映射到照片的像素坐标上来。就以上述坐标系为例,假设机械臂移动三次,点位分别与像素点位的对应关系如下:1:(60,-20)/(34,22)2:(,40)/(26,31)3:(,-60)/(23,16)由于实际情况中远比这个对应坐标要复杂,需要计算两个坐标间的夹角,然后利用三角函数求解坐标,这里假设两个坐标系完全对应,无倾斜,无夹角。那么就可以将三个点连线,进行大致的如下计算,来将两个坐标系联系起来。为了方便,使用了表格进行了计算,计算过程是,先让两个点位的XY分别相减,得出差值,然后用机械手的坐标差值除以像素的坐标差值,求出,一个像素代表多少毫米。因为是三个点,所以只有三个结果,从结果上可以看出,三次的X坐标比例偏差较大。计算出的平均值是:X方向上,1个像素等于-7.毫米,Y方向上,1个像素等于6.毫米然后计算出两个原点的相对位置关系,以点1为例,距离机械手原点,X为60,就相当于60/7.=8.个像素,Y点为-20,就相当于20/6.=2.个像素。那么x:34+8=42,Y:22+3=25约等后就是,机械坐标原点(0,0)对应像素坐标(42,25)假设此时我在图片上找到了像素点(39,45),那么可以求出对应的机械臂点位是:(21.,.)x=((39-42)*-7.))=21.39394毫米Y=((45-25)*6.)=.3333毫米这是通过图像像素计算后的坐标位置,可以看出,距离机械臂实际的X轴20mm有一定距离,接近30mm了,误差还是存在的,如何减小误差呢?提高像素的密度,我这个镜头是50*50=像素的。如果提高到0000像素,精确度就会提升很大。增加标定点数,这个可以再来测试一下。我们再增加三个点位。4:(,78)/(29,37)5:(,-10)/(22,24)6:(,61)/(20,34)然后继续用这个XY比例去计算像素点(39,45),那么可以求出对应的机械臂点位是:(19.,.)x=((39-42)*-6.))=19.48196毫米Y=((45-25)*6.522603)=.0961毫米那么像素计算的点位与实际点位的相对位置如下图:误差依然存在,这个估计是因为我在取坐标时大约取得太不到位。但是主要说明的是,点位的增加,对精确度的提高是有帮助的。另外,点位间坐标的混乱度越大,所取得的结果就越趋近于精确。通过以上文章,主要就是为了说,在机械手和相机之间可以存在联系,像素与机械坐标可以相互转换,相机把转换的坐标发送给机械手,机械手依照相机给的坐标进行移动,就完成了手眼标定。大致逻辑如此,实际上其中的数学关系异常复杂。根据资料中的关系式,可以得出的提示是:1:标定相机要尽可能的与机械手坐标系平行。2:标定相机要尽可能的与机械手坐标平面平行。3:标定的标定点要尽可能的小且清晰,越圆越好。建议打印。减少夹角,才是减少误差的最简单方法。
转载请注明:
http://www.aideyishus.com/lkyy/6823.html