想象一下:一台先进的工业机器人,搭载了高分辨率3D相机,理论上能精准识别、抓取和组装零件。但在实际产线上,它却像个”睁眼瞎”——抓取位置偏移、装配无法对准、成品合格率骤降。问题出在哪里?答案往往就在于那个容易被忽视却至关重要的环节:机器人3D视觉标定。
为什么标定是机器视觉的”命门”?
3D视觉赋予机器人感知空间的能力,但这种感知必须是精确、可靠且与机器人自身坐标系统一的。未经精确标定的系统:
- 所见非所得: 相机看到的物体3D位置 ≠ 机器人认为的位置。厘米级的误差足以让精密装配失败。
- 精度层层衰减: 相机畸变+手眼关系误差+机器人运动误差相互叠加,最终末端定位精度失控。
- 系统脆弱: 微小的振动、温度变化甚至更换镜头都可能让昨天的”精准”变成今天的”失控”。
标定,本质上就是建立一系列精确的数学转换关系,让像素坐标、相机3D坐标、机器人基座标、工具末端坐标都能在同一个”宇宙”里无缝对话。
核心标定任务分解
- 内参标定:相机”身份证”
- 目的: 确定相机内部几何和光学特性,校正镜头畸变(桶形、枕形),建立像素坐标与相机坐标系下3D光线的映射关系。
- 关键参数: 焦距(fx, fy)、主点(cx, cy)、畸变系数(k1, k2, p1, p2, k3…)。
- 方法: 使用棋盘格、圆点阵列等高精度标定板。通过多角度、多位置拍摄标定板图像(通常≥10张,覆盖整个视野),利用如OpenCV的
calibrateCamera、Matlab相机标定工具箱或Halcon等专业视觉库解算参数。
- 重点: 标定板需充满视野不同区域,姿态要丰富,确保参数鲁棒性。
- 外参标定/手眼标定:建立沟通”语言”
- 目的: 确定3D相机坐标系与机器人坐标系(通常是基坐标系或工具坐标系)之间的刚性变换关系(旋转矩阵R和平移向量t)。
- 两种主要模式:
- 眼在手 (Eye-in-Hand): 相机安装在机器人末端执行器(手)上。标定目标是求取相机坐标系到工具坐标系的固定变换(
T_cam_tool)。
- 眼在固定 (Eye-to-Hand): 相机固定安装在环境中的支架上。标定目标是求取相机坐标系到机器人基坐标系的固定变换(
T_cam_base)。
- 方法:
- (A) 使用标定物: 将已知几何特征的标定物(如棋盘格、标定球)固定在机器人末端。机器人带动标定物到多个不同位姿(≥3个,建议≥10个,需保证空间旋转和平移多样性),相机从固定位置拍摄标定物。通过识别标定物在相机坐标系下的位姿
T_target_cam和机器人读取的标定物(即工具)在基座下的位姿T_tool_base,求解T_cam_tool或T_cam_base。这是最主流、精度较高的方法。
- (B) 使用固定点: 机器人末端工具尖点依次触碰多个空间中固定且位置已知的物理点(需高精度),同时相机观察这些点。结合机器人位姿数据和相机观测数据求解手眼关系。对靶标固定和触碰精度要求极高。
实战标定流程详解 (以眼在固定+标定物法为例)
- 准备工作:
- 标定板: 选择高精度(如标称精度±0.01mm)、特征清晰稳定(棋盘格角点、圆点圆心)的标定板。尺寸需匹配视野和工作距离。
- 稳固安装: 牢固固定相机和标定板(固定在机器人末端法兰上)。避免任何晃动。
- 环境光: 采用稳定、均匀的照明,避免反光、阴影干扰特征提取。
- 工具: 机器人控制器、装有标定软件的PC、通讯线缆(确保能实时获取机器人位姿和触发拍照)。
- 外参标定步骤:
- 机器人运动规划: 规划机器人带动末端标定板运动的轨迹。关键在于确保标定板在相机视野内清晰可见,并在尽可能多的不同位姿(俯仰、旋转、平移)下进行拍摄。一般需要10-30个有效位姿点,位姿间的旋转和平移量需要足够大,以保证解算的鲁棒性。避免在单一平面内小范围移动。
- 数据采集:
- 机器人移动到第i个目标位姿并记录此时工具坐标系原点在机器人基坐标系下的位姿
T_tool_base_i(通常包含XYZ和RPY/Euler角/四元数,需确认格式)。
- 触发相机拍摄该位姿下标定板的图像。
- 图像处理与位姿解算: 图像传输至PC软件,自动检测标定板特征点(如棋盘格角点),计算标定板坐标系(即工具坐标系,因为标定板固连在工具上)相对于相机坐标系的位姿
T_target_cam_i(即T_tool_cam_i)。
- 手眼方程求解: 核心方程为 `T_tool_cam_i * X = Y * T_tool_base_i