手眼标定基础:坐标系定义与核心概念

大家好,我是老张。今天咱们聊聊手眼标定里最基础、也最绕不开的话题——坐标系。说实话,我见过太多工程师在标定环节翻车,十有八九都是坐标系没搞明白。你想想看,机械臂和相机各说各话,数据对不上,那还怎么协同工作?

一、四个核心坐标系

做手眼标定,说白了就是要搞清楚四个坐标系之间的变换关系。我习惯把它们分成两组来理解:

1. 世界坐标系

这是全局参考系,通常定义在机器人工作空间的某个固定位置。我个人习惯把它放在机器人底座中心,或者工作台的一个角落。为什么?因为这样后续计算最方便。

我的经验: 世界坐标系一旦定义好,就别再动了。我在一个项目中吃过亏,中途挪了标定板的位置,结果所有数据都要重来,那叫一个酸爽。

2. 相机坐标系

相机自己的“眼睛”。原点在相机光心,Z轴沿着光轴方向。这个坐标系是固定的——只要相机没被碰歪,它就不会变。

3. 机械臂坐标系

也叫机器人基坐标系。原点在机械臂底座,Z轴通常竖直向上。嗯,这里要注意:不同品牌的机器人,坐标系定义可能略有差异,一定要看手册确认。

4. 工具坐标系

定义在机械臂末端执行器上。比如你装了个夹爪,或者焊枪,工具坐标系的原点就在工具尖端。这个坐标系会随着机械臂运动而不断变化。

坐标系 原点位置 是否固定 常见用途
世界坐标系 用户定义(如底座中心) 固定 全局参考
相机坐标系 相机光心 固定 图像到3D转换
机械臂坐标系 机器人底座 固定 运动控制
工具坐标系 工具尖端 随动 末端定位

二、标定板介绍

标定板是什么?说白了就是一个已知尺寸的棋盘格或圆点阵列。它的作用就是给相机提供一个“已知的参考”。

我个人最常用的是棋盘格标定板。为什么?因为角点检测算法成熟,精度高。圆点阵列也有它的优势——对畸变不敏感,但检测算法稍微复杂些。

避坑指南: 我曾经用一张打印在A4纸上的标定板做项目,结果因为纸张不平整,标定误差直接飙到5毫米以上。后来换了玻璃基板的标定板,误差立马降到0.5毫米以内。所以,标定板一定要平整、刚性要好。

三、眼在手上 vs 眼在手外

这是手眼标定里最核心的两种配置。我分别说说:

眼在手上(Eye-in-Hand)

相机固定在机械臂末端,跟着机械臂一起动。这种配置的好处是:相机可以近距离观察目标,精度高。缺点呢?机械臂运动时相机也在动,需要实时补偿。

我在做焊接机器人项目时用的就是眼在手上。相机跟着焊枪走,可以实时检测焊缝位置,精度控制在0.2毫米以内。嗯,真香。

眼在手外(Eye-to-Hand)

相机固定在工作空间上方,机械臂在相机视野内运动。这种配置的好处是:相机视野大,可以全局观察。缺点是:距离远,精度会受一定影响。

做码垛机器人时我更喜欢眼在手外。相机从高处俯拍,一眼就能看到整个托盘,规划路径特别方便。

核心区别: 眼在手上,相机和工具坐标系之间的变换是固定的;眼在手外,相机和世界坐标系之间的变换是固定的。这个区别决定了标定方程的形式。

四、知识体系结构图

下面这张图是我自己画的,把本章的核心逻辑串起来了。你仔细看看,应该能一目了然:

手眼标定知识体系 世界坐标系 相机坐标系 机械臂坐标系 工具坐标系 标定板(已知尺寸参考) 眼在手上 相机固定在机械臂末端 相机与工具坐标系关系固定 眼在手外 相机固定在工作空间上方 相机与世界坐标系关系固定 核心目标:求解相机与机械臂之间的变换矩阵 AX = XB 问题(眼在手上)或 AX = ZB 问题(眼在手外)

五、标定流程速览

最后,我简单说一下标定的基本流程。你心里有个数就行:

  1. 准备标定板——确保平整、尺寸准确
  2. 采集数据——让机械臂带着标定板走多个位姿,相机拍照记录
  3. 提取特征点——检测棋盘格角点或圆点中心
  4. 求解变换矩阵——用数学方法(比如Tsai法)算出相机和机械臂之间的变换关系
  5. 验证精度——用一组新数据验证标定结果,误差在可接受范围内才算完
小技巧: 采集数据时,尽量让标定板出现在相机视野的不同位置和角度。我一般会采集15-20组数据,太少容易过拟合,太多也没必要。

好了,这一章的内容就到这儿。坐标系定义是手眼标定的地基,地基打不牢,后面全是空中楼阁。你先把这四个坐标系和两种配置搞清楚,后面咱们再聊具体的标定算法。


公众号:蓝海资料掘金营,微信deep3321