screw、wrench与twist的简单描述 | HyperPlane

screw、wrench与twist的简单描述

一个刚体的空间移动可以描述为绕一个轴的旋转和沿着这条轴的平移,这被称为screw移动。一个screw移动使用6个参数定义,其中四个自由度定义了screw的轴,另外两个分别定义了旋转的角度和平移大小。相对而言,定义空间运动的6个参数由定义欧拉角的3个元素和定义平移的3个元素组成。

screw

一个screw是由一对3维向量构成的一个6维向量,比如是forces与torques或线与角速度。
让screw为一个有序对

S=(S,V)\mathsf{S} = (S, V)

其中SSVV是3维实向量,这些有序对的和与差是逐部分计算的,screw通常被称为对偶向量。关于对偶元素的计算

ST=(S,V)(T,W)=(ST,SW+VT)S×T=(S,V)×(T,W)=(S×T,S×W+V×T)\begin{aligned} \mathsf{S} \cdot \mathsf{T} &= (S, V) \cdot (T, W) = (S \cdot T, S \cdot W + V \cdot T) \\ \mathsf{S} \times \mathsf{T} &= (S, V) \times (T, W) = (S \times T, S \times W + V \times T) \end{aligned}

wrench

应用牛顿法则到刚体中得到的force和torque(力和力矩)向量,可以被整合为screw,被称为wrench。力有一个作用点和一个作用方向,因此可以在空间中定义一个Plucker坐标并且pitch(俯仰角)为0。另一方面力矩是与空间中任何线都不绑定都纯粹的矩(moment),并且是一个pitch无穷大的screw。这两个量的比定义了这个screw的pitch。
体中的点在进行固定screw运动时,在固定的空间中轨迹形成螺旋形。如果screw的运动pitch为0,则是纯旋转运动;如果pitch为无穷,则是纯平移运动。
screw的一个公共的例子是将力使用到刚体上的wrench。让固定坐标中的PP表示为力FF作用点的坐标,则wrench W=(F,P×F)\mathsf{W} = (F, P \times F)为一个screw。作用在这个刚体上其它的力和矩都被简单的加和

R=i=1nWi=i=1n(Fi,Pi×Fi)\mathsf{R} = \sum _{i=1} ^n \mathsf{W}_i = \sum _{i=1} ^n (F_i, P_i \times F_i)

twist

twist表示刚体的速度,包括绕轴的角速度和沿轴的线速度。刚体上所有的点都有同样的沿轴速度,但是离轴的距离越远垂直于轴的速度就越大。
为了定义刚体的twist,必须通过空间运动的参数集合定义运动,D(t)=([A(t)],d[t])D(t) = ([A(t)], d[t]),其中AA是旋转矩阵,dd是平移向量。这使得固定在一个运动体中的点pp坐标轨迹为一个弧线P(t)P(t)

P(t)=[A(t)]p+d(t)P(t) = [A(t)]p + d(t)

PP的速度为

Vp(t)=[dA(t)dt]p+v(t)V_p(t) = \left[ \frac{dA(t)}{dt} \right]p + v(t)

其中vv是运动坐标系原点的速度,现在将p=[A(t)T]P(t)d(t)p = [A(t)^T]P(t) - d(t)带入等式中得到

Vp(t)=[Ω]P(t)+v(t)[Ω]d(t)Vp(t)=ω×P(t)+v(t)+d(t)×ω\begin{aligned} V_p(t) &= [ \Omega ]P(t) + v(t) - [\Omega]d(t) \\ V_p(t) &= \omega \times P(t) + v(t) + d(t) \times \omega \end{aligned}

其中[dA(t)dt][AT]\left[ \frac{dA(t)}{dt} \right][A^T]为角速度矩阵,并且ω\omega为角速度向量。那么screw

T=(ω,v+d×ω)\mathsf{T} = (\omega, v + d \times \omega)

为运动体的twist,向量v+d×ωv + d \times \omega是体中点相对于固定帧原点的速度。存在两个特殊情况:

  1. dd为常数的时候,也就是v=0v = 0时,这个twist是绕轴纯旋转,为L=(ω,d×ω)\mathsf{L} = (\omega, d \times \omega)
  2. [Ω]=0[\Omega] = 0时,这个体没有旋转但是沿着方向vv滑动,此时twist为纯滑动T=(0,v)\mathsf{T} = (0, v)

对于卷动关节,旋转轴穿过点qq并且沿着方向ω\omega,这个关节的twist为

ξ={ωq×ω}\xi = \begin{Bmatrix} \omega \\ q \times \omega \end{Bmatrix}

对于滑动关节(Prismatic joints),向量vv定义滑动方向,这个关节的twist定义为

ξ={0v}\xi = \begin{Bmatrix} 0 \\ v \end{Bmatrix}

来源参考维基百科 Screw theory,后续还有一些推导内容,尤其是将twist看作是李代数元素的那部分对于使用twist做优化更新的理解还是很有帮助的。