协作臂学习(9)-雅可比矩阵

雅可比矩阵

在机器人学中,雅可比矩阵最常用于表示关节速度末端笛卡尔速度之间的关系,有公式:

末端速度

表示空间速度,刚体的空间速度包括
线(平移)速度
角(旋转)速度
部分(比如,地球在太空中绕太阳公转,同时绕南北极轴线自转)。

线速度向量包括

三个方向的分量

角速度向量包括

三个轴向的分量

代入
中,

关节速度

在DH建模法中,关节分为转动型(R型,revolute)、滑动杆 / 平移(P型,prismatic)。因此,

表示当前关节的位置:R型关节角度,P型关节位移。

表示当前关节的速度:R型关节角速度,P型关节线速度。

速度与微分

首先,回到初中物理公式:速度=距离/时间。在大学物理中,瞬时速度公式:

物体在某一时刻的瞬时速度

定义为位置矢量
随时间
的变化率,于是已知时间的情况下,
速度的问题变成了微分问题

末端微分

对于机械臂,末端的微分运动

主要包括:沿
轴的微分平移
,绕
轴的微分旋转
,共6个量:

关节微分

对于机械臂,关节的微分运动与关节类型有关,DH建模法6R协作臂为例,关节微分为每个关节角的微分旋转,表示为

由于速度变成了微分,下面是雅可比矩阵把微分联系起来的公式:

\left[D\right]=\left[\begin{array}{c} dx\\ dy\\ dz\\ \delta x\\ \delta y\\ \delta z \end{array}\right]=\left[J\right] \left[\begin{array}{c} d\theta_1\\ d\theta_2\\ d\theta_3\\ d\theta_4\\ d\theta_5\\ d\theta_6 \end{array}\right]=[J][D_\theta]\\

微分运动

微分运动包括平移、旋转和组合变换(平移+旋转),平移表示为:

坐标系绕

轴旋转
度表示为:

绕一般轴的旋转是由绕

轴的三个旋转构成的:

所以由1.10式和1.11式,有

坐标系的微分变换

设原坐标系为

,坐标系的微分变化为
,把平移和旋转合并一起来表示坐标系的微分变换,左乘原坐标系就得到微分变化之后的结果。由式1.9和110有:

1.13式右边的变换可用

表示,由式.9和11.12,可计算出
为:

式1.14表示相对于固定参考坐标系的微分变换。在DH建模法中,都是通过前一个关节的坐标系求下一个关节坐标系,因此,还需要找出相对于当前坐标系的微分变换。

坐标系的相对微分变换

为相对自身变换的算子,相对自身的变换通过右乘
获得:

由式1.15可推出:

由式1.16可以看出,坐标系相对自身变换的算子,可以通过坐标系自身

、相对固定坐标系的微分变换
来表示。设T为n、o、a轴和p表示的坐标系。有:

T=\left[\begin{array}{cccc} nx & ox & ax & px\\ ny & oy & ay & py\\ nz & oz & az & pz\\ 0 & 0 & 0 & 1 \end{array}\right]\\ T^{-1}=\left[\begin{array}{cccc} nx & ny & nz & -p.n\\ ox & oy & oz & -p.o\\ ax & ay & az & -p.a\\ 0 & 0 & 0 & 1 \end{array}\right]\\

将式1.17代入1.16中,可以算出

^T\Delta=\left[\begin{array}{cccc} 0 & -\delta\cdot a & \delta\cdot o & \delta \cdot (p\times n)+d\cdot n\\ \delta\cdot a & 0 & -\delta\cdot n & \delta \cdot (p\times o)+d\cdot o\\ -\delta\cdot o & \delta\cdot n & 0 & \delta \cdot (p\times a)+d\cdot a\\ 0 & 0 & 0 & 0 \end{array}\right]\\

定义

为:

于是由1.18和1.19可推出:

旋转关节

在DH建模中,对于旋转关节进一步简化式1.20有:

移动关节

在DH建模中,对于移动关节进一步简化式1.20有:

雅可比矩阵计算

到这里,雅各比矩阵基本上就已经出来了。对于协作臂从关节0坐标系开始,一直到关节6,相对自身进行微分变换,将所有的微分变换加起来,就是末端最终的微分变换:

\left[\begin{array}{c} ^{T6}dx\\ ^{T6}dy\\ ^{T6}dz\\ ^{T6}\delta x\\ ^{T6}\delta y\\ ^{T6}\delta z \end{array}\right]=\left[\begin{array}{cccccc} ^{T6}J_{11} & ^{T6}J_{12} & . & . & . & ^{T6}J_{16}\\ ^{T6}J_{21} & ^{T6}J_{22} & . & . & . & ^{T6}J_{26}\\ ^{T6}J_{31} & . & . & . & . & ^{T6}J_{36}\\ ^{T6}J_{41} & . & . & . & . & ^{T6}J_{46}\\ ^{T6}J_{51} & . & . & . & . & ^{T6}J_{56}\\ ^{T6}J_{61} & . & . & . & . & ^{T6}J_{66} \end{array}\right]\left[\begin{array}{c} d\theta_1\\ d\theta_2\\ d\theta_3\\ d\theta_4\\ d\theta_5\\ d\theta_6 \end{array}\right]\\

对于式1.23中的每一列,可根据关节类型用1.21或1.22来求解。有:

而1.24中对应使用的坐标系就是每个关节依次相对自身变换得到的坐标系,第

列用
进行计算。用下图表示末端与各关节的坐标变换关系,
可用公式表示。

协作臂学习(9)-雅可比矩阵_第1张图片

总结

雅可比矩阵用于将关节速度与末端速度联系起来,雅可比矩阵中的每个元素是对应运动学方程对其中一个变量的导数。雅可比矩阵的行是协作臂的自由度,列是关节数。

你可能感兴趣的:(算法,python,机器学习,人工智能,计算机视觉)