五、眼手标定
眼手标定根据相机的安装方式不同,分别求解的是相机到机械手末端轴的坐标变换关系(相机在手上)
TTC
或相机到机械手底座的坐标变换关系(相机不在手上)
RTC
1、相机安装在机械手上
此种相机安装方式(Eye in hand),标定量为相机与机械手末端之间的关系。
标定方法: 固定标定板与机械手底座不变,移动机械手至两个位置1、2,分别记录两个位置下的相机图像,机械手位置。
假设空间中一物体(object),机械手需要使用(眼在手上的相机)拍摄物体,得到物体在图片中的位置Pimg(x,y),通过之前的单目相机标定,能够将此坐标转换到相机坐标系下的表示,即:
Pcam=CTO∗Pimg
然而,控制机械手抓取物体的动作,调整的是基于机械手底座(Robot)坐标系的xyzuvw变化,所以还需要求解相机坐标系到机械手底座坐标系的转换,即:
RTC=RTTTTC
RTT:机械手末端到机械手底座
TTC:相机到机械手末端
在已知机械手末端到机械手底座关系的条件下,未知量只有相机到机械手末端转换矩阵:
TTC
移动机械手分别到位置1与位置2,以标定板到底座的固定关系(转换关系不变),建立1、2两个位置下的恒等式。
令:
X=TTC
RTO=RT1T⋅X⋅CT1O=RT2T⋅X⋅CT2O
以上方程式的未知数只有X一个,可以将方程化成:
RT2T−1⋅RT1T⋅X⋅CT1O⋅CT1O−1=RT2T−1⋅RT2T⋅X⋅CT2O⋅CT1O−1
即:
RT1T⋅X=X⋅CT2O
RT2T−1⋅RT1T⋅X=X⋅CT2O⋅CT1O−1
化简为:
A⋅X=X⋅B
2、相机不安装在机械手上
此种相机安装方式(Eye to hand)需要将标定板固定在机械手末端,保持机械手末端(Tool)与物体(Object)的位置关系不变,标定量为相机到机械手底座之间的关系。
方法同 相机安装在机械手上,分别移动机械手到位置1与位置2,以标定板到机械手末端的固定关系(转换关系不变),建立1、2两个位置下的恒等式。
令:
X=RTC
TTO=TT1R⋅X⋅CT1O=TT2R⋅X⋅CT2O
以上方程式的未知数只有X一个,可以将方程化成:
TT2R−1⋅TT1R⋅X⋅CT1O⋅CT1O−1=TT2R−1⋅TT2R⋅X⋅CT2O⋅CT1O−1
化简为:
A⋅X=X⋅B
AX=XB的求解方法,暂时不列举,到这一步为止,就可以假设已经求出了X即眼手标定结果。
3、四轴tz的计算
Z_SCARA_Heigh 定义为四轴手的高度,在计算眼手关系时候粗略给定值。
拿所有位姿的第一个Toc来计算:
eye in hand: Tct * Toc = > Tot,提取Tot的Z分量z_calib=Tot[2,3],需要修正的tz=Z_SCARA_Heigh-z_calib
eye to hand:Tcr * Toc = > Tor,提取Tor的Z分量z_calib=Tor[2,3],需要修正的tz=Z_SCARA_Heigh-z_calib
Tcr * Toc => Tor,Trt * Tor => Tot,增加Z轴分量,Tot[2, 3] += tz,recalculate Tcr by Tcr = Ttr * Tot * Tco。
我们的是手移动到第一个标定目标位置Ttr的Z,
4、AXXB
计算X:定义Ransac模型,误差函数为min(Ax-xB),拟合函数(根据一组AB计算的X)为四元素法(具体待看)。
优化:使用lm优化X,使用levmar.levmar来实现。