文章目录
- 1. Motivation: Rigid Motions in the Plane
- 2. Basic Lie Group Concepts
- 3. 2D Rotation
- 4. 2D Rigid Transformations
- 5. 3D Rotations
- 6 3D Rigid Transformations
- 6.1 The Adjoint Map
- 7. 3D Similarity Transformations
- 8. 2D Affine Transformations
- 9. 2D Homographies
- Appendix: Proof of Proerty 9
- Appendix:Alternative Generators for s l ( 3 ) \mathfrak{sl(3)} sl(3)
作者:Frank Dellaert
February 7, 2016
1. Motivation: Rigid Motions in the Plane
我们从平面移动机器人的一个小例子开始,平面中的移动机器人参数化为
(
x
,
y
,
θ
)
(x, y, \theta)
(x,y,θ)。当我们给定一个微小的前进速度
v
x
v_x
vx,我们知道位置的变化
x
˙
=
v
x
\dot x = v_x
x˙=vx
是下面微分方程的解,机器人的初始化位置为
x
0
x_0
x0
x
t
=
x
0
+
v
x
t
x_t = x_0 + v_x t
xt=x0+vxt
与此类似,我们可以得到y方向上的平移,事实上,对于平移(x和y方向),一般情况下我们有
(
x
t
,
y
t
,
θ
t
)
=
(
x
0
+
v
x
t
,
y
0
+
v
y
t
,
θ
0
)
(x_t, y_t, \theta_t) = (x_0 + v_xt, y_0+v_yt, \theta_0)
(xt,yt,θt)=(x0+vxt,y0+vyt,θ0)
类似的,对于旋转我们有
(
x
t
,
y
t
,
θ
t
)
=
(
x
0
,
y
0
,
θ
0
+
ω
t
)
(x_t, y_t, \theta_t) = (x_0, y_0, \theta_0 + \omega t)
(xt,yt,θt)=(x0,y0,θ0+ωt)
其中
ω
\omega
ω是角速度,测量逆时针方向,单位为rad/s.
然而,如果我们将平移和旋转结合起来,则不成立了!我们不能写作
(
x
t
,
y
t
,
θ
t
)
=
(
x
0
+
v
x
t
,
y
0
+
v
y
t
,
θ
0
+
ω
t
)
(x_t, y_t, \theta_t) = (x_0 +v_x t , y_0 + v_yt, \theta_0 + \omega t)
(xt,yt,θt)=(x0+vxt,y0+vyt,θ0+ωt)
原因是,如果我们根据速度向量
(
v
x
,
v
y
,
ω
)
(v_x, v_y,\omega)
(vx,vy,ω)移动机器人一个微小量,我们有(一阶近似)
(
x
δ
,
y
δ
,
θ
δ
)
=
(
x
0
+
v
x
δ
,
y
0
+
v
y
δ
,
θ
0
+
ω
δ
)
(x_\delta, y_\delta, \theta_\delta) = (x_0 + v_x \delta, y_0 + v_y \delta, \theta_0 + \omega \delta)
(xδ,yδ,θδ)=(x0+vxδ,y0+vyδ,θ0+ωδ)
但是现在机器人有旋转,对于接下来的增量,速度向量在应用之前被旋转。事实上,机器人在圆形轨迹上运动。
原因是平移和旋转不能够交换:先平移后旋转跟先旋转后平移到达不同的位置,正像说的:如果旋转和平移可以交换,那么我们可以在离开家之前做完所有的旋转。
为了更近一步,我们必须更加精确的描述机器人如何表现。具体的说,让我们定义
T
1
,
T
2
T_1, T_2
T1,T2的组合为
T
1
T
2
=
(
x
1
,
y
1
,
θ
1
)
(
x
2
,
y
2
,
θ
2
)
=
(
x
1
+
cos
θ
1
x
2
−
sin
θ
1
y
2
,
y
1
+
sin
θ
1
x
2
+
cos
θ
1
y
2
,
θ
1
+
θ
2
)
T_1 T_2 = (x_1, y_1, \theta_1)(x_2, y_2, \theta_2) = (x_1+\cos \theta_1 x_2-\sin \theta_1 y_2, y_1+\sin \theta_1 x_2 + \cos \theta_1 y_2, \theta_1 + \theta_2)
T1T2=(x1,y1,θ1)(x2,y2,θ2)=(x1+cosθ1x2−sinθ1y2,y1+sinθ1x2+cosθ1y2,θ1+θ2)
这有点笨拙,所以我们求助于一个技巧:将2D位姿嵌入3×3矩阵的空间中,因此我们可以定义为矩阵乘法组合:
T
1
T
2
=
[
R
1
t
1
0
1
]
[
R
2
t
2
0
1
]
=
[
R
1
R
2
R
1
t
2
+
t
1
0
1
]
T_1 T_2 = \begin{bmatrix} R_1 & t_1 \\ 0 & 1 \end{bmatrix} \begin{bmatrix} R_2 & t_2 \\ 0 & 1 \end{bmatrix} = \begin{bmatrix} R_1 R_2 & R_1 t_2 + t_1 \\ 0 & 1 \end{bmatrix}
T1T2=[R10t11][R20t21]=[R1R20R1t2+t11]
其中矩阵
R
R
R是2D旋转矩阵,定义为
R
=
[
cos
θ
−
sin
θ
sin
θ
cos
θ
]
R = \begin{bmatrix} \cos \theta & - \sin \theta \\ \sin \theta & \cos \theta \end{bmatrix}
R=[cosθsinθ−sinθcosθ]
现在,机器人做极小的运动可以写为
T
(
δ
)
=
[
cos
ω
δ
−
sin
ω
δ
v
x
δ
sin
ω
δ
cos
ω
δ
v
y
δ
0
0
1
]
≈
[
1
−
ω
δ
v
x
δ
ω
δ
1
v
y
δ
0
0
1
]
=
I
+
δ
[
0
−
ω
v
x
ω
0
v
y
0
0
0
]
T(\delta)=\begin{bmatrix} \cos \omega \delta & -\sin \omega \delta & v_x \delta \\ \sin \omega \delta & \cos \omega \delta & v_y \delta \\ 0 & 0 & 1 \end{bmatrix} \approx \begin{bmatrix} 1 & -\omega \delta & v_x \delta \\ \omega \delta & 1 & v_y \delta \\ 0 & 0 & 1 \end{bmatrix}= \mathbf{I} + \delta \begin{bmatrix} 0 & -\omega & v_x \\ \omega & 0 & v_y \\ 0 & 0 & 0 \end{bmatrix}
T(δ)=⎣⎡cosωδsinωδ0−sinωδcosωδ0vxδvyδ1⎦⎤≈⎣⎡1ωδ0−ωδ10vxδvyδ1⎦⎤=I+δ⎣⎡0ω0−ω00vxvy0⎦⎤
让我们定义2D twist 向量
ξ
=
(
v
,
ω
)
\xi=(v,\omega)
ξ=(v,ω),上述矩阵可写为
ξ
^
≜
[
0
−
ω
v
x
ω
0
v
y
0
0
0
]
\hat \xi \triangleq \begin{bmatrix} 0 & - \omega & v_x \\ \omega & 0 & v_y \\ 0 & 0 & 0 \end{bmatrix}
ξ^≜⎣⎡0ω0−ω00vxvy0⎦⎤
如果我们想要让t更大,我们可以把t划分成更小的时间戳,例如划分成n个,有
T
(
t
)
=
(
I
+
t
n
ξ
^
)
.
.
.
n
t
i
m
e
s
.
.
.
(
I
+
t
n
ξ
^
)
=
(
I
+
t
n
ξ
^
)
n
T(t) = (I + \frac{t}{n} \hat \xi)... n \, times ... (I + \frac{t}{n} \hat \xi) = (I + \frac{t}{n} \hat \xi)^n
T(t)=(I+ntξ^)...ntimes...(I+ntξ^)=(I+ntξ^)n
结果如图2所示, 当然,如果取n到无穷大,则有
T
(
t
)
=
lim
n
→
∞
(
I
+
t
n
ξ
^
)
n
T(t) = \lim_{n \rightarrow \infty} (I + \frac{t}{n} \hat \xi)^n
T(t)=n→∞lim(I+ntξ^)n
对于实数,该式是指数函数的多项式形式
e
x
=
lim
n
→
∞
(
1
+
x
n
)
n
=
∑
k
=
0
∞
x
k
k
!
e^x = \lim_{n \rightarrow \infty}(1+\frac{x}{n})^n = \sum^{\infty}_{k=0} \frac{x^k}{k!}
ex=n→∞lim(1+nx)n=k=0∑∞k!xk
该形式可以用来定义方阵,最终的结果表示机器人沿着圆形轨迹运动,得到
ξ
^
\hat \xi
ξ^的矩阵指数
T
(
t
)
=
e
t
ξ
^
≜
lim
n
→
∞
(
I
+
t
n
ξ
^
)
n
=
∑
k
=
0
∞
t
k
k
!
ξ
^
k
T(t) = e^{t \hat \xi} \triangleq \lim_{n \rightarrow \infty}(I + \frac{t}{n} \hat \xi)^n = \sum^{\infty}_{k=0}\frac{t^k}{k!} \hat \xi^k
T(t)=etξ^≜n→∞lim(I+ntξ^)n=k=0∑∞k!tkξ^k
我们称该映射为从2D twist
ξ
^
\hat \xi
ξ^到2D刚体变化的指数映射。
以上具备李群理论的所有要素。我们称2d刚体变换空间以及空间中的操作为特殊欧几里得群( S E ( 2 ) SE(2) SE(2))。之所以称为李群,是因为它同时是一个拓扑群和一个流形,这意味着乘法和求逆运算是平滑的。2D twists的空间以及下面将要定义的特殊二元操作称为与 S E ( 2 ) SE(2) SE(2)关联的李代数 s e ( 2 ) \mathfrak{se}(2) se(2)。
2. Basic Lie Group Concepts
现在,我们定义上面说明的概念,引入一些符号,然后大致了解一下。 在此之后,我们将介绍最常用的李群及其李代数。
2.1 A Manifold and a Group
李群
G
G
G既是群又是具有光滑群操作的流形。与之相关联的是李代数
g
\mathfrak{g}
g,从广义上讲,它可以在单位的正切空间处确定,并完全定义了群在单位附近的表现。从
g
\mathfrak{g}
g到
G
G
G有一个映射,称为指数映射。
e
x
p
:
g
→
G
\mathrm{exp}: \mathfrak{g} \rightarrow G
exp:g→G
它是多对一的映射。可以在原点周围局部定义相应的逆,因此是一个“对数”
l
o
g
:
G
→
g
\mathrm{log}:G \rightarrow \mathfrak{g}
log:G→g
它将
G
G
G中单位周围的元素映射到
g
\mathfrak{g}
g中的元素。
李群的一个重要族是矩阵李群,其元素为n×n可逆矩阵,所有这些矩阵的集合以及矩阵乘法被称为维数为n的一般线性群 G L ( n ) GL(n) GL(n),以及 它的封闭子组是矩阵李群。 我们感兴趣的大多数(如果不是全部)李群将是矩阵李群。
2.2 Lie Algebra
李代数 g \mathfrak{g} g被称为代数,因为它具有二元操作李括号 [ X , Y ] [X,Y] [X,Y],其性质与 G G G群操作密切相关。例如,与代数相关的矩阵李群,李括号为 [ A , B ] ≜ A B − B A [A, B] \triangleq AB-BA [A,B]≜AB−BA.
李括号对李群操作的关系如下:对于可交换李群,
g
\mathfrak{g}
g中加性向量
X
+
Y
X+Y
X+Y模仿了李群操作。例如,在
g
\mathfrak{g}
g中,如果有
Z
=
X
+
Y
Z= X + Y
Z=X+Y,当通过指数映射到
G
G
G中我们有
e
Z
=
e
X
+
Y
=
e
X
e
Y
e^Z = e^{X+Y} = e^X e^Y
eZ=eX+Y=eXeY
然而,对于非交换李群不适用:
Z
=
log
(
e
X
e
Y
)
≠
X
+
Y
Z = \log(e^Xe^Y) \neq X + Y
Z=log(eXeY)=X+Y
然而,
Z
Z
Z可利用BCH(Baker-Campbell-Hausdorff)公式计算1:
Z
=
X
+
Y
+
[
X
,
Y
]
/
2
+
[
X
−
Y
,
[
X
,
Y
]
]
/
12
−
[
Y
,
[
X
,
[
X
,
Y
]
]
]
/
24
+
.
.
.
Z = X +Y + [X,Y ]/2 + [X −Y, [X,Y ]]/12 − [Y, [X, [X,Y ]]]/24 + . . .
Z=X+Y+[X,Y]/2+[X−Y,[X,Y]]/12−[Y,[X,[X,Y]]]/24+...
对于交换群李括号是零,我们可以通过 Z = X + Y Z = X + Y Z=X+Y。对于非交换群我们可以使用BCH公式去近似。
2.3 Exponential Coordinates
对于n维矩阵李群,与在李代数
g
\mathfrak{g}
g中的向量空间
R
n
\R^n
Rn是同构的,我们可以定义hat 运算2:
^
:
x
∈
R
n
→
x
^
∈
g
\hat{}: x \in \R^n \rightarrow \hat x \in \mathfrak{g}
^:x∈Rn→x^∈g
表示将n维向量
x
∈
R
n
x \in \R^n
x∈Rn映射到
g
\mathfrak{g}
g空间元素,在矩阵李群中,
g
\mathfrak{g}
g的元素
x
^
\hat x
x^也是
n
×
n
n \times n
n×n矩阵,该映射为
x
^
=
∑
i
=
1
n
x
i
G
i
(1)
\hat x = \sum_{i=1}^n x_i G^i \tag{1}
x^=i=1∑nxiGi(1)
其中
G
i
G^i
Gi是李群生成器(generators)的
n
×
n
n \times n
n×n矩阵。映射
x
→
x
^
x→x̂
x→x^的含义将取决于群
G
G
G,并且通常具有直观的解释。
2.4 Actions
群元素作用到流形 M M M上是一个重要的概念,例如,2D旋转作用到2D点上,3D旋转作用到3D点上等。尤其是在 M M M上 G G G的左作用定义为一个平滑的映射 Φ \Phi Φ: G × M → M G \times M \rightarrow M G×M→M有:
- 单位元素 e e e没有影响,也就是 Φ ( e , p ) = p \Phi(e,p) = p Φ(e,p)=p
- 两个作用组合成一个作用: Φ ( g , Φ ( h , p ) ) = Φ ( g h , p ) \Phi(g, \Phi(h, p))=\Phi(gh, p) Φ(g,Φ(h,p))=Φ(gh,p)
n维矩阵群
G
G
G的作用(action)是乘
R
n
\R^n
Rn上的矩阵向量,
q
=
A
p
q = A p
q=Ap
其中
p
,
q
∈
R
n
p, q \in \R^n
p,q∈Rn,
A
∈
G
⊆
G
L
(
n
)
A \in G \sube GL(n)
A∈G⊆GL(n)
2.5 The Adjoint Map and Adjoint Representation
假设一个点
p
p
p在坐标系
T
T
T中表示为
p
′
p'
p′,也就是
p
′
=
T
p
p' = Tp
p′=Tp,其中
T
T
T表示全局坐标
p
p
p到局部坐标
p
′
p'
p′的变换。为了作用
A
A
A,我们首先需要消去作用的
T
T
T,然后应用
A
A
A, 然后在结果上在作用
T
T
T:
q
′
=
T
A
T
−
1
p
′
q' = TAT^{-1}p'
q′=TAT−1p′
矩阵
T
A
T
−
1
TAT^{-1}
TAT−1被认为是
A
A
A的共轭,这是群论的核心要素。
一般,伴随映射(adjoint map)
A
d
g
\mathbf{Ad}_g
Adg通过
g
g
g映射群元素
a
∈
G
a \in G
a∈G到它的共轭
g
a
g
−
1
gag^{-1}
gag−1。该映射在群
G
G
G中获取,但它在李代数
g
\mathfrak{g}
g有等价的表示:
A
d
g
e
x
^
=
g
e
x
p
(
x
^
)
g
−
1
=
e
x
p
(
A
d
g
x
^
)
\mathbf{Ad}_ge^{\hat{x}} = g \, \mathrm{exp}(\hat{x}) \, g^{-1} = \mathrm{exp}(Ad_g \, \hat{x})
Adgex^=gexp(x^)g−1=exp(Adgx^)
其中
A
d
g
:
g
↦
g
Ad_g: \mathfrak{g} \mapsto \mathfrak{g}
Adg:g↦g表示通过群元素
g
g
g参数化的映射,也称作伴随表示。 直观的解释是定义在原点(origin),但应用在群元素
g
g
g上的变化
e
x
p
(
x
^
)
\mathrm{exp}(\hat {x})
exp(x^)可以写作
x
^
\hat{x}
x^的伴随
A
d
g
x
^
Ad_g \, \hat{x}
Adgx^。
在矩阵李群的特殊情况下,伴随可以写成
A
d
T
x
^
≜
T
x
^
T
−
1
Ad_T \, \hat{x} \triangleq T \hat{x}T^{-1}
AdTx^≜Tx^T−1
因此我们有
T
e
x
^
T
−
1
=
e
T
x
^
T
−
1
(2)
T e^{\hat{x}} T^{-1} = e^{T\hat{x}T^{-1}} \tag{2}
Tex^T−1=eTx^T−1(2)
其中
T
∈
G
T \in G
T∈G,
x
^
∈
g
\hat {x} \in \mathfrak{g}
x^∈g是n维李代数的
n
×
n
n \times n
n×n矩阵。
3. 2D Rotation
我们首先看一个简单的2D旋转群。
3.1 Basics
李群
S
O
(
2
)
SO(2)
SO(2)是
2
×
2
2 \times 2
2×2可逆矩阵的一般线性群
G
L
(
2
)
GL(2)
GL(2)的子群,它的李代数是
2
×
2
2 \times 2
2×2 斜对称(skew-symmetric)矩阵的向量空间。因为
S
O
(
2
)
SO(2)
SO(2)是一维流形,所以
s
o
(
2
)
\mathfrak{so(2)}
so(2)与
R
\reals
R同构,我们定义
^
:
R
↦
s
o
(
2
)
^
:
ω
↦
ω
^
=
[
ω
]
+
\hat{}: \reals \mapsto \mathfrak{so(2)} \\ \hat{} : \omega \mapsto \hat{\omega}= [\omega]_+
^:R↦so(2)^:ω↦ω^=[ω]+
映射角度
ω
\omega
ω到
2
×
2
2 \times 2
2×2斜对称矩阵
[
ω
]
+
[\omega]_+
[ω]+:
[
w
]
+
=
[
0
−
ω
ω
0
]
[w]_+ = \begin{bmatrix} 0 & - \omega \\ \omega & 0 \end{bmatrix}
[w]+=[0ω−ω0]
指数映射的闭合形式为:
e
[
ω
]
+
=
[
cos
ω
−
sin
ω
sin
ω
cos
ω
]
e^{[\omega]_+} = \begin{bmatrix} \cos \omega & - \sin \omega \\ \sin \omega & \cos \omega \end{bmatrix}
e[ω]+=[cosωsinω−sinωcosω]
3.2 Diagonalized Form
矩阵
[
1
]
+
[1]_+
[1]+可以通过奇异值
−
i
,
i
-i, i
−i,i和奇异向量
[
1
i
]
{1 \brack i}
[i1]和
[
i
1
]
{i \brack 1}
[1i]对角化。对投影几何熟悉的读者认为是(齐次坐标表示的)圆环点,具体有:
[
w
]
+
=
[
0
−
ω
ω
0
]
=
[
1
i
i
1
]
[
−
i
ω
0
0
i
ω
]
[
1
i
i
1
]
−
1
[w]_+ = \begin{bmatrix} 0 & - \omega \\ \omega & 0 \end{bmatrix}= \begin{bmatrix} 1 & i \\ i & 1 \end{bmatrix} \begin{bmatrix} -i \omega & 0 \\ 0 & i \omega \end{bmatrix} \begin{bmatrix} 1 & i \\ i & 1 \end{bmatrix}^{-1}
[w]+=[0ω−ω0]=[1ii1][−iω00iω][1ii1]−1
因此有
e
[
w
]
+
=
1
2
[
1
i
i
1
]
[
e
−
i
ω
0
0
e
i
ω
]
[
1
−
i
−
i
1
]
=
[
cos
ω
−
sin
ω
sin
ω
cos
ω
]
e^{[w]_+} = \frac{1}{2} \begin{bmatrix} 1 & i \\ i & 1 \end{bmatrix} \begin{bmatrix} e^{-i \omega} & 0 \\ 0 & e^{i \omega} \end{bmatrix} \begin{bmatrix} 1 & -i \\ -i & 1 \end{bmatrix} = \begin{bmatrix} \cos \omega & - \sin \omega \\ \sin \omega & \cos \omega \end{bmatrix}
e[w]+=21[1ii1][e−iω00eiω][1−i−i1]=[cosωsinω−sinωcosω]
其中
e
i
ω
=
cos
ω
+
i
sin
ω
e^{i \omega} = \cos \omega + i \sin \omega
eiω=cosω+isinω。
3.3 Adjoint
s
o
(
2
)
\mathfrak{so(2)}
so(2)的伴随是恒等式,对于所有的交换群也一样:
A
d
R
ω
^
=
[
cos
θ
−
sin
θ
sin
θ
cos
θ
]
[
0
−
ω
ω
0
]
[
cos
θ
−
sin
θ
sin
θ
cos
θ
]
T
=
w
[
−
sin
θ
−
cos
θ
cos
θ
−
sin
θ
]
[
cos
θ
sin
θ
−
sin
θ
cos
θ
]
=
[
0
−
ω
ω
0
]
Ad_R \hat \omega = \begin{bmatrix} \cos \theta & - \sin \theta \\ \sin \theta & \cos \theta \end{bmatrix} \begin{bmatrix} 0 & -\omega \\ \omega & 0 \end{bmatrix} \begin{bmatrix} \cos \theta & - \sin \theta \\ \sin \theta & \cos \theta \end{bmatrix}^T \\ = w \begin{bmatrix} -\sin \theta & - \cos \theta \\ \cos \theta & -\sin \theta \end{bmatrix} \begin{bmatrix} \cos \theta & \sin \theta \\ -\sin \theta & \cos \theta \end{bmatrix}= \begin{bmatrix} 0 & - \omega \\ \omega & 0 \end{bmatrix}
AdRω^=[cosθsinθ−sinθcosθ][0ω−ω0][cosθsinθ−sinθcosθ]T=w[−sinθcosθ−cosθ−sinθ][cosθ−sinθsinθcosθ]=[0ω−ω0]
即
A
d
R
ω
^
=
ω
^
Ad_R \hat \omega = \hat \omega
AdRω^=ω^
3.4 Actions
对于
S
O
(
2
)
SO(2)
SO(2)的向量空间是
R
2
\reals^2
R2,群操作对应于一个旋转点
q
=
R
p
q = R p
q=Rp
现在我们想知道通过
ω
\omega
ω参数化一个增量发生了什么:
q
(
ω
)
=
R
e
[
ω
]
+
p
q(\omega) = R e^{[\omega]_+} p
q(ω)=Re[ω]+p
对于一个小角度
ω
\omega
ω,我们有
e
[
ω
]
+
≈
I
+
[
ω
]
+
=
I
+
ω
[
1
]
+
e^{[\omega]_+} \approx I + [\omega]_+ = I + \omega[1]_+
e[ω]+≈I+[ω]+=I+ω[1]+
其中
[
1
]
+
[1]_+
[1]+操作像是平面上作用在点的叉积:
[
1
]
+
[
x
y
]
=
R
π
/
2
[
x
y
]
=
[
−
y
x
]
(3)
[1]_+ \begin{bmatrix} x \\ y \end{bmatrix} =R_{\pi/2} \begin{bmatrix} x \\ y \end{bmatrix} =\begin{bmatrix} -y \\ x \end{bmatrix} \tag{3}
[1]+[xy]=Rπ/2[xy]=[−yx](3)
因此该操作的导数为:
∂
q
(
ω
)
∂
ω
=
R
∂
ω
(
e
[
ω
]
+
p
)
=
R
∂
ω
(
ω
[
1
]
+
p
)
=
R
H
p
\frac{\partial q(\omega)}{\partial \omega} = R \frac{\partial}{\omega}(e^{[\omega]_+}p) = R \frac{\partial}{\omega}(\omega [1]_+p) = R H_p
∂ω∂q(ω)=Rω∂(e[ω]+p)=Rω∂(ω[1]+p)=RHp
其中
H
p
H_p
Hp是依赖
p
p
p的
2
×
1
2 \times 1
2×1矩阵:
H
p
≜
[
1
]
+
p
=
[
−
p
y
p
x
]
H_p \triangleq [1]_+p ={-p_y \brack p_x}
Hp≜[1]+p=[px−py]
4. 2D Rigid Transformations
4.1 Basics
李群
S
E
(
2
)
SE(2)
SE(2)是
3
×
3
3 \times 3
3×3可逆矩阵的一般线性群
G
L
(
3
)
GL(3)
GL(3)的子群,它的形式为:
T
≜
[
R
t
0
1
]
T \triangleq \begin{bmatrix} R & t \\ 0 & 1 \end{bmatrix}
T≜[R0t1]
其中
R
∈
S
O
(
2
)
R \in SO(2)
R∈SO(2)是一个旋转矩阵,
t
∈
R
2
t \in \reals^2
t∈R2是一个平移向量。
S
E
(
2
)
SE(2)
SE(2)是
R
2
\reals^2
R2与
S
O
(
2
)
SO(2)
SO(2)的半直积(semi-direct product),写作
S
E
(
2
)
=
R
2
⋊
S
O
(
2
)
SE(2) = \reals^2 \rtimes SO(2)
SE(2)=R2⋊SO(2),具体的,对于
S
E
(
2
)
SE(2)
SE(2)中的任何元素
T
T
T可以写为:
T
=
[
1
t
0
1
]
[
R
0
0
1
]
T= \begin{bmatrix} 1 & t \\ 0 & 1 \end{bmatrix} \begin{bmatrix} R & 0 \\ 0 & 1 \end{bmatrix}
T=[10t1][R001]
它们的组合为
[
R
1
t
1
0
1
]
[
R
2
t
2
0
1
]
=
[
R
1
R
2
R
1
t
2
+
t
1
0
1
]
\begin{bmatrix} R_1 & t_1 \\ 0 & 1 \end{bmatrix} \begin{bmatrix} R_2 & t_2 \\ 0 & 1 \end{bmatrix}= \begin{bmatrix} R_1 R_2 & R_1t_2 + t_1 \\ 0 & 1 \end{bmatrix}
[R10t11][R20t21]=[R1R20R1t2+t11]
也可以写成下面按序匹配的方式:
(
R
1
,
t
1
)
(
R
2
,
t
2
)
=
(
R
1
R
2
,
R
1
t
2
+
t
1
)
(R_1, t_1)(R_2, t_2) = (R_1R_2, R_1t_2 + t1)
(R1,t1)(R2,t2)=(R1R2,R1t2+t1)
对应的李代数
s
e
(
2
)
\mathfrak{se(2)}
se(2)是由twist 坐标
ξ
∈
R
3
\xi \in \reals^3
ξ∈R3参数化的
3
×
3
3 \times 3
3×3 twists
ξ
^
\hat \xi
ξ^向量空间, 该映射为:
ξ
≜
[
v
ω
]
↦
ξ
^
≜
[
[
w
]
+
v
0
0
]
\xi \triangleq {v \brack \omega} \mapsto \hat \xi \triangleq \begin{bmatrix} [w]_+ & v \\ 0 & 0 \end{bmatrix}
ξ≜[ωv]↦ξ^≜[[w]+0v0]
注意,我们认为机器人有位姿
(
x
,
y
,
θ
)
(x, y, \theta)
(x,y,θ),其中一二两项是平移部分,最后一项是旋转部分,它们对应的李群生成器是
G
x
=
[
0
0
1
0
0
0
0
0
0
]
,
G
y
=
[
0
0
0
0
0
1
0
0
0
]
,
G
θ
=
[
0
−
1
0
1
0
0
0
0
0
]
G^x = \begin{bmatrix} 0 & 0 & 1 \\ 0 & 0 & 0 \\ 0 & 0 & 0 \end{bmatrix}, G^y = \begin{bmatrix} 0 & 0 & 0 \\ 0 & 0 & 1 \\ 0 & 0 & 0 \end{bmatrix}, G^{\theta} = \begin{bmatrix} 0 & -1 & 0 \\ 1 & 0 & 0 \\ 0 & 0 & 0 \end{bmatrix}
Gx=⎣⎡000000100⎦⎤,Gy=⎣⎡000000010⎦⎤,Gθ=⎣⎡010−100000⎦⎤
应用指数映射到twist
ξ
\xi
ξ得到screw motion:
T
=
e
ξ
^
=
(
e
[
ω
]
+
,
(
I
−
e
[
ω
]
+
)
v
⊥
ω
)
T = e^{\hat \xi} = \Big( e^{[\omega]_+}, (I - e^{[\omega]_+})\frac{v^{\perp}}{\omega}\Big)
T=eξ^=(e[ω]+,(I−e[ω]+)ωv⊥)
4.2 The Adjoint Map
伴随
A
d
T
ξ
^
=
T
ξ
^
T
−
1
=
[
R
t
0
1
]
[
[
ω
]
+
v
0
0
]
[
R
T
−
R
T
t
0
1
]
=
[
[
ω
]
+
−
[
ω
]
+
t
+
R
v
0
0
]
=
[
[
ω
]
+
R
v
−
t
⊥
ω
0
0
]
(4)
\begin{aligned} Ad_T \hat \xi &= T \hat \xi T^{-1} \\ &=\begin{bmatrix} R & t \\ 0 & 1 \end{bmatrix} \begin{bmatrix} [\omega]_+ & v \\ 0 & 0 \end{bmatrix} \begin{bmatrix} R^T & -R^Tt \\ 0 & 1 \end{bmatrix} \\ &=\begin{bmatrix} [\omega]_+ & -[\omega]_+t + Rv \\ 0 & 0 \end{bmatrix} \\ &=\begin{bmatrix} [\omega]_+ & Rv - t^{\perp} \omega \\ 0 & 0 \end{bmatrix} \tag{4} \end{aligned}
AdTξ^=Tξ^T−1=[R0t1][[ω]+0v0][RT0−RTt1]=[[ω]+0−[ω]+t+Rv0]=[[ω]+0Rv−t⊥ω0](4)
由此我们可以通过平面twist坐标表示伴随映射
[
v
′
ω
′
]
=
[
R
−
t
⊥
0
1
]
[
v
ω
]
{v^{'} \brack \omega^{'}} = \begin{bmatrix} R & - t^{\perp} \\ 0 & 1 \end{bmatrix} {v \brack \omega}
[ω′v′]=[R0−t⊥1][ωv]
4.3 actions
S
E
(
2
)
SE(2)
SE(2)在2D点上的作用是通过使用齐次坐标将点嵌入
R
3
\reals^3
R3中来完成
q
^
=
[
q
1
]
=
[
R
t
0
1
]
[
p
1
]
=
T
p
^
\hat q = {q \brack 1} = \begin{bmatrix} R & t \\ 0 & 1 \end{bmatrix}{p \brack 1}=T \hat p
q^=[1q]=[R0t1][1p]=Tp^
S
E
(
3
)
SE(3)
SE(3)类似(下面),我们可以在局部T坐标系中计算速度
ξ
^
p
^
\hat \xi \hat p
ξ^p^:
ξ
^
p
^
=
[
[
ω
]
+
v
0
0
]
[
p
1
]
=
[
[
ω
]
+
p
+
v
0
]
\hat \xi \hat p = \begin{bmatrix} [\omega]_+ & v \\ 0 & 0 \end{bmatrix} {p \brack 1}= \begin{bmatrix} [\omega]_+p +v \\ 0 \end{bmatrix}
ξ^p^=[[ω]+0v0][1p]=[[ω]+p+v0]
仅取最上面的两行,我们可以把它作为
R
2
\reals^2
R2上的速度,因为
H
p
H_p
Hp是直接作用在指数坐标
ξ
\xi
ξ上的
2
×
3
2 \times 3
2×3矩阵:
[
ω
]
+
p
+
v
=
v
+
R
π
/
2
p
ω
=
[
I
2
R
π
/
2
p
]
[
v
ω
]
=
H
p
ξ
[\omega]_+p + v = v + R_{\pi/2}p \omega = \begin{bmatrix} I_2 & R_{\pi/2}p \end{bmatrix} \begin{bmatrix} v \\ \omega \end{bmatrix} =H_p \xi
[ω]+p+v=v+Rπ/2pω=[I2Rπ/2p][vω]=Hpξ
5. 3D Rotations
5.1 Basics
李群
S
O
(
3
)
SO(3)
SO(3)是
3
×
3
3 \times 3
3×3可逆矩阵的一般线性群
G
L
(
3
)
GL(3)
GL(3)的子群,它的李代数
s
e
(
3
)
\mathfrak{se(3)}
se(3)是
3
×
3
3 \times 3
3×3斜对称(skew-symmetric)矩阵
ω
^
\hat \omega
ω^的线性空间。因为
S
O
(
3
)
SO(3)
SO(3)是一个三维流形,
s
o
(
3
)
\mathfrak{so(3)}
so(3)与
R
3
\reals^3
R3同构,我们定义映射
^
:
R
3
→
s
o
(
3
)
^
:
ω
→
ω
^
=
[
ω
]
×
\hat{}:\reals^3 \to \mathfrak{so(3)} \\ \hat{}: \omega \to \hat \omega = [\omega]_\times
^:R3→so(3)^:ω→ω^=[ω]×
它映射三维向量
ω
\omega
ω到斜对称矩阵
[
ω
]
×
[\omega]_\times
[ω]×:
[
ω
]
×
=
[
0
−
ω
z
ω
y
ω
z
0
−
ω
x
−
ω
y
ω
x
0
]
=
ω
x
G
x
+
ω
y
G
y
+
ω
z
G
z
[\omega]_\times = \begin{bmatrix} 0 & - \omega_z & \omega_y \\ \omega_z & 0 & -\omega_x \\ -\omega_y & \omega_x & 0 \end{bmatrix}=\omega_x G^x+\omega_yG^y + \omega_zG^z
[ω]×=⎣⎡0ωz−ωy−ωz0ωxωy−ωx0⎦⎤=ωxGx+ωyGy+ωzGz
这里矩阵
G
i
G^i
Gi是
S
O
(
3
)
SO(3)
SO(3)的生成器,
G
x
=
(
0
0
0
0
0
−
1
0
1
0
)
,
G
y
=
(
0
0
1
0
0
0
−
1
0
0
)
,
G
z
=
(
0
−
1
0
1
0
0
0
0
0
)
G^{x} =\begin{pmatrix} 0 & 0 & 0 \\ 0 & 0 & -1 \\ 0 & 1 & 0 \end{pmatrix}, G^y = \begin{pmatrix} 0 & 0 & 1 \\ 0 & 0 & 0 \\ -1 & 0 & 0 \end{pmatrix}, G^z=\begin{pmatrix} 0 & -1 & 0 \\ 1 & 0 & 0 \\ 0 & 0 & 0 \end{pmatrix}
Gx=⎝⎛0000010−10⎠⎞,Gy=⎝⎛00−1000100⎠⎞,Gz=⎝⎛010−100000⎠⎞
分别对应到绕着X, Y, Z的旋转,
s
o
(
3
)
\mathfrak{so(3)}
so(3)中的李括号
[
x
,
y
]
[x, y]
[x,y]对应到
R
3
\reals^3
R3中的叉积
x
×
y
x \times y
x×y。
因此,对于三维向量
ω
\omega
ω有一个对应的旋转
R
=
e
[
ω
]
×
R = e^{[\omega]_\times}
R=e[ω]×
它定义了已知
ω
\omega
ω作为canonical 或者指数坐标,
S
O
(
3
)
SO(3)
SO(3)的canonical 参数化。它等价于旋转的轴角表示,其中单位向量
ω
/
θ
\omega/\theta
ω/θ定义旋转轴,旋转角
θ
\theta
θ定义旋转量的大小。
指数映射的闭合形式可以通过Rodrigues 公式2计算
e
ω
^
=
I
+
sin
θ
θ
ω
^
+
1
−
cos
θ
θ
2
ω
^
2
(5)
e^{\hat \omega} = I + \frac{\sin \theta}{\theta} \hat \omega + \frac{1-\cos \theta}{\theta^2} \hat \omega^2 \tag{5}
eω^=I+θsinθω^+θ21−cosθω^2(5)
其中
ω
^
2
=
ω
ω
T
−
I
\hat \omega^2 = \omega \omega^T - I
ω^2=ωωT−I,
ω
ω
t
\omega \omega^t
ωωt是
ω
\omega
ω的外积,因此,一个效率上更好的变体是
e
ω
^
=
(
cos
θ
)
I
+
sin
θ
θ
ω
^
+
1
−
cos
θ
θ
2
ω
ω
T
(6)
e^{\hat \omega} = (\cos \theta)I + \frac{\sin \theta}{\theta} \hat \omega + \frac{1-\cos \theta}{\theta^2} \omega \omega^T \tag{6}
eω^=(cosθ)I+θsinθω^+θ21−cosθωωT(6)
5.2 Diagonalized Form
因为3D旋转
R
R
R保持轴
ω
\omega
ω不变,因此
R
R
R可以被对角化为
R
=
C
(
e
−
i
θ
0
0
0
e
i
θ
0
0
0
1
)
C
−
1
R = C \begin{pmatrix} e^{-i\theta} & 0 & 0 \\ 0 & e^{i\theta} & 0 \\ 0 & 0 & 1 \end{pmatrix}C^{-1}
R=C⎝⎛e−iθ000eiθ0001⎠⎞C−1
其中
C
=
(
c
1
c
2
ω
/
θ
)
C=(c_1 \enspace c_2 \enspace \omega/\theta)
C=(c1c2ω/θ),
c
1
,
c
2
c_1 , c_2
c1,c2是complex 特征向量,对应绕着
ω
\omega
ω的2D旋转。这也意味着,通过(2)有
ω
^
=
C
(
−
i
θ
0
0
0
i
θ
0
0
0
0
)
C
−
1
\hat \omega = C \begin{pmatrix} -i \theta & 0 & 0 \\ 0 & i \theta & 0 \\ 0 & 0 & 0 \end{pmatrix} C^{-1}
ω^=C⎝⎛−iθ000iθ0000⎠⎞C−1
在该情况下,
C
C
C有 complex 列, 而且我们还有
ω
^
=
B
(
0
−
θ
0
θ
0
0
0
0
0
)
B
T
(7)
\hat \omega = B \begin{pmatrix} 0 & - \theta & 0 \\ \theta & 0 & 0 \\ 0 & 0 & 0 \end{pmatrix} B^T \tag{7}
ω^=B⎝⎛0θ0−θ00000⎠⎞BT(7)
其中
B
=
(
b
1
b
2
ω
/
θ
)
B=(b_1 \enspace b_2 \enspace \omega/\theta)
B=(b1b2ω/θ),
b
1
,
b
2
b_1, b_2
b1,b2是通过源点且与
ω
\omega
ω正交的一组二维平面的基。很明显从3.2节,我们有
c
1
=
B
(
1
i
0
)
,
c
2
=
B
(
i
1
0
)
c_1 = B \begin{pmatrix} 1 \\ i \\ 0 \end{pmatrix},c_2=B \begin{pmatrix} i \\ 1 \\ 0 \end{pmatrix}
c1=B⎝⎛1i0⎠⎞,c2=B⎝⎛i10⎠⎞
当我们求幂(7)时,我们得到绕着
ω
/
θ
\omega / \theta
ω/θ轴,大小为
θ
\theta
θ的2D旋转:
R
=
B
(
cos
θ
−
sin
θ
0
sin
θ
c
o
s
θ
0
0
0
1
)
B
T
R = B \begin{pmatrix} \cos \theta & -\sin \theta & 0 \\ \sin \theta & cos \theta & 0 \\ 0 & 0 & 1 \end{pmatrix} B^T
R=B⎝⎛cosθsinθ0−sinθcosθ0001⎠⎞BT
接下来的
R
R
R使用前面的Rodrigues公式并扩展以上,我们有
R
=
(
cos
θ
)
(
b
1
b
1
T
+
b
2
b
2
T
)
+
(
sin
θ
)
(
b
2
b
1
T
−
b
1
b
2
T
)
+
ω
ω
T
/
θ
2
R = (\cos \theta) (b_1b_1^T + b_2b_2^T) + (\sin \theta)(b_2b_1^T -b_1b_2^T ) + \omega \omega^T / \theta^2
R=(cosθ)(b1b1T+b2b2T)+(sinθ)(b2b1T−b1b2T)+ωωT/θ2
因为
B
B
B是旋转矩阵,我们有
B
B
T
=
b
1
b
1
T
+
b
2
b
2
T
+
ω
ω
T
/
θ
2
=
I
BB^T = b_1b_1^T + b_2b_2^T + \omega \omega^T/\theta^2 = I
BBT=b1b1T+b2b2T+ωωT/θ2=I,使用(7)很容易得到
b
2
b
1
T
−
b
1
b
2
T
=
ω
^
/
θ
b_2b_1^T-b_1b_2^T = \hat \omega / \theta
b2b1T−b1b2T=ω^/θ,因此
R
=
(
cos
θ
)
(
I
−
ω
ω
T
/
θ
2
)
+
(
sin
θ
)
(
ω
^
/
θ
)
+
ω
ω
T
/
θ
2
R = (\cos \theta)(I - \omega \omega^T/ \theta^2) + (\sin \theta)(\hat \omega/\theta) + \omega\omega^T/\theta^2
R=(cosθ)(I−ωωT/θ2)+(sinθ)(ω^/θ)+ωωT/θ2
它与(6)等价。
5.3 The Adjoint Map
对于旋转矩阵
R
R
R,我们可以证明(见附录 性质9)下面的恒等式:
R
[
ω
]
×
R
T
=
[
R
ω
]
×
(8)
R[\omega]_\times R^T = [R \omega]_\times \tag{8}
R[ω]×RT=[Rω]×(8)
因此,给定性质(8)
s
o
(
3
)
\mathfrak{so(3)}
so(3)的伴随映射可简化为:
A
d
R
[
ω
]
×
=
R
[
ω
]
×
R
T
=
[
R
ω
]
×
Ad_R [\omega]_\times = R[\omega]_\times R^T = [R \omega]_\times
AdR[ω]×=R[ω]×RT=[Rω]×
而且将轴
ω
\omega
ω旋转到
R
ω
R \omega
Rω,就可以用指数坐标表示。
举个例子,在
R
R
R系中的一个点
p
p
p应用轴角旋转
ω
\omega
ω,我们可以:
- 首先将
p
p
p变换到世界坐标系(可参见2.5节),应用
ω
\omega
ω(即在世界坐标系中应用),然后旋转回来:
q = R e [ ω ] × R T q = R e^{[\omega]_\times}R^T q=Re[ω]×RT - 即应用变换后的轴角变换
A
d
R
[
ω
]
×
=
[
R
ω
]
×
Ad_R[\omega]_\times = [R \omega]_\times
AdR[ω]×=[Rω]×:
q = e [ R ω ] × p q = e^{[R \omega]_\times}p q=e[Rω]×p
5.4 Actions
对于
S
O
(
3
)
SO(3)
SO(3),向量空间是
R
3
\reals^3
R3,群操作应用到一个旋转点
q
=
R
p
q = R p
q=Rp
我们现在想知道通过参数化增量
ω
\omega
ω会发生什么:
q
(
ω
)
=
R
e
[
ω
]
×
p
q(\omega) = Re^{[\omega]_\times}p
q(ω)=Re[ω]×p
因此导数为:
∂
q
(
ω
)
∂
ω
=
R
∂
∂
ω
(
e
[
ω
]
×
p
)
=
R
∂
∂
ω
(
[
ω
]
×
p
)
=
R
[
−
p
]
×
\frac{\partial q(\omega)}{\partial \omega} = R \frac{\partial}{\partial \omega}(e^{[\omega]_\times}p) = R \frac{\partial}{\partial \omega}([\omega]_\times p) = R[-p]_\times
∂ω∂q(ω)=R∂ω∂(e[ω]×p)=R∂ω∂([ω]×p)=R[−p]×
为得到最后一个等式,有:
[
ω
]
×
p
=
ω
×
p
=
−
p
×
ω
=
[
−
p
]
×
ω
[\omega]_\times p = \omega \times p = -p \times \omega= [-p]_\times \omega
[ω]×p=ω×p=−p×ω=[−p]×ω
6 3D Rigid Transformations
李群
S
E
(
3
)
SE(3)
SE(3)是
4
×
4
4 \times 4
4×4可逆矩阵的一般线性群的子群,其形式为:
T
≜
[
R
t
0
1
]
T \triangleq \begin{bmatrix} R & t \\ 0 & 1 \end{bmatrix}
T≜[R0t1]
其中
R
∈
S
O
(
3
)
R \in SO(3)
R∈SO(3)是旋转矩阵,
t
∈
R
3
t \in \reals^3
t∈R3是平移向量。
也可以写成下面按序匹配的方式:
(
R
1
,
t
1
)
(
R
2
,
t
2
)
=
(
R
1
R
2
,
R
1
t
2
+
t
1
)
(R_1, t_1)(R_2, t_2) = (R_1R_2, R_1t_2 + t_1)
(R1,t1)(R2,t2)=(R1R2,R1t2+t1)
它的李代数
s
e
(
3
)
\mathfrak{se(3)}
se(3)是 参数化
4
×
4
4 \times 4
4×4 twist
ξ
^
\hat \xi
ξ^向量空间,
ξ
^
\hat \xi
ξ^的twist 坐标是
ξ
∈
R
6
\xi \in \reals^6
ξ∈R6, 有映射
ξ
≜
[
ω
v
]
→
ξ
^
≜
[
[
ω
]
×
v
0
0
]
\xi \triangleq {\omega \brack v} \to \hat \xi \triangleq \begin{bmatrix} [\omega]_\times & v \\ 0 & 0 \end{bmatrix}
ξ≜[vω]→ξ^≜[[ω]×0v0]
注意我们遵循 Frank Park 惯例,前三项表示旋转,后三项表平移。因此,对于该参数化,
S
E
(
3
)
SE(3)
SE(3)的生成器是
G
1
=
[
0
0
0
0
0
0
−
1
0
0
1
0
0
0
0
0
0
]
,
G
2
=
[
0
0
1
0
0
0
0
0
−
1
0
0
0
0
0
0
0
]
G
3
=
[
0
−
1
0
0
1
0
0
0
0
0
0
0
0
0
0
0
]
G
4
=
[
0
0
0
1
0
0
0
0
0
0
0
0
0
0
0
0
]
,
G
5
=
[
0
0
0
0
0
0
0
1
0
0
0
0
0
0
0
0
]
,
G
6
=
[
0
0
0
0
0
0
0
0
0
0
0
1
0
0
0
0
]
G^1 = \begin{bmatrix} 0 & 0 & 0 & 0 \\ 0 & 0 & -1 & 0 \\ 0 & 1 & 0 & 0 \\ 0 & 0 & 0 & 0 \end{bmatrix}, G^2 = \begin{bmatrix} 0 & 0 & 1 & 0 \\ 0 & 0 & 0 & 0 \\ -1 & 0 & 0 & 0 \\ 0 & 0 & 0 & 0 \end{bmatrix} G^3= \begin{bmatrix} 0 & -1 & 0 & 0 \\ 1 & 0 & 0 & 0 \\ 0 & 0 & 0 & 0 \\ 0 & 0 & 0 & 0 \end{bmatrix} \\ G^4= \begin{bmatrix} 0 & 0 & 0 & 1 \\ 0 & 0 & 0 & 0 \\ 0 & 0 & 0 & 0 \\ 0 & 0 & 0 & 0 \end{bmatrix}, G^5 = \begin{bmatrix} 0 & 0 & 0 & 0 \\ 0 & 0 & 0& 1\\ 0 & 0 & 0 & 0\\ 0 & 0 & 0 & 0 \end{bmatrix}, G^6= \begin{bmatrix} 0 & 0 & 0 & 0 \\ 0 & 0 & 0 & 0 \\ 0 & 0 & 0 & 1 \\ 0 & 0 & 0 & 0 \end{bmatrix}
G1=⎣⎢⎢⎡000000100−1000000⎦⎥⎥⎤,G2=⎣⎢⎢⎡00−10000010000000⎦⎥⎥⎤G3=⎣⎢⎢⎡0100−100000000000⎦⎥⎥⎤G4=⎣⎢⎢⎡0000000000001000⎦⎥⎥⎤,G5=⎣⎢⎢⎡0000000000000100⎦⎥⎥⎤,G6=⎣⎢⎢⎡0000000000000010⎦⎥⎥⎤
应用指数映射到 twist
ξ
\xi
ξ得到一个在
S
E
(
3
)
中
的
SE(3)中的
SE(3)中的screw motion:
T
=
e
x
p
ξ
^
T = \mathrm{exp} \, \hat \xi
T=expξ^
指数映射的闭合解2为:
e
x
p
(
[
ω
v
]
^
t
)
=
[
e
[
ω
]
×
t
(
I
−
e
[
ω
]
×
t
)
(
ω
×
v
)
+
ω
ω
T
v
t
0
1
]
\mathrm{exp} \Big(\widehat {\omega \brack v} t\Big) = \begin{bmatrix} e^{[\omega]_\times t} & (I - e^{[\omega]_\times t})(\omega \times v) + \omega \omega^T vt \\ 0 & 1 \end{bmatrix}
exp([vω]
t)=[e[ω]×t0(I−e[ω]×t)(ω×v)+ωωTvt1]
6.1 The Adjoint Map
伴随
A
d
T
ξ
^
=
T
ξ
T
−
1
=
[
R
t
0
1
]
[
[
ω
]
×
v
0
0
]
[
R
T
−
R
T
t
0
1
]
=
[
[
R
ω
]
×
−
[
R
ω
]
×
t
+
R
v
0
0
]
=
[
[
R
ω
]
×
t
×
R
ω
+
R
v
0
0
]
\begin{aligned} Ad_T \hat \xi &= T \xi T^{-1} \\ &=\begin{bmatrix} R & t \\ 0 & 1 \end{bmatrix} \begin{bmatrix} [\omega]_\times & v \\ 0 & 0 \end{bmatrix} \begin{bmatrix} R^T & - R^Tt \\ 0 & 1 \end{bmatrix} \\ &=\begin{bmatrix} [R\omega]_\times & -[R \omega]_\times t + Rv \\ 0 & 0 \end{bmatrix} \\ &= \begin{bmatrix} [R\omega]_\times & t \times R \omega + Rv \\ 0 & 0 \end{bmatrix} \end{aligned}
AdTξ^=TξT−1=[R0t1][[ω]×0v0][RT0−RTt1]=[[Rω]×0−[Rω]×t+Rv0]=[[Rω]×0t×Rω+Rv0]
从上面我们可以用twist 坐标表示伴随映射2:
[
ω
′
v
′
]
=
[
R
0
[
t
]
×
R
R
]
[
ω
v
]
{\omega^{\prime} \brack v^{\prime}}= \begin{bmatrix} R & 0 \\ [t]_\times R & R \end{bmatrix}{\omega \brack v}
[v′ω′]=[R[t]×R0R][vω]
6.2 Actions
S
E
(
3
)
SE(3)
SE(3)在3D点上的作用是通过使用齐次坐标将点嵌入
R
4
\reals^4
R4中来完成
q
^
=
[
q
1
]
=
[
R
p
+
t
1
]
=
[
R
t
0
1
]
[
p
1
]
=
T
p
^
\hat q = {q \brack 1} = { Rp + t \brack 1} = \begin{bmatrix} R & t \\ 0 & 1 \end{bmatrix}{p \brack 1} = T \hat p
q^=[1q]=[1Rp+t]=[R0t1][1p]=Tp^
现在我们想知道通过
ξ
\xi
ξ参数化增量pose会发生什么:
q
^
(
ξ
)
=
T
e
ξ
^
p
^
\hat q(\xi) = T e^{\hat \xi} \hat p
q^(ξ)=Teξ^p^
因此导数是
q
^
(
ξ
)
∂
ξ
=
T
∂
∂
ξ
(
ξ
^
p
^
)
\frac{\hat q(\xi)}{\partial \xi} = T \frac{\partial }{\partial \xi}(\hat \xi \hat p)
∂ξq^(ξ)=T∂ξ∂(ξ^p^)
其中
ξ
^
p
^
\hat \xi \hat p
ξ^p^对应
R
4
\reals^4
R4中的速度(在局部坐标系T):
ξ
^
p
^
=
[
[
ω
]
×
v
0
0
]
[
p
1
]
=
[
ω
×
p
+
v
0
]
\hat \xi \hat p = \begin{bmatrix} [\omega]_\times & v \\ 0 & 0 \end{bmatrix}{p \brack 1} = {\omega \times p + v\brack 0}
ξ^p^=[[ω]×0v0][1p]=[0ω×p+v]
请注意,速度与投影几何中无穷大的点如何相似:它们对应于指示变化方向和大小的自由矢量。通过取最上面的三行,我们可以把它写成
R
3
\reals^3
R3中的速度,因为
H
p
H_p
Hp是直接作用在指数坐标
ξ
\xi
ξ上的
3
×
6
3 \times 6
3×6矩阵:
ω
×
p
+
v
=
−
p
×
ω
+
v
=
[
−
[
p
]
×
I
3
]
[
ω
v
]
\omega \times p + v = -p \times \omega + v = \Big[ -[p]_\times \enspace I_3\Big] {\omega \brack v}
ω×p+v=−p×ω+v=[−[p]×I3][vω]
得到导数:
∂
q
^
(
ξ
)
∂
ξ
=
T
∂
∂
ξ
(
ξ
^
p
^
)
=
T
[
−
[
p
]
×
I
3
0
0
]
\frac{\partial \hat q(\xi)}{\partial \xi} = T \frac{\partial}{\partial \xi}(\hat \xi \hat p)=T \begin{bmatrix} -[p]_\times & I_3 \\ 0 & 0 \end{bmatrix}
∂ξ∂q^(ξ)=T∂ξ∂(ξ^p^)=T[−[p]×0I30]
逆操作
T
−
1
p
T^{-1}p
T−1p是
q
^
=
[
q
1
]
=
[
R
T
(
p
−
t
)
1
]
=
[
R
T
−
R
T
t
0
1
]
[
p
1
]
=
T
−
1
p
^
\hat q = {q \brack 1} = {R^T(p-t) \brack 1} = \begin{bmatrix} R^T & -R^Tt \\ 0 & 1 \end{bmatrix} {p \brack 1} = T^{-1} \hat p
q^=[1q]=[1RT(p−t)]=[RT0−RTt1][1p]=T−1p^
7. 3D Similarity Transformations
3D相似变换群
S
i
m
(
3
)
Sim(3)
Sim(3)是如下形式的
4
×
4
4 \times 4
4×4可逆矩阵集合
T
≜
[
R
t
0
s
−
1
]
T \triangleq \begin{bmatrix} R & t \\ 0 & s^{-1} \end{bmatrix}
T≜[R0ts−1]
其中
s
s
s是标量,有各种不同的李代数生成器表示,但我们使用
G
1
=
(
0
0
0
0
0
0
−
1
0
0
1
0
0
0
0
0
0
)
,
G
2
=
(
0
0
1
0
0
0
0
0
−
1
0
0
0
0
0
0
0
)
,
G
3
=
(
0
−
1
0
0
1
0
0
0
0
0
0
0
0
0
0
0
)
,
G
4
=
(
0
0
0
1
0
0
0
0
0
0
0
0
0
0
0
0
)
,
G
5
=
(
0
0
0
0
0
0
0
1
0
0
0
0
0
0
0
0
)
,
G
6
=
(
0
0
0
0
0
0
0
0
0
0
0
1
0
0
0
0
)
,
G
7
=
(
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
−
1
)
G^1 = \begin{pmatrix} 0 & 0 & 0& 0 \\ 0 & 0 & -1 & 0 \\ 0 & 1 & 0 & 0 \\ 0 & 0 & 0 & 0 \end{pmatrix}, G^2 = \begin{pmatrix} 0 & 0 & 1& 0 \\ 0 & 0 & 0 & 0 \\ -1 & 0 & 0 & 0 \\ 0 & 0 & 0 & 0 \end{pmatrix}, G^3 = \begin{pmatrix} 0 & -1 & 0& 0 \\ 1 & 0 & 0 & 0 \\ 0 & 0 & 0 & 0 \\ 0 & 0 & 0 & 0 \end{pmatrix} ,\\ G^4 = \begin{pmatrix} 0 & 0 & 0& 1 \\ 0 & 0 & 0 & 0 \\ 0 & 0 & 0 & 0 \\ 0 & 0 & 0 & 0 \end{pmatrix}, G^5 = \begin{pmatrix} 0 & 0 & 0& 0 \\ 0 & 0 & 0 & 1 \\ 0 & 0 & 0 & 0 \\ 0 & 0 & 0 & 0 \end{pmatrix}, G^6 = \begin{pmatrix} 0 & 0 & 0& 0 \\ 0 & 0 & 0 & 0 \\ 0 & 0 & 0 & 1 \\ 0 & 0 & 0 & 0 \end{pmatrix}, \\ G^7 = \begin{pmatrix} 0 & 0 & 0& 0 \\ 0 & 0 & 0 & 0 \\ 0 & 0 & 0 & 0 \\ 0 & 0 & 0 & -1 \end{pmatrix}
G1=⎝⎜⎜⎛000000100−1000000⎠⎟⎟⎞,G2=⎝⎜⎜⎛00−10000010000000⎠⎟⎟⎞,G3=⎝⎜⎜⎛0100−100000000000⎠⎟⎟⎞,G4=⎝⎜⎜⎛0000000000001000⎠⎟⎟⎞,G5=⎝⎜⎜⎛0000000000000100⎠⎟⎟⎞,G6=⎝⎜⎜⎛0000000000000010⎠⎟⎟⎞,G7=⎝⎜⎜⎛000000000000000−1⎠⎟⎟⎞
7.1 Actions
S
E
(
3
)
SE(3)
SE(3)在3D点上的作用是通过使用齐次坐标将点嵌入
R
4
\reals^4
R4中来完成
q
^
=
[
q
s
−
1
]
=
[
R
p
+
t
s
−
1
]
=
[
R
t
0
s
−
1
]
[
p
1
]
=
T
p
^
\hat q = {q \brack s^{-1}} = {Rp+t \brack s^{-1}} = \begin{bmatrix} R & t \\ 0 & s^{-1} \end{bmatrix} {p \brack 1} = T \hat p
q^=[s−1q]=[s−1Rp+t]=[R0ts−1][1p]=Tp^
相对于
T
T
T的
ξ
\xi
ξ的导数
D
1
f
(
ξ
)
D_1f(\xi)
D1f(ξ)是
T
H
(
p
)
TH(p)
TH(p), 其中
H
(
p
)
=
G
j
k
i
p
j
=
[
0
z
−
y
1
0
0
0
−
z
0
x
0
1
0
0
y
−
x
0
0
0
0
0
0
0
0
0
0
0
−
1
]
H(p) = G^i_{jk}p^j = \begin{bmatrix} 0 & z & -y & 1 & 0 & 0 & 0 \\ -z & 0 & x & 0 & 1 & 0 & 0 \\ y & -x & 0 & 0 & 0 & 0 & 0 \\ 0 & 0 & 0 & 0 & 0 & 0 & -1 \end{bmatrix}
H(p)=Gjkipj=⎣⎢⎢⎡0−zy0z0−x0−yx00100001000000000−1⎦⎥⎥⎤
换言之
D
1
f
(
ξ
)
=
[
R
t
0
s
−
1
]
[
−
[
p
]
×
I
0
0
0
−
1
]
=
[
−
R
[
p
]
×
R
−
t
0
0
−
s
−
1
]
D_1f(\xi) = \begin{bmatrix} R & t \\ 0 & s^{-1} \end{bmatrix} \begin{bmatrix} -[p]_\times & I & 0 \\ 0 & 0& -1 \end{bmatrix} = \begin{bmatrix} -R[p]_\times & R & -t \\ 0 & 0& -s^{-1} \end{bmatrix}
D1f(ξ)=[R0ts−1][−[p]×0I00−1]=[−R[p]×0R0−t−s−1]
这是对齐次坐标的作用的导数。转变成非齐次坐标是
[
q
a
]
→
q
/
a
{q \brack a} \to q/a
[aq]→q/a
它的导数为
[
a
−
1
I
3
−
q
a
−
2
]
\Big[ a^{-1}I_3 \enspace -qa^{-2}\Big]
[a−1I3−qa−2]
对于
a
=
s
−
1
a = s^{-1}
a=s−1,我们有
D
1
f
(
ξ
)
=
[
s
I
3
−
q
s
2
]
[
−
R
[
p
]
×
R
−
t
0
0
−
s
−
1
]
=
[
−
s
R
[
p
]
×
s
R
−
s
t
+
q
s
]
=
[
−
s
R
[
p
]
×
s
R
s
R
p
]
D_1f(\xi) = \Big[ sI_3 \enspace -qs^2 \Big] \begin{bmatrix} -R[p]_\times & R & -t \\ 0 & 0& -s^{-1} \end{bmatrix}= \Big[ -sR[p]_\times \enspace sR \enspace -st + qs \Big] = \Big[ -sR[p]_\times \enspace sR \enspace sRp\Big]
D1f(ξ)=[sI3−qs2][−R[p]×0R0−t−s−1]=[−sR[p]×sR−st+qs]=[−sR[p]×sRsRp]
8. 2D Affine Transformations
李群
A
f
f
(
2
)
Aff(2)
Aff(2)是
3
×
3
3 \times 3
3×3可逆矩阵的一般线性群的子群,它映射无穷远线到本身(无穷远线),即保持并行性。仿射变换
A
A
A可以写作3:
[
m
11
m
12
t
1
m
21
m
22
t
2
0
0
k
]
\begin{bmatrix} m_{11} & m_{12} & t_1 \\ m_{21} & m_{22} & t_2 \\ 0 & 0 & k \end{bmatrix}
⎣⎡m11m210m12m220t1t2k⎦⎤
其中
M
∈
G
L
(
2
)
,
t
∈
R
2
M \in GL(2), t \in \reals^2
M∈GL(2),t∈R2,k是使得
d
e
t
(
A
)
=
1
det(A)=1
det(A)=1的标量。正如
S
E
(
2
)
SE(2)
SE(2)是半直积一样,
A
f
f
(
2
)
=
R
2
⋊
G
L
(
2
)
Aff(2) = \reals^2 \rtimes GL(2)
Aff(2)=R2⋊GL(2) 也是半直积。特别的,任何仿射变换
A
A
A可以写为
A
=
[
0
t
0
1
]
[
M
0
0
k
]
A = \begin{bmatrix} 0 & t \\ 0 & 1 \end{bmatrix} \begin{bmatrix} M & 0 \\ 0 & k \end{bmatrix}
A=[00t1][M00k]
它们的组合为
A
1
A
2
=
[
M
1
t
1
0
k
1
]
[
M
2
t
2
0
k
2
]
=
[
M
1
M
2
M
2
t
2
+
k
2
t
1
0
k
1
k
2
]
A_1A_2 = \begin{bmatrix} M_1 & t_1 \\ 0 & k_1 \end{bmatrix} \begin{bmatrix} M_2 & t_2 \\ 0 & k_2 \end{bmatrix}= \begin{bmatrix} M_1M_2 & M_2t_2 + k_2 t_1 \\ 0 & k_1k_2 \end{bmatrix}
A1A2=[M10t1k1][M20t2k2]=[M1M20M2t2+k2t1k1k2]
由此可以得出,
S
O
(
2
)
SO(2)
SO(2)和
S
E
(
2
)
SE(2)
SE(2)群都是子群,其中
S
O
(
2
)
⊂
S
E
(
2
)
⊂
A
f
f
(
2
)
SO(2) \subset SE(2) \subset Aff(2)
SO(2)⊂SE(2)⊂Aff(2)。通过仔细选择生成器,我们在关联的李代数之间保持了这种层次,特别的,
s
e
(
2
)
\mathfrak{se(2)}
se(2)
G
1
=
[
0
0
1
0
0
0
0
0
0
]
,
G
2
=
[
0
0
0
0
0
1
0
0
0
]
,
G
3
=
[
0
−
1
0
1
0
0
0
0
0
]
G^1 = \begin{bmatrix} 0 & 0 & 1 \\ 0 & 0 & 0 \\ 0 & 0 & 0 \end{bmatrix}, G^2 = \begin{bmatrix} 0 & 0 & 0 \\ 0 & 0 & 1 \\ 0 & 0 & 0 \end{bmatrix}, G^3 = \begin{bmatrix} 0 & -1 & 0 \\ 1 & 0 & 0 \\ 0 & 0 & 0 \end{bmatrix}
G1=⎣⎡000000100⎦⎤,G2=⎣⎡000000010⎦⎤,G3=⎣⎡010−100000⎦⎤
使用下面的三个生成器可以被拓展到李代数
a
f
f
(
2
)
\mathfrak{aff(2)}
aff(2)
G
4
=
[
0
1
0
1
0
0
0
0
0
]
,
G
5
=
[
1
0
0
0
−
1
0
0
0
0
]
,
G
6
=
[
0
0
0
0
−
1
0
0
0
1
]
G^4 = \begin{bmatrix} 0 & 1 & 0 \\ 1 & 0 & 0 \\ 0 & 0& 0 \end{bmatrix}, G^5= \begin{bmatrix} 1 & 0 & 0 \\ 0 & -1 & 0 \\ 0 & 0 & 0 \end{bmatrix}, G^6= \begin{bmatrix} 0 & 0 & 0 \\ 0 & -1 & 0 \\ 0 & 0 & 1 \end{bmatrix}
G4=⎣⎡010100000⎦⎤,G5=⎣⎡1000−10000⎦⎤,G6=⎣⎡0000−10001⎦⎤
因此,李代数
a
f
f
(
2
)
\mathfrak{aff(2)}
aff(2)是通过6个参数
a
∈
R
6
a \in \reals^6
a∈R6参数化的
3
×
3
3 \times 3
3×3增量仿射变换的向量空间,该映射
a
→
a
^
≜
[
a
5
a
4
−
a
3
a
1
a
4
+
a
3
−
a
5
−
a
6
a
2
0
0
a
6
]
a \to \hat a \triangleq \begin{bmatrix} a_5 & a_4 - a_3 & a_1 \\ a_4 + a_3 & -a_5-a_6 & a_2 \\ 0 & 0 & a_6 \end{bmatrix}
a→a^≜⎣⎡a5a4+a30a4−a3−a5−a60a1a2a6⎦⎤
注意
G
5
,
G
6
G^5, G^6
G5,G6改变了
x
,
y
x, y
x,y的尺度(缩放),但行列式(determinant)没有变化:
e
x
G
5
=
e
x
p
[
x
0
0
0
−
x
0
0
0
0
]
=
[
e
x
0
0
0
e
−
x
0
0
0
1
]
,
e
x
G
6
=
e
x
p
[
0
0
0
0
−
x
0
0
0
x
]
=
[
1
0
0
0
e
−
x
0
0
0
e
x
]
e^{xG_5} = \mathrm{exp} \begin{bmatrix} x & 0 & 0 \\ 0 & -x & 0 \\ 0 & 0 & 0 \end{bmatrix}= \begin{bmatrix} e^x & 0 & 0 \\ 0 & e^{-x} & 0 \\ 0 & 0 & 1 \end{bmatrix}, \\ e^{xG_6} = \mathrm{exp} \begin{bmatrix} 0 & 0 & 0 \\ 0 & -x & 0 \\ 0 & 0 & x \end{bmatrix}= \begin{bmatrix} 1& 0 & 0 \\ 0 & e^{-x} & 0 \\ 0 & 0 & e^x \end{bmatrix}
exG5=exp⎣⎡x000−x0000⎦⎤=⎣⎡ex000e−x0001⎦⎤,exG6=exp⎣⎡0000−x000x⎦⎤=⎣⎡1000e−x000ex⎦⎤
通过选择使
x
x
x和
y
y
y的缩放比例更直接对应可能更好
G
5
=
[
1
0
0
0
0
0
0
0
−
1
]
,
G
6
=
[
0
0
0
0
1
0
0
0
−
1
]
G^5= \begin{bmatrix} 1 & 0 & 0 \\ 0 & 0 & 0 \\ 0 & 0 & -1 \end{bmatrix}, G^6= \begin{bmatrix} 0 & 0 & 0 \\ 0 & 1 & 0 \\ 0 & 0 & -1 \end{bmatrix}
G5=⎣⎡10000000−1⎦⎤,G6=⎣⎡00001000−1⎦⎤
因此
e
x
G
5
=
e
x
p
[
x
0
0
0
0
0
0
0
−
x
]
=
[
e
x
0
0
0
1
0
0
0
1
/
e
x
]
,
e
x
G
6
=
e
x
p
[
0
0
0
0
x
0
0
0
−
x
]
=
[
1
0
0
0
e
x
0
0
0
1
/
e
x
]
e^{xG_5} = \mathrm{exp} \begin{bmatrix} x & 0 & 0 \\ 0 & 0 & 0 \\ 0 & 0 & -x \end{bmatrix}= \begin{bmatrix} e^x & 0 & 0 \\ 0 & 1 & 0 \\ 0 & 0 & 1/e^x \end{bmatrix}, \\ e^{xG_6} = \mathrm{exp} \begin{bmatrix} 0 & 0 & 0 \\ 0 & x & 0 \\ 0 & 0 & -x \end{bmatrix}= \begin{bmatrix} 1& 0 & 0 \\ 0 & e^{x} & 0 \\ 0 & 0 & 1/e^x \end{bmatrix}
exG5=exp⎣⎡x0000000−x⎦⎤=⎣⎡ex00010001/ex⎦⎤,exG6=exp⎣⎡0000x000−x⎦⎤=⎣⎡1000ex0001/ex⎦⎤
9. 2D Homographies
当以2D投影空间 p 3 \mathscr{p}^3 p3表示对图像的操作时,3D旋转是2D单应性的一种特殊情况。 现在,根据4 3中的论述粗略地处理这些内容。
9.1 Basics
李群
S
L
(
3
)
SL(3)
SL(3)是一般线性群
G
L
(
3
)
GL(3)
GL(3)的子群,它是行列式为1的
3
×
3
3 \times 3
3×3的可逆矩阵。单应性生成了2D投影空间的变换, 且
A
f
f
(
2
)
⊂
S
L
(
3
)
Aff(2) \subset SL(3)
Aff(2)⊂SL(3)。
通过增加两个生成器可以扩展
a
f
f
(
2
)
\mathfrak{aff(2)}
aff(2)到李代数
s
l
(
3
)
\mathfrak{sl(3)}
sl(3)
G
7
=
[
0
0
0
0
0
0
1
0
0
]
,
G
8
=
[
0
0
0
0
0
0
0
1
0
]
G^7 = \begin{bmatrix} 0 & 0& 0 \\ 0 & 0 & 0 \\ 1 & 0 & 0 \end{bmatrix}, G^8 = \begin{bmatrix} 0 & 0& 0 \\ 0 & 0 & 0 \\ 0 & 1 & 0 \end{bmatrix}
G7=⎣⎡001000000⎦⎤,G8=⎣⎡000001000⎦⎤
,8个参数参数化的增量单应矩阵
h
^
\hat h
h^ 是
3
×
3
3 \times 3
3×3的向量空间,该映射为
h
→
h
^
≜
[
h
5
h
4
−
h
3
h
1
h
4
+
h
3
−
h
5
−
h
6
h
2
h
7
h
8
h
6
]
h \to \hat h \triangleq \begin{bmatrix} h_5 & h_4 - h_3 & h_1 \\ h_4 + h_3 & -h_5-h_6 & h_2 \\ h_7 & h_8 & h_6 \end{bmatrix}
h→h^≜⎣⎡h5h4+h3h7h4−h3−h5−h6h8h1h2h6⎦⎤
9.2 Tensor Notation
- 二维投影空间A和B之间的单应性可以用张量记号 H A B H^B_A HAB表示
- 然后应用单应性是张量连接 x B = H A B x A x^B = H^B_A x^A xB=HABxA,将A中的点映射到B中的点。
Appendix: Proof of Proerty 9
R
[
ω
]
×
R
T
=
R
[
ω
]
×
[
a
1
a
2
a
3
]
=
R
[
ω
×
a
1
ω
×
a
2
ω
×
a
3
]
=
[
a
1
(
ω
×
a
1
)
a
1
(
ω
×
a
2
)
a
1
(
ω
×
a
3
)
a
2
(
ω
×
a
1
)
a
2
(
ω
×
a
2
)
a
2
(
ω
×
a
3
)
a
3
(
ω
×
a
1
)
a
3
(
ω
×
a
2
)
a
3
(
ω
×
a
3
)
]
=
[
ω
(
a
1
×
a
1
)
ω
(
a
2
×
a
1
)
ω
(
a
3
×
a
1
)
ω
(
a
1
×
a
2
)
ω
(
a
2
×
a
2
)
ω
(
a
3
×
a
2
)
ω
(
a
1
×
a
3
)
ω
(
a
2
×
a
3
)
ω
(
a
3
×
a
3
)
]
=
[
0
−
ω
a
3
ω
a
2
ω
a
3
0
−
ω
a
1
−
ω
a
2
ω
a
1
0
]
=
[
R
ω
]
×
\begin{aligned} R[\omega]_\times R^T & = R[\omega]_\times [a_1 \enspace a_2 \enspace a_3] \\ &= R[\omega \times a_1 \enspace \omega \times a_2 \enspace \omega \times a_3] \\ &= \begin{bmatrix} a_1(\omega \times a_1 ) & a_1(\omega \times a_2) & a_1(\omega \times a_3) \\ a_2(\omega \times a_1 ) & a_2(\omega \times a_2) & a_2(\omega \times a_3) \\ a_3(\omega \times a_1 ) & a_3(\omega \times a_2) & a_3(\omega \times a_3) \end{bmatrix} \\ &= \begin{bmatrix} \omega(a_1 \times a_1 ) & \omega(a_2 \times a_1) & \omega (a_3 \times a_1) \\ \omega(a_1 \times a_2 ) & \omega(a_2 \times a_2) & \omega (a_3 \times a_2) \\ \omega(a_1 \times a_3 ) & \omega(a_2 \times a_3) & \omega (a_3 \times a_3) \end{bmatrix} \\ &= \begin{bmatrix} 0 & - \omega a_3 & \omega a_2 \\ \omega a_3 & 0 & -\omega a_1 \\ -\omega a_2 & \omega a_1 & 0 \end{bmatrix} \\ &=[R \omega]_{\times} \end{aligned}
R[ω]×RT=R[ω]×[a1a2a3]=R[ω×a1ω×a2ω×a3]=⎣⎡a1(ω×a1)a2(ω×a1)a3(ω×a1)a1(ω×a2)a2(ω×a2)a3(ω×a2)a1(ω×a3)a2(ω×a3)a3(ω×a3)⎦⎤=⎣⎡ω(a1×a1)ω(a1×a2)ω(a1×a3)ω(a2×a1)ω(a2×a2)ω(a2×a3)ω(a3×a1)ω(a3×a2)ω(a3×a3)⎦⎤=⎣⎡0ωa3−ωa2−ωa30ωa1ωa2−ωa10⎦⎤=[Rω]×
其中
a
1
,
a
2
,
a
3
a_1, a_2, a_3
a1,a2,a3是
R
R
R的行向量,上面我们使用了旋转矩阵的正交性和triple 积规则:
a
(
b
×
c
)
=
b
(
c
×
a
)
=
c
(
a
×
b
)
a(b \times c) = b(c \times a) = c(a \times b)
a(b×c)=b(c×a)=c(a×b)
类似,在不需要证明:
R
(
a
×
b
)
=
R
a
×
R
b
R(a \times b) = Ra \times Rb
R(a×b)=Ra×Rb
Appendix:Alternative Generators for s l ( 3 ) \mathfrak{sl(3)} sl(3)
s
l
(
3
)
\mathfrak{sl(3)}
sl(3)的生成器:
G
1
=
[
0
0
1
0
0
0
0
0
0
]
,
G
2
=
[
0
0
0
0
0
1
0
0
0
]
,
G
3
=
[
0
1
0
0
0
0
0
0
0
]
,
G
4
=
[
0
0
0
1
0
0
0
0
0
]
,
G
5
=
[
1
0
0
0
−
1
0
0
0
0
]
,
G
6
=
[
0
0
0
0
−
1
0
0
0
1
]
,
G
7
=
[
0
0
0
0
0
0
1
0
0
]
,
G
8
=
[
0
0
0
0
0
0
0
1
0
]
G^1 = \begin{bmatrix} 0 & 0 & 1 \\ 0 & 0 & 0 \\ 0 & 0& 0 \end{bmatrix}, G^2 = \begin{bmatrix} 0 & 0 & 0 \\ 0 & 0 & 1 \\ 0 & 0& 0 \end{bmatrix} ,G^3 = \begin{bmatrix} 0 & 1 & 0 \\ 0 & 0 & 0 \\ 0 & 0& 0 \end{bmatrix}, \\ G^4 = \begin{bmatrix} 0 & 0 & 0 \\ 1 & 0 & 0 \\ 0 & 0& 0 \end{bmatrix}, G^5 = \begin{bmatrix} 1 & 0 & 0 \\ 0 & -1 & 0 \\ 0 & 0& 0 \end{bmatrix}, G^6 = \begin{bmatrix} 0 & 0 & 0 \\ 0 & -1 & 0 \\ 0 & 0& 1 \end{bmatrix}, \\ G^7 = \begin{bmatrix} 0 & 0 & 0 \\ 0 & 0 & 0 \\ 1 & 0& 0 \end{bmatrix}, G^8 = \begin{bmatrix} 0 & 0 & 0 \\ 0 & 0 & 0 \\ 0 & 1 & 0 \end{bmatrix}
G1=⎣⎡000000100⎦⎤,G2=⎣⎡000000010⎦⎤,G3=⎣⎡000100000⎦⎤,G4=⎣⎡010000000⎦⎤,G5=⎣⎡1000−10000⎦⎤,G6=⎣⎡0000−10001⎦⎤,G7=⎣⎡001000000⎦⎤,G8=⎣⎡000001000⎦⎤
我们选择不同线性组合作为基。
B.C. Hall. Lie Groups, Lie Algebras, and Representations: An Elementary Introduction. Springer, 2000. ↩︎
R.M. Murray, Z. Li, and S. Sastry. A Mathematical Introduction to Robotic Manipulation. CRC Press, 1994. ↩︎ ↩︎ ↩︎ ↩︎
C. Mei, S. Benhimane, E. Malis, and P. Rives. Efficient homography-based tracking and 3-D
reconstruction for single-viewpoint sensors. IEEE Trans. Robotics, 24(6):1352–1364, Dec.2008. ↩︎ ↩︎C. Mei, S. Benhimane, E. Malis, and P. Rives. Homography-based tracking for central cata-
dioptric cameras. In IEEE/RSJ Intl. Conf. on Intelligent Robots and Systems (IROS), October 2006. ↩︎