手眼标定方法——原理
手眼标定方法——原理
手眼标定是机器人视觉领域中的一个重要概念,主要用于确定机械臂末端执行器与相机之间的相对位置关系。这种标定对于实现精确的机器人操作至关重要,尤其是在需要视觉反馈的自动化任务中。本文将详细介绍手眼标定的基本原理、公式推导以及使用OpenCV库进行标定的具体方法。
1. 手眼标定基本介绍
1.1. 手眼标定基本介绍
眼在手外(eye To hand):
即相机固定在机械臂以外的地方,主要标定相机和基底坐标系的转换矩阵眼在手上(eye in hand):
即相机固定在机械臂末端,主要标定相机和机械臂末端的旋转矩阵
2. 手眼标定公式介绍
2.1. 手眼标定公式推导 —— 坐标系变换运算规则
坐标系的运算规则:
(变换矩阵就非常容易求T
2.2. 手眼标定的公式推导 —— 眼在手外
手眼标定坐标系表示:
- 机械臂基地坐标系 — base
- 机械臂末端坐标系 — end
- 相机坐标系 — camera
- 标定板坐标系 — board
求解目标:基地坐标系 到 相机的变换矩阵
实现方法:
- 把标定板固定在机械臂末端
- 使用相机拍摄不同机械臂姿态下的标定板图片n张 n>3(还是大概十张好点)
则对每张图片可知:
其中:
:可由通过拍摄的标定板图片直接求解
:可由机械臂末端位姿参数求得
:未知量,由于标定板固定在机械臂末端,所以对每组图片,该转换矩阵都相同
变形得:
则可以得到如下等式:
2.3. 手眼标定公式推导 — 眼在手内
手眼标定坐标系表示:
- 机械臂基地坐标系 — base
- 机械臂末端坐标系 — end
- 相机坐标系 — camera
- 标定板坐标系 — board
求解目标:机械臂末端 到 相机坐标系 的变换矩阵
实现目标:
- 把标定板放到固定位置不动
- 移动机械臂末端,从不同角度拍摄n张标定板图片
已知对每张图片有:
其中:
:可由通过拍摄的标定板图片直接求解
:可由机械臂末端位姿参数求得
:未知量,由于标定板全程固定在一个位置不动,所以对每组图片,该转换矩阵都相同
变形得:
3. 方程 AX = XB 解法讲解
3.1. 解方程AX = XB
- 眼在手外:
- 眼在手内:
无论是眼在手外还是眼在受内,我们都可以得到一个经典的方程组 AX = XB ,这个方程组里有n-1个方程,(n是拍摄的图片数量)
其中X即为我们要求得的转换矩阵,里面有6个线性无关的变量。其中旋转3个自由度,平移3个自由度
3.2. 解方程AX = XB - Tais方法
参考论文:A New Technique for Fully Autonomous and Efficient 3D Robotics Hand/Eye Calibration
形式变换:由于A,B,X均为变换矩阵
则AX = XB 可以拆分成如下两个等式
旋转的表示:
- 旋转矩阵
- 旋转角
- 旋转向量
在三维坐标系中:
- 旋转矩阵:3*3 矩阵
- 旋转向量:
刚体绕旋转轴旋转,r表示的是旋转轴的方向,r的长度是表示刚体绕轴旋转的角度 - 旋转角:
旋转角又称欧拉角,一般情况下旋转角指的是坐标系绕x轴旋转后,再绕y轴旋转后,再绕z轴旋转 分别的角度
4. 使用opencv完成手眼标定
使用opencv 完成手眼标定 - 4.1.0及以上的版本
(这个函数特别适合眼在手上的机械臂)