4、手眼标定原理:手眼标定的数学模型、眼在手上与眼在手外的区别、标定流程

手眼标定是机械手视觉定位与抓取系统中承上启下的关键环节。它的本质是求解机器人末端执行器(法兰盘)坐标系与相机坐标系之间的空间变换关系。如果这个变换关系不准确,无论视觉算法识别得多精准、机械臂运动学解算得多完美,最终抓取位置都会产生系统性偏差。本章将深入剖析手眼标定的数学模型,对比“眼在手上”与“眼在手外”两种主流构型的本质区别,并给出可落地的标定流程与实战排障经验。

手眼标定核心模型与构型对比 眼在手外(Eye-to-Hand) 相机(固定) 机械臂基座 标定板 (装在末端) 观测 运动学 求解:CamHBase(相机→基座) 眼在手上(Eye-in-Hand) 相机 (装在末端) 机械臂末端 标定板 (固定在工作台) 刚性连接 求解:CamHFlange(相机→法兰) 统一数学模型:AX = XB A = 两次拍摄间机械臂运动(运动学给出) B = 两次拍摄间标定板在相机系下的运动(视觉给出) X = 待求的手眼矩阵(固定不变) 标定流程 1. 采集多组位姿 2. 提取角点/位姿 3. 构建AX=XB 4. 求解/优化验证 关键:多姿态、大角度、高精度角点提取、重投影验证

上图展示了两种构型的核心差异与统一数学模型。无论采用哪种安装方式,最终都归结为求解矩阵方程 AX = XB。下面我们分别从数学模型、构型对比、标定流程三个维度展开。

4.1 手眼标定的数学模型:从坐标变换到 AX=XB

4.1.1 核心原理:坐标系链与齐次变换矩阵

机械手视觉系统涉及多个坐标系:机器人基坐标系(Base)、机械臂末端法兰坐标系(Flange/Tool)、相机坐标系(Cam)、标定板坐标系(CalBoard)。手眼标定的目标就是求解相机与机械臂之间的固定变换关系。在“眼在手上”构型中,需要求解 CamHFlange(相机坐标系到法兰坐标系的齐次变换矩阵);在“眼在手外”构型中,需要求解 CamHBase(相机坐标系到基坐标系的齐次变换矩阵)。

齐次变换矩阵 H 是一个 4×4 矩阵,包含旋转部分 R(3×3)和平移部分 t(3×1):

H = [ R  t ]
    [ 0  1 ]

对于“眼在手上”构型,当机械臂从位姿 P1 运动到位姿 P2 时,标定板固定在外部工作台上。我们可以建立两个闭环方程:

  • 闭环1:BaseHFlange(P1) × FlangeHCam × CamHCalBoard(P1) = BaseHCalBoard
  • 闭环2:BaseHFlange(P2) × FlangeHCam × CamHCalBoard(P2) = BaseHCalBoard

由于标定板固定,BaseHCalBoard 不变。将两式联立消去 BaseHCalBoard,并令 A = inv(BaseHFlange(P1)) × BaseHFlange(P2)(即机械臂自身的运动),B = CamHCalBoard(P1) × inv(CamHCalBoard(P2))(即标定板在相机系下的运动),则得到经典方程:

AX = XB,其中 X = FlangeHCam(待求的手眼矩阵)。

对于“眼在手外”构型,相机固定,标定板装在机械臂末端。同理可推导出相同形式的 AX = XB,只是 X 的含义变为 CamHBase。A 由机械臂运动学给出,B 由视觉检测标定板位姿给出。

4.1.2 求解方法:两步法与单步法

AX = XB 的求解通常分为两步:先求解旋转部分,再求解平移部分。常用算法包括 Tsai-Lenz 法、Park-Martin 法、Daniilidis 法等。现代工程实践中更推荐使用 非线性优化方法(如 Levenberg-Marquardt),将旋转矩阵参数化(如李代数 so(3)),对所有采集样本进行全局优化,以抑制噪声影响。

方法类别代表算法优点缺点适用场景
两步法Tsai-Lenz计算快、实现简单对噪声敏感,旋转误差会传递到平移标定板位姿精度高、噪声小的离线标定
单步法Daniilidis(四元数)旋转和平移同时求解,精度更高实现复杂,需处理四元数约束精度要求高的场合
非线性优化L-M / Gauss-Newton可引入权重、鲁棒核,精度最高需要良好初值,计算量较大工程首选,配合两步法结果作为初值

4.1.3 案例拆解:为什么采集 15 组数据仍然标定失败?

某汽车零部件装配线,使用眼在手上构型,相机安装在第六轴法兰盘上。工程师采集了 15 组机械臂位姿和对应的标定板图像,使用 Tsai-Lenz 算法求解,但重投影误差高达 8 像素,抓取时出现 5mm 以上的位置偏差。

分析过程:检查采集数据发现,15 组位姿中机械臂的平移量较大,但旋转角度变化很小(所有姿态的欧拉角变化均在 ±5° 以内)。这导致 A 矩阵的旋转部分接近单位阵,方程 AX=XB 中旋转约束不足,解算出的旋转矩阵 R 严重病态。

实际操作步骤:

  1. 重新设计采集策略:确保机械臂在 3 个正交方向上有超过 30° 的旋转变化,同时平移量覆盖相机视野的各个区域。
  2. 增加采集组数至 20 组,并剔除标定板边缘被遮挡的图像。
  3. 改用两步法初值 + 非线性优化精求解。

结果对比:重投影误差从 8 像素降至 0.3 像素,抓取位置偏差从 5mm 降至 0.5mm 以内。

