Thanks Mark W. Spong for his great work of Robot Modelling and Control.

相机外部参数与内部参数

相机坐标系与像素坐标系

为简化公式,用以相机为中心的坐标系来表示物体坐标是十分有效的。因此,定义相机坐标系如下:包含检测阵列的平面定义为图像平面;轴线 xc 和 yc组成图像平面的坐标基,轴线 zc 垂直于图像平面且与光轴对准,即它穿过镜头的焦点;相机坐标系的原点位于图像平面后距离为一个焦距 λλ 的位置;该店被称为投影中心 (center of projection);光轴与图像平面的交点被称为主点(principal point)。

图像平面中的任何一点都将具有坐标 (u,v,λ),我们用 (u,v) 来指代图像平面坐标(image plane coordinate)。令 PP 表示相对于相机参考系坐标为 (x,y,z)的一个点,令 pp 表示 PP 在图像平面内的投影,其坐标为 (u,v,λ)。在针孔模型假设下:

这些被称为 透视投影方程(perspective projection)。

图像是一个离散的灰度值阵列,我们使用 (r,c)(r,c) 来表示一个像素的行索引和列索引。下面我们确定平面坐标 (u,v)和像素坐标 (r,c)之间的关系。像素坐标系的原点通常被取在图像的边角处,使用 (or,oc)来表示包含主点的像素的像素坐标。一般情况下感测元件不具有单位尺寸也未必是正方形。使用 sx 和 sy 来分别表示一个像素在水平和垂直两个方向上的尺度。由于我们通常将相机投影中心放在图像后方,像素阵列的水平和垂直轴线与相机坐标系的水平和垂直轴线方向往往相反。基于以上描述,我们得到:

这种关系仅是一种近似,由于像素坐标是整数,现实中可以四舍五入。

外部参数

下面我们推导如何让某一点 PP 的坐标 (x,y,z)与其在图像中的像素坐标 (r,c) 联系起来,这叫做相机的标定。在典型的机器人应用中,任务往往是相对于世界坐标系进行表达的,如果知道了相机坐标系相对于世界坐标系的位置和姿态,我们有:

图像中物体的位置和方向

下面我们介绍如何根据图像得到被操作物体的位置和方向。

图像矩

图像矩是定义在图像上的函数,用来描述图像中物体的形状大小等信息,对于图像中的第 个物体, 其 j 矩记作 ,定义如下:

物体的方向

我们将图像中某个物体的方向定义为穿过该物体轴线的方向,此时使得物体关于轴线的二阶矩最小。这个轴线是最小惯量轴线的二维等价。对于图像中一条给定的直线,物体关于该线的二阶矩定义如下:

基于图像的视觉伺服控制

基于视觉的控制所面临的问题是:从图像中提取出相关且鲁棒的参数集,用来实时控制机械臂运动。对于相机的选择问题,我们只考虑带有固定焦距镜头的单个相机系统。

首先我们需要确定在哪里放置相机,相机可以放置在一个固定的位置,也可以连接到机器人上,这些方案分别被称为固定相机位形(fixed camera)和手眼相机位形(eye-in-hand)。在固定相机位形中,由于视场不改变,即相机与工作空间之间的几何关系固定,并且可以通过离线标定确定这种关系。然而,当机械臂在工作空间移动时,可能会遮住相机的视场,这对于有高精度需求任务的影响十分严重。在手眼位形中,相机可以不受遮挡地观察末端执行器的运动。然而,相机与工作空间的几何关系随着机械臂的运动而发生改变。下面我们既考虑手眼相机位形。

解决基于视觉的控制问题有两种方法,区别在于如何使用视觉系统所提供的数据。第一种被称为基于位置的视觉伺服控制(position-based visual servo control)。其中,视觉数据被用于构建关于世界的部分三维表示。该方法的难点在于实时建立三维描述。特别是,这些方法相对于相机标定误差的表现并不鲁棒。此外,该方法也没有对图像本身的直接控制。因此,基于位置的各种方法的一个共同问题是:相机的运动可能使用户感兴趣的对象离开视场。
第二种方法被称为基于图像的视觉伺服控制(image-based visual servo control)。它直接使用图像数据来控制机器人运动。使用直接在图像中测量的量来定义一个误差函数,同时建立一个控制律来将误差直接映射到机器人运动中。最常见的方法是使用物体上易检测的点作为特征点。下面我们仅考虑基于图像的视觉伺服控制方法。

交互作用矩阵

图像特征向量与相机速度之间的关系式线性子空间之间的一个线性映射,我们将对这个概念进行严格解释。令 s(t)表示图像中的一个可测量的特征值向量,其导数 s˙(t) 被称为图像特征速度(image feature velocity)。对于图像中的单点:

该式中的矩阵是一个点的交互作用矩阵, 即:

基于图像的控制律

比例控制器