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)。令
P
表示相对于相机参考系坐标为
图像是一个离散的灰度值阵列,我们使用
(r,c)
来表示一个像素的行索引和列索引。下面我们确定平面坐标
(u,v)
和像素坐标
(r,c)
之间的关系。像素坐标系的原点通常被取在图像的边角处,使用
(or,oc)
来表示包含主点的像素的像素坐标。一般情况下感测元件不具有单位尺寸也未必是正方形。使用
sx
和
sy
来分别表示一个像素在水平和垂直两个方向上的尺度。由于我们通常将相机投影中心放在图像后方,像素阵列的水平和垂直轴线与相机坐标系的水平和垂直轴线方向往往相反。基于以上描述,我们得到:
外部参数
下面我们推导如何让某一点
P
的坐标
内部参数
从世界坐标系到像素坐标系可以通过以下公式得到:
图像中物体的位置和方向
下面我们介绍如何根据图像得到被操作物体的位置和方向。
图像矩
图像矩是定义在图像上的函数,用来描述图像中物体的形状大小等信息,对于图像中的第
k
个物体, 其
质心和中心矩
计算一个物体的质心时,一阶矩十分有用:
物体的位置由 质心(centroid)定义。一个物体的质心为坐标等于 (r¯,c¯) 的点,并满足以下条件:如果一个物体的所有质量集中在点 (r¯,c¯) 处,其一阶矩保持不变。因此,我们有:
我们可以相对于物体的质心来计算图像矩,通过这种方式,我们可以得到某些不随物体平移而变化的特征。这些图像矩被称为 中心矩。第 k 个物体的
物体的方向
我们将图像中某个物体的方向定义为穿过该物体轴线的方向,此时使得物体关于轴线的二阶矩最小。这个轴线是最小惯量轴线的二维等价。对于图像中一条给定的直线,物体关于该线的二阶矩定义如下:
基于图像的视觉伺服控制
基于视觉的控制所面临的问题是:从图像中提取出相关且鲁棒的参数集,用来实时控制机械臂运动。对于相机的选择问题,我们只考虑带有固定焦距镜头的单个相机系统。
首先我们需要确定在哪里放置相机,相机可以放置在一个固定的位置,也可以连接到机器人上,这些方案分别被称为固定相机位形(fixed camera)和手眼相机位形(eye-in-hand)。在固定相机位形中,由于视场不改变,即相机与工作空间之间的几何关系固定,并且可以通过离线标定确定这种关系。然而,当机械臂在工作空间移动时,可能会遮住相机的视场,这对于有高精度需求任务的影响十分严重。在手眼位形中,相机可以不受遮挡地观察末端执行器的运动。然而,相机与工作空间的几何关系随着机械臂的运动而发生改变。下面我们既考虑手眼相机位形。
解决基于视觉的控制问题有两种方法,区别在于如何使用视觉系统所提供的数据。第一种被称为基于位置的视觉伺服控制(position-based visual servo control)。其中,视觉数据被用于构建关于世界的部分三维表示。该方法的难点在于实时建立三维描述。特别是,这些方法相对于相机标定误差的表现并不鲁棒。此外,该方法也没有对图像本身的直接控制。因此,基于位置的各种方法的一个共同问题是:相机的运动可能使用户感兴趣的对象离开视场。
第二种方法被称为基于图像的视觉伺服控制(image-based visual servo control)。它直接使用图像数据来控制机器人运动。使用直接在图像中测量的量来定义一个误差函数,同时建立一个控制律来将误差直接映射到机器人运动中。最常见的方法是使用物体上易检测的点作为特征点。下面我们仅考虑基于图像的视觉伺服控制方法。
交互作用矩阵
图像特征向量与相机速度之间的关系式线性子空间之间的一个线性映射,我们将对这个概念进行严格解释。令
s(t)
表示图像中的一个可测量的特征值向量,其导数
s˙(t)
被称为图像特征速度(image feature velocity)。对于图像中的单点:
对于移动的相机观察空间中某一固定点这样的情形:
ξ 有6个自由度,然而只有 u 和
上述交互作用矩阵可以直观地被推广到多点情形:
基于图像的控制律
对于基于图像的控制,其目标位形通过图像特征的目标位形来定义,标记为
sd
。那么,图像误差函数由下式给出:
相机的运动
对于具有
k
个特征且相机速度
- 当
k=m
且矩阵
L
满秩时,
ξ=L−1s˙ 。 - 当
k<m
时,此时
L−1
不存在,系统是欠约束的。在这种情况下,我们无法观察的足够的特征速度以确定唯一的的相机运动
ξ
。这种情况下,我们可以借助伪拟给出解答:
ξ=L+s˙+(Im−L+L)b其中 L+=LT(LLT)−1 , b∈Rm 是任意向量。
- 当
k>m
且矩阵
L
满秩时,我们通常将会得到一个不一致的系统。在视觉伺服应用中,这意味着我们观察到比唯一确定的相机速度
ξ 所需更多的特征速度。在这种情况下,我们可以使用最小二乘解:ξ=L+s˙其中伪拟矩阵由下式给出L+=(LTL)−1LT
比例控制器
回忆之前对于相机速度与特征速度的描述:
当
由于依赖深度信息,我们往往无法知晓
L
或