3. 手眼标定与坐标系统一

在视觉力觉融合抓取工作站中,相机看到的目标位置最终必须转换成机器人末端能执行的位姿指令。这个转换链条的起点,就是手眼标定。它的本质是求取相机坐标系与机器人坐标系之间的刚体变换关系,使“像素中的目标”能够被准确映射为“机器人能到达的空间点”。如果标定存在偏差,后续的抓取规划、力控接触和装配插入都会在错误的基础上进行,误差还会随着工作距离放大。

两种配置:眼在手与眼在外

按相机安装位置,手眼系统分为两类。眼在手(eye-in-hand)把相机固定在机器人末端法兰或腕部,相机随末端运动;眼在外(eye-to-hand)把相机固定在支架、龙门或工作台外侧,相机与机器人基座保持固定关系。两者标定方程形式相似,但待求量和误差传播路径不同。

眼在手配置中,相机与末端之间的变换 X 是固定的,机器人运动时相机位姿随之改变。经典求解方式是让机器人带动相机在多个位姿下观测同一标定板,利用相邻两次运动的相对关系建立 AX = XB 方程:A 是机器人末端两次位姿的相对变换,B 是相机两次观测标定板的相对变换,X 即相机到末端的固定变换。眼在外配置中,标定板通常固定在机器人末端,相机固定不动,此时求的是机器人基座到相机的变换,方程同样可写成 AX = XB,只是 A、B 的物理含义互换。

眼在手与眼在外:标定关系与误差传播 眼在手(eye-in-hand) 机器人基座 Base 末端法兰 Tool 相机 Camera 标定板 固定于工作台 T_base_tool X(待求) 观测 相机随末端运动,X 固定 误差随工作距离放大 眼在外(eye-to-hand) 机器人基座 Base 末端法兰 Tool 标定板 随末端运动 相机 固定支架 T_base_tool T_tool_board 观测 相机固定,求 Base→Camera 标定板随末端运动

标定流程与关键操作

无论哪种配置,标定都遵循“采集—求解—验证”的闭环。以眼在外为例,典型流程如下:

  1. 准备标定板:选用棋盘格或圆点阵列,例如 7×9 棋盘格、方格边长 20 mm,打印后贴在刚性平板上,避免纸张翘曲。标定板固定在机器人末端,随末端运动。
  2. 采集位姿对:让机器人带动标定板到达 15~25 个不同位姿,覆盖相机视野的四个象限和不同深度。每个位姿同时记录机器人末端位姿 T_base_tool 和相机检测到的标定板位姿 T_cam_board。位姿应包含绕不同轴的旋转,避免只做平移或只绕单轴旋转,否则旋转分量不可观。
  3. 求解变换:对相邻位姿构造 A、B,用 Tsai-Lenz、Park 或 Daniilidis 等方法求解 X。工程中常用 OpenCV 的 calibrateHandEye,输入为旋转矩阵序列和平移向量序列。
  4. 验证:用求解出的 X 把标定板上的若干点从相机坐标系变换到机器人基座坐标系,与机器人正运动学计算出的位置比较,统计重投影误差和三维位置误差。

一个可参考的采集配置示例:机器人末端在约 600 mm 工作距离内,绕 X、Y、Z 轴各旋转 ±20°,平移范围 ±150 mm,共采集 20 组位姿。求解后若平均三维误差小于 0.5 mm、最大误差小于 1.0 mm,可认为标定结果满足一般抓取任务;若用于精密装配,通常要求平均误差小于 0.2 mm。这些数值属于示例性工程参考,实际阈值需结合相机分辨率、机器人重复定位精度和任务公差确定。

误差来源与传播

手眼标定的误差并非单一来源,而是多环节叠加。主要来源包括:

  • 机器人位姿误差:编码器分辨率、关节间隙、连杆参数偏差和热变形,使 T_base_tool 与真实值存在偏差。这是眼在外配置中最主要的误差源之一。
  • 相机内参误差:焦距、主点、畸变系数标定不准,导致 T_cam_board 的旋转和平移估计偏移。镜头畸变未充分校正时,视野边缘误差明显大于中心。
  • 标定板检测误差:角点提取受光照、模糊、反光和遮挡影响,亚像素精度下降。标定板平面度差也会引入系统性偏差。
  • 位姿分布不合理:旋转激励不足时,旋转分量求解病态,平移误差被放大。只在小范围内采集,会使外推区域误差急剧增加。
  • 安装刚性不足:相机支架或标定板在运动中出现微小松动,破坏固定变换假设,导致标定结果不可重复。

误差传播有一个重要规律:眼在手配置中,相机随末端运动,标定误差会随工作距离线性放大;眼在外配置中,相机固定,误差更多来自机器人运动学与标定板检测,但视野覆盖范围大,边缘区域的内参误差更突出。因此,眼在手适合近距离、高精度作业,眼在外适合大范围、中低精度引导,两者在工程中常配合使用。

工程实现要点

要让标定结果稳定可用,需注意以下实现细节。第一,标定板与末端、相机与支架的连接必须刚性可靠,建议用金属背板或专用夹具,避免胶带和纸板。第二,采集位姿时让机器人以较慢速度运动并稳定后触发采集,减少振动和运动模糊。第三,记录每组位姿的残差,剔除明显异常的采集点,而不是直接平均。第四,标定完成后把 X 写入配置文件,并在每次开机或更换相机、镜头、支架后重新验证。

验证时可采用独立验证点:让机器人末端携带一个尖点,移动到标定板上的已知角点,比较机器人正运动学位置与相机检测位置。若两者在多个验证点上的偏差方向一致,说明存在系统性偏差,应检查标定板平面度或机器人连杆参数;若偏差随机分布,则更多是检测噪声,可通过增加采集次数和优化光照改善。

工程建议:眼在手标定优先保证末端到相机的旋转精度,因为旋转误差会随工作距离放大为位置误差;眼在外标定优先保证机器人基座到相机的平移精度,因为它直接决定抓取点是否落在正确区域。

坐标系统一还涉及工具坐标系与工件坐标系的定义。标定得到的相机变换只是其中一环,最终抓取位姿需要经过“相机→机器人基座→工具→工件”的链式变换。每一级变换都应有明确的参考方向和单位约定,并在全文和程序中保持一致。建议在代码中统一使用 4×4 齐次变换矩阵,旋转用旋转矩阵或四元数存储,避免欧拉角顺序混淆带来的隐性错误。

综上,手眼标定的核心是求取固定变换 X,眼在手与眼在外只是固定对象不同;误差主要来自机器人位姿、相机内参、标定板检测和位姿分布;工程上通过刚性安装、合理位姿采集、残差剔除和独立验证点来保证精度。只有把这条坐标链打通,视觉力觉融合抓取才能建立在可靠的空间基准之上。