前言
最近在学机器人机构学基础的时候遇到了旋量这个概念,开始没搞懂,查了一些资料之后有了一点理解,在此记录。
定义和简单描述
根据Ball的定义:旋量是一条有截距的直线
根据我的理解,旋量就是来描述空间坐标的一个螺钉。旋量本质上是一个含有六个元素的矢量。假设来描述一个空间中的一个线段,可以采用这样的方法:首先确定线段的一个端点在空间中的一个位置:(a,b,c),然后再确定线段的方向和大小即可。后者同样使用三个标量即可描述。因此总计需要六个标量即可描述一个线段再空间中的形位。旋量的思想与之类似。
定义一个旋量:
\[\$ = (s;s^0)\]$ s $ 为旋量的原部, $ s^0 $ 为旋量的对偶部, $ s $ 是一个单位矢量,即 $ |s| = 1 $ 。这里可以看到,由于单位矢量的约束,使得旋量描述的自由度失去了一个。这是为什么呢?
是因为旋量的描述不和线段在空间中的描述一样,旋量描述的量可以理解为一个螺旋线在空间中的形位。而螺旋线的起点和终点是不存在的,这与线段不同。但相同的是,螺旋线的方向、位置和大小都需要描述。这个思想在后面的公式推导中会有体现。
这样,$s$负责的任务就是描述这跟螺旋线的方向,即若将它的轴平移到与原点相交,$s$就是这跟轴方向上的的单位矢量。
这样,剩下的三个元素需要负责描述的就是这些了:螺旋线在空间中的位置、螺旋的形态。这里面,螺旋的形态就是指螺旋线旋转的有多厉害,通过一个量来表述:$h$旋量的节距(Pitch)。而描述螺旋线位置的量便是通过一个可变矢量来表述:$\vec{r}$矢径。之所以说他是可变的,是因为在描述这个螺旋线的位置过程中,来描述它轴线上任意一点的位置就可以确定其本身的位置了。因此,矢径中有三个元素,却有两个自由度。加上节距h就可以完整描述旋量的形位。
涉及到如何将位置和节距同时放到一个含三个元素的$s_0$中的是一个公式:
\[s^0 = \vec{r}\times s + hs\]各个物理量描述
- h :节距,单位是长度,$h = s \cdot s^0$
- hs:螺距,是描述方向和大小的矢量
- $\vec {r}$:矢径,原点到旋量轴线上任一点的矢量,$\vec{r} = s\times s^0$
- $s_0$:线距,线距,单位是长度,$s_0 = \vec{r}\times s$
运动副描述
在机器人机构学中,旋量被定义用来描述运动副。
假设通过一个运动副,空间中与运动副的运动部分固连的刚体可以完成两中形态的运动:转动和移动,由理论力学可以知道:刚体任意运动在某一时刻都有一个速度瞬心,而经过该速度瞬心存在一条直线,可以将刚体的运动分解为绕直线的转动和沿直线的移动。这条直线即为轴。而运动副就是来确定这跟轴的形位的。也即:运动副约束了刚体的运动。因此,运动副具有螺旋的特性,可以用旋量来描述
下面分几种情况讨论:
- 当节距$h = 0$时,螺旋线沿轴无法运动,退化成了一个圆周运动,可以描述一个旋转副。旋量退化成了线矢量,也即描述了一条直线,这条直线就是旋转轴。
- 当节距$h = \infty$时,螺旋线的节距无限大,沿着螺旋线运动永远得不到转动,这样便退化成了一个直线运动,可以描述一个直线运动。旋量退化成了一个单位偶量,也是描述了一条线,就是移动副的轴线。
- 当h有限且不为0时,运动副为螺旋副,是移动和转动的耦合运动,一般应该用的不多。
严格公式推导
描述空间中一点$p$的速度$\dot p$,可以分解为绕空间中一轴旋转的速度$\omega$和沿轴运动速度$h\omega$
因此
\[\dot p = \vec\omega \times\vec{r} + h\vec\omega = \vec\omega \times\vec{p} + h\vec\omega\]设$\hat\omega$为
\[\left( \begin{matrix} 0 & -\omega_z & \omega_y \\ \omega_z & 0 & -\omega_x \\ -\omega_y & \omega_x & 0 \end{matrix} \right)\]这样,
\[\vec\omega \times \vec p = \hat \omega \times \vec p\]当轴不经过原点时,设轴经过一点q,q的位置为$\vec q$,则
\[\dot p = \hat\omega \times(\vec{p}-\vec q) + h\vec\omega\]将矩阵扩展:
\[\left( \begin{matrix} \dot p\\ 0 \end{matrix} \right) = \left( \begin{matrix} \hat \omega & -\vec\omega\times q + h\vec\omega\\ 0 & 0 \end{matrix} \right) \times\left( \begin{matrix} p\\ 1 \end{matrix} \right)\]可以写成一阶常微分方程: \(\dot p = \hat \epsilon\times p\)
解为
\[\bar p(t) = e^{\hat\epsilon t}\bar p(0)\]$t = \frac{\theta}{\omega}$,令$\omega = 1$,则$t = \theta$
这样,物体运动就被描述出来了
\[\bar p(t) = e^{\hat\epsilon \theta}\bar p(0)\]下面,讨论$e^{\hat\epsilon \theta}$。由泰勒公式,将其展开(不写了)
\[\epsilon = \left( \begin{matrix} \hat \omega & -\vec\omega\times q + h\vec\omega\\ 0 & 0 \end{matrix} \right)\]因为$ | | \omega | | = 1$,$\hat\omega\times\vec\omega = 0$,所以$\epsilon^2 = -\epsilon^4$(不太懂)
再利用泰勒公式将无穷级数化为sin与cos的形式,得
\[e^{\hat\epsilon \theta} = I + \hat\epsilon\theta + \hat\epsilon^2(1-cos(\theta)) + \hat\epsilon^3(\theta-sin(\theta))\] \[\hat\epsilon = \left( \begin{matrix} 0 & -\omega_z & \omega_y & v_x\\ \omega_z & 0 & -\omega_x & v_y\\ -\omega_y & \omega_x & 0 & v_z\\ 0 & 0 & 0 & 0 \end{matrix} \right)\]旋量形式为
\[\epsilon = \left( \begin{matrix} \omega_x\\ \omega_y\\ \omega_z\\ v_x\\ v_y\\ v_z \end{matrix} \right)\]