写在前面
由于涉及到公司的一些内容,本文仅做方法和思路记录,请见谅。
用途
9点法标定是工业上使用广泛的二维手眼标定,所谓二维,即工作平面限制在一个平面上,常用于从固定平面抓取对象进行装配等操作,这种应用场景可以满足大多数的工业应用场景。
使用过程
和一般的手眼标定一样的是,9点法标定也分eye_in_hand和eye_to_hand两种,标定的结果分别是相机坐标系与工具坐标系的转换矩阵(4*4),以及相机坐标系和工件坐标系的转换矩阵。以下以eye_in_hand为例:
机器人手持相机在平行于工作平面的平面上分别做沿着田字格走9个点,然后回到田字格中心,分别左右旋转一定度数。记录机器人每次移动的位置,同时相机进行拍照,对视野内的同一个mark点进行记录。因此,可以得到12组机器人位置和图像坐标系中点位映射关系。
算法原理
相机内参求取
相机内参求取的主要思想是求图像坐标系x-y平面到标定平面的仿射变换。图像坐标系中的点位在每次拍照时可以获得,标定平面内的点位可根据标定的过程进行自定义,由此求得仿射变换,在四参数模型的相机内参中,加上相机的分辨率,可以求出相机的内参。
外参求取
由于9个平移点上在同一个平面上,因此可使用上述点和图像坐标系中的点和求出的内参矩阵来计算外参矩阵。该部分还需要求旋转的中心,待续。
手眼转换(以eye_in_hand为例)
根据求得的相机外参,记录的机器人每次移动的位置,即可求出相机坐标系和工具坐标系的转换矩阵,即为手眼标定所求结果。该部分详见:https://blog.csdn.net/u011089570/article/details/47945733。
另推荐一个比较有意思的文章,原理和本文类似:https://blog.csdn.net/qq_16481211/article/details/79764730。