更新时间:2021-11-06 18:51:09
本人最近做视觉定位项目,眼在手外,使用了halcon4点标定(其实3点就行了,因为3个不共线的点可以确定一个平面。另外,如果4点标定结果精度够的话,完全不必要9点标定),这里分享一下:
一、首先说一下为什么要标定以及标定的作用是什么:
1、什么情况需要相机标定?
除非单相机的视角(FOV)小于20mm,或者系统精度要求几个mm,否则都要做。
很多初学者,都对标定概念模糊不清,分不清坐标系之间的关系,搞不清相机标定和机械手相机标定有什么关系,本文给大家解释。
我们通常所说的相机标定分为两种,一种是相机参数的标定,这一般用到张氏标定法,标定的作用是校正相机自身的畸变,利用校正得到的参数对图形进行处理后再呈现出来。关于这方面的资料,网上大把,我也不再此说明。一般的机械手定位也不会进行这个标定,因为现在的相机畸变还是很小的,精度可以满足大多数要求。
本文要介绍的是第二种,相机和机械手之间的标定,作用:建立相机坐标系和机械手坐标系之间的关系,即给机械手装上眼睛,让它去哪就去哪。
常用的标定方法是9点标定。采用9点标定是因为点数越多越精确,但也不是越多越好,因为点数越多标定也会越麻烦,所选取的9个点在相机中间不要太靠近边缘,能够照顾到要定位的点即可。
2、本质就是仿射变换,一个坐标系转换到另一个坐标系;
3、最少三个不同线的点,理论上点越多越好,例如九点标定就有一定的拟合作用,能够减少部分误差,例如由于机械安装或者相机旋转倾斜带来的误差;精度可做到0.05mm;
二、再来看看我的4点标定,重点就是vector_to_hom_mat2d算子:
其中的算子hom_mat2d_to_affine_par就是通过仿射变换矩阵,倒推计算得出若干参数。
三、遇到的问题:加工过程,相机需要移动怎么办?
http://www.ihalcon.com/read-16036.html
具体场景如下:
1、相机安装在机械手上方,安装在导轨上,但相机不是固定不动的,它可以沿着X方向移动,工作时需要移动到A,B,C三个点分别拍摄。
2、机械手在相机下方,可以X和Y方向移动。
3、理论上相机的X导轨和机械手X轴是平行关系,但是实际安装时,机械难免有误差。
我现在把相机停靠在A点,拍照,然后使用4点标定得到了仿射变换矩阵M1。
问题是:相机停靠在B点和C点时,是否还需要分别进行4点标定??还是说有更简便的方法,直接使用A点得到的矩阵M1?那在B点和C点怎么使用这个M1呢?
答:在B点位置拍照,先用老矩阵M1算出(x,y),然后得出实际机械坐标值为(x+B-A,y)。说明白了就是平移而已。
---
眼在手外的参考文献
http://www.ihalcon.com/read-13820-1.html