风险提示:旋转角度变化不足是手眼标定最常见的失败原因。务必在采集时让机械臂做大幅度的姿态变化,而非仅平移。

4.2 眼在手上与眼在手外的区别:构型选型与精度影响

4.2.1 核心原理:两种构型的本质差异

两种构型的根本区别在于相机与机械臂的相对运动关系。眼在手上(Eye-in-Hand)相机随机械臂运动,视野随末端移动而移动,适合需要近距离观察目标、且目标位置不固定的场景。眼在手外(Eye-to-Hand)相机固定安装,视野覆盖整个工作区域,适合目标位置相对固定、且机械臂运动范围较大的场景。

4.2.2 判断方法:构型选型对比表

对比维度眼在手上(Eye-in-Hand)眼在手外(Eye-to-Hand)
相机安装位置机械臂末端法兰盘工作区域上方或侧方固定支架
标定目标矩阵CamHFlange(相机→法兰)CamHBase(相机→基座)
视野特点随机械臂移动,可近距离观察目标,但视野有限视野固定且较大,但可能存在遮挡
标定板位置固定在工作台上安装在机械臂末端
精度影响因素机械臂运动学误差直接影响标定结果相机安装刚性、视野畸变影响较大
典型应用抓取流水线上移动的工件、近距离精密装配料箱拣选、大范围定位、AGV 导航
标定复杂度中等,需保证标定板在视野内较低,标定板随机械臂运动

4.2.3 实战场景:两种构型的切换与补偿

某 3C 电子装配线,最初采用眼在手外构型,相机固定于机架顶部,负责定位传送带上的手机中框。但后来产线改造,传送带位置偏移,且中框来料角度随机,固定相机视野受限,导致识别率下降。工程师将构型改为眼在手上,相机随机械臂移动,每次抓取前先移动到预拍摄位,对中框进行精确定位。

关键操作:

  1. 重新执行手眼标定,求解 CamHFlange。
  2. 在抓取流程中增加“预拍摄”步骤:机械臂先运动到目标上方固定高度,拍摄图像,计算目标在法兰坐标系下的位置,再执行抓取。
  3. 针对机械臂运动学误差,在标定后增加补偿矩阵(通过多点拟合修正)。

结果:识别率从 92% 提升至 99.5%,抓取节拍仅增加 0.3 秒。

经验提醒:如果目标物体较大或工作区域广,优先考虑眼在手外;如果目标小、需要高精度近距离观察,优先考虑眼在手上。但眼在手上对机械臂运动学精度要求更高,标定时需特别注意。

4.3 标定流程:从准备到验证的完整闭环

4.3.1 操作流程:七步标定法

无论哪种构型,标定流程都遵循以下七个步骤。以下以眼在手上构型为例:

  1. 准备阶段:固定标定板(如 7×9 棋盘格,方格边长 30mm),确保标定板平整、无污渍。测量方格边长并输入标定程序。
  2. 机械臂运动规划:编写脚本控制机械臂运动到 15-20 个不同位姿。要求:姿态变化覆盖 ±30° 以上,平移覆盖相机视野的 80% 区域,且标定板始终完整出现在图像中。
  3. 数据采集:在每个位姿下,同时记录机械臂法兰盘位姿(从控制器读取)和标定板图像。
  4. 角点提取与位姿估计:使用 OpenCV 的 findChessboardCorners 和 solvePnP 计算标定板在相机坐标系下的位姿。
  5. 构建 AX=XB 方程组:将相邻两组数据配对,计算 A 和 B 矩阵。
  6. 求解与优化:先用 Tsai-Lenz 求初值,再用 L-M 算法对所有数据做全局优化。
  7. 验证与部署:使用未参与标定的测试位姿,计算重投影误差。若误差小于 0.5 像素,则标定合格;否则返回步骤 2 重新采集。

4.3.2 案例拆解:标定板角点提取失败的排障

某机器人实验室在标定过程中,发现 findChessboardCorners 频繁返回空值。检查图像发现,由于机械臂运动到某些位姿时,环境灯光在标定板上产生强烈反光,导致棋盘格对比度不足。

排障过程:

  • 初步尝试:调整相机曝光时间,但反光区域仍然过曝。
  • 进一步分析:在标定板上方加装偏振片,消除镜面反射。
  • 最终方案:更换为哑光材质的陶瓷标定板,并调整光源角度至 45° 侧光。

结果:角点提取成功率从 60% 提升至 100%,标定时间缩短一半。

风险提示:标定板材质和光照条件是标定质量的隐形杀手。优先选用陶瓷或玻璃基板,避免塑料反光。光源建议使用漫射 LED 面板,避免点光源直射。

4.3.3 常见误区与总结复盘

误区后果正确做法
只采集平移位姿,旋转变化小旋转矩阵病态,标定精度差确保每个位姿的旋转角度差异大于 30°
标定板图像占视野比例过小角点提取精度低标定板面积占图像 1/4 以上
忽略机械臂运动学误差标定结果包含系统误差使用高精度机械臂,或对运动学做补偿
未做重投影验证标定错误未被发现预留 5 组测试位姿,计算重投影误差
使用单张图像求解方程欠约束,无唯一解至少 10 组以上有效位姿

总结复盘:手眼标定的核心在于“多姿态、大角度、高精度、重验证”。在工程实践中,建议将标定流程封装为自动化脚本,每次更换相机或机械臂后自动执行标定,并将标定结果(重投影误差、手眼矩阵)存档,便于追溯。同时,标定完成后务必用真实抓取测试验证,而非仅依赖重投影误差——因为重投影误差只反映视觉重建精度,不包含机械臂运动学误差的影响。