刚体平面运动
二维运动
考虑下图所示的平面刚体, { s } \{s\} {s}为固定坐标系, x ^ s \hat{x}_s x^s与 y ^ s \hat{y}_s y^s是其坐标轴,^符号代表其是单位向量。坐标系 { b } \{b\} {b}是平面一个刚体上的坐标系, x ^ b \hat{x}_b x^b与 y ^ b \hat{y}_b y^b代表其坐标轴。
为描述固定坐标系
{
s
}
\{s\}
{s}中的刚体,仅需要确定其在
{
s
}
\{s\}
{s}中的位置与方向。刚体坐标系的原点
p
p
p 在
{
s
}
\{s\}
{s}中可表达为:
p
=
p
x
x
^
s
+
p
y
y
^
s
p = p_x\hat{x}_s + p_y\hat{y}_s
p=pxx^s+pyy^s
描述坐标系
{
b
}
\{b\}
{b}相对于
{
s
}
\{s\}
{s}另一种表示方法为:
x
b
^
=
c
o
s
θ
x
s
^
+
s
i
n
θ
y
s
^
y
b
^
=
−
s
i
n
θ
x
s
^
+
c
o
s
θ
y
s
^
\hat{x_b} = cos\theta \hat{x_s} + sin\theta \hat{y_s} \\ \hat{y_b} = -sin\theta \hat{x_s} + cos\theta \hat{y_s}
xb^=cosθxs^+sinθys^yb^=−sinθxs^+cosθys^
同样,
p
{p}
p 点可以表示成一个列向量,
p
∈
R
2
{p\in{\mathbb{R}}^2}
p∈R2:
(3.4)
p
=
[
p
x
p
y
]
,
p= \left[ \begin{matrix} p_x\\ p_y \end{matrix} \right], \tag{3.4}
p=[pxpy],(3.4)
x
b
^
\hat{x_b}
xb^与
y
b
^
\hat{y_b}
yb^向量可以打包成一个
2
∗
2
2*2
2∗2的矩阵
P
P
P:
(3.5)
P
=
[
x
b
^
y
b
^
]
=
[
c
o
s
θ
−
s
i
n
θ
s
i
n
θ
c
o
s
θ
]
.
P = \left[ \begin{matrix} \hat{x_b} \quad \hat{y_b} \end{matrix} \right] = \left[ \begin{matrix} cos\theta & -sin\theta \\ sin\theta & cos\theta \end{matrix} \right]. \tag{3.5}
P=[xb^yb^]=[cosθsinθ−sinθcosθ].(3.5)
P
P
P 矩阵就是一个旋转矩阵。实际上,
(
P
,
p
)
(P,p)
(P,p) 这一对参数就描述了坐标系
{
b
}
\{b\}
{b}相对于
{
s
}
\{s\}
{s}的方向与位置。
P
P
P 的每列都是单位向量,且两列的向量正交。
倘若
{
c
}
\{c\}
{c}坐标系相对于
{
s
}
\{s\}
{s}的方位为
(
R
,
r
)
(R,r)
(R,r),可以写成如下形式:
(3.6)
r
=
[
r
x
r
y
]
,
R
=
[
c
o
s
ϕ
−
s
i
n
ϕ
s
i
n
ϕ
c
o
s
ϕ
]
.
r= \left[ \begin{matrix} r_x\\ r_y \end{matrix} \right], \quad R = \left[ \begin{matrix} cos\phi & -sin\phi \\ sin\phi & cos\phi \end{matrix} \right]. \tag{3.6}
r=[rxry],R=[cosϕsinϕ−sinϕcosϕ].(3.6)
我们同样可以定义
{
c
}
\{c\}
{c}相对于
{
b
}
\{b\}
{b}的方位。使向量
q
q
q 从
{
b
}
\{b\}
{b}的原点指向
{
c
}
\{c\}
{c} 的原点,并且假设
Q
Q
Q 为
{
c
}
\{c\}
{c} 相对于
{
b
}
\{b\}
{b} 的方向。将
{
c
}
\{c\}
{c}相对于
{
b
}
\{b\}
{b}的关系写成参数对
(
Q
,
q
)
(Q,q)
(Q,q),其中:
(3.7)
q
=
[
q
x
q
y
]
,
Q
=
[
c
o
s
ψ
−
s
i
n
ψ
s
i
n
ψ
c
o
s
ψ
]
.
q= \left[ \begin{matrix} q_x\\ q_y \end{matrix} \right], \quad Q = \left[ \begin{matrix} cos\psi & -sin\psi \\ sin\psi & cos\psi \end{matrix} \right]. \tag{3.7}
q=[qxqy],Q=[cosψsinψ−sinψcosψ].(3.7)
如果我们知道了
(
Q
,
q
)
(Q,q)
(Q,q),
(
P
,
p
)
(P,p)
(P,p) ,就可以计算出
{
c
}
\{c\}
{c}相对于
{
s
}
\{s\}
{s}的方位:
R
=
P
Q
r
=
P
q
+
p
R = PQ \\ r = Pq + p
R=PQr=Pq+p
值得注意的是,这里的
p
,
q
,
r
p,q,r
p,q,r 均是坐标,而不是长度,初看易误解。
从这里可以看出,
(
P
,
p
)
(P,p)
(P,p) 不仅仅代表了
{
b
}
\{b\}
{b}在
{
s
}
\{s\}
{s}中的方位,也可以把
{
b
}
\{b\}
{b}中的一点或者相对于
{
b
}
\{b\}
{b}的坐标系转化到
{
s
}
\{s\}
{s}坐标系下。
现在考虑一个刚体上固定了两个坐标系
{
d
}
\{d\}
{d} 和
{
c
}
\{c\}
{c},
{
d
}
\{d\}
{d}初始时与
{
s
}
\{s\}
{s}重合,而
{
c
}
\{c\}
{c}用
(
R
,
r
)
(R, r)
(R,r)这对参数来描述其在
{
s
}
\{s\}
{s}中的方位。从上图可以看出,此刚体的移动是从
{
d
}
\{d\}
{d}移动到
{
d
′
}
\{d'\}
{d′},与此时的
{
b
}
\{b\}
{b}一致,与
{
s
}
\{s\}
{s}的相对关系用
(
P
,
p
)
(P,p)
(P,p)来描述。移动之后,
{
c
}
\{c\}
{c}坐标系到了
{
c
′
}
\{c'\}
{c′}处。如图所示,此时可以验证:
R
′
=
P
R
r
′
=
P
r
+
p
R' = PR \\ r'= Pr + p
R′=PRr′=Pr+p
从图(a),我们可以认为,先对
{
c
}
\{c\}
{c}做了一个
P
P
P 旋转,然后按照
{
s
}
\{s\}
{s}中的
p
p
p向量平移。
通过上述过程,一般来说,
(
P
,
p
)
(P,p)
(P,p) 这对矩阵-向量参数,可用于三个目的:
(1) 描述一个刚体在固定坐标系
{
s
}
\{s\}
{s}中的方位。
(2) 改变向量或者刚体坐标系的参考坐标系,如
{
s
}
\{s\}
{s}。
(3) 用来变换一个向量或刚体(平移及旋转)。
再看到图(b),相比于图(a)所示的运动,我们可以将刚体直接绕着一个固定点 s s s 旋转 β \beta β 角度得到最终状态。这是一个简单的平面内的screw motion。整个位移过程可以三个参数来表示: ( β , s x , s y ) (\beta, s_x, s_y) (β,sx,sy),其中 ( s x , s y ) (s_x, s_y) (sx,sy) = (0, 2),即 { s } \{s\} {s}坐标系中 s s s点的位置坐标。
另一种来表示screw motion的方式是将运动认为是角速度与线速度同时进行得到的位移。图(b)中,以单位角速度( w = 1 r a d / s w = 1rad/s w=1rad/s)绕着 s s s 点旋转,意味着 { s } \{s\} {s}坐标系的原点以每秒两个单位的速度沿着 { s } \{s\} {s}坐标系的 + x +x +x方向移动,如 v = ( v x , v y ) = ( 2 , 0 ) v = (v_x, v_y) = (2, 0) v=(vx,vy)=(2,0)。我们把上述两个量写成一个三维向量 S = ( w , v x , v y ) = ( 1 , 2 , 0 ) S = (w, v_x, v_y) = (1, 2, 0) S=(w,vx,vy)=(1,2,0), 也即旋量轴(screw axis)。绕着这跟轴旋转 θ = π / 2 \theta = \pi /2 θ=π/2角度,即达到最终状态了。这样我们用三个坐标来表示这个位移 S θ = ( π / 2 , π , 0 ) S\theta = (\pi /2, \pi, 0) Sθ=(π/2,π,0)。这样的坐标表示具有一定的优势,称之为平面刚体运动的指数坐标。
将角速度与线性速度结合起来,我们称之为 t w i s t twist twist,取旋量轴 S = ( w , v x , v y ) S = (w, v_x, v_y) S=(w,vx,vy),其中 w = 1 w = 1 w=1,再将他与某个旋转速度 θ ˙ \dot{\theta} θ˙相乘,得到 t w i s t twist twist, V = S θ ˙ V = S\dot{\theta} V=Sθ˙。可以这样认为,绕着旋量轴 S S S 旋转 θ \theta θ 角度与绕着旋量轴 S S S ,以速度 θ ˙ = θ \dot{\theta} = \theta θ˙=θ 旋转单位时间是等价的。所以, V = S θ ˙ V = S\dot{\theta} V=Sθ˙ 也可以认为是指数坐标。
三维运动入门
考虑如图3.6的刚体三维运动,假设
{
s
}
\{s\}
{s}为固定坐标系,
{
b
}
\{b\}
{b}坐标系为刚体坐标系,右手坐标系下有
x
^
×
y
^
=
z
^
\hat{x} \times \hat{y} = \hat{z}
x^×y^=z^。
p
p
p向量从固定坐标系的原点指向刚体坐标系的原点,在固定坐标系下,可表达为:
(3.12)
p
=
p
1
x
s
^
+
p
2
y
s
^
+
p
3
z
s
^
p = p_1\hat{x_s} + p_2\hat{y_s} + p_3\hat{z_s} \tag{3.12}
p=p1xs^+p2ys^+p3zs^(3.12)
刚体坐标系的坐标轴可表示为:
x
b
^
=
r
11
x
s
^
+
r
21
y
s
^
+
r
31
z
s
^
y
b
^
=
r
12
x
s
^
+
r
22
y
s
^
+
r
32
z
s
^
z
b
^
=
r
13
x
s
^
+
r
23
y
s
^
+
r
33
z
s
^
\hat{x_b} = r_{11} \hat{x_s} + r_{21}\hat{y_s} + r_{31}\hat{z_s}\\ \hat{y_b} = r_{12} \hat{x_s} + r_{22}\hat{y_s} + r_{32}\hat{z_s}\\ \hat{z_b} = r_{13} \hat{x_s} + r_{23}\hat{y_s} + r_{33}\hat{z_s}\\
xb^=r11xs^+r21ys^+r31zs^yb^=r12xs^+r22ys^+r32zs^zb^=r13xs^+r23ys^+r33zs^
定义
p
∈
R
3
{p\in{\mathbb{R}}^3}
p∈R3,
R
∈
R
3
×
3
{R\in{\mathbb{R}}^{3 \times 3}}
R∈R3×3,则有:
(3.16)
p
=
[
p
1
p
2
p
3
]
,
R
=
[
x
b
^
y
b
^
z
b
^
]
=
[
r
11
r
12
r
13
r
21
r
22
r
23
r
31
r
32
r
33
]
p= \left[ \begin{matrix} p_1\\ p_2\\ p_3 \end{matrix} \right], \quad R = \left[ \begin{matrix} \hat{x_b} & \hat{y_b} & \hat{z_b} \end{matrix} \right] = \left[ \begin{matrix} r_{11} & r_{12} & r_{13} \\ r_{21} & r_{22} & r_{23} \\ r_{31} & r_{32} & r_{33} \end{matrix} \right] \tag{3.16}
p=⎣⎡p1p2p3⎦⎤,R=[xb^yb^zb^]=⎣⎡r11r21r31r12r22r32r13r23r33⎦⎤(3.16)
上述的
(
R
,
p
)
(R, p)
(R,p) 12个值,描述了刚体坐标系相对于固定坐标系的位置与方向。考虑到一个刚体的方向有三个自由度,所以
R
R
R 矩阵9个元素中只有3个是独立的。而指数坐标表示的旋转正好由三个参数组成,它定义了一个旋转轴以及绕着此轴旋转一定的角度。同样也有别的表示方法,如欧拉角,
R
P
Y
RPY
RPY角,四元数等。
C h a s l e s − M o z z i Chasles-Mozzi Chasles−Mozzi 定理表明了每个刚体的运动都可以通过绕着一个旋量轴进行有限的旋转和平移得到。
下一节将介绍旋转矩阵。