【机器人】刚体运动的指数坐标表达学习心得与理解

1.前言

上一篇文章对旋转的指数坐标表示进行了总结,也就是旋转矩阵和指数坐标之间的关系。今天准备写一下包括旋转和平移内容的刚体运动的指数坐标表达学习心得和对其的理解。如有问题,欢迎留言。

2.运动旋量

运动旋量也被称为“空间速度”,当然前提都是要有个参考坐标系。对于一个4×44\times4的表示{b}\{b\}相对于{s}\{s\}齐次变换矩阵
sTb=[R(t)p(t)01] ^sT_b= \left[ \begin{matrix} R(t) & p(t) \\ 0&1 \end{matrix} \right]
则有
sTb1sTb˙=[Vb]=[[ωb]vb00] ^sT_b^{-1}\dot{^sT_b}=[V_b]= \left[\begin{matrix} [\omega_b] & v_b \\ 0&0 \end{matrix} \right]
sTb˙sTb1=[Vs]=[[ωs]vs00] \dot{^sT_b}^sT_b^{-1}=[V_s]= \left[\begin{matrix} [\omega_s] & v_s \\ 0&0 \end{matrix} \right]
Vb=[ωbvb] V_b= \left[\begin{matrix} \omega_b\\ v_b \end{matrix} \right]
Vs=[ωsvs] V_s= \left[\begin{matrix} \omega_s\\ v_s \end{matrix} \right]
上式中,VbV_bVsV_s分别称为物体运动旋量空间运动旋量,其区别就在于角速度和线速度所在的坐标系不同。

3.运动旋量的螺旋解释

将运动旋量和角速度旋转运动对比起来看,如下表所示

角速度 运动旋量
角速度ω\omega可以写成绕单位转轴ω^\hat\omega以角速度θ˙\dot{\theta}旋转,即ω=ω^θ˙\omega=\hat\omega\dot{\theta} 运动旋量VV可以写成绕螺旋轴SS以角速度θ˙\dot{\theta}旋转运动,该旋转还会带上沿螺旋轴的平移,即V=Sθ˙V=S\dot\theta

运动旋量为什么可以表达螺旋运动呢?下图是螺旋运动的一个示意图
【机器人】刚体运动的指数坐标表达学习心得与理解
螺旋运动是绕螺旋轴的转动和平移的复合。其中s^\hat s为螺旋轴方向的单位向量,hh为节距,即线速度和角速度的比值,如果只有旋转运动,则h=0h=0,若只有平移运动,则h=+h=+\inftyqR3q\in\mathbb{R}^3是螺旋轴上的任意一点,上述参数都是在固定坐标系中表示。

将螺旋运动和运动旋量中的各个速度参数对应起来表示为
Vs=[ωsvs]=[s^θ˙s^θ˙×q+hs^θ˙] V_s= \left[\begin{matrix} \omega_s\\ v_s \end{matrix} \right]= \left[\begin{matrix} \hat s\dot\theta\\ -\hat s\dot\theta\times q+h \hat s\dot\theta \end{matrix} \right]
式中,线速度有两个分量组成,一个是沿着螺旋轴方向的线速度hs^θ˙h \hat s\dot\theta,还有一个则是参考坐标系的原点,即向量0,在绕螺旋轴的旋转中的线速度,因为线速度=角速度×\times从转轴到目标点的矢径,因此该线速度分量为
vq=s^θ˙×(0q)=s^θ˙×q v_q=\hat s\dot\theta\times(0-q)=-\hat s\dot\theta\times q
为什么是0-q?因为要得到一条从转轴沿着q向量方向到达原点的向量,则只能通过目标点-起始点获得,因为向量减法是指向被减向量

可见,对于任意运动旋量V=(ω,v)V=(\omega,v),当ω0\omega \neq 0的时候,必定存在一个等效螺旋轴和旋转速度θ˙\dot\theta,其中

  • ω0\omega\neq0时,s^=ωωθ˙=ω\hat s=\frac{\omega}{\left\| \omega \right\|},\dot\theta=\left\| \omega \right\|,即此时的螺旋轴S=Vω=(ωω,vω)S=\frac{V}{\left\| \omega \right\|}=(\frac{\omega}{\left\| \omega \right\|},\frac{v}{\left\| \omega \right\|}),因为螺旋轴的角速度θ˙=ω\dot\theta=\left\| \omega \right\|,故Sθ˙=VS\dot\theta=V

  • ω=0\omega=0时,此时仅有平移运动,线速度θ˙=v\dot\theta=\left\| v \right\|

给定参考坐标系,螺旋轴SS可以写为
S=[ωv]R6 S=\left[\begin{matrix} \omega\\ v \end{matrix} \right]\in\mathbb{R}^6
[S]=[[ω]v00] [S]=\left[\begin{matrix} [\omega] & v\\ 0 & 0 \end{matrix} \right]
注意,当描述螺旋轴时,其角速度ω\omega或者线速度vv单位矢量,而当描述运动旋量时,则不需要,因为Sθ˙=VS\dot\theta=V,运动旋量可以看作是螺旋轴与角速度的乘积,就像旋转运动是单位旋转轴和角速度的乘积,只不过运动旋律是使用了单位螺旋轴。

4.刚体运动的矩阵指数和矩阵对数

和旋转运动一样,刚体运动也有对应的指数坐标表达,将[S]θ[S]\theta看作是刚体运动齐次变换矩阵的李代数,即e的指数,同样使用泰勒展开为
e[S]θ=I+[S]θ+[S]2θ22!+[S]3θ33!+...=[e[ω]θG(θ)v01] e^{[S]\theta}=I+[S]\theta+[S]^2\frac{\theta^2}{2!}+[S]^3\frac{\theta^3}{3!}+... \\ \\=\left[\begin{matrix} e^{[\omega]\theta} & G(\theta)v\\ 0 &1 \end{matrix} \right]
其中
G(θ)=Iθ+[ω]θ22!+[ω]2θ33!+...=Iθ+(1cos(θ))[ω]+(θsin(θ))[ω]2 G(\theta)=I\theta+[\omega]\frac{\theta^2}{2!}+[\omega]^2\frac{\theta^3}{3!}+... \\=I\theta+(1-cos(\theta))[\omega]+(\theta-sin(\theta))[\omega]^2
即刚体运动的指数坐标表示,即矩阵指数为
e[S]θ=[e[ω]θ[Iθ+(1cos(θ))[ω]+(θsin(θ))[ω]2]v01] e^{[S]\theta}=\left[\begin{matrix} e^{[\omega]\theta} & [I\theta+(1-cos(\theta))[\omega]+(\theta-sin(\theta))[\omega]^2]v\\ 0 &1 \end{matrix} \right]
反求矩阵对数就很简单了,书上公式直接套即可,不再赘述。