相机标定是机器人视觉中非常重要的一步,可以帮助机器人转换识别到的视觉信息,从而完成后续的控制工作,例如视觉抓取等等。 笔者做过一些机器人手眼标定的工作,在此用尽量简单的语言来描述下机器人手眼标定的流程。本文的目的在于让大家对于相机标定有一个感性的认知,能够知道不同条件下机器人手眼标定的流程,具体的实现方法及技术细节还需要大家自行google。
1. 坐标系标定通用方法
机器人手眼标定其实就是两个坐标系之间转换关系的标定。假设现在有两个坐标系robot和camera,并且我们已知对应的几个固定点
[1]
上式中
只要学过线性代数的同学应该都清楚,式[1]相当于就是一个N元一次方程,只要点
[2]
计算出来的坐标变换矩阵便可以直接应用于后续的坐标变换。现在计算出来的矩阵允许坐标进行旋转,平移,以及任意方向的缩放。如果想要把这个坐标矩阵变成刚性的变换矩阵,只需要将其左上角的旋转矩阵正交化即可,但是加了这个约束后有可能降低坐标变换精度,即刚性变换矩阵约束太多,造成欠拟合。
当坐标变换存在非线性变换时,我们也可以设计并训练一个神经网络
[3]
当然一般情况下,式[2]中的线性矩阵便足以描述机器人和相机之间的坐标转换关系。引入神经网络进行非线性拟合,训练集的拟合精度会非常高,但是当训练点个数不足的时候,会发生过拟合,使得实际测试时拟合精度反而降低。
通过以上的计算我们可以知道,只要我们能够同时测量出来固定点
2. 相机放置在固定位置,与机器人分开(eye-to-hand)