一、手眼标定前先理解坐标系的变换
坐标系运算规则一(利用两个坐标系下同一点的转换关系求解):
假设有两个坐标系,其中坐标系B中b点由坐标系A中a点变换而来,则ab之间有下式:
①
②
由②式可以得出:
齐次坐标系:
① 已知坐标系A下的点,则点a的齐次坐标系可以写成坐标系B下的点的齐次坐标系可以写成
② 已知齐次坐标系下一点,则点p的真实三维坐标为
③ 齐次坐标系下的变换矩阵:
坐标系运算规则二(利用第三坐标做中介直接求解矩阵):
假设有三个坐标系:ABC,已知如下关系:
对于旋转矩阵R(矩阵连乘的性质):
对于平移矩阵T:
齐次坐标系下的坐标变换:
① 已知a,b,c分别为坐标系A,B,C下的齐次坐标,则有如下关系:
② 对于坐标系1.2.3...n,有:
二、手眼标定坐标系表示(坐标系的英文表示)
1. 机械臂基底坐标系——base
2. 机械臂末端坐标系——end
3. 相机坐标——camera
4. 标定板坐标系——board
三、 坐标系的变换需要的变量(声明各形式表示的意义)
四、 推导过程
1.求解目标:
2. ① 把标定板固定在机械臂末端
② 使用相机拍摄不同机械臂姿态下的标定板图片12组
③ 读取并记录对应相机拍摄标定板时机械臂位姿12组
3. 由线性代数中矩阵的连乘的性质可以得到
4. 其中:
可以通过拍摄的标定板图片直接求得(在下一篇成像原理讲解算法)
可由机械臂末端位姿参数求得(要计算:① 使用的旋转矩阵,把谁(A)转换到谁(B),就把谁(A)的坐标向量写成B坐标的表示,并作为列向量XYZ的矩阵。因此把基坐标系中单位坐标向量在末端坐标系中的表示作为列向量的矩阵(旋转矩阵)② 计算在末端坐标系下,以末端坐标系原点为起点,基坐标系原点为终点的向量;实际计算是以A坐标系原点坐标值减去B坐标系原点坐标值计算而来。)
未知量,由于标定板固定在机械臂末端,故值都相同
变形①式得到
带入两组参数:
由③④得:
化简得:
5.求解AX=XB——Tais
带入十二组数据:
由于A、B、X均为线性变换矩阵
则AX=XB可拆分为:
Tais前先了解在3D坐标系下的点的转换矩阵
①. 平移
假设空间中一点p(X,Y,Z),将其沿X移动a,沿Y移动b,沿Z移动c平移后坐标(X,Y,Z)
使用齐次矩阵表示如下:
②. 旋转
对于空间中一个点p(x,y,z)将其分别绕ZYX轴旋转,则旋转矩阵为:
Tais法:先求Rx后求Tx
旋转表示:1.旋转矩阵(3*3)R=RzRyRx
2.旋转角 (又叫欧拉角)
3.旋转向量r=(x y z) (norm表示求向量的模长,罗德里格斯(Rodrigues)提出旋转向量概念,该向量的方向是旋转轴,其模则是旋转角度;)
罗德里格斯公式推导
参数:
向量描述形式:
矩阵描述形式:
步骤一:罗德里格斯旋转公式把旋转矩阵变为旋转向量(r=Rz*Ry*Rx;首先,通过旋转矩阵不能直观地看出旋转方向和角度,假设给定一个旋转矩阵,要求旋转方向不变,旋转角度变成一半,那么新的旋转矩阵计算起来就比较麻烦了。另一方面,旋转变换本身只有3个自由度,但旋转矩阵有9个元素,因此旋转矩阵中的元素不是相互独立的,这在线性优化中会带来问题)
步骤二:旋转向量归一化(将数据映射到0-1之间,方便数据处理)
步骤三:计算修正的罗德里格斯向量(描述两个坐标系之间方向关系的一种方法,且由欧拉角四元数衍生的定义;修正罗德里格斯参数由三个参量表征了三自由度的坐标旋转,唯一性好,奇点问题可克服,与其他参数转化方便,微分方程较简单。)
步骤四:计算初始旋转向量(单位的旋转向量,向量的模是旋转的角度,向量本身就是绕着旋转的轴)
其中skew为反对称运算(将3*1向量转换成3*3反对称矩阵)
下面用一个示例简述反对称运算:
假设一个三维向量V=[vx,vy,vz]其反对称矩阵为:
步骤五:计算旋转向量
步骤六:计算旋转矩阵(罗德里格斯旋转向量转换成旋转矩阵)
步骤七:计算平移矩阵: