手眼标定(EyeToHand)推导

标题原理推导

机器人+标定板+相机
Base为基坐标系(B),工具末端坐标系(T),标定板为Mark坐标系(M),相机坐标系(C)
在眼在手外的时候,其实是要求解 C B A ^{B}_{C}A CBA 相机坐标系到Base基坐标系下的转换关系。
标定板上目标点坐标存在如下关系: T B A ∗ M T A = C B A ∗ M C A ^{B}_{T}A*^{T}_{M}A=^{B}_{C}A*^{C}_{M}A TBAMTA=CBAMCA → \quad \rightarrow \quad M T A = B T A ∗ C B A ∗ M C A ^{T}_{M}A=^{T}_{B}A*^{B}_{C}A*^{C}_{M}A MTA=BTACBAMCA

已知标定板与机械臂末端的相对位置固定不变,,即 M T A ^{T}_{M}A MTA 固定不变。
因此每个姿态下上式均成立: M T A = B T A i ∗ C B A ∗ M C A i ^{T}_{M}A=^{T}_{B}A_{i}*^{B}_{C}A*^{C}_{M}A_{i} MTA=BTAiCBAMCAi

当i=1,i=2时,存在:
B T A 1 ∗ C B A ∗ M C A 1 = B T A 2 ∗ C B A ∗ M C A 2 ^{T}_{B}A_{1}*^{B}_{C}A*^{C}_{M}A_{1} =^{T}_{B}A_{2}*^{B}_{C}A*^{C}_{M}A_{2} BTA1CBAMCA1=BTA2CBAMCA2
→ \quad \rightarrow \quad
( B T A 2 ) − 1 ∗ B T A 1 ∗ C B A = C B A ∗ M C A 2 ∗ ( M C A 1 ) − 1 (^{T}_{B}A_{2})^{-1}*^{T}_{B}A_{1}*^{B}_{C}A=^{B}_{C}A*^{C}_{M}A_{2} *(^{C}_{M}A_{1} )^{-1} (BTA2)1BTA1CBA=CBAMCA2(MCA1)1
→ \quad \rightarrow \quad
T B A 2 ∗ B T A 1 ∗ C B A = C B A ∗ M C A 2 ∗ C M A 1 ^{B}_{T}A_{2}*^{T}_{B}A_{1}*^{B}_{C}A=^{B}_{C}A*^{C}_{M}A_{2} *^{M}_{C}A_{1} TBA2BTA1CBA=CBAMCA2CMA1

对于每两个姿态都存在上式,组成一个AX=XB的矩阵方程,X为 X = C B A 1 = C B A 2 X=^{B}_{C}A_{1}=^{B}_{C}A_{2} X=CBA1=CBA2即标定的手眼矩阵。

求解AX=XB,方法不止一种,这里列举一种:

对于AX=XB: [ R A T A 0 1 ] ∗ [ R X T X 0 1 ] = [ R X T X 0 1 ] ∗ [ R B T B 0 1 ] \begin{bmatrix} R_{A}& T_{A} \\0&1\end{bmatrix}*\begin{bmatrix} R_{X}& T_{X} \\0&1\end{bmatrix}=\begin{bmatrix} R_{X} &T_{X} \\0&1\end{bmatrix}*\begin{bmatrix} R_{B}& T_{B} \\0&1\end{bmatrix} [RA0TA1][RX0TX1]=[RX0TX1][RB0TB1]

展开:
{ R A ∗ R X = R X ∗ R B ( 1 ) R A ∗ T X + T A = R X ∗ T B + T X ( 2 ) \{\begin{aligned}R_A*R_X=R_X*R_B \quad (1) \\R_A*T_X+T_A=R_X*T_B+T_X \quad (2)\end{aligned} {RARX=RXRB(1)RATX+TA=RXTB+TX(2)
对于(1)等式两边同时乘以单位阵,然后对矩阵向量化得:
v e c ( R A ∗ R X ∗ I ) = v e c ( I ∗ R X ∗ R B ) → ( R A ⊗ I T ) ∗ v e c ( R X ) = ( I ⊗ R B T ) ∗ v e c ( R X ) → ( R A ⊗ I T − I ⊗ R B T ) ∗ v e c ( R X ) = 0 vec(R_A*R_X*I)=vec(I*R_X*R_B) \quad\rightarrow\quad (R_{A} \otimes I^T)*vec(R_X)=(I \otimes R_B^T)*vec(R_X)\quad\rightarrow\quad (R_{A} \otimes I^T-I \otimes R_B^T)*vec(R_X)=0 vec(RARXI)=vec(IRXRB)(RAIT)vec(RX)=(IRBT)vec(RX)(RAITIRBT)vec(RX)=0

此时转换成AX=0的问题,单纯用SVD求奇异解便可得到 R X R_X RX, 将 R X R_X RX带入(2)式求,至此求解出需要的手眼矩阵 C B A ^{B}_{C}A CBA

<think>好的,用户想了解手眼标定eye-to-hand)的原理和实现方法,特别是在机器人或计算机视觉中的应用。首先,我需要回忆手眼标定的基本概念,区分eye-to-handeye-in-hand两种配置。eye-to-hand是相机固定在环境中,而机械臂移动,标定目标是确定相机坐标系与机械臂基座坐标系的关系。 接下来,要解释标定的核心原理,即通过多个位姿的数据采集,建立转换方程。AX=XB的问题,这里A是机械臂末端执行器的运动变换,B是相机观察到的标定板的运动变换,X是需要求解的基座到相机的变换矩阵。需要详细说明这个方程是如何推导出来的,以及如何解这个方程。 然后,实现步骤需要分点说明:数据采集、方程构建、求解方法(如Tsai-Lenz、Daniilidis方法)、验证与优化。可能还需要提到标定板的类型,比如棋盘格或ArUco码,以及如何获取高精度的数据。 还要考虑用户可能的疑问,比如为什么需要多个位姿,标定误差的来源,如何评估标定精度,以及实际应用中的注意事项。需要确保回答覆盖数学推导和实际应用,结合机器人学和计算机视觉的知识。 最后,根据用户提供的引用,检查是否有相关文献可以引用,比如引用[2]中提到的鱼眼镜头和IMU传感器,可能在实现标定时增加视场角和鲁棒性,可以自然地融入回答中。同时,生成的相关问题需要引导用户进一步学习,如标定误差分析、不同算法的比较、与eye-in-hand的区别等。</think>### 手眼标定Eye-to-Hand)的原理与实现 #### 一、基本原理 手眼标定Eye-to-Hand)的目标是确定相机坐标系(固定在环境中)与机器人基座坐标系之间的刚性变换关系$T_{base}^{cam}$。其核心原理可归纳为: $$ T_{base}^{cam} \cdot T_{tool}^{base} = T_{marker}^{cam} \cdot T_{tool}^{marker} $$ 其中: - $T_{tool}^{base}$表示机械臂末端执行器相对于基座的运动(通过关节编码器获取) - $T_{marker}^{cam}$表示标定板相对于相机的位姿(通过相机图像计算) - $T_{tool}^{marker}$为标定板与末端执行器的固定变换(需预先标定) 通过采集多组位姿数据,可构建线性方程组求解$T_{base}^{cam}$,形成经典的$AX=XB$问题[^1]。 #### 二、实现步骤 1. **数据采集**: - 固定标定板于机械臂末端 - 控制机械臂移动至不同位姿 - 同步记录:末端执行器的关节参数(计算$T_{tool}^{base}$)和相机拍摄的标定板图像(计算$T_{marker}^{cam}$) 2. **标定方程构建**: ```python def build_equations(poses_base, poses_cam): A = [] # 机械臂运动变换 B = [] # 相机观测变换 for i in range(1, len(poses_base)): A_i = inv(poses_base[i-1]) @ poses_base[i] B_i = inv(poses_cam[i-1]) @ poses_cam[i] A.append(A_i) B.append(B_i) return A, B ``` 3. **求解方法**: - **Tsai-Lenz算法**:利用旋转矩阵的轴角表示构建线性方程 - **Daniilidis方法**:采用四元数描述旋转,通过SVD分解求解 - **非线性优化**:使用李代数参数化,最小化重投影误差 4. **验证与优化**: - 重投影误差分析:$$ e = \frac{1}{N}\sum_{i=1}^N ||p_i - \pi(T_{base}^{cam} \cdot T_{tool}^{base} \cdot p_{tool})||_2 $$ - 使用RANSAC剔除异常数据点 - 考虑温度、机械间隙等环境因素(参考[^2]中IMU的鲁棒性设计思路) #### 三、应用场景 1. 工业机器人视觉引导(如装配、焊接) 2. 手术机器人导航系统 3. 增强现实中的虚实注册 4. 移动机器人环境感知(结合[^2]的广角视觉方案可提升标定鲁棒性)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值