1、项目全景与坐标系基础

各位同学,欢迎来到《手眼标定实战项目》的第一章。我是你们这门课的主讲工程师。

做机器人视觉集成这些年,我见过太多项目在最后联调阶段出问题——机械臂抓不准、视觉定位偏了、换了个工位就要重新标定。说白了,根子往往都在手眼标定这一步没做扎实。今天咱们就从最基础的概念和坐标系开始,把地基打牢。

1.1 什么是手眼标定?

手眼标定,简单讲就是建立相机坐标系与机器人坐标系之间的数学关系。你想想看,相机看到了一个工件的位置,但机器人要抓取它,得知道这个位置在机器人自己的坐标系里是多少。这个“翻译”工作,就是手眼标定要干的。

核心目标:求出一个变换矩阵,能把相机看到的坐标点,转换到机器人能理解的坐标点。

根据相机安装位置的不同,手眼标定分为两种主流构型:

构型 英文简称 相机安装位置 典型应用场景
眼在手上 Eye-in-Hand (EiH) 固定在机器人末端法兰或工具上 高精度抓取、装配、焊缝跟踪
眼在手外 Eye-to-Hand (EtH) 固定在工作台上方或侧面 大范围定位、来料检测、码垛

我个人习惯,在项目初期就会先确定用哪种构型。这直接决定了后续的标定流程和算法选择。

1.2 Eye-in-Hand vs Eye-to-Hand

这两种方式各有各的脾气,我分别说说。

眼在手上(Eye-in-Hand)

相机跟着机械臂一起动。好处是灵活,机械臂换个姿势,相机就能从不同角度观察目标。我在做汽车零部件抓取项目时用的就是这种。但有个坑——相机视野会随机械臂运动而变化,标定不好就容易丢目标。

  • 优点:精度高,可近距离观察,能避开遮挡
  • 缺点:标定复杂,对机械臂运动精度有依赖
  • 典型场景:精密装配、小零件抓取

眼在手外(Eye-to-Hand)

相机固定不动,看着机械臂干活。这种构型视野稳定,标定一次管很久。我记得有个物流分拣项目,现场空间有限,相机只能架在传送带侧面,用的就是眼在手外方案。

  • 优点:视野固定,标定相对简单,稳定性好
  • 缺点:容易被机械臂自身遮挡,灵活性差
  • 典型场景:大范围定位、传送带跟踪

我的建议:如果工件小、精度要求高(±0.5mm以内),优先考虑Eye-in-Hand。如果工件大、环境相对固定,Eye-to-Hand更省心。

1.3 机器人坐标系

做手眼标定,绕不开坐标系。我刚开始带项目时,团队里新人经常把坐标系搞混,标定结果自然一塌糊涂。这里我把最关键的几个坐标系讲清楚。

基座坐标系(Base Frame)

固定在机器人底座上,是机器人所有运动的参考。通常Z轴向上,X轴指向机器人前方。你给机器人发的任何位置指令,最终都要换算到这个坐标系下。

工具坐标系(Tool Frame)

定义在机器人末端执行器上。默认情况下,工具坐标系的原点在法兰盘中心。但实际项目中,我们会在法兰上装夹爪、吸盘或焊枪,这时就需要重新标定工具坐标系。

相机坐标系(Camera Frame)

相机自己看到的3D世界。对于2D相机,通常以图像中心为原点,Z轴指向相机前方。对于3D相机,坐标系定义会因传感器类型而异。

坐标系名称 原点位置 作用
基座坐标系 机器人底座中心 全局参考,所有运动的基准
工具坐标系 末端法兰或工具尖端 定义抓取/操作点
相机坐标系 相机光心 视觉测量的参考

1.4 齐次变换矩阵

坐标系之间怎么转换?靠的就是齐次变换矩阵。这东西说白了就是一个4x4的矩阵,把旋转和平移打包在一起。

齐次变换矩阵 T 的形式:
T = [ R   t ]
    [ 0   1 ]

其中:
R —— 3x3 旋转矩阵
t —— 3x1 平移向量

为什么用4x4?因为这样可以把旋转和平移统一成一次矩阵乘法,方便计算机处理。你想想看,如果分开算旋转再算平移,代码写起来多麻烦。

我曾经踩过的坑:在计算变换矩阵时,忘记区分左乘和右乘。记住:左乘表示坐标系变换,右乘表示点在当前坐标系下的运动。顺序搞反了,标定结果全错。

下面这张图,把整个手眼标定的知识体系串起来,方便你理解各个概念之间的关系。

手眼标定知识体系框架图 手眼标定知识体系 手眼标定 标定构型 坐标系基础 数学工具 Eye-in-Hand Eye-to-Hand 基座坐标系 工具坐标系 相机坐标系 齐次变换矩阵 旋转矩阵 R 平移向量 t 核心公式: P_base = T_base_to_camera * P_camera

嗯,这张图把本章的核心内容都串起来了。从标定构型到坐标系,再到数学工具,每一步都环环相扣。后面的章节,我们会逐一深入每个模块。

学习建议:先别急着写代码。把坐标系和齐次变换矩阵的概念吃透,用手在纸上画一画坐标变换的链路。我当年就是这么过来的,基础打牢了,后面学算法快得很。