【机器人】转动的指数坐标表示心得理解

转动的指数坐标表示心得理解

  • 1.前言
  • 2.指数坐标表示旋转矩阵
  • 3.原理推导
  • 4.矩阵对数、矩阵指数

1.前言

最近因为项目需求,又学习了一点机器人学的东西,参考书籍为《现代机器人学》,该书采用指数坐标、旋量的方式来对机器人进行描述和运动学、动力学建模,让我对机器人有了更深的理解,也是弥补DH参数建模复杂的缺陷,虽然DH法只用4个参数,而旋量需要更多,但是它骚啊!

本文是我学习了转动的指数坐标表示的一个心得体会,如有问题请多多包涵。

2.指数坐标表示旋转矩阵

指数坐标可以用来表示求解旋转矩阵,其原理非常简单巧妙,需要获得的量为:

  • 惯性系下表示的单位向量表示的旋转轴 ω ^ ∈ R 3 \hat\omega\in\mathbb{R}^3 ω^R3,且 ∥ ω ^ ∥ = 1 \left\|\hat\omega\right\|=1 ω^=1

  • 绕该转轴的旋转角度 θ \theta θ

则旋转矩阵可以表示为

R ( ω ^ , θ ) = e [ ω ^ ] θ = I + s i n ( θ ) [ ω ^ ] + ( 1 − c o s ( θ ) [ ω ^ ] 2 ∈ S O ( 3 ) R(\hat\omega,\theta)=e^{[\hat\omega]\theta}=I+sin(\theta)[\hat\omega]+(1-cos(\theta)[\hat\omega]^2\in SO(3) R(ω^,θ)=e[ω^]θ=I+sin(θ)[ω^]+(1cos(θ)[ω^]2SO(3)

3.原理推导

用旋转坐标表示旋转矩阵的算法推导主要是利用了线性常微分方程的一个性质,对于一个线性常微分方程
x ˙ ( t ) = a x ( t ) \dot{x}(t)=ax(t) x˙(t)=ax(t)
其中,初始条件为 x ( 0 ) = x 0 x(0)=x_0 x(0)=x0,则该方程的解为
x ( t ) = e a t x 0 x(t)=e^{at}x_0 x(t)=eatx0
同样,对于向量线性常微分方程,即 a a a为一个矩阵 A A A时,方程的解仍为
x ( t ) = e A t x 0 x(t)=e^{At}x_0 x(t)=eAtx0
其中 e A t e^{At} eAt被称为矩阵指数,对其进行泰勒展开,这也是推导后续公式的非常关键的一步:
e A t = I + A I + ( A t ) 2 2 ! + ( A t ) 3 3 ! + . . . + ( A t ) n n ! e^{At}=I+AI+\frac{(At)^2}{2!}+ \frac{(At)^3}{3!}+...+\frac{(At)^n}{n!} eAt=I+AI+2!(At)2+3!(At)3+...+n!(At)n
那么如何将这个向量线性常微分方程的解和旋转矩阵相关联起来呢?首先,我们需要找到一个微分关系,对于刚体旋转,我们可以利用线速度和角速度的关系来建立一个向量线性常微分方程。

假定空间中一个向量 p ( 0 ) ∈ R 3 p(0)\in\mathbb{R}^3 p(0)R3,将其绕单位旋转轴 ω ^ \hat\omega ω^旋转 θ \theta θ角度到新的位置 p ( θ ) ∈ R 3 p(\theta)\in\mathbb{R}^3 p(θ)R3,注意,该转动也可以表达为:绕单位旋转轴 ω ^ \hat\omega ω^,以单位角速度1rad/s旋转 θ \theta θ时间,即对角速度在 t = 0 t=0 t=0 θ \theta θ进行积分,旋转了 θ \theta θ角度到新的位置 p ( θ ) ∈ R 3 p(\theta)\in\mathbb{R}^3 p(θ)R3,那么根据线速度的定义:线速度=角速度叉乘矢径,该旋转过程的线速度为:
p ˙ = ω ^ × p \dot{p}=\hat\omega\times p p˙=ω^×p
其中, ω ^ \hat\omega ω^是因为角速度为沿着单位旋转轴 ω ^ \hat\omega ω^的单位角速度,故其角速度矢量仍为 ω ^ \hat\omega ω^,改写为叉乘矩阵形势,即skew反对称矩阵
p ˙ = [ ω ^ ] p \dot{p}=[\hat\omega]p p˙=[ω^]p
同理,该微分方程的解与上述的线性常微分方程一样,且因为 θ \theta θ角速和时间是等效的,故可以将解中的时间 t t t替换为 θ \theta θ
p ( θ ) = e [ ω ^ ] θ p ( 0 ) p(\theta)=e^{[\hat\omega]\theta}p(0) p(θ)=e[ω^]θp(0)
上式实现了从初始向量位置 p ( 0 ) p(0) p(0)经过一个线性变换 e [ ω ^ ] θ e^{[\hat\omega]\theta} e[ω^]θ,到达了目标位置 p ( θ ) p(\theta) p(θ),也就是说线性变换 e [ ω ^ ] θ e^{[\hat\omega]\theta} e[ω^]θ实现了与旋转矩阵一样的功能,即线性变换 e [ ω ^ ] θ e^{[\hat\omega]\theta} e[ω^]θ为旋转矩阵的另一种表达方式:指数坐标。

最后,利用泰勒展开公式,即可得到指数坐标和旋转矩阵的转换关系
R ( ω ^ , θ ) = e [ ω ^ ] θ = I + s i n ( θ ) [ ω ^ ] + ( 1 − c o s ( θ ) [ ω ^ ] 2 ∈ S O ( 3 ) R(\hat\omega,\theta)=e^{[\hat\omega]\theta}=I+sin(\theta)[\hat\omega]+(1-cos(\theta)[\hat\omega]^2\in SO(3) R(ω^,θ)=e[ω^]θ=I+sin(θ)[ω^]+(1cos(θ)[ω^]2SO(3)

4.矩阵对数、矩阵指数

在这里总结一下一些术语。

矩阵指数 矩阵对数
由单位旋转轴和旋转角度求旋转矩阵的运算 由旋转矩阵求单位旋转轴和旋转角度的运算

因为在由单位旋转轴和旋转角度求旋转矩阵时,所使用的算法为
R ( ω ^ , θ ) = e [ ω ^ ] θ R(\hat\omega,\theta)=e^{[\hat\omega]\theta} R(ω^,θ)=e[ω^]θ
该式是对 [ ω ^ ] θ [\hat\omega]\theta [ω^]θ进行矩阵指数运算而求得的旋转矩阵,故称为矩阵指数。

反之,如何由旋转矩阵求得单位旋转轴和旋转角度呢?也就是进行指数运算的逆运算:对数运算!即 [ ω ^ ] θ = l n ( R ) [\hat\omega]\theta=ln(R) [ω^]θ=ln(R),当然最终的算法并不是这样的,因为其比较简单,参考书籍即可,不再赘述。

你可能感兴趣的:(机器人控制学习,算法)