3. 机器人引导中的坐标系基础
在机器人引导系统中,视觉系统输出的位置信息最终要变成机器人能执行的运动指令。这个转换过程不是一步完成的,而是沿着一条明确的坐标链逐级传递:像素坐标 → 相机坐标 → 机器人基坐标 → 工具坐标。理解这条链上每一环的定义、单位和变换关系,是排查定位偏差、设计标定流程、判断误差来源的基础。MERLIC 的手眼标定(Hand-Eye Calibration)正是把这条链中"相机—机器人"这一段打通的关键环节。
四个坐标系各自描述什么
像素坐标(Pixel Coordinate)是图像平面上的二维坐标,单位是像素(pixel),原点通常取图像左上角,u 轴向右、v 轴向下。MERLIC 中通过 get_calib_data 或标定后的 image_points_to_world_plane 等算子,可以把像素点映射到物理平面。像素坐标本身不含深度信息,它只回答"目标在图像中的哪个位置"。
相机坐标(Camera Coordinate)是三维坐标,原点在相机光心,z 轴沿光轴指向被摄场景,x、y 轴与图像平面平行。像素坐标通过相机内参(焦距、主点、畸变系数)和深度信息可以反投影到相机坐标系。MERLIC 的标定板标定会输出内参矩阵,这是像素到相机坐标转换的核心参数。
机器人基坐标(Robot Base Coordinate)是机器人本体的参考坐标系,原点通常在机器人底座中心,各关节运动最终都换算到这个坐标系下描述。机器人控制器接收的目标位姿一般以基坐标为参照。
工具坐标(Tool Coordinate)也称 TCP(Tool Center Point)坐标系,原点在工具末端执行点,随机器人末端运动。抓取任务真正关心的是"工具中心点到达目标位置",因此基坐标下的目标位姿还需要结合当前工具坐标变换,才能得到机器人各轴的运动量。
坐标链的变换关系
四个坐标系之间通过齐次变换矩阵串联。设像素点经内参反投影得到相机坐标下的点 P_cam,则:
P_base = T_base_cam · P_cam
P_tool = T_tool_base · P_base
其中 T_base_cam 描述相机相对机器人基座的位置和姿态,T_tool_base 由机器人正运动学给出。手眼标定要解决的核心问题,就是求出 T_base_cam。根据相机安装方式不同,分为两种典型构型:
- 眼在手外(Eye-to-Hand):相机固定在支架上,不随机器人运动。此时
T_base_cam是常量,标定一次即可长期使用,适合大视野、固定工位场景。 - 眼在手上(Eye-in-Hand):相机安装在机器人末端,随末端运动。此时相机坐标随机器人位姿变化,标定求的是相机与工具之间的固定变换
T_tool_cam,实际使用时需结合当前机器人位姿实时换算。
下面这张图展示了从像素坐标到工具坐标的完整变换链,以及手眼标定在其中的位置:
手眼标定在MERLIC中的意义
MERLIC 本身是一个面向机器视觉应用的集成平台,它不直接控制机器人,但通过标定把视觉坐标与机器人坐标对齐,使视觉结果可以直接被机器人程序消费。手眼标定在 MERLIC 中的意义体现在三个层面:
第一,建立可复用的坐标映射。标定完成后,MERLIC 输出的目标位置可以直接以机器人基坐标或工具坐标表达,机器人程序无需每次重新计算。MERLIC 的标定数据可以保存为标定文件,在后续任务中加载复用。
第二,把像素误差转化为物理误差。标定过程会给出重投影误差(Reprojection Error),单位是像素或毫米。这个指标直接反映标定质量:误差过大时,即使视觉检测很准,机器人抓取也会偏。一般工业场景要求重投影误差控制在 0.5 像素以内,高精度场景要求更严。
第三,支撑引导任务的稳定性。在动态抓取或传送带跟踪场景中,MERLIC 需要根据标定关系把图像中的目标位置实时换算到机器人坐标系,标定精度直接决定抓取成功率。标定不准时,典型表现是"视觉显示目标在中心,机器人却抓偏",此时应优先检查标定参数而非视觉算法。
标定结果的验证与常见问题
标定完成后,建议用独立于标定数据的验证点检查:让机器人末端(或标定板上的标记点)移动到若干已知位置,用 MERLIC 读取这些点在图像中的位置,再换算回机器人坐标,与机器人实际坐标比较。若偏差在允许范围内(例如 ±0.5 mm),说明标定可用;若偏差随位置变化呈现规律性(如越靠边缘偏差越大),通常是镜头畸变未充分校正或标定板姿态覆盖不足。
常见问题还包括:标定板平面与相机光轴夹角过小导致深度方向约束不足;机器人位姿读取时未使用同一工具坐标;标定过程中标定板发生移动。这些都会让 T_base_cam 解算失真。排查时应先确认数据采集阶段的一致性,再检查解算参数。
理解这条坐标链和手眼标定的作用,后续在 MERLIC 中配置引导任务时,就能清楚每一步的输入来自哪个坐标系、输出要送到哪个坐标系,也能在出现定位偏差时快速定位是标定问题、坐标转换问题还是机器人运动问题。