位姿理解到了,可以开始上手摆弄协作臂了吗?先等等,坐标系搞清楚没有?先看下常用的坐标系。

协作臂常用坐标系

进行协作臂开发,肯定少不了跟这几个坐标系打交道。

1.基坐标系(世界坐标系)

协作臂都有基坐标系,默认原点是协作臂底座的中心点。如果机械臂是正放安装的姿态,Z轴垂直于安装面向上,X和Y轴在安装平面上,具体方向各厂家略有不同。如图1

2.工具坐标系(末端坐标系)

6轴或7轴的协作臂的工具坐标系,原点一般在第6或7轴法兰末端中心,也叫TCP(Tool Center Point);如果连接有末端执行器,则一般在执行器中心轴末端(或夹爪中点)。Z轴与末端法兰轴心重合,指向末端的朝向。如图1

3.用户坐标系

用户自己定义的坐标系,一般是已有生产线或者应用场景的情况下,用户已经提前定义好的坐标系。

4.相机坐标系

一般是指相机拍摄像图像时,产生图像的坐标系。在协作臂使用机器视觉时需要用到。如图1




机械臂坐标移动python 机械手臂坐标系xyz轴方向_机械臂坐标移动python


图1-手眼标定中的坐标系

这么多坐标系,相互之间少不了变换。比如,在相机中拍到的某个物体,在基坐标系中的位置在哪里?

坐标系变换

平移;姿态的变换叫做旋转

平移变换

矢量相加。点P在坐标系{B}中的位置记为


机械臂坐标移动python 机械手臂坐标系xyz轴方向_机械臂坐标移动python_02

,坐标系{A}与{B}姿态相同,{B}的原点相对于{A}原点的向量为

机械臂坐标移动python 机械手臂坐标系xyz轴方向_线性代数_03

,点P在{A}中的位置为

机械臂坐标移动python 机械手臂坐标系xyz轴方向_线性代数_04

。变换公式为:

机械臂坐标移动python 机械手臂坐标系xyz轴方向_机械臂坐标移动python_05


机械臂坐标移动python 机械手臂坐标系xyz轴方向_slam_06

坐标系平移变换

旋转变换

就是原点重合,姿态改变,一般用旋转矩阵来表示。点P在坐标系{B}中的位置记为


机械臂坐标移动python 机械手臂坐标系xyz轴方向_jre_07

,坐标系{A}与{B}原点重合,{B}相对{A}的姿态描述就是旋转矩阵

机械臂坐标移动python 机械手臂坐标系xyz轴方向_机械臂坐标移动python_08

,点P在{A}中的位置为

机械臂坐标移动python 机械手臂坐标系xyz轴方向_线性代数_04

,变换公式为:

机械臂坐标移动python 机械手臂坐标系xyz轴方向_机械臂坐标移动python_10


机械臂坐标移动python 机械手臂坐标系xyz轴方向_线性代数_11

坐标系旋转变换

复合变换(平移+旋转)

一般情况下,坐标系的变换都是复合变换,需要平移原点再进行旋转完成变换。点P在坐标系{B}中的位置记为


机械臂坐标移动python 机械手臂坐标系xyz轴方向_jre_07

,{B}的原点相对于{A}原点的向量为

机械臂坐标移动python 机械手臂坐标系xyz轴方向_线性代数_03

,{B}相对{A}的姿态描述就是旋转矩阵

机械臂坐标移动python 机械手臂坐标系xyz轴方向_机械臂坐标移动python_08

,点P在{A}中的位置为

机械臂坐标移动python 机械手臂坐标系xyz轴方向_线性代数_04

,变换公式为:

机械臂坐标移动python 机械手臂坐标系xyz轴方向_slam_16

(复合变换公式)

机械臂坐标移动python 机械手臂坐标系xyz轴方向_机械臂坐标移动python_17

坐标系复合变换

齐次变换矩阵

齐次变换矩阵。下面公式中的


机械臂坐标移动python 机械手臂坐标系xyz轴方向_jre_18

就是一个齐次变换矩阵:

机械臂坐标移动python 机械手臂坐标系xyz轴方向_slam_19


其结构为4x4:


机械臂坐标移动python 机械手臂坐标系xyz轴方向_线性代数_20


这样一来,使用齐次变换矩阵后,坐标系的复合变换也直接变成矩阵乘法运算了。

多个坐标系的变换

有了齐次变换矩阵,表示多个坐标系的变换就方便了。已知坐标系{C}相对于{B}的变换,且已知坐标系{B}相对{A}的变换。要将点在{C}中的表示


机械臂坐标移动python 机械手臂坐标系xyz轴方向_计算机视觉_21

变换为在{A}中的表示

机械臂坐标移动python 机械手臂坐标系xyz轴方向_线性代数_04

。已知:

机械臂坐标移动python 机械手臂坐标系xyz轴方向_机械臂坐标移动python_23

,又已知:

机械臂坐标移动python 机械手臂坐标系xyz轴方向_线性代数_24

,两式合并代入有:

机械臂坐标移动python 机械手臂坐标系xyz轴方向_线性代数_25

。可定义:

机械臂坐标移动python 机械手臂坐标系xyz轴方向_jre_26


机械臂坐标移动python 机械手臂坐标系xyz轴方向_slam_27

多个坐标系之间使用齐次变换矩阵

齐次变换的逆变换

已知坐标系{B}相对坐标系{A}的齐次变换


机械臂坐标移动python 机械手臂坐标系xyz轴方向_jre_18

,求

机械臂坐标移动python 机械手臂坐标系xyz轴方向_slam_29

。已知

机械臂坐标移动python 机械手臂坐标系xyz轴方向_jre_18

,就已知

机械臂坐标移动python 机械手臂坐标系xyz轴方向_机械臂坐标移动python_08


机械臂坐标移动python 机械手臂坐标系xyz轴方向_线性代数_03

。由旋转矩阵的性质可知:

机械臂坐标移动python 机械手臂坐标系xyz轴方向_slam_33


由上面的复合变换公式可以得到


机械臂坐标移动python 机械手臂坐标系xyz轴方向_jre_34

,因为在{B}中

机械臂坐标移动python 机械手臂坐标系xyz轴方向_线性代数_03

为0,所以有

机械臂坐标移动python 机械手臂坐标系xyz轴方向_jre_36


根据齐次变换矩阵的定义,可写出:


机械臂坐标移动python 机械手臂坐标系xyz轴方向_slam_37



变换方程

坐标系变换最常用到的地方,就是相机与机械臂末端的手眼标定。变换方程,就是在已知变换矩阵的情况下,求出未知矩阵。


机械臂坐标移动python 机械手臂坐标系xyz轴方向_计算机视觉_38

坐标系变换方程

由上图可知


机械臂坐标移动python 机械手臂坐标系xyz轴方向_slam_39


机械臂坐标移动python 机械手臂坐标系xyz轴方向_机械臂坐标移动python_40

,于是等式替换:

机械臂坐标移动python 机械手臂坐标系xyz轴方向_计算机视觉_41

,要求解

机械臂坐标移动python 机械手臂坐标系xyz轴方向_jre_42

,可变换等式:

机械臂坐标移动python 机械手臂坐标系xyz轴方向_slam_43


现在,坐标系的变换都搞清楚了吧?