引言
手眼标定主要用于确定摄像头与机器人末端执行器(通常是机械臂末端)之间的空间变换关系。标定可以分为眼在手上和眼在手外两种。
眼在手上:
详细推导和代码实现可以参考:3D视觉工坊-手眼标定(附opencv实现代码)-CSDN博客
这里对一些关键部分解释:
眼在手上主要为了标定机械臂末端(end)坐标系到相机坐标系(cam)之间的变换关系:。
首先假设坐标系定义如下:
- base:机械臂基座坐标系
- cam:相机坐标系
- panel:棋盘格坐标系
- end:机械臂末端执行器坐标系
对于每一张图像和机械臂姿态我们可以得出以下等式:
由式可知 未知,但可知每组图像中标定板相对于基座的姿态没有变换,因此可得变换关系:
进一步,对于多幅图像可得等式:
令,
,
则上式变为
眼在手外:
同样地可以建立等式:
这里未知,同样的此处棋盘格与末端位姿保持不变,因此可得:
因此进一步可知:
令,
,
则上式变为
Tsai求解:
由上可知求解手眼标定问题就是求解问题。
这里介绍Tsai法求解眼在手上的问题:
令为机械臂末端执行器坐标系之间的变换关系(即从第i组末端执行器到第j组末端执行器的变换关系),同理令
为相机坐标系之间的变换关系。令
为相机坐标系到末端执行器坐标系之间的关系。则
可变为
,展开可得:
写成方程式为:
求解过程:
对旋转矩阵进行罗德里格斯变换:
向量归一化:
修正的罗德里格斯可以表示为:
计算初始旋转变量:
- 其中
,
:是从多个变换对中提取出的旋转向量(Rodrigues向量或等效轴角)。
- skew(⋅):反对称矩阵(用于叉乘的矩阵形式)
skew反对称矩阵表达形式如下:
建立叉乘和内积关系如下所示:
计算旋转变量:
计算平移向量:
由上可得X的所有成员变量。同样的可以推导眼在手外的求解过程。