手眼标定公式推理和代码,Tsai算法和Navy算法


最近因为工作原因需要用到手眼标定相关知识,在网上查了一番大部分文章都写得似懂非懂,感觉都是从别处copy过来,很少有人能清晰的描述整个完整流程,因此在这里对手眼标定的原理进行自己的推理,代码也在后面附上。

1. 问题建模(AX=XB)

在这里插入图片描述

假设 k \boldsymbol k k时刻,机械臂相对于世界坐标系的位姿为 A k \boldsymbol {A_k} Ak (末端到世界),相机相对于世界坐标系的位姿为 B k \boldsymbol {B_k} Bk (相机到世界),相机相对于机械臂的位姿 X \boldsymbol X X(相机到末端),那么有

A k X = B k \boldsymbol {A_k} \boldsymbol X = \boldsymbol {B_k} AkX=Bk

同样 k + 1 \boldsymbol {k+1} k+1时刻有

A k + 1 X = B k + 1 \boldsymbol {A_{k+1}} \boldsymbol X = \boldsymbol {B_{k+1}} Ak+1X=Bk+1

所有矩阵均属于SE3,两式联立,则有

( A k + 1 X ) − 1 A k X = B k + 1 − 1 B k + 1 A k + 1 − 1 A k X = X B k + 1 − 1 B k + 1 \begin{aligned} \boldsymbol {(A_{k+1} X)^{-1}} \boldsymbol {A_{k} X} &= \boldsymbol {B_{k+1}^{-1}}\boldsymbol B_{k+1}\\ \boldsymbol {A_{k+1}^{-1}} \boldsymbol {A_{k}} \boldsymbol X &= \boldsymbol X \boldsymbol {B_{k+1}^{-1}} \boldsymbol B_{k+1} \end{aligned} (Ak+1X)1AkXAk+11AkX=Bk+11Bk+1=XBk+11Bk+1

A = A k + 1 − 1 A k \boldsymbol A = \boldsymbol {A_{k+1}^{-1} A_{k}} A=Ak+11Ak B = B k + 1 − 1 B k \boldsymbol B = \boldsymbol {B_{k+1}^{-1} B_{k}} B=Bk+11Bk,则有

A X = X B \begin{equation} \boldsymbol {AX} = \boldsymbol {XB} \end{equation} AX=XB

其中 A \boldsymbol A A表示末端两个时刻之间的相对位姿态关系,可以由棋盘格或Tag码获取。 B \boldsymbol B B表示相机两个时刻之间的相对位姿态关系,可由机械臂读数获取。手眼标定即为利用不同时刻得到的末端和相机位姿来求解 X \boldsymbol X X

A = [ R A t A 0 1 ] , B = [ R B t B 0 1 ] , X = [ R X t X 0 1 ] \boldsymbol{A} = \begin{bmatrix} \boldsymbol{R_A} & \boldsymbol{t_A} \\ \boldsymbol{0} & 1 \end{bmatrix},\boldsymbol{B} = \begin{bmatrix} \boldsymbol{R_B} & \boldsymbol{t_B} \\ \boldsymbol{0} & 1 \end{bmatrix},\boldsymbol{X} = \begin{bmatrix} \boldsymbol{R_X} & \boldsymbol{t_X} \\ \boldsymbol{0} & 1 \end{bmatrix} A=[RA0tA1]B=[R

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值