python可以手眼定标吗_相机标定(一):机器人手眼标定

相机标定是机器人视觉中非常重要的一步,可以帮助机器人转换识别到的视觉信息,从而完成后续的控制工作,例如视觉抓取等等。 笔者做过一些机器人手眼标定的工作,在此用尽量简单的语言来描述下机器人手眼标定的流程。本文的目的在于让大家对于相机标定有一个感性的认知,能够知道不同条件下机器人手眼标定的流程,具体的实现方法及技术细节还需要大家自行google。

1. 坐标系标定通用方法

机器人手眼标定其实就是两个坐标系之间转换关系的标定。假设现在有两个坐标系robot和camera,并且我们已知对应的几个固定点

equation?tex=%5Cbf%7Bp%7D 在这两个坐标系的坐标

equation?tex=%5E%5Ctext%7Brobot%7D%5Cbf%7Bp%7D

equation?tex=%5E%5Ctext%7Bcamera%7D%5Cbf%7Bp%7D 。那么根据坐标系转换公式,我们可以得到:

[1]

equation?tex=%5E%5Ctext%7Brobot%7D%5Cbf%7Bp%7D%3D%5E%5Ctext%7Brobot%7DT_%5Ctext%7Bcamera%7D~%5E%5Ctext%7Bcamera%7D%5Cbf%7Bp%7D

上式中

equation?tex=%5E%5Ctext%7Brobot%7DT_%5Ctext%7Bcamera%7D 就代表我们希望求出来的相机到机器人的转换矩阵。

equation?tex=%5E%5Ctext%7Brobot%7D%5Cbf%7Bp%7D

equation?tex=%5E%5Ctext%7Bcamera%7D%5Cbf%7Bp%7D 为补1后的“齐次坐标”:

equation?tex=%5Bx%2C+y%2C+z%2C+1%5D%5ET ,这样我们的齐次坐标变换矩阵

equation?tex=%5E%5Ctext%7Brobot%7DT_%5Ctext%7Bcamera%7D 便可以同时包含旋转以及平移。

只要学过线性代数的同学应该都清楚,式[1]相当于就是一个N元一次方程,只要点

equation?tex=%5Cbf%7Bp%7D 的个数大于我们求解的转换矩阵维度同时这些点线性不相关,我们便可以通过伪逆矩阵计算出来

equation?tex=%5E%5Ctext%7Brobot%7DT_%5Ctext%7Bcamera%7D

[2]

equation?tex=%5E%5Ctext%7Brobot%7DT_%5Ctext%7Bcamera%7D%3D%5E%5Ctext%7Brobot%7D%5Cbf%7Bp%7D+~%28%5E%5Ctext%7Bcamera%7D%5Cbf%7Bp%7D%29%5E%7B-1%7D

计算出来的坐标变换矩阵便可以直接应用于后续的坐标变换。现在计算出来的矩阵允许坐标进行旋转,平移,以及任意方向的缩放。如果想要把这个坐标矩阵变成刚性的变换矩阵,只需要将其左上角的旋转矩阵正交化即可,但是加了这个约束后有可能降低坐标变换精度,即刚性变换矩阵约束太多,造成欠拟合。

当坐标变换存在非线性变换时,我们也可以设计并训练一个神经网络

equation?tex=T_%5Ctext%7Bnet%7D 直接拟合两组坐标之间的关系:

[3]

equation?tex=%5E%5Ctext%7Brobot%7D%5Cbf%7Bp%7D%3DT_%5Ctext%7Bnet%7D%EF%BC%88%5E%5Ctext%7Bcamera%7D%5Cbf%7Bp%7D%EF%BC%89

当然一般情况下,式[2]中的线性矩阵便足以描述机器人和相机之间的坐标转换关系。引入神经网络进行非线性拟合,训练集的拟合精度会非常高,但是当训练点个数不足的时候,会发生过拟合,使得实际测试时拟合精度反而降低。

通过以上的计算我们可以知道,只要我们能够同时测量出来固定点

equation?tex=%5Cbf%7Bp%7D 在两个坐标系的坐标

equation?tex=%5E%5Ctext%7Brobot%7D%5Cbf%7Bp%7D

equation?tex=%5E%5Ctext%7Bcamera%7D%5Cbf%7Bp%7D 并且测量出来多组数据,我们就可以很方便地计算出来坐标变换矩阵。当然在实际过程中我们有可能很难同时测量出来固定点

equation?tex=%5Cbf%7Bp%7D 在两个坐标系的坐标,在后面我会分相机和机器人的情况讨论如何用一些小trick来尽量实现这个测量目标,如何进行标定,以及如何进行标定精度的验证。

2. 相机放置在固定位置,与机器人分开(eye-to-hand)Fig 1. 机器人eye-to-hand标定。

我们应该养成一个习惯,即遇到问题时先考虑我们的待求量和已知量。如Fig 1 所示。在eye-to-hand的问题中,待求量为相机到机器人基座坐标系的固定转换矩阵

  • 0
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值