【机器人手眼标定算法简介】

1. 引言

在工业自动化和机器人领域中,机械臂的精度和灵活性是其核心性能之一。为了实现高精度的操作,机械臂的"手眼系统"(即机械臂末端执行器与视觉传感器之间的几何关系)必须进行精确的标定。手眼标定是确定视觉传感器坐标系与机械臂末端执行器坐标系之间的转换关系的过程。本文将详细介绍手眼标定的基本概念、常用的标定算法以及实现步骤。

2. 手眼标定的基本概念

手眼标定通常分为两类:Eye-to-Hand和Eye-in-Hand。

  • Eye-in-Hand:视觉传感器安装在机械臂的末端执行器上,随机械臂一起运动,如图(a)所示。

  • Eye-to-Hand:视觉传感器固定在环境中,观察机械臂末端执行器的运动,如图(b)所示。

无论哪种配置,手眼标定的核心问题都是求解视觉传感器坐标系与机械臂末端执行器坐标系之间的转换矩阵。

3. 坐标系定义

{ W } \{W\} {W}: 世界坐标系 (World frame)
{ B } \{B\} {B}: 机械臂基座坐标系 (Base frame)
{ F } \{F\} {F}: 机械臂法兰坐标系 (Flange frame)
{ C } \{C\} {C}: 相机坐标系 (Cam frame)
{ P } \{P\} {P}: 棋盘格标定板或April Tag坐标系 (Chess frame)
T w b ∈ S E ( 3 ) T_{wb} \in SE(3) Twb∈SE(3): 基座坐标系 { B } \{B\} {B}在世界坐标系 { W } \{W\} {W}下的4x4空间变换矩阵
θ i ∈ R n \theta_i \in R^n θi∈Rn: i i i时刻的机器人关节角, θ i = θ 1 i , θ 2 i , . . . , θ n i \theta_i = \\theta_{1i}, \\theta_{2i}, ..., \\theta_{ni} θi=θ1i,θ2i,...,θni, n n n为关节数量
T b f ( θ i ) ∈ S E ( 3 ) T_{bf}(\theta_i) \in SE(3) Tbf(θi)∈SE(3): 关节角为 θ i \theta_i θi时,法兰坐标系 { F } \{F\} {F}在 { B } \{B\} {B}系下的空间变换矩阵,可简写成 T b f i T_{bf}^i Tbfi
T c p i ∈ S E ( 3 ) T_{cp}^i \in SE(3) Tcpi∈SE(3): 关节角为 θ i \theta_i θi时,棋盘格坐标系 { P } \{P\} {P}在相机坐标系 { C } \{C\} {C}的空间变换矩阵,由相机测量得到
T f c ∈ S E ( 3 ) T_{fc} \in SE(3) Tfc∈SE(3): 相机坐标系 { C } \{C\} {C}在法兰坐标系 { F } \{F\} {F}的空间变换矩阵,对Eye-in-Hand类型来说,是需要标定的参数
T f p ∈ S E ( 3 ) T_{fp} \in SE(3) Tfp∈SE(3): 棋盘格坐标系 { P } \{P\} {P}在法兰坐标系 { F } \{F\} {F}的空间变换矩阵
T b c ∈ S E ( 3 ) T_{bc} \in SE(3) Tbc∈SE(3): 相机坐标系 { C } \{C\} {C}在基座坐标系 { B } \{B\} {B}的空间变换矩阵,对Eye-to-Hand类型来说,是需要标定的参数

4. 系统建模

4.1 Eye-in-Hand建模

如图(a)所示,Eye-in-Hand模式下,棋盘格或April Tag标签的位置固定(即 T w p T_{wp} Twp是定值),机械臂带着相机在不同姿态下进行拍照,需要标定的参数是相机相对法兰的固定坐标系 T f c T_{fc} Tfc。考虑 i i i和 j j j两个时刻,可得:
T w p = T w b ⋅ T b f ( θ i ) ⋅ T f c ⋅ T c p i , T w p = T w b ⋅ T b f ( θ j ) ⋅ T f c ⋅ T c p j , \begin{align} T_{wp} &= T_{wb} \cdot T_{bf}(\theta_i) \cdot T_{fc} \cdot T_{cp}^i, \tag{1} \\ T_{wp} &= T_{wb} \cdot T_{bf}(\theta_j) \cdot T_{fc} \cdot T_{cp}^j, \tag{2} \end{align} TwpTwp=Twb⋅Tbf(θi)⋅Tfc⋅Tcpi,=Twb⋅Tbf(θj)⋅Tfc⋅Tcpj,(1)(2)

