刚体三维运动,李群李代数,旋量,螺旋理论
纯旋转运动
引出so(3)
定义旋转矩阵 R ∈ R 3 × 3 R\in\mathbb{R}^{3\times3} R∈R3×3,满足 R ˙ = ω s × R \dot{R}= \omega_{s} \times R R˙=ωs×R, ω s \omega_{s} ωs表示相对于固定坐标系 s {s} s的角速度, R ˙ \dot{R} R˙为姿态变换矩阵 R R R随时间的变化率。
将叉乘转换为矩阵乘法,定义反对称矩阵 [ ω s ] = [ 0 − ω s 3 ω s 2 ω s 3 0 − ω s 1 − ω s 2 ω s 1 0 ] [\omega_{s}]=\left[\begin{array}{rrr}0 & -\omega_{s3} & \omega_{s2} \\ \omega_{s3} & 0 & -\omega_{s1} \\ -\omega_{s2} & \omega_{s1} & 0\end{array}\right] [ωs]= 0ωs3−ωs2−ωs30ωs1ωs2−ωs10 ,则原式表示为
R
˙
=
[
ω
s
]
R
\dot{R}= [\omega_{s}] R
R˙=[ωs]R
则固定坐标系下
[
ω
s
]
=
R
˙
R
−
1
[\omega_{s}] = \dot{R}R^{-1}
[ωs]=R˙R−1,同样的物体坐标系下
[
ω
b
]
=
R
−
1
R
˙
[\omega_{b}] = R^{-1}\dot{R}
[ωb]=R−1R˙,定义这样的反对称矩阵
[
ω
s
]
[\omega_{s}]
[ωs],
[
ω
b
]
[\omega_{b}]
[ωb]为李代数(有的书把三维向量定义为李代数)
这里说明的是旋转矩阵的性质,可利用其这条性质将一个旋转矩阵用一个三维向量表示
由
R
˙
=
[
ω
s
]
R
\dot{R}= [\omega_{s}] R
R˙=[ωs]R可解出
R
=
e
[
ω
s
]
t
R = e^{[\omega_{s}]t}
R=e[ωs]t,假设转动角度为
θ
\theta
θ,则时间
t
=
θ
/
∣
ω
s
∣
t=\theta/|\omega_{s}|
t=θ/∣ωs∣,因此得到
R
=
e
[
ω
s
]
/
∣
ω
s
∣
θ
R = e^{[\omega_{s}]/|\omega_{s}|\theta}
R=e[ωs]/∣ωs∣θ
R
=
e
[
ω
s
^
]
θ
R = e^{[\hat{\omega_s}] \theta}
R=e[ωs^]θ
其中
ω
s
^
\hat{\omega_s}
ωs^为单位角速度即单位转轴向量,这也从另一个角度证明了,旋转矩阵可通过一个转轴和一个角度来表示。
R
=
e
[
ω
s
^
]
θ
=
I
+
sin
θ
[
ω
^
]
+
(
1
−
cos
θ
)
[
ω
^
]
2
∈
S
O
(
3
)
R = e^{[\hat{\omega_{s}}] \theta}=I+\sin \theta[\hat{\omega}]+(1-\cos \theta)[\hat{\omega}]^2 \in S O(3)
R=e[ωs^]θ=I+sinθ[ω^]+(1−cosθ)[ω^]2∈SO(3)
以上便是罗德里格斯公式,其连接了
s
o
(
3
)
so(3)
so(3)和
S
O
(
3
)
SO(3)
SO(3)
若已知
S
O
(
3
)
SO(3)
SO(3)求
s
o
(
3
)
so(3)
so(3),
[
ω
^
]
=
1
2
sin
θ
(
R
−
R
T
)
[\hat{\omega}]=\frac{1}{2 \sin \theta}\left(R-R^{\mathrm{T}}\right)
[ω^]=2sinθ1(R−RT)
θ
=
a
r
c
c
o
s
(
t
r
(
R
)
−
1
2
)
\theta=arccos(\frac{tr(R)-1}{2})
θ=arccos(2tr(R)−1)
以上说明了如何用一个
s
o
(
3
)
so(3)
so(3)来表示刚体空间旋转
ω
^
θ
\hat{\omega} \theta
ω^θ为旋转矩阵
R
R
R的指数坐标,
[
ω
^
]
θ
[\hat{\omega}]\theta
[ω^]θ为
R
R
R的矩阵对数。
整个流程就是,先发现了旋转矩阵与角速度之间的关系,之后角速度转化为一个方向和一个转角,从而求出微分方程的解。
空间刚体运动
引出se(3)
定义空间刚体变化矩阵
T
=
[
R
p
0
1
]
T=\begin{bmatrix} R & p \\ 0 & 1 \end{bmatrix}
T=[R0p1],
T
−
1
=
[
R
T
−
R
T
p
0
1
]
T^{-1}=\begin{bmatrix} R^T & -R^Tp \\ 0 & 1 \end{bmatrix}
T−1=[RT0−RTp1],猜测
T
T
T是不是也跟
R
R
R一样有上述性质?没错,真是
T
−
1
T
˙
=
[
R
T
R
˙
R
T
p
˙
0
0
]
=
[
[
ω
b
]
v
b
0
0
]
T^{-1} \dot{T}=\begin{bmatrix} R^T \dot{R} & R^T \dot{p} \\ 0 & 0 \end{bmatrix}=\begin{bmatrix} [\omega_b] & v_b \\ 0 & 0 \end{bmatrix}
T−1T˙=[RTR˙0RTp˙0]=[[ωb]0vb0]
定义物体运动旋量
V
b
=
[
ω
b
v
b
]
∈
R
6
\mathcal{V}_b=\left[\begin{array}{l}\omega_b \\ v_b\end{array}\right] \in \mathbb{R}^6
Vb=[ωbvb]∈R6,其中
ω
b
\omega_b
ωb为物体坐标系
{
b
}
\{b\}
{b}下
{
b
}
\{b\}
{b}瞬间原点的角速度,
v
b
v_b
vb为物体坐标系
{
b
}
\{b\}
{b}下瞬间
{
b
}
\{b\}
{b}原点的线速度。定义
[
V
]
=
[
[
ω
b
]
v
b
0
0
]
∈
s
e
(
3
)
[\mathcal{V}] =\begin{bmatrix} [\omega_b] & v_b \\ 0 & 0 \end{bmatrix}\in se(3)
[V]=[[ωb]0vb0]∈se(3)。
同理定义空间运动旋量
V
s
=
[
ω
s
v
s
]
∈
R
6
\mathcal{V}_s=\left[\begin{array}{l}\omega_s \\ v_s\end{array}\right] \in \mathbb{R}^6
Vs=[ωsvs]∈R6,注意这点有所不同,
ω
\omega
ω几何意义为
{
s
}
\{s\}
{s}坐标系下角速度,但
v
b
v_b
vb其几何意义为假设刚体无限大,
{
s
}
\{s\}
{s}坐标系下刚体上与
{
s
}
\{s\}
{s}原点重合处的线速度,非
{
b
}
\{b\}
{b}原点的线速度(因为
T
−
1
T^{-1}
T−1的位移部分不只是
−
p
-p
−p).
不同坐标系之间的旋量转换
V
s
=
[
ω
s
v
s
]
=
[
R
0
[
p
]
R
R
]
[
ω
b
v
b
]
=
[
Ad
T
s
b
]
V
b
\mathcal{V}_s=\left[\begin{array}{c}\omega_s \\ v_s\end{array}\right]=\left[\begin{array}{cc}R & 0 \\ {[p] R} & R\end{array}\right]\left[\begin{array}{l}\omega_b \\ v_b\end{array}\right]=\left[\operatorname{Ad}_{T_{s b}}\right] \mathcal{V}_b
Vs=[ωsvs]=[R[p]R0R][ωbvb]=[AdTsb]Vb
定义
[
Ad
T
s
b
]
[\operatorname{Ad}_{T_{s b}}]
[AdTsb]为
T
s
b
T_{sb}
Tsb的伴随映射,其建立了不同坐标系之间的旋量变换关系。
用螺旋运动来表示刚体运动
空间旋转可以通过一个轴和一个角度来表示,是否刚体运动也可以?没错,真可以
查尔斯理论:任意一个刚体运动都可以表示为绕空间一个螺旋轴的螺旋运动。(绕轴旋转+沿轴移动)
利用螺旋运动来表示刚体运动,定义 S = [ ω , v ] T \mathcal{S}=[\omega, v]^T S=[ω,v]T,螺旋轴为正交化的运动旋量
当包含旋转运动时 S s = V s / ∥ ω s ∥ = ( ω s / ∥ ω s ∥ , v s / ∥ ω s ∥ ) \mathcal{S_s}=\mathcal{V_s} /\|\omega_s\|=(\omega_s /\|\omega_s\|, v _s/\|\omega_s\|) Ss=Vs/∥ωs∥=(ωs/∥ωs∥,vs/∥ωs∥), ∣ ∣ ω ∣ ∣ = 1 ||\omega||=1 ∣∣ω∣∣=1
当为纯移动时, S s = V s / ∥ v s ∥ = ( 0 , v s / ∥ v s ∥ ) \mathcal{S_s}=\mathcal{V_s} /\|v_s\|=(0, v _s/\|v_s\|) Ss=Vs/∥vs∥=(0,vs/∥vs∥) ω = 0 , ∣ ∣ v ∣ ∣ = 1 \omega=0, ||v||=1 ω=0,∣∣v∣∣=1.
重新定义螺旋轴
[
S
]
=
[
[
ω
]
v
0
0
]
∈
se
(
3
)
[\mathcal{S}]=\left[\begin{array}{cc}{[\omega]} & v \\ 0 & 0\end{array}\right] \in \operatorname{se}(3)
[S]=[[ω]0v0]∈se(3)
v
=
−
ω
×
q
+
h
ω
v = -\omega\times q + h\omega
v=−ω×q+hω
q
q
q为轴上一点,
h
h
h为节距,当为纯转动时
h
=
0
h=0
h=0。
进而空间刚体运动 T T T的指数坐标可表示为 S θ \mathcal{S}\theta Sθ, S \mathcal{S} S为螺旋轴, θ \theta θ为转动的角度,当只有移动时为移动的距离。
参考旋转运动的推导,因此
T
=
e
S
θ
=
[
e
[
ω
]
θ
(
I
θ
+
(
1
−
cos
θ
)
[
ω
]
+
(
θ
−
sin
θ
)
[
ω
]
2
)
ν
0
1
]
T=e^{\mathcal{S}\theta}=\left[\begin{array}{cc}e^{[\omega] \theta} & \left(I \theta+(1-\cos \theta)[\omega]+(\theta-\sin \theta)[\omega]^2\right) \nu \\ 0 & 1\end{array}\right]
T=eSθ=[e[ω]θ0(Iθ+(1−cosθ)[ω]+(θ−sinθ)[ω]2)ν1]
当为纯移动时
T
=
e
S
θ
=
[
I
v
θ
0
1
]
T=e^{\mathcal{S}\theta}=\left[\begin{array}{cc}I & v \theta \\ 0 & 1\end{array}\right]
T=eSθ=[I0vθ1]
旋量物理意义分析
- 旋量就是线速度和角速度
- 螺旋轴就是正交后的旋量(分为纯移动和带有旋转两种情况)
从整个过程来看,先是发现刚体变换矩阵满足一个特殊的微分方程,可通过速度建立联系,然后为了解微分方程,换算为方向和角度。
方便理解附上例题(引用自图书:现代机器人学)
例题一
思考
v
s
v_s
vs和
v
b
v_b
vb的大小和正负,注意
v
s
v_s
vs是
{
s
}
\{s\}
{s}坐标系下
v
b
v_b
vb上与
{
s
}
\{s\}
{s}原点重合处的线速度。
例题二