文章目录
简介
机械臂在运动时,往往需要配合视觉信息进行目标的定位或识别,这就涉及到如何将相机坐标系(Camera Frame)下的物体转换到机械臂自身的坐标系下(Base Frame)。这一问题一般通过手眼标定(Hand-Eye Calibration)解决,其中的“手”即为机械臂,“眼”即为相机。
具体的标定方式还与手眼之间的安装方式有关,这里大体分为两类。其一,相机安装在机械臂的末端上,跟随机械臂一起运动,这种一般称为In-Hand Camera。其二,相机固定安装在某个位置,不随机械臂运动,这种一般称为Fixed Camera或Global Camera。下面分别对两张手眼安装形式的标定进行介绍。
In-Hand Camera
如下图所示,In-Hand Camera的标定主要是为了求出相机与机械臂末端夹具(End-effector)之间的变换关系,一般是一个大小为4x4的刚体变换矩阵。
令end-effector在base frame下的位姿为EBT,即末端位姿,这可以从机械臂输出数据中读出,一般视为精确值。标定时,将一个已知精确大小的标定板(比如棋盘格)固定放置,然后让机械臂运动,以使相机可以从多个不同角度拍摄标定板图像,拍摄图像的同时,要记录当时的机械臂末端位姿。假设相机内参已知,每一张标定板图像都可以算出相机(C)在标定板(P)下的位姿CPT. 这样每一个EBT都对应一个CPT。现在设相机在end-effector下的位姿为CET,标定板在base frame下的位姿为PBT,他们之间存在如下关系
EBTiCET=PBTCPTi
其中CET和PBT是未知量。
初看,这是AX=ZB形式的方程,虽然存在一些解这类方程的方法,但根据个人经验,条件都比较苛刻,数值稳定性不佳。实际上,在上式中,我们并不关心PBT,可以想办法将其消去。显然有
EBTiCETPCTi=PBT=EBTjCETPCTj
既
EBTiCETPCTi=EBTjCETPCTj
整理后得
BETjEBTiCET=CETPCTjCPTi
BETjEBTi实际上就是两个位姿之间的相对变换,PCTjCPTi同理,因此上式的未知数只有我们关心的CET一个,方程变为了典型的AX=XB的形式。这类方程有很多解法,比如Tsai方法,dual-quaternion方法以及Kronecker Product方法等,实测下来都比较稳定。其中Kronecker product方法实现简单明了,在一些比较中也优于其他方法,在此着重介绍。
设方程的形式为AX=XB,其中A,B,X∈SE(3),则方程可以分成两个部分
RARXRAtX+tA=RXRB=RXtB+tX
首先解只含有旋转矩阵的部分。用向量化算子vec(⋅)作用于等式两边,可得
(IT⊗RA)vec(RX)=(RBT⊗I)vec(RX)
即
(I⊗RA−RBT⊗I)vec(RX)=0
多组RA和RB直接按照(I⊗RA−RBT⊗I)计算后堆叠起来即可,设堆叠后的矩阵为K∈R9n×9, vec(RX)是9x1的矢量,上式就变为一个简单的齐次线性方程Kvec(RX)=0. 对K做奇异值分解有K=UKΣKVKT,则线性方程的解即为VK的最后一列(非零最小二乘解)。将解出的vec(RX)还原回3x3矩阵(设为RX′)后,并不一定是正交旋转阵,需要再次对其进行奇异值分解,得RX′=UΣVT,最终取RX=UVT作为原方程的解。其中Σ在一定程度上可以反映标定结果的好坏,良好的标定其Σ的对角元素都应该非常接近甚至完全相等。
求出RX后,tX的求解也变成了一个解线性方程的问题,即
(RA−I)tX=RXtB−tA
堆叠后求得tX的最小二乘解。最终
X=(RX0tX1)
Fixed Camera
如下图所示,对Fixed Camera进行手眼标定时,主要关注相机(C)到Base frame(B)之间的变换。一般会将标定板固定在机械臂的end-effector上,然后运动机械臂,使相机能从不同视角拍摄到标定板,每拍摄图像时,同时记录当时机械臂末端的位姿。
使用In-hand camera中的符号体系,可以发现如下关系
EBTiPET=CBTPCTi
同理,我们不关心PET,用上一节中同样的方式将其消去,有
BETiCBTPCTi=PET=BETjCBTPCTj
即
EBTjBETiCBT=CBTPCTjCPTi
其中EBTjBETi和PCTjCPTi都是相对变换,上式的未知数只有CBT,因此方程又变为了AX=XB的形式,可使用与In-hand camera相同的方法求解。
非线性优化
一般情况下,上述代数方法的标定结果已经足够好了,不过仍然可以使用非线性优化的方式进一步改善。以In-hand camera为例,可以使用以下代价函数(cost function),同时优化CET和PBT使代价函数最小
i∑∥EBTiCET−PBTCPTi∥2
也可以消去不关心的PBT后,仅优化CET使下式最小
i,j∑∥BETjEBTiCET−CETPCTjCPTi∥2
优化后的结果能改善多少完全取决于数据。根据个人经验,在数据质量可靠的情况下,使用代数方法的结果作为优化初值,迭代10次左右就会收敛。
References
-
A New Technique for Fully Autonomous and Efficient 3D Robotics Hand/Eye Calibration
-
Simultaneous robot-world and hand-eye calibration using dual-quaternion and Kronecker product