ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

机械臂与相机的标定

2019-09-05 12:39:02  阅读:754  来源: 互联网

标签:PT RX 标定 相机 Tj vec Ti 机械 CT


文章目录

简介

​ 机械臂在运动时,往往需要配合视觉信息进行目标的定位或识别,这就涉及到如何将相机坐标系(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{}^B_ETEB​T,即末端位姿,这可以从机械臂输出数据中读出,一般视为精确值。标定时,将一个已知精确大小的标定板(比如棋盘格)固定放置,然后让机械臂运动,以使相机可以从多个不同角度拍摄标定板图像,拍摄图像的同时,要记录当时的机械臂末端位姿。假设相机内参已知,每一张标定板图像都可以算出相机(C)在标定板(P)下的位姿CPT{}^P_CTCP​T. 这样每一个EBT{}^B_ETEB​T都对应一个CPT{}^P_CTCP​T。现在设相机在end-effector下的位姿为CET{}^E_CTCE​T,标定板在base frame下的位姿为PBT{}^B_PTPB​T,他们之间存在如下关系
EBTiCET=PBTCPTi {}^B_ET_i{}^E_CT={}^B_PT{}^P_CT_i EB​Ti​CE​T=PB​TCP​Ti​
其中CET{}^E_CTCE​T和PBT{}^B_PTPB​T是未知量。

​ 初看,这是AX=ZBAX=ZBAX=ZB形式的方程,虽然存在一些解这类方程的方法,但根据个人经验,条件都比较苛刻,数值稳定性不佳。实际上,在上式中,我们并不关心PBT{}^B_PTPB​T,可以想办法将其消去。显然有
EBTiCETPCTi=PBT=EBTjCETPCTj {}^B_ET_i{}^E_CT{}^C_PT_i={}^B_PT={}^B_ET_j{}^E_CT{}^C_PT_j EB​Ti​CE​TPC​Ti​=PB​T=EB​Tj​CE​TPC​Tj​

EBTiCETPCTi=EBTjCETPCTj {}^B_ET_i{}^E_CT{}^C_PT_i={}^B_ET_j{}^E_CT{}^C_PT_j EB​Ti​CE​TPC​Ti​=EB​Tj​CE​TPC​Tj​
整理后得
BETjEBTiCET=CETPCTjCPTi {}^E_BT_j{}^B_ET_i{}^E_CT={}^E_CT{}^C_PT_j{}^P_CT_i BE​Tj​EB​Ti​CE​T=CE​TPC​Tj​CP​Ti​
BETjEBTi{}^E_BT_j{}^B_ET_iBE​Tj​EB​Ti​实际上就是两个位姿之间的相对变换,PCTjCPTi{}^C_PT_j{}^P_CT_iPC​Tj​CP​Ti​同理,因此上式的未知数只有我们关心的CET{}^E_CTCE​T一个,方程变为了典型的AX=XBAX=XBAX=XB的形式。这类方程有很多解法,比如Tsai方法,dual-quaternion方法以及Kronecker Product方法等,实测下来都比较稳定。其中Kronecker product方法实现简单明了,在一些比较中也优于其他方法,在此着重介绍。

​ 设方程的形式为AX=XBAX=XBAX=XB,其中A,B,XSE(3)A,B,X\in SE(3)A,B,X∈SE(3),则方程可以分成两个部分
RARX=RXRBRAtX+tA=RXtB+tX \begin{aligned} R_AR_X&=R_XR_B \\ R_At_X+t_A&=R_Xt_B+t_X \end{aligned} RA​RX​RA​tX​+tA​​=RX​RB​=RX​tB​+tX​​
首先解只含有旋转矩阵的部分。用向量化算子vec()\text{vec}(\cdot)vec(⋅)作用于等式两边,可得
(ITRA)vec(RX)=(RBTI)vec(RX) (I^T\otimes R_A)\text{vec}(R_X)=(R_B^T\otimes I)\text{vec}(R_X) (IT⊗RA​)vec(RX​)=(RBT​⊗I)vec(RX​)

(IRARBTI)vec(RX)=0 (I\otimes R_A-R_B^T\otimes I)\text{vec}(R_X)=0 (I⊗RA​−RBT​⊗I)vec(RX​)=0
多组RAR_ARA​和RBR_BRB​直接按照(IRARBTI)(I\otimes R_A-R_B^T\otimes I)(I⊗RA​−RBT​⊗I)计算后堆叠起来即可,设堆叠后的矩阵为KR9n×9K\in \mathbb{R}^{9n\times 9}K∈R9n×9, vec(RX)\text{vec}(R_X)vec(RX​)是9x1的矢量,上式就变为一个简单的齐次线性方程Kvec(RX)=0K\text{vec}(R_X)=0Kvec(RX​)=0. 对KKK做奇异值分解有K=UKΣKVKTK=U_K\Sigma_K V_K^TK=UK​ΣK​VKT​,则线性方程的解即为VKV_KVK​的最后一列(非零最小二乘解)。将解出的vec(RX)\text{vec}(R_X)vec(RX​)还原回3x3矩阵(设为RXR_X'RX′​)后,并不一定是正交旋转阵,需要再次对其进行奇异值分解,得RX=UΣVTR_X'=U\Sigma V^TRX′​=UΣVT,最终取RX=UVTR_X=UV^TRX​=UVT作为原方程的解。其中Σ\SigmaΣ在一定程度上可以反映标定结果的好坏,良好的标定其Σ\SigmaΣ的对角元素都应该非常接近甚至完全相等。

求出RXR_XRX​后,tXt_XtX​的求解也变成了一个解线性方程的问题,即
(RAI)tX=RXtBtA (R_A-I)t_X=R_Xt_B-t_A (RA​−I)tX​=RX​tB​−tA​
堆叠后求得tXt_XtX​的最小二乘解。最终
X=(RXtX01) X=\begin{pmatrix} R_X & t_X \\ 0 & 1 \end{pmatrix} X=(RX​0​tX​1​)

Fixed Camera

​ 如下图所示,对Fixed Camera进行手眼标定时,主要关注相机(C)到Base frame(B)之间的变换。一般会将标定板固定在机械臂的end-effector上,然后运动机械臂,使相机能从不同视角拍摄到标定板,每拍摄图像时,同时记录当时机械臂末端的位姿。
在这里插入图片描述
​ 使用In-hand camera中的符号体系,可以发现如下关系
EBTiPET=CBTPCTi {}^B_ET_i{}^E_PT={}^B_CT{}^C_PT_i EB​Ti​PE​T=CB​TPC​Ti​
同理,我们不关心PET{}^E_PTPE​T,用上一节中同样的方式将其消去,有
BETiCBTPCTi=PET=BETjCBTPCTj {}^E_BT_i{}^B_CT{}^C_PT_i={}^E_PT={}^E_BT_j{}^B_CT{}^C_PT_j BE​Ti​CB​TPC​Ti​=PE​T=BE​Tj​CB​TPC​Tj​

EBTjBETiCBT=CBTPCTjCPTi {}^B_ET_j{}^E_BT_i{}^B_CT={}^B_CT{}^C_PT_j{}^P_CT_i EB​Tj​BE​Ti​CB​T=CB​TPC​Tj​CP​Ti​
其中EBTjBETi{}^B_ET_j{}^E_BT_iEB​Tj​BE​Ti​和PCTjCPTi{}^C_PT_j{}^P_CT_iPC​Tj​CP​Ti​都是相对变换,上式的未知数只有CBT{}^B_CTCB​T,因此方程又变为了AX=XBAX=XBAX=XB的形式,可使用与In-hand camera相同的方法求解。

非线性优化

​ 一般情况下,上述代数方法的标定结果已经足够好了,不过仍然可以使用非线性优化的方式进一步改善。以In-hand camera为例,可以使用以下代价函数(cost function),同时优化CET{}^E_CTCE​T和PBT{}^B_PT{}PB​T使代价函数最小
iEBTiCETPBTCPTi2 \sum_i\Vert{}^B_ET_i{}^E_CT-{}^B_PT{}^P_CT_i\Vert^2 i∑​∥EB​Ti​CE​T−PB​TCP​Ti​∥2
也可以消去不关心的PBT{}^B_PTPB​T后,仅优化CET{}^E_CTCE​T使下式最小
i,jBETjEBTiCETCETPCTjCPTi2 \sum_{i,j}\Vert{}^E_BT_j{}^B_ET_i{}^E_CT-{}^E_CT{}^C_PT_j{}^P_CT_i\Vert^2 i,j∑​∥BE​Tj​EB​Ti​CE​T−CE​TPC​Tj​CP​Ti​∥2
优化后的结果能改善多少完全取决于数据。根据个人经验,在数据质量可靠的情况下,使用代数方法的结果作为优化初值,迭代10次左右就会收敛。

References

  1. A New Technique for Fully Autonomous and Efficient 3D Robotics Hand/Eye Calibration

  2. Simultaneous robot-world and hand-eye calibration using dual-quaternion and Kronecker product

  3. Optimal Hand-Eye Calibration

标签:PT,RX,标定,相机,Tj,vec,Ti,机械,CT
来源: https://blog.csdn.net/AIchipmunk/article/details/100554796

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有