<>机械臂相机标定以及手眼标定

总结一下机械臂相机标定以及手眼标定的相关知识
想让机械臂知道操作台上的东西在他的哪个位置,并成功抓起,标定步骤很重要,我理解要实现这个过程可以分为两部分:相机标定和手眼标定,相机标定
的目的主要是为了获得相机的内参矩阵以及畸变系数,手眼标定主要是获得相机与机械臂基座的映射关系。

<>相机标定

*
相机标定原理

*
基本坐标系—像素坐标系、成像平面坐标系、相机坐标系、世界坐标系


【注】之后会用到棋盘进行标定,这里的世界坐标系是指棋盘面上的坐标系统,其实跟实际的世界坐标系还是有差异的,在下面手眼标定章节的图中,我觉得更恰当一点的世界坐标系是机械臂基座的坐标系统,机械臂末端执行器,被抓取物体像素坐标都统一成机械臂基座中的坐标,在相机标定部分,我姑且就把棋盘面上的坐标系当作世界坐标系

*

先简单介绍一下为什么要知道这四个坐标系。这些坐标系之间都有一定的转换关系,当这些转换关系都已知之后,就可以得到世界坐标(棋盘上的点)和像素坐标(比如对一张图片进行目标检测得出的目标点)之间的关系,不严谨的说像素坐标就等于世界坐标左乘外参矩阵再左乘内参矩阵得到(之所以不严谨后边会解释)

* 内参矩阵只跟相机有关,如果相机的焦距以及镜头等不发生改变,理论上是不会发生变化,得到内参也是相机标定的主要目的。
* 外参矩阵是表示一种空间上的位置关系,是世界坐标系(棋盘面)在相机坐标系下的位姿,当两个坐标系相对位置发生变化时,外参矩阵也会随着改变。

一、图像坐标系(x,y)到像素坐标系(u,v)

* 两坐标轴互相垂直,(u0,v0)是像素坐标的中心,p(x,y)是图像中任意一点,dx,dy是像素坐标中一个像素对应的xy的长度,所以有如下的公式:

* 一般情况下两个坐标轴不相互垂直,此时公式为


二、相机坐标系(Xc,Yc,Zc)到图像坐标系(X,Y),就是简单的相似原理,看示意图就可以推导出下面的转换关系


三、世界坐标系(Xw,Yw,Zw)到相机坐标系(Xc,Yc,Zc)的转换,其实就是刚体变换,涉及到旋转和平移,如果不理解可以查阅一下机器人控制原理,或者在
这里 <https://blog.csdn.net/weixin_41649786/article/details/82115829>
简单了解一下,下面的是其次变换矩阵,R是旋转矩阵,T是平移向量,也就是世界坐标系原点在相机坐标系下的坐标

四、总结

*
现在让我们回到这张大图,最后会得到一个3*4形状的矩阵,就是世界坐标系到像素坐标的映射关系,还记得我之前说的不严谨的地方么,你现在可以回到第二个点相机坐标系与图像坐标系的转换那里,观察公式,左边其实还有一个Zc是未知的,所以按照以下整个过程连成完之后结果是下面的公式




说明一下这里的1/Zc是不知道的,但是将上面的这个公式展开后可以将这一项消掉而得到下面的等式,接下来进一步整理就可以分别得到X和Y对应的像素坐标的关系,到现在为止相机标定的原理讲的就差不多了

*
相机标定主流方法

* 现在相机标定的方法用的比较多的就是张正友标定法,网上相关资料很多,并且对应opencv中已经实现了该方法,所以下面就介绍一下实践该方法的过程
*

首先是准备标定板,这也就是我们前面多次提到的棋盘,前面我们所说的(X,wYw,Zw)其实就是在这个棋盘面上的坐标系,也就是说我们完成上面的过程,也仅仅是知道了像素点在棋盘面上的坐标,此时机械臂还是不知道该点在哪,因为还没有建立到机械臂基座的映射关系,这个需要下面的手眼标定步骤来完成

*
接下来的步骤可以先看一下这篇博客 <https://blog.csdn.net/wzheng92/article/details/79919844>
,总的来说就是先让摄像头采集标定板不同姿态的一些照片,然后在程序中提取这些图片棋盘格的内角点,这样就得到了一批像素坐标,然后还需要这些点在棋盘格上的实际坐标,实际坐标是什么,可以看下图,默认提取的第一个角点为棋盘面的原点,建立坐标系,Z轴是垂直其盘面的,每一个棋盘格的尺寸需要知道,这样依次得到内角点在棋盘格坐标系中的实际坐标






*
采集图像注意事项:1.标定板要完整的出现在棋盘格中2.采集多少张合适,大多数博客说多一点好,我一般是20-25张左右3.采集的技巧,我介绍一下我是怎么采集的:标定板占视野的四分之一左右较好,分别在视野的左上右上左下右下以及中间五个点进行采集,每个点采集五张,五张分别是跟镜头平行,与镜头倾斜向下,与镜头倾斜向上,与镜头倾斜向左,与镜头倾斜向右,倾斜的角度自己把握,不能太斜,不利于提取角点,也不能太小,不然最后矫正的效果不好
*
在上面的过程中我没有涉及相机的畸变问题,这个是需要考虑的,因为相机一般都有畸变,需要进行矫正,畸变系数也可以算是我们需要求的内参,请自行查阅,如果有时间,以后会介绍。
<>手眼标记(眼在手外)

* 手眼标定

这里我主要介绍的是眼在手上的标定过程,这里借用一张图,手眼标定的目的就是得到转换关系D,也就是相机坐标系在机械臂基座中的位姿,也就是说我们把像素坐标和机械臂末端执行器的坐标都统一到机械臂基座坐标系中,这样才能完成一个完整的标定过程,下图中可以知道
{B} =
AxBxCx{C},A、B、C分别是机械臂末端执行器在基座的位姿,标定板坐标系在机械臂末端的位姿,相机坐标系在标定板的位姿(外参矩阵的逆),其中B是不变且未知的,求B就是经典的AX=XB的问题,有很多方法,例如Tsai两步法,求出B就可以得到矩阵D

友情链接
KaDraw流程图
API参考文档
OK工具箱
云服务器优惠
阿里云优惠券
腾讯云优惠券
华为云优惠券
站点信息
问题反馈
邮箱:[email protected]
QQ群:637538335
关注微信