《Modern Robotics》阅读笔记1——刚体的运动(一)

《Modern Robotics》阅读笔记1——刚体的运动(一)

一般而言,空间中的刚体运动有六个自由度,但我们描述刚体的运动常见做法是用4×44\times4的变换矩阵,即用了16个元素加上10个约束,而不是就用6个量来表达。用16个元素加上约束的表示方法,叫做implicit representation(隐式表达),这种表达方法好处是没有奇异值。而相对的explicit representation(显式表达)只需要用6个量(比如欧拉角+三维位置矢量),但是有时会遇到奇异值的情况。而造成这种现象的本质原因来自于,代表刚体运动的六维空间并不是欧式空间,而是非欧空间。比如球面是二维面,因此两个量就能表达球面上的一点(经纬度法),但由于球面不是欧式平面,所以经纬度法会有奇点(球面的南北极坐标有无穷多种)。而如果用XYZ三维坐标来表达呢?就完全不会出现这种问题了。

这篇文章主要内容不是关于如何用变换矩阵表示刚体运动,而是用exponential coordinates(指数坐标)来表示。这种方式是比较新颖的,让我们先从二维平面运动开始。

刚体的二维平面运动

《Modern Robotics》阅读笔记1——刚体的运动(一)
如何表达上图中{s}系和{b}系的关系是首先要解决的问题?

  • {b}系的原点在{s}系下的表示:
    p=pxx^s+pyy^sp=p_x \hat{x}_s+p_y\hat{y}_s
  • {b}系的坐标轴在{s}系下的表示:
    x^b=cosθx^s+sinθy^s\hat{x}_b=\cos{\theta} \hat{x}_s+\sin{\theta} \hat{y}_s
    y^b=sinθx^s+cosθy^s\hat{y}_b=-\sin{\theta} \hat{x}_s+\cos{\theta} \hat{y}_s
    其中,^\hat{} 代表单位向量。
    把上面的等式组织成矩阵的形式,{P,p}\{P,p\}
    p=[pxpy]p=\left[\begin{matrix} p_x \\ p_y \end{matrix}\right]
    P=[x^by^b]=[cosθsinθsinθcosθ]P=[\begin{matrix} \hat{x}_b & \hat{y}_b\end{matrix}]=\left[ \begin{matrix} \cos\theta & -\sin\theta \\ \sin\theta & \cos\theta \end{matrix} \right ]
    这样就表达了{b}系与{s}系的关系,{P,p}\{P,p\}被叫做旋转矩阵和平移矢量。

{P,p}\{P,p\}可以被用作为三个目的:

  • (a)一个刚体的坐标系在{s}系下的表示
  • (b)用于改变某个向量或者坐标系的参考坐标系(向量需要表示在参考坐标系下)
  • (c)移动某个向量或者坐标系

除了用旋转+平移的方法来表达刚体运动,还有一种方法!
刚体的运动完全可以表达为绕一个固定轴的旋转。如下图:

《Modern Robotics》阅读笔记1——刚体的运动(一)
上图中灰色的椭圆从{cc}系变到{cc^{'}}系,即可以看做经过了平移和旋转(图(a)),也可以看做是绕s点旋转了90度(图(b))。
这种运动可以叫做screw motion。表示为:
(β,sx,sy)=(π/2,0,2)(\beta,s_x,s_y)=(\pi/2,0,2)
其中,(sx,sy)(s_x,s_y)是旋转轴的位置,β\beta是角度。

另一种表达screw motion的方法是,将运动视作为由一个角速度和线速度运动一段给定的距离形成的。
在上面这个例子中,角速度假设为单位量,ω=1 rad/s\omega=1 \ rad/s 。那么我们根据这个运动的结果,很自然能够算出,坐标系原点的线速度是v=(vx,vy)=(2,0)v=(v_x,v_y)=(2,0)。所以,我们可以把两个速度放到一起,表示为:
S=(ω,vx,vy)=(1,2,0)\mathcal{S}=(\omega,v_x,v_y)=(1,2,0)
这也被叫做screw axis。(两个速度组成的向量,为什么叫axis呢?因为,线速度比上角速度就可以得到轴的位置,这个向量里已经隐含了轴的位置了。)
绕着这个screw axis,只需要旋转θ=π/2\theta=\pi/2就可以了。所以,我们最终可以把这个运动表示为:
Sθ=(π/2,π,0)\mathcal{S}\theta=(\pi/2,\pi,0)
注意,这里的表示方法和上面不一样了。我们称这种表示方法为,刚体运动的exponential coordinates(指数坐标)。

还有一种表达screw motion的方法,将运动视作为由一个角速度和线速度运动单位时间形成的。
进一步的,我们又定义twist的概念!
twist的定义如下:
V=Sθ˙\mathcal{V}=\mathcal{S}\dot{\theta}
其中,θ˙=θ\dot{\theta}=\theta,也就是说以V\mathcal{V}运动单位时间就可以表达运动了。
twist的概念很重要,之后将会一直用到,这和传统的旋转矩阵的表达方法不一样了。

本篇文章结束。

注:为了更好的阅读体验,避免文章过长,原本一章的内容被拆分成了多篇文章。