联立方程后可得:
T b f ( θ i ) ⋅ T f c ⋅ T c p i = T b f ( θ j ) ⋅ T f c ⋅ T c p j , (3) T_{bf}(\theta_i) \cdot T_{fc} \cdot T_{cp}^i = T_{bf}(\theta_j) \cdot T_{fc} \cdot T_{cp}^j, \tag{3} Tbf(θi)⋅Tfc⋅Tcpi=Tbf(θj)⋅Tfc⋅Tcpj,(3)

即:
T b f − 1 ( θ i ) ⋅ T b f ( θ j ) ⋅ T f c = T f c ⋅ T c p i ⋅ T c p j − 1 . (4) T_{bf}^{-1}(\theta_i) \cdot T_{bf}(\theta_j) \cdot T_{fc} = T_{fc} \cdot T_{cp}^i \cdot {T_{cp}^j}^{-1}. \tag{4} Tbf−1(θi)⋅Tbf(θj)⋅Tfc=Tfc⋅Tcpi⋅Tcpj−1.(4)

令 T a i j = T b f − 1 ( θ i ) ⋅ T b f ( θ j ) T_{a_{ij}}=T_{bf}^{-1}(\theta_i) \cdot T_{bf}(\theta_j) Taij=Tbf−1(θi)⋅Tbf(θj), T c i j = T c p i ⋅ T c p j − 1 T_{c_{ij}}=T_{cp}^i \cdot {T_{cp}^j}^{-1} Tcij=Tcpi⋅Tcpj−1, T b = T f c T_b = T_{fc} Tb=Tfc,则Eq(4)可简化为:
T a i j ⋅ T b = T b ⋅ T c i j . (5) T_{a_{ij}} \cdot T_b = T_b \cdot T_{c_{ij}}. \tag{5} Taij⋅Tb=Tb⋅Tcij.(5)

4.2 Eye-to-Hand建模

如图(b)所示,Eye-to-Hand模式下,标定板固定在机械臂法兰(即 T f p T_{fp} Tfp是定值),相机在固定位置上对不同位置的标定板进行拍照,需要标定的参数是相机相对基座的固定坐标系 T b c T_{bc} Tbc。同样地,考虑 i i i和 j j j两个时刻,可得:
T b f ( θ i ) ⋅ T f p = T b c ⋅ T c p i , T b f ( θ j ) ⋅ T f p = T b c ⋅ T c p j , \begin{align} T_{bf}(\theta_i) \cdot T_{fp} &= T_{bc} \cdot T_{cp}^i, \tag{6} \\ T_{bf}(\theta_j) \cdot T_{fp} &= T_{bc} \cdot T_{cp}^j, \tag{7} \end{align} Tbf(θi)⋅TfpTbf(θj)⋅Tfp=Tbc⋅Tcpi,=Tbc⋅Tcpj,(6)(7)

由Eq(7)求逆再右乘到Eq(6),可得:
T b f ( θ i ) ⋅ T b f − 1 ( θ j ) ⋅ T b c = T b c ⋅ T c p i ⋅ T c p j − 1 . (8) T_{bf}(\theta_i) \cdot T_{bf}^{-1}(\theta_j) \cdot T_{bc} = T_{bc} \cdot T_{cp}^i \cdot {T_{cp}^j}^{-1}. \tag{8} Tbf(θi)⋅Tbf−1(θj)⋅Tbc=Tbc⋅Tcpi⋅Tcpj−1.(8)

令 T ~ a i j = T b f ( θ i ) ⋅ T b f − 1 ( θ j ) \tilde{T}{a{ij}}=T_{bf}(\theta_i) \cdot T_{bf}^{-1}(\theta_j) T~aij=Tbf(θi)⋅Tbf−1(θj), T ~ c i j = T c p i ⋅ T c p j − 1 \tilde{T}{c{ij}}=T_{cp}^i \cdot {T_{cp}^j}^{-1} T~cij=Tcpi⋅Tcpj−1, T ~ b = T b c \tilde{T}b = T{bc} T~b=Tbc, 则Eq(8)可简化为:
T ~ a i j ⋅ T ~ b = T ~ b ⋅ T ~ c i j . (9) \tilde{T}{a{ij}} \cdot \tilde{T}b = \tilde{T}b \cdot \tilde{T}{c{ij}}. \tag{9} T~aij⋅T~b=T~b⋅T~cij.(9)

4.3 模型统一

可以看出,Eq(5)和Eq(9)具有相同的形式。因此,Eye-in-Hand模式和Eye-to-Hand模式的手眼标定具有相同形式的求解方程,即机械臂移动 N N N个关节角,构造 N − 1 N-1 N−1组方程,求解最优化问题:
arg min ⁡ T b Σ i = 1 , j = i + 1 N − 1 ∥ L o g ( T a i j ⋅ T b ⋅ ( T b ⋅ T c i j ) − 1 ) ∥ , (10) \argmin_{T_b} \Sigma_{i=1,j=i+1}^{N-1} {\| Log(T_{a_{ij}} \cdot T_b \cdot (T_b \cdot T_{c_{ij}})^{-1}) \|}, \tag{10} TbargminΣi=1,j=i+1N−1∥Log(Taij⋅Tb⋅(Tb⋅Tcij)−1)∥,(10)

其中, L o g ( ⋅ ) Log(\cdot) Log(⋅) 表示李代数。

5. 两步法求解 T a ⋅ T b = T b ⋅ T c T_a \cdot T_b = T_b \cdot T_c Ta⋅Tb=Tb⋅Tc

由于 T a T_a Ta、 T b T_b Tb和 T c T_c Tc都是4x4的空间变换矩阵,可展开为旋转与平移形式,即 T a ⋅ T b = T b ⋅ T c T_a \cdot T_b = T_b \cdot T_c Ta⋅Tb=Tb⋅Tc可展开为:
R a t a 0 1 R b t b 0 1 = R b t b 0 1 R c t c 0 1 , \left \\begin{array}{cc} R_a \& t_a \\\\ \\bold{0} \& 1 \\end{array} \\right \cdot \left \\begin{array}{cc} R_b \& t_b \\\\ \\bold{0} \& 1 \\end{array} \\right = \left \\begin{array}{cc} R_b \& t_b \\\\ \\bold{0} \& 1 \\end{array} \\right \cdot \left \\begin{array}{cc} R_c \& t_c \\\\ \\bold{0} \& 1 \\end{array} \\right, Ra0ta1Rb0tb1=Rb0tb1Rc0tc1,

即:
R a ⋅ R b = R b ⋅ R c , R a ⋅ t b + t a = R b ⋅ t c + t b . \begin{align} R_a \cdot R_b &= R_b \cdot R_c, \tag{11} \\ R_a \cdot t_b + t_a &= R_b \cdot t_c + t_b. \tag{12} \\ \end{align} Ra⋅RbRa⋅tb+ta=Rb⋅Rc,=Rb⋅tc+tb.(11)(12)

因此,可先求解 T b T_b Tb的旋转分量 R b R_b Rb,再求解 T b T_b Tb的平移分量 t b t_b tb。

5.1 求解 T b T_b Tb的旋转分量

5.1.1 先验知识: 反对称矩阵

向量 a = a x , a y , a z T ∈ R 3 \bold{a} = a_x, a_y, a_z^T \in \R^3 a=ax,ay,azT∈R3的反对称矩阵(skew-symmetric matrix)定义为 a ∧ \bold{a}^\wedge a∧:
a ∧ = 0 − a z a y a z 0 − a x − a y a x 0 . \bold{a}^\wedge = \left \\begin{array}{ccc} 0 \& -a_z \& a_y \\\\ a_z \& 0 \& -a_x \\\\ -a_y \& a_x \& 0 \\end{array} \\right. a∧= 0az−ay−az0axay−ax0 .

5.1.2 四元数乘法算子

设有四元数 q \bold{q} q:
q = q w + q x i + q y j + q z k = q w q v , \bold{q} = q_w + q_x \bold{i} + q_y \bold{j} + q_z \bold{k} = \left \\begin{array}{c} q_w \\\\ \\bold{q}_v \\end{array} \\right, q=qw+qxi+qyj+qzk=qwqv,

其中, q w , q x , q y , q z ∈ R q_w, q_x, q_y, q_z \in \R qw,qx,qy,qz∈R, q v = q x , q y , q z T ∈ R 3 x 1 \bold{q}v = q_x, q_y, q_z^T \in \R^{3\mathbf{x}1} qv=qx,qy,qzT∈R3x1。旋转矩阵乘法可等效于四元数乘法,即
R a c = R a b ⋅ R b c    ⟺    q a c = q a b ⨂ q b c , = q a b L ⋅ q b c = q b c R ⋅ q a b , (13) R
{ac} = R_{ab} \cdot R_{bc} \iff \begin{align*} \bold{q}{ac} &= \bold{q}{ab} \bigotimes \bold{q}_{bc}, \\ &= \\bold{q}_{ab}L \cdot \bold{q}{bc} = \\bold{q}_{bc}R \cdot \bold{q}{ab}, \\ \end{align*} \tag{13} Rac=Rab⋅Rbc⟺qac=qab⨂qbc,=qabL⋅qbc=qbcR⋅qab,(13)

其中, ⨂ \bigotimes ⨂是四元数乘法运算符, q L \\bold{q}_L qL和 q R \\bold{q}_R qR分别是四元数左乘算子和右乘算子:
q L = q w − q v T q v q w I 3 × 3 + q v ∧ q R = q w − q v T q v q w I 3 × 3 − q v ∧ , (14) \begin{array}{cc} \\bold{q}_L &= \left \\begin{array}{cc} q_w \& -\\bold{q}_v\^T \\\\ \\bold{q}_v \& q_w \\bold{I}_{3\\times3} + {\\bold{q}_v}\^\\wedge \\end{array} \\right \\ \\bold{q}_R &= \left \\begin{array}{cc} q_w \& -\\bold{q}_v\^T \\\\ \\bold{q}_v \& q_w \\bold{I}_{3\\times3} - {\\bold{q}_v}\^\\wedge \\end{array} \\right \end{array}, \tag{14} qLqR=qwqv−qvTqwI3×3+qv∧=qwqv−qvTqwI3×3−qv∧,(14)

其中, I 3 × 3 \bold{I}_{3\times3} I3×3是3x3的单位矩阵, q v ∧ \bold{q}_v^\wedge qv∧是 q v \bold{q}_v qv的反对称矩阵。

5.1.3 求解 R b R_b Rb

利用公式(13)和(14),可将公式(11)重写为:
q a ⨂ q b = q b ⨂ q c ,    ⟺    ( q a L − q c R ) ⋅ q b = 0 4 × 1 \begin{align} & \ \ \ \ \ \ \ \ \ \ \ \bold{q}_a \bigotimes \bold{q}_b = \bold{q}_b \bigotimes \bold{q}_c, \\ &\iff \left( \\bold{q}_a_L - \\bold{q}_c_R \right) \cdot \bold{q}b = \bold{0}{4\times 1} \end{align} qa⨂qb=qb⨂qc,⟺(qaL−qcR)⋅qb=04×1

未完待续...

相关推荐
youngerwang1 小时前
【从搬运工到协处理器:网卡芯片架构、算法、验证与边缘演进深度剖析】
网络·算法·架构·芯片
KaMeidebaby1 小时前
卡梅德生物技术快报|纯化重组蛋白实操详解
人工智能·python·tcp/ip·算法·机器学习
手写码匠2 小时前
从零实现 Prompt 工程引擎:结构化提示、自动优化与多轮自省体系
人工智能·深度学习·算法·aigc
无限码力3 小时前
阿里算法岗 0530笔试真题 - 多约束条件下的元素匹配统计
算法·阿里笔试真题·阿里机试真题·阿里算法岗笔试
lqqjuly3 小时前
MLA — 多头潜在注意力深度解析
深度学习·神经网络·算法
吴可可1233 小时前
SolidWorks草图转三维DWG技巧
算法
redaijufeng3 小时前
C++雾中风景7:闭包
c++·算法·风景
四方云4 小时前
2026电销外呼机器人选型避坑指南:技术维度拆解企业电销拓客痛点解决方案
机器人
小欣加油4 小时前
leetcode287寻找重复数
数据结构·c++·算法·leetcode
拓朗工控4 小时前
视觉检测行业工控机选型指南:核心要素与避坑策略
人工智能·数码相机·视觉检测·工控机·工业电脑