机器人学笔记-5雅可比矩阵
1. 讲两句
前面我们了解了机器人的正运动学和逆运动学,听起来运动学也就这了,但我们其实只研究了机器人在某一瞬时的位置表达,运动学往往要涉及位姿、速度、加速度,位姿我们用正运动学的DH法可以在世界坐标系里表达任意杆的位置和姿态(位姿),那对位姿求导是啥?对谁求导?求关于谁的导?求导导出来了个啥?有啥用?好,下面详细说。
2. 一阶(速度)运动学
机器人末端执行器的位姿用最小数目(设该数目为m)的坐标来表示,该坐标写作一个m维向量x,对时间求导就可以得到这个坐标的速度 x˙=dxdt\dot{x}=\frac{dx}{dt}x˙=dtdx ,我们在实际驱动机器人末端到达m维向量x的过程中要用到另一套坐标体系,就是关节坐标,假设有n个关节,关节坐标θ∈Rn\theta \in {R^n}θ∈Rn
之前我们正运动学本质上是确立从关节坐标 θ\thetaθ 到 x 的映射(也就是齐次变换矩阵),而现在我们要建立的是从关节速度 θ(t)˙\dot{\theta(t)}θ(t)˙ 到 x(t)˙\dot{x(t)}x(t)˙ 的映射,也就是雅可比矩阵,这对我们如何设置关节电机的速度从而使末端达到对应的速度这一实际问题十分重要。
2.1 对平面2R机构的末端点的一阶运动学分析

我们可以直接写出末端点的坐标x:
x=[x1x2]=[L1cosθ1+L2cos(θ1+θ2)L1sinθ1+L2sin(θ1+θ2)] x = \left[ {\begin{matrix} {{x_1}}\\ {{x_2}} \end{matrix}} \right] = \left[ {\begin{matrix} {{L_1}\cos {\theta _1} + {L_2}\cos ({\theta _1} + {\theta _2})}\\ {{L_1}\sin {\theta _1} + {L_2}\sin ({\theta _1} + {\theta _2})} \end{matrix}} \right] x=[x1x2]=[L1cosθ1+L2cos(θ1+θ2)L1sinθ1+L2sin(θ1+θ2)]
利用链式法则对时间求导得到:
lx.=dxdθ=[∂x∂θ1∂x∂θ2][θ1.θ2.]=[−L1sinθ1−L2sin(θ1+θ2)−L2sin(θ1+θ2)L1cosθ1+L2cos(θ1+θ2)L2cos(θ1+θ2)][θ1.θ2.] \begin{matrix}{l} \mathop x\limits^. = \frac{{{\rm{d}}x}}{{d\theta }} = \left[ {\begin{matrix} {\frac{{\partial x}}{{\partial {\theta _1}}}}&{\frac{{\partial x}}{{\partial {\theta _2}}}} \end{matrix}} \right]\left[ {\begin{matrix} {\mathop {{\theta _1}}\limits^. }\\ {\mathop {{\theta _2}}\limits^. } \end{matrix}} \right]\\ \\ = \left[ {\begin{matrix} { - {L_1}\sin {\theta _1} - {L_2}sin({\theta _1} + {\theta _2})}&{ - {L_2}sin({\theta _1} + {\theta _2})}\\ {{L_1}cos{\theta _1} + {L_2}cos({\theta _1} + {\theta _2})}&{{L_2}\cos ({\theta _1} + {\theta _2})} \end{matrix}} \right]\left[ {\begin{matrix} {\mathop {{\theta _1}}\limits^. }\\ {\mathop {{\theta _2}}\limits^. } \end{matrix}} \right] \end{matrix} lx.=dθdx=[∂θ1∂x∂θ2∂x][θ1.θ2.]=[−L1sinθ1−L2sin(θ1+θ2)L1cosθ1+L2cos(θ1+θ2)−L2sin(θ1+θ2)L2cos(θ1+θ2)][θ1.θ2.]
显然雅可比矩阵 J(θ)J(\theta)J(θ) 就是 :
[−L1sinθ1−L2sin(θ1+θ2)−L2sin(θ1+θ2)L1cosθ1+L2cos(θ1+θ2)L2cos(θ1+θ2)] \left[ {\begin{matrix} { - {L_1}\sin {\theta _1} - {L_2}sin({\theta _1} + {\theta _2})}&{ - {L_2}sin({\theta _1} + {\theta _2})}\\ {{L_1}cos{\theta _1} + {L_2}cos({\theta _1} + {\theta _2})}&{{L_2}\cos ({\theta _1} + {\theta _2})} \end{matrix}} \right] [−L1sinθ1−L2sin(θ1+θ2)L1cosθ1+L2cos(θ1+θ2)−L2sin(θ1+θ2)L2cos(θ1+θ2)]
写成列向量的形式就可以看出:
vtip=J1(θ)θ1.+J2(θ)θ2 {v_{{\rm{tip}}}} = {J_1}(\theta )\mathop {{\theta _1}}\limits^. + {J_2}(\theta )\mathop {{\theta _2}} vtip=J1(θ)θ1.+J2(θ)θ2
而雅可比矩阵这两列的实际物理含义就是:
第一列的含义是当其他关节不动,只有第一个关节运动时对末端产生的速度分量
第二列的含义是当其他关节锁死,只有第二个关节运动时对末端产生的速度分量
如图所示:
以上就是简单的平面2R机构末端点的雅可比矩阵推导,生动又形象,而且简单,我们就借此来了解雅可比矩阵的一些神奇之处:
2.2 奇异
从上述内容可以看出,机器人末端 速度是当前时刻机器人关节坐标确定的雅可比矩阵 J(θ)J(\theta)J(θ) 的各列的线性组合,这个雅可比矩阵是随着关节角变化而改变的,当处于某些位置时,矩阵的秩可能会下降,也就是雅可比矩阵某些列之间会线性相关,这会让末端在某些方向的运动能力丧失,这些位置称为奇异位形。
从我们2R机构例子可以看出来,这个机构的奇异位形是两个杆所在直线重合的时候,那一时刻末端就丧失了延杆所在直线方向运动的能力而只能沿着垂直于杆的方向运动。
2.3 可操作度椭球和可操作度
雅可比矩阵降秩不是一蹴而就的,在某些接近奇异位形的关节坐标处我们就可以提前察觉到异常,为了评鉴当前关节坐标对应的雅可比矩阵接近奇异位形的程度,我们用可操作度来衡量。
要求可操作度,我们先引入可操作度椭球。
对2R机构,给你一组关节角,怎么评价这组关节角对应的位形在各个方向的运动能力,最简单粗暴的方法就是:
在关节速度空间里选取关节速度向量的一个单位圆(其实就是所有可能的单位速度都映射一遍),然后把圆上所有点都映射到对应末端速度向量,观察这些向量分布特征就可以了。
可以预见,如果我们求得的雅可比矩阵可逆,关节速度空间中的单位圆应该映射为一个椭圆(可操作度椭圆),椭圆的长轴短轴对应雅可比矩阵的特征向量方向,长轴短轴的长短对应两个特征值:
下图分别是关节坐标 (0,π2)(0,\frac{\pi}{2})(0,2π) 和 (0,3π2)(0,\frac{3\pi}{2})(0,23π)的可操作度椭圆:


可以看出后者((0,3π2)(0,\frac{3\pi}{2})(0,23π))显然在各个方向上的运动性能好于前者,前者在空间中朝着第一三象限的运动能力很弱,但是在第二四象限运动能力很显著,而其实在奇异位形的时候,可操作度椭圆退化为一条线,所以我们可以用椭圆的面积是正相关于可操作度的(也就是远离奇异位形的程度),椭圆的面积为 πab\pi abπab ,a 、b为长轴短轴长可以用雅可比矩阵的两个特征值表示,既然面积是特征值的乘积,而特征值的乘积就是矩阵的行列式,所以有很多对可操作度的度量:
∣det(J)∣|det(J)|∣det(J)∣
当然对于维数更高的雅可比矩阵当然就对应椭球了,这里简单一提,可以类比,些有不同。
2.4 静力和关节力矩的转换
利用雅可比矩阵和关节驱动功率与末端作业功率相同,可以推出关节力矩和末端静力之间的变换关系:
ftipTvtip=τTθ˙⇔ftipTJ(θ)θ˙=τTθ˙⇒τ=JT(θ)ftip⇔ftip=J−T(θ)τ \begin{array}{l} f_{tip}^T{v_{tip}} = {\tau ^T}\dot \theta \\ \\ \Leftrightarrow f_{tip}^TJ(\theta )\dot \theta = {\tau ^T}\dot \theta \\ \\ \Rightarrow \tau = {J^T}(\theta ){f_{tip}} \Leftrightarrow {f_{tip}} = {J^{ - T}}(\theta )\tau \end{array} ftipTvtip=τTθ˙⇔ftipTJ(θ)θ˙=τTθ˙⇒τ=JT(θ)ftip⇔ftip=J−T(θ)τ
非常有用
3.真正的完全体机器人雅可比矩阵
为了推导各各参考系的角速度之间的关系,我们需要先了解角速度和其对应的反对称矩阵的性质。
3.1 角速度
根据物理知识,角速度和线速度之间的关系是:
v=ω×r {\rm{v}} = \omega \times r v=ω×r
令旋转矩阵R为坐标系1在坐标系0中的表示(坐标系0旋转R到坐标系1)R的三列其实就是坐标系1的三个坐标轴对应的单位基向量在坐标系0中的坐标,加入坐标系1绕表示在坐标系0中的一个角速度旋转,那坐标系1三个基坐标断点的线速度就是以下矩阵的三个列向量:
V=ω×R V = \omega \times R V=ω×R
计算叉乘有好多方式,这里引入反对称矩阵(其实就是特殊正交群SO(3)的李代数)用[ω]或S(ω)[\omega]\text{或}S(\omega)[ω]或S(ω) 来表示(下面都用 S(ω)S(\omega)S(ω) 表示) 。
有如下关系:
S(ω)=S([ω1ω2ω3])=[0−ω3ω2ω30−ω1−ω2ω10] S(\omega ) = S(\left[ {\begin{matrix} {{\omega _1}}\\ {{\omega _2}}\\ {{\omega _3}} \end{matrix}} \right]) = \left[ {\begin{matrix} 0&{ - {\omega _3}}&{{\omega _2}}\\ {{\omega _3}}&0&{ - {\omega _1}}\\ { - {\omega _2}}&{{\omega _1}}&0 \end{matrix}} \right] S(ω)=S(
ω1ω2ω3
)=
0ω3−ω2−ω30ω1ω2−ω10
3.1.1 反对称矩阵的性质
- 线性:S(αa+βb)=αS(a)+βS(b)S(\alpha a+\beta b)=\alpha S(a)+\beta S(b)S(αa+βb)=αS(a)+βS(b)
- 叉积:S(s)p=a×pS(s)p=a\times pS(s)p=a×p
- .RS(a)RT=S(Ra). RS(a)R^T=S(Ra).RS(a)RT=S(Ra)
证明:(其实肉眼看可以看出相似变换的感觉,但还是严格证明一下)
对旋转矩阵R有:
R(a×b)=Ra×Rb R(a\times b)=R a\times Rb R(a×b)=Ra×Rb
对性质3中式子两边同时乘以一个向量b:
左边=RS(a)RTb=R(a×RTb)=Ra×b=S(Ra)b=右边 \text{左边}=RS(a)R^Tb=R(a\times R^Tb)=Ra\times b=S(Ra)b=\text{右边} 左边=RS(a)RTb=R(a×RTb)=Ra×b=S(Ra)b=右边
用相似变换来解释的话,就是R是坐标系1在坐标系0中的表示,坐标系1中的 a×=S(a)a\times =S(a)a×=S(a) 这个线性变换相似变换到坐标系0就是 RS(a)RTRS(a)R^TRS(a)RT,这是推导公式的结果,但如果从物理分析的角度,坐标系1中的向量a在坐标系0中就是 RaRaRa,所以公式推导的结果RS(a)RTRS(a)R^TRS(a)RT就应该等于S(Ra). - 对任意的同维度向量X :XTS(a)X=0X^TS(a)X=0XTS(a)X=0
3.1.2 求解角速度
因为
V=ω×R V = \omega \times R V=ω×R
这里的V也就是三个坐标轴端点的速度还可以通过对向量对时间求导得到,也就是
V=R˙=ω×R=S(ω)R V =\dot{R}= \omega \times R=S(\omega)R V=R˙=ω×R=S(ω)R
我们可以轻松推导出反对称矩阵:
S(ω)=R˙RT S(\omega)=\dot{R}R^T S(ω)=R˙RT
注意这里的角速度是在世界坐标系中的表示,而在R对应的旋转坐标系中角速度对应的坐标看起来很相近:
S(ωR)=RTR˙ S(\omega^R)=R^T\dot{R} S(ωR)=RTR˙
这可以从下式推出:
R˙=R(S(ωR)×I) \dot{R}=R(S(\omega^R)\times I) R˙=R(S(ωR)×I)
这个式子怎么来的仔细观察,好好思考看看吧。
3.2 角速度叠加
因为机器人相邻两个杆件坐标系之间都有关节连接,如果是转动关节的话,那么两个坐标系之间的相对角速度很容易求出就是一个大小为关节变量,方向为驱动轴的向量,但是为了求解雅可比矩阵,我们想要了解的是每个杆系相对于基坐标系的角速度,这就需要角速度的叠加。
其实很自然如果知道n+1个坐标系之间两两的相对角速度,并且在基坐标系中表示记为:ωn−1,n0\omega^0_{n-1,n}ωn−1,n0 ,这个就表示坐标系n相对于坐标系n-1的角速度,而且在坐标系0中表示,其实根据DH约定建系的话,这个相对角速度在坐标系n-1中表示为:ωn−1,nn−1=θn˙zn−1n−1\omega^{n-1}_{n-1,n}=\dot{\theta_n}z_{n-1}^{n-1}ωn−1,nn−1=θn˙zn−1n−1 ,那么借助旋转矩阵,在坐标系0中表示就是:ωn−1,n0=Rn−10ωn−1,nn−1=Rn−10θn˙zn−1n−1\omega^0_{n-1,n}=R^0_{n-1}\omega^{n-1}_{n-1,n}=R^0_{n-1}\dot{\theta_n}z_{n-1}^{n-1}ωn−1,n0=Rn−10ωn−1,nn−1=Rn−10θn˙zn−1n−1
而 Rn−10zn−1n−1R^0_{n-1}z_{n-1}^{n-1}Rn−10zn−1n−1 实际上就是 Rn−10R^0_{n-1}Rn−10 的第三列,而 Rn−10R^0_{n-1}Rn−10 可以从DH法中求出。
所以我们很自然的得到:
ω0,n0=ω0,10+ω1,20+ω2,30+...+ωn−1,n0 \omega _{0,n}^0 = \omega _{0,1}^0 + \omega _{1,2}^0 + \omega _{2,3}^0 + ... + \omega _{n - 1,n}^0 ω0,n0=ω0,10+ω1,20+ω2,30+...+ωn−1,n0
当然需要我们用DH法求出每个杆系的变换矩阵,好在这个过程可以演绎递推,其实没有啥重复工作要做。
对于简化情形下 ω20=ω0,10+R10ω1,21\omega _2^0 = \omega _{0,1}^0 + R_1^0\omega _{1,2}^1ω20=ω0,10+R10ω1,21 的严格数学证明可以对下式求导,然后利用反对称矩阵的性质推导:
R20(t)=R10(t)R21(t) R_2^0(t) = R_1^0(t)R_2^1(t) R20(t)=R10(t)R21(t)
这里就留作习题吧 : P
3.3 雅可比矩阵的构造
空间中物体的速度可以分为坐标系原点速度和物体旋转产生的线速度的叠加,所以我们用旋量的形式表达空间物体的速度(v和 ω\omegaω 的顺序好像没大关系):
ξ=[vω] \xi = \left[ {\begin{matrix} v\\ \omega \end{matrix}} \right] ξ=[vω]
我们可以分别求关节速度映射到角速度分量的雅可比矩阵 JωJ_{\omega}Jω 和另一个分量 JvJ_{v}Jv
3.3.1 角速度雅可比矩阵
易知 JωJ_{\omega}Jω 是一个 3×n3 \times n3×n 的矩阵,他的第k列为
Jωk=ρkzk−10 J_{\omega k}=\rho_kz^0_{k-1} Jωk=ρkzk−10
其中当第k个关节为旋转关节的时候, ρk=1\rho_k=1ρk=1,为线性关节的时候为0。
zk−10z^0_{k-1}zk−10 就是 Rk−10R^0_{k-1}Rk−10 的第三列
3.3.2 原点线速度雅可比矩阵
- 当第k个关节为平动关节的时候:
Jvk=zk−10 J_{v k}=z^0_{k-1} Jvk=zk−10 - 当第k个关节为平转关节的时候:
根据一开始2R机构的例子,雅可比矩阵第k列为其他关节锁死,只有第k关节运动时对末端提供的速度分量,第k个关节对应的坐标系原点为 ok−10o^0_{k-1}ok−10,对末端坐标系原点提供的速度分量为:
θ˙zk−10×(on0−ok−1]0) \dot{\theta}z^0_{k-1} \times(o^0_n-o^0_{k-1]}) θ˙zk−10×(on0−ok−1]0)
所以
Jvk=zk−10×(on0−ok−1]0) J_{v k}=z^0_{k-1} \times(o^0_n-o^0_{k-1]}) Jvk=zk−10×(on0−ok−1]0)
这样,雅可比矩阵就构造完毕了。
当然这不是唯一的构造方式,现代机器人学提供了另一种基于PoE的方式,十分优美。
4.分析雅可比矩阵
这里的知识以后再来填补吧!
DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。
更多推荐
所有评论(0)