基于 OpenCv 的机器人手眼标定(九点标定法)
对于初学者而言,对相机的标定经常模糊不清。不知道机器坐标与相机坐标如何转换,
两个坐标系又是如何建立?
我们通常是利用张氏标定法,针对于相机的畸变进行标定,利用校正得到的参数对图形进
行处理后再呈现出来。这个方法网上用的人很多,资料也较为全面。这里就不做说明了。
本文主要是针对机械手的手眼标定,一般而言目前相机的畸变较小,精度也较为准确,使
用该方法进行标定也能得到较好的效果。
首先,对于九点标定而言。我们使用到的是 OpenCv 中的 esmateRigidTransform 函数。
函数定义如下:
Mat esmateRigidTransform(InputArraysrc,InputArraydst,boolfullAne)
前两个参数,可以是 :src=srcImage (变换之前的图片 Mat) dst=transImage(变换之后的图
片 Mat)
也可以: src=array(变换之前的关键点 Array) dst=array(变换之后的关键点 Array)
第三个参数: 1(全仿射变换,包括:rotaon, translaon, scaling,shearing,re$econ)
其主要原理为:如果我们有一个点变换之前是[x,y,1],变换后是[x’,y’,1] 则 fullAne 表示如下:
TX=Y
展开后表示
如果我们想求这【a-f】 6 个变量需要有 6 个方程,也就是 3 组点。但是比三个点多呢?
比如:20 个点。那就是用最小方差。
标定步骤
1、首先我们需要准备一块,标定板。如果条件不足,可以使用白纸画上九个圆进行代替。
- 1
- 2
- 3
- 4
前往页