欢迎光临
我们一直在努力

手眼标定的基本概念

手眼标定(Eye-to-Hand或Eye-in-Hand Calibration)是机器人视觉系统中的关键技术,用于确定相机坐标系与机器人坐标系之间的转换关系。根据相机安装位置不同,分为两种模式:

  • Eye-to-Hand:相机固定在机器人外部,观察机器人末端执行器。
  • Eye-in-Hand:相机安装在机器人末端,随机器人移动。

标定原理

核心问题是求解方程: $$ AX = XB $$ 其中:

2. 求解手眼矩阵 常用方法包括:

3. 验证与优化

实现工具

  • ( A ) 为机器人末端执行器的运动变换矩阵(基坐标系到末端坐标系)。
  • ( B ) 为相机观察到的目标运动变换矩阵(相机坐标系到目标坐标系)。
  • ( X ) 为待求的手眼变换矩阵(相机坐标系到机器人基坐标系的转换)。
  • 标定步骤

    1. 数据采集

  • 控制机器人末端执行器移动多个不同姿态(至少3个非共面姿态)。
  • 在每个姿态下,通过相机捕获标定板(如棋盘格)图像,记录机器人末端位姿和相机检测到的标定板位姿。
  • Tsai-Lenz算法:基于旋转和平移分离求解,适用于Eye-to-Hand和Eye-in-Hand。
  • Kronecker积法:将方程转化为线性方程组求解。
  • 四元数法:通过四元数表示旋转,优化计算效率。
  • 使用标定结果反投影机器人末端位姿到图像坐标系,检查误差。
  • 通过非线性优化(如Levenberg-Marquardt算法)进一步减小重投影误差。
  • OpenCV:提供cv2.calibrateHandEye()函数,支持多种算法。

  • import cv2
    R_target2cam, t_target2cam = … # 标定板到相机的旋转和平移
    R_base2gripper, t_base2gripper = … # 机器人基座到末端的旋转和平移
    R_cam2base, t_cam2base = cv2.calibrateHandEye(
    R_gripper2base=R_base2gripper, t_gripper2base=t_base2gripper,
    R_target2cam=R_target2cam, t_target2cam=t_target2cam,
    method=cv2.CALIB_HAND_EYE_TSAI
    )

手眼标定误差计算方法

手眼标定误差通常通过重投影误差或变换误差来评估,具体方法如下:

重投影误差计算 将标定板上的已知3D点通过手眼变换矩阵投影到相机坐标系,再与检测到的2D点比较误差。公式为: [ e_{reproj} = \\frac{1}{N} \\sum_{i=1}^{N} | p_i – K \\cdot (R \\cdot P_i + t) | ] 其中 ( p_i ) 为检测到的2D点,( P_i ) 为3D点,( K ) 为相机内参,( R ) 和 ( t ) 为手眼变换的外参。

变换误差计算 对于多组手眼数据,计算变换矩阵的稳定性。常用李代数误差: [ e_{Lie} = | \\log(T_{estimated} \\cdot T_{groundtruth}^{-1}) | ] 其中 ( T ) 为4×4变换矩阵,( \\log ) 将矩阵映射到李代数空间。

误差评估指标

平均绝对误差(MAE) [ MAE = \\frac{1}{n} \\sum_{i=1}^{n} |e_i| ]

均方根误差(RMSE) [ RMSE = \\sqrt{\\frac{1}{n} \\sum_{i=1}^{n} e_i^2} ]

最大误差 记录所有误差中的最大值,反映最坏情况。

实现代码示例(Python)

手眼标定误差通常通过重投影误差或变换误差来评估,具体方法如下:

重投影误差计算 将标定板上的已知3D点通过手眼变换矩阵投影到相机坐标系,再与检测到的2D点比较误差。公式为: [ e_{reproj} = \\frac{1}{N} \\sum_{i=1}^{N} | p_i – K \\cdot (R \\cdot P_i + t) | ] 其中 ( p_i ) 为检测到的2D点,( P_i ) 为3D点,( K ) 为相机内参,( R ) 和 ( t ) 为手眼变换的外参。

变换误差计算 对于多组手眼数据,计算变换矩阵的稳定性。常用李代数误差: [ e_{Lie} = | \\log(T_{estimated} \\cdot T_{groundtruth}^{-1}) | ] 其中 ( T ) 为4×4变换矩阵,( \\log ) 将矩阵映射到李代数空间。

误差评估指标
平均绝对误差(MAE) [ MAE = \\frac{1}{n} \\sum_{i=1}^{n} |e_i| ]

均方根误差(RMSE) [ RMSE = \\sqrt{\\frac{1}{n} \\sum_{i=1}^{n} e_i^2} ]

最大误差 记录所有误差中的最大值,反映最坏情况。

实现代码示例(Python)

误差优化建议

  • 增加标定数据量,覆盖机械臂不同位姿
  • 使用高精度标定板和检测算法
  • 采用非线性优化方法(如Levenberg-Marquardt)迭代优化
  • 检查机械臂运动学参数是否准确

典型工业应用要求平移误差小于1mm,旋转误差小于0.1°。实际误差需结合具体应用场景评估可接受范围。

赞(0)
未经允许不得转载:171主机测评 » 手眼标定的基本概念
分享到: 更多 (0)

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址