旋转运动学
速度合成公式
假设有如上图所示的一静一动两个坐标系,按照习惯,我们记动坐标系为体系 b b b,静坐标系为惯性系 i i i。此时有一个物体在空间运动,记其在两个坐标系下的坐标分别为 r i r^{i} ri 和 r b r^{b} rb,两者之间的关系为:
r i = r i b i + R i b r b r^{i}=r^{i}_{ib}+R_{ib}r^{b} ri=ribi+Ribrb
式中上标表示矢量所在的坐标系, r i b i r^{i}_{ib} ribi表示 b b b系到 i i i 系的平移变换矢量, R i b R_{ib} Rib表示 b b b 系到 i i i 系的旋转变换矩阵。对上式求解时间导数有:
d r i d t = d ( r i b i + R i b r b ) d t = d r i b i d t + d R i b d t r b + R i b d r b d t = v i b i + R i b [ ω i b b ] × r b + R i b v b \begin{aligned}\frac{dr^{i}}{dt}&=\frac{d(r^{i}_{ib}+R_{ib}r^{b})}{dt}\\&=\frac{dr^{i}_{ib}}{dt}+\frac{dR_{ib}}{dt}r^{b}+R_{ib}\frac{dr^{b}}{dt}\\&=v^{i}_{ib}+R_{ib}[\omega ^{b}_{ib}]_{\times}r^{b}+R_{ib}v^{b}\end{aligned} dtdri=dtd(ribi+Ribrb)=dtdribi+dtdRibrb+Ribdtdrb=vibi+Rib[ωibb]×rb+Ribvb
这里我们引入矢量叉积的一个重要几何性质:
定理1:矢量叉积的旋转不变性。若矩阵
R
R
R为旋转矩阵,则对于矢量叉积
a
×
b
a\times b
a×b有
(
R
a
)
×
(
R
b
)
=
R
(
a
×
b
)
(Ra) \times (Rb)=R(a\times b)
(Ra)×(Rb)=R(a×b) 。
利用这一性质,上式可以重写为:
d r i d t = v i b i + R i b [ ω i b b ] × r b + R i b v b = v i b i + [ R i b ω i b b ] × [ R i b r b ] + R i b v b v i = v i b i + ω i b i × r i + R i b v b \begin{aligned}\frac{dr^{i}}{dt}&=v^{i}_{ib}+R_{ib}[\omega ^{b}_{ib}]_{\times}r^{b}+R_{ib}v^{b} \\&=v^{i}_{ib}+[R_{ib}\omega^{b}_{ib}]_{\times}[R_{ib}r^{b}]+R_{ib}v^{b}\\v^{i}&=v^{i}_{ib}+\omega ^{i}_{ib}\times r^{i}+R_{ib}v^{b} \end{aligned} dtdrivi=vibi+Rib[ωibb]×rb+Ribvb=vibi+[Ribωibb]×[Ribrb]+Ribvb=vibi+ωibi×ri+Ribvb
上式描述了物体的速度在动坐标系和静坐标系之间的转换关系,又称为速度合成公式或科里奥利方程。由于坐标系原点之间的位移矢量与旋转是相互独立,互不相应的,因此在后续讨论中,将省略式中的 v i b i v^{i}_{ib} vibi项,只讨论旋转相关部分。
加速度合成公式
进一步地,我们对上式量测继续求时间导数有:
d v i d t = d ( ω i b i × r i ) d t + d ( R i b v b ) d t = d ω i b i d t × r i + ω i b i × d r i d t + d R i b d t v b + R i b d v b d t a i = ω ˙ i b i × r i + ω i b i × v i + ω i b i × r i + R i b a b \begin{aligned} \frac{dv^{i}}{dt} &= \frac{d(\omega ^{i}_{ib} \times r^{i})}{dt}+\frac{d(R_{ib}v^{b})}{dt} \\ &=\frac{d\omega ^{i}_{ib}}{dt} \times r^{i}+\omega ^{i}_{ib}\times \frac{dr^{i}}{dt}+\frac{dR_{ib}}{dt}v^{b}+R_{ib} \frac{dv^{b}}{dt}\\ a^{i}&= \dot{\omega}^{i}_{ib}\times r^{i}+\omega ^{i}_{ib} \times v^{i}+\omega ^{i}_{ib}\times r^{i}+R_{ib}a^{b} \end{aligned} dtdviai=dtd(ωibi×ri)+dtd(Ribvb)=dtdωibi×ri+ωibi×dtdri+dtdRibvb+Ribdtdvb=ω˙ibi×ri+ωibi×vi+ωibi×ri+Ribab
带入速度合成公式有:
a i = ω ˙ i b i × r i + ω i b i × v i + ω i b i × r i + R i b a b = ω ˙ i b i × r i + ω i b i × ( ω i b i × r i + R i b v b ) + ω i b i × r i + R i b a b = ω ˙ i b i × r i ⏟ E u l e r + ω i b i × ( ω i b i × r i ) ⏟ C e n t r i f u g a l + 2 ω i b i × r i ⏟ C o r i o l i s + R i b a b \begin{aligned}a^{i}&= \dot{\omega}^{i}_{ib}\times r^{i}+\omega ^{i}_{ib} \times v^{i}+\omega ^{i}_{ib}\times r^{i}+R_{ib}a^{b}\\&= \dot{\omega}^{i}_{ib}\times r^{i}+\omega ^{i}_{ib} \times (\omega^{i}_{ib} \times r^{i} +R_{ib}v^{b})+\omega ^{i}_{ib}\times r^{i}+R_{ib}a^{b}\\&= \underbrace{\dot{\omega}^{i}_{ib}\times r^{i}}_{Euler}+\underbrace{\omega ^{i}_{ib} \times (\omega^{i}_{ib} \times r^{i} )}_{Centrifugal}+\underbrace{2\omega ^{i}_{ib}\times r^{i}}_{Coriolis}+R_{ib}a^{b} \end{aligned} ai=ω˙ibi×ri+ωibi×vi+ωibi×ri+Ribab=ω˙ibi×ri+ωibi×(ωibi×ri+Ribvb)+ωibi×ri+Ribab=Euler ω˙ibi×ri+Centrifugal ωibi×(ωibi×ri)+Coriolis 2ωibi×ri+Ribab
上式前三项依次为欧拉力、离心力和科氏力,该式表征了运动物体在静坐标系和动坐标系下的加速度变换关系,称为加速度合成公式。
群的定义
设有一个集合 G G G,集合中的元素为 g g g,元素之间存在乘法运算 ⋅ \cdot ⋅ ,称 G G G是一个群,如果其满足以下条件:
- 封闭性 ∀ g 1 , g 2 ∈ G , g 1 ⋅ g 2 ∈ G \forall g_1, g_2\in G,\ \ g_1\cdot g_2\in G ∀g1,g2∈G, g1⋅g2∈G
- 结合律 g 1 ⋅ ( g 2 ⋅ g 3 ) = ( g 1 ⋅ g 2 ) ⋅ g 3 g_1\cdot(g_2\cdot g_3)=(g_1\cdot g_2)\cdot g_3 g1⋅(g2⋅g3)=(g1⋅g2)⋅g3
- 存在幺元 ∀ g ∈ G , e ⋅ g = g ⋅ e = g \forall g\in G,\ \ e\cdot g=g\cdot e=g ∀g∈G, e⋅g=g⋅e=g
- 存在逆元 ∀ g ∈ G , ∃ g − 1 ∈ G , g ⋅ g − 1 = g − 1 ⋅ g = e \forall g\in G,\ \ \exists g^{-1}\in G,\ \ g\cdot g^{-1}=g^{-1}\cdot g=e ∀g∈G, ∃g−1∈G, g⋅g−1=g−1⋅g=e
建模中常用的群
只考虑实数域,所有 n × n n\times n n×n的正交矩阵 R R R构成了一个群,称为正交群,记为 O ( n ) O(n) O(n)在这些。正交矩阵中,行列式为正1的矩阵本身也构成一个群,称为特殊正交群,记为 S O ( n ) SO(n) SO(n)。也就是说 S O ( n ) SO(n) SO(n)是 O ( n ) O(n) O(n)的一个子群(准确的说是正规子群)。
在 S L A M SLAM SLAM以及很多机器人技术中,最常用到的就是 S O ( 3 ) SO(3) SO(3),也就是所有三维旋转矩阵构成的群,可以用来表示机器人或者飞行器的姿态。
当需要描述一个刚体变换(旋转加平移)时,光靠一个旋转矩阵是不够的,当我们使用齐次坐标表示空间中的点时,对该点的刚体变换可用下面的 4 × 4 4\times 4 4×4矩阵表示
T = ( R t 0 1 ) T=\begin{pmatrix}R&t\\0&1\end{pmatrix} T=(R0t1)
其中 R ∈ R 3 × 3 R \in \mathbb{R}^{3\times3} R∈R3×3是旋转矩阵, t ∈ R 3 t \in \mathbb{R}^3 t∈R3是平移矢量。容易验证,矩阵 T T T也是满足构成群的四个条件的,其中逆元为
T − 1 = ( R T − R T t 0 1 ) T^{-1} =\begin{pmatrix}R^T & -R^Tt \\0 & 1\end{pmatrix} T−1=(RT0−RTt1)
幺元就是单位阵,因此所有刚体变换矩阵也构成一个群,称为特殊欧式群,记为 S E ( 3 ) SE(3) SE(3)。当然也存在 S E ( n ) SE(n) SE(n),看做是任意维度下的刚体变换。如果不要求 T T T里面的 R R R必须是一个旋转矩阵,甚至不要求是正交矩阵,只要可逆就行,那么我们就得到了更一般的仿射群。
为了方便介绍不变卡尔曼滤波,这里对 S E ( 3 ) SE(3) SE(3)做一个扩展,我们发现型如
χ = ( R t p 1 p 2 . . . p k 0 1 0 0 . . . 0 0 0 1 0 . . . 0 0 0 0 1 . . . 0 ⋮ 0 0 0 0 . . . 1 ) \chi=\begin{pmatrix}R & t & p_1 & p_2 & ... & p_k \\0 & 1 & 0 & 0 & ... & 0 \\0 & 0 & 1 & 0 & ... & 0 \\0 & 0 & 0 & 1 & ... & 0 \\\vdots \\0 & 0 & 0 & 0 & ... & 1\end{pmatrix} χ=⎝⎜⎜⎜⎜⎜⎜⎜⎛R000⋮0t1000p10100p20010...............pk0001⎠⎟⎟⎟⎟⎟⎟⎟⎞
的矩阵, ( 4 + k ) × ( 4 + k ) , p k ∈ R 3 (4+k)\times(4+k),p_k\in \mathbb{R}^3 (4+k)×(4+k),pk∈R3,也满足群定义,逆元为
χ − 1 = ( R T − R T t − R T p 1 − R T p 2 . . . − R T p k 0 1 0 0 . . . 0 0 0 1 0 . . . 0 0 0 0 1 . . . 0 ⋮ 0 0 0 0 . . . 1 ) \chi^{-1}= \begin{pmatrix} R^T & -R^Tt & -R^Tp_1 & -R^Tp_2 & ... & -R^Tp_k \\ 0 & 1 & 0 & 0 & ... & 0 \\ 0 & 0 & 1 & 0 & ... & 0 \\ 0 & 0 & 0 & 1 & ... & 0 \\ \vdots \\ 0 & 0 & 0 & 0 & ... & 1 \end{pmatrix} χ−1=⎝⎜⎜⎜⎜⎜⎜⎜⎛RT000⋮0−RTt1000−RTp10100−RTp20010...............−RTpk0001⎠⎟⎟⎟⎟⎟⎟⎟⎞
幺元也是单位阵,我们将这种矩阵构成的群记为 S E k + 1 ( 3 ) SE_{k+1}(3) SEk+1(3)。
切空间与李代数
S O ( 3 ) SO(3) SO(3)和 S E ( 3 ) SE(3) SE(3)这类群,还有一个特点是平滑连续,即他们是一个平滑的流形,这类群称为李群。在流形上微分可以得到流形上某一点的切空间(类比于对曲线微分得到切线)。其中在幺元处的切空间最重要(与后面的指数映射有关)。下面分别来求一下 S O ( 3 ) , S E ( 3 ) SO(3),SE(3) SO(3),SE(3),以及 S E k ( 3 ) SE_k(3) SEk(3)在幺元处的切空间。
S O ( 3 ) SO(3) SO(3)的切空间
具体写出 S O ( 3 ) SO(3) SO(3)的定义为
S O ( 3 ) = { R ∈ R 3 × 3 ∣ R T R = I , d e t ( R ) = 1 } SO(3)=\{R\in\mathbb{R}^{3\times 3}|R^TR=I, det(R)=1\} SO(3)={R∈R3×3∣RTR=I,det(R)=1}
现在假设 R R R是一个随时间变化的量 R ( t ) R(t) R(t),则 R ( t ) T R ( t ) = I R(t)^TR(t)=I R(t)TR(t)=I两边对时间求导,并令 ∂ R / ∂ t = R ˙ \partial R/\partial t=\dot{R} ∂R/∂t=R˙,有
R ˙ T R + R T R ˙ = 0 \dot{R}^TR+R^T\dot{R}=0 R˙TR+RTR˙=0
由于要求幺元处的切空间,令上式中的 R = I R=I R=I,得
R ˙ T + R ˙ = 0 \dot{R}^T+\dot{R}=0 R˙T+R˙=0
即 R ˙ \dot{R} R˙是一个斜对称矩阵,有如下形式
R ˙ = ( 0 − z y z 0 − x − y x 0 ) \dot{R}= \begin{pmatrix} 0 & -z & y \\ z & 0 & -x \\ -y & x & 0 \end{pmatrix} R˙=⎝⎛0z−y−z0xy−x0⎠⎞
这就是 S O ( 3 ) SO(3) SO(3)幺元处的切空间所具有的形式。以上斜对称矩阵实际只有3个维度,我们定义一个映射
[ x y z ] × = ( 0 − z y z 0 − x − y x 0 ) \begin{bmatrix} x \\ y \\ z \end{bmatrix}_\times= \begin{pmatrix} 0 & -z & y \\ z & 0 & -x \\ -y & x & 0 \end{pmatrix} ⎣⎡xyz⎦⎤×=⎝⎛0z−y−z0xy−x0⎠⎞
则矢量 ξ R = ( x , y , z ) T \xi_R=(x,y,z)^T ξR=(x,y,z)T就是我们常说的轴角。矢量的方向代表旋转的轴,矢量的模长代表要旋转的角度。
S E ( 3 ) SE(3) SE(3)与 S E k + 1 ( 3 ) SE_{k+1}(3) SEk+1(3)的切空间
有了 S O ( 3 ) SO(3) SO(3)的切空间后, S E ( 3 ) SE(3) SE(3)与 S E k + 1 ( 3 ) SE_{k+1}(3) SEk+1(3)的切空间就很好求了。幺元处的切空间实际上是幺元在流形上发生微小摄动产生的增量,比如对 S O ( 3 ) SO(3) SO(3)而言,幺元 I I I在流形上的微小摄动产生 I + Λ ( ξ R ) I+\Lambda(\xi_R) I+Λ(ξR),那么平移量 t t t身属于向量空间,微小的摄动仍然是一个三维矢量。因此 S E ( 3 ) SE(3) SE(3)切空间的形式就是
T ˙ = ( [ ξ R ] × ξ t 0 0 ) \dot{T}= \begin{pmatrix} [\xi_R]_\times & \xi_t \\ 0 & 0 \end{pmatrix} T˙=([ξR]×0ξt0)
其中 ξ R , ξ t ∈ R 3 \xi_R,\xi_t \in \mathbb{R}^3 ξR,ξt∈R3。
而 S E k + 1 ( 3 ) SE_{k+1}(3) SEk+1(3)的切空间自然就是
χ ˙ = ( [ ξ R ] × ξ t ξ p 1 . . . ξ p k 0 0 0 . . . 0 ⋮ 0 0 0 . . . 0 ) \dot{\chi}= \begin{pmatrix} [\xi_R]_\times & \xi_t &\xi_{p_1} & ... & \xi_{p_k} \\ 0 & 0 & 0 & ... & 0 \\ \vdots \\ 0 & 0 & 0 & ... & 0 \end{pmatrix} χ˙=⎝⎜⎜⎜⎛[ξR]×0⋮0ξt00ξp100.........ξpk00⎠⎟⎟⎟⎞
上面的表达是很冗余的,我们也可以像 S O ( 3 ) SO(3) SO(3)那样定义一个映射
Λ ( ξ R ξ t ξ p 1 ⋮ ξ p k ) = ( [ ξ R ] × ξ t ξ p 1 . . . ξ p k 0 0 0 . . . 0 ⋮ 0 0 0 . . . 0 ) \Lambda \begin{pmatrix} \xi_R\\ \xi_t\\ \xi_{p_1}\\ \vdots\\ \xi_{p_k} \end{pmatrix}= \begin{pmatrix} [\xi_R]_\times & \xi_t &\xi_{p_1} & ... & \xi_{p_k} \\ 0 & 0 & 0 & ... & 0 \\ \vdots \\ 0 & 0 & 0 & ... & 0 \end{pmatrix} Λ⎝⎜⎜⎜⎜⎜⎛ξRξtξp1⋮ξpk⎠⎟⎟⎟⎟⎟⎞=⎝⎜⎜⎜⎛[ξR]×0⋮0ξt00ξp100.........ξpk00⎠⎟⎟⎟⎞
我们可以发现,所有这些群的切空间都是向量空间,即满足矢量的线性运算(对加法和数乘封闭),实际上,它们还对另外一种运算封闭,被称为李括号,定义为 [ X , Y ] = X Y − Y X [X,Y]=XY-YX [X,Y]=XY−YX,其中 X , Y X,Y X,Y是群的切空间的矩阵形式。并可以验证有如下关系成立
[ X , Y ] + [ Y , X ] = 0 [ X , [ Y , Z ] ] + [ Y , [ Z , X ] ] + [ Z , [ X , Y ] ] = 0 \begin{aligned} \\ [X,Y]+[Y,X]&=0 \\ [X,[Y,Z]]+[Y,[Z,X]]+[Z,[X,Y]]&=0 \end{aligned} [X,Y]+[Y,X][X,[Y,Z]]+[Y,[Z,X]]+[Z,[X,Y]]=0=0
如果将李括号也视为一种乘法(和矩阵一样不满足交换律),那么切空间就同时对加法运算和乘法运算封闭,因此构成了一个环 ( R i n g ) ! (Ring)! (Ring)!所以,这样的切空间也被称为李代数。 S O ( 3 ) , S E ( 3 ) , S E k + 1 ( 3 ) SO(3),SE(3),SE_{k+1}(3) SO(3),SE(3),SEk+1(3)的李代数分别用 s o ( 3 ) , s e ( 3 ) , s e k + 1 ( 3 ) so(3),se(3),se_{k+1}(3) so(3),se(3),sek+1(3)表示。
指数映射
先对指数函数做泰勒展开,有
e x = 1 + x + 1 2 ! x 2 + . . . + 1 n ! x n + . . . e^x=1+x+\frac{1}{2!}x^2+...+\frac{1}{n!}x^n+... ex=1+x+2!1x2+...+n!1xn+...
将其中的 x x x替换为某个矩阵 A A A,可得到
e A = I + A + 1 2 ! A 2 + . . . + 1 n ! A n + . . . e^A=I+A+\frac{1}{2!}A^2+...+\frac{1}{n!}A^n+... eA=I+A+2!1A2+...+n!1An+...
可证明上式对任意 n × n n\times n n×n实矩阵都是收敛的。
上式构成了指数映射的基础。当矩阵
A
A
A属于某个李群的李代数时,比如
A
∈
s
o
(
3
)
A\in so(3)
A∈so(3),指数映射将其映射到对应的李群上,即
e
A
∈
S
O
(
3
)
e^A \in SO(3)
eA∈SO(3)。还记得李代数是李群在幺元处的切空间,也就是说,通过指数映射,整个李群完全可以通过幺元处的切空间得到!(实际上,指数映射一般只能将李代数映射到李群的一部分上,但对于
S
O
(
n
)
,
S
E
(
n
)
,
S
E
k
+
1
(
n
)
SO(n),SE(n),SE_{k+1}(n)
SO(n),SE(n),SEk+1(n)而言,能够映射到全部,即任何一个属于这些群的元素,一定能在对应李代数中找到一个对应元素)。下面分别给出
S
O
(
n
)
,
S
E
(
n
)
,
S
E
k
+
1
(
n
)
SO(n),SE(n),SE_{k+1}(n)
SO(n),SE(n),SEk+1(n)指数映射的解析形式。
s o ( 3 ) so(3) so(3) 到 到 到 S O ( 3 ) SO(3) SO(3)
为了能够利用李代数的矢量表示(即轴角),我们一般定义其指数映射为
Exp ( ξ R ) = exp ( [ ξ R ] × ) \text{Exp}(\bf{\xi_R})=\exp([\bf{\xi_R}]_\times) Exp(ξR)=exp([ξR]×)
设 ξ R = θ u \bf{\xi_R}=\theta \bf{u} ξR=θu,其中 θ \theta θ是一个标量,代表旋转的角度, u \bf{u} u是单位矢量,表示旋转的轴。则利用指数函数的泰勒展开式,有
Exp ( ξ R ) = I + θ [ u ] × + 1 2 ! θ 2 [ u ] × 2 + . . . + 1 n ! θ n [ u ] × n + . . . \text{Exp}(\bf{\xi_R})=I+\theta[\bf{u}]_\times+\frac{1}{2!}\theta^2[\bf{u}]_\times^2+...+\frac{1}{n!}\theta^n[\bf{u}]_\times^n+... Exp(ξR)=I+θ[u]×+2!1θ2[u]×2+...+n!1θn[u]×n+...
注意到
[ u ] × 2 = u u T − I [ u ] × 3 = − [ u ] × \begin{aligned} \\ [\bf{u}]_\times^2&=\bf{u}\bf{u}^T-I \\ [\bf{u}]_\times^3&=-[\bf{u}]_\times \end{aligned} [u]×2[u]×3=uuT−I=−[u]×
有
[ u ] × 4 = − [ u ] × 2 [ u ] × 5 = [ u ] × [ u ] × 6 = [ u ] × 2 [ u ] × 7 = − [ u ] × . . . \begin{aligned} \\ [\bf{u}]_\times^4&=-[\bf{u}]_\times^2 \\ [\bf{u}]_\times^5&=[\bf{u}]_\times \\ [\bf{u}]_\times^6&=[\bf{u}]_\times^2 \\ [\bf{u}]_\times^7&=-[\bf{u}]_\times \\ ... \end{aligned} [u]×4[u]×5[u]×6[u]×7...=−[u]×2=[u]×=[u]×2=−[u]×
于是我们对展开式分离奇偶项,可得
Exp ( ξ R ) = I + ( θ − 1 3 ! θ 3 + 1 5 ! θ 5 − . . . ) [ u ] × + ( 1 2 ! θ 2 − 1 4 ! θ 4 + . . . ) [ u ] × 2 \text{Exp}(\bf{\xi_R})=I+(\theta-\frac{1}{3!}\theta^3+\frac{1}{5!}\theta^5-...)[\bf{u}]_\times+(\frac{1}{2!}\theta^2-\frac{1}{4!}\theta^4+...)[\bf{u}]_\times^2 Exp(ξR)=I+(θ−3!1θ3+5!1θ5−...)[u]×+(2!1θ2−4!1θ4+...)[u]×2
又注意到
sin θ = θ − 1 3 ! θ 3 + 1 5 ! θ 5 − . . . cos θ = 1 − 1 2 ! θ 2 + 1 4 ! θ 4 − . . . \begin{aligned} \sin\theta&=\theta-\frac{1}{3!}\theta^3+\frac{1}{5!}\theta^5-... \\ \cos\theta&=1-\frac{1}{2!}\theta^2+\frac{1}{4!}\theta^4-... \end{aligned} sinθcosθ=θ−3!1θ3+5!1θ5−...=1−2!1θ2+4!1θ4−...
最终可得
Exp ( ξ R ) = I + sin θ [ u ] × + ( 1 − cos θ ) [ u ] × 2 \text{Exp}(\bf{\xi_R})=I+\sin\theta[\bf{u}]_\times+(1-\cos\theta)[\bf{u}]_\times^2 Exp(ξR)=I+sinθ[u]×+(1−cosθ)[u]×2
这就是众所周知的罗德里格斯变换。
s e ( 3 ) 到 S E ( 3 ) se(3)到SE(3) se(3)到SE(3)
设 ξ = ( ξ R T , ξ t T ) T \xi=(\xi_R^T, \xi_t^T)^T ξ=(ξRT,ξtT)T。同样定义
Exp ( ξ ) = exp ( Λ ( ξ ) ) \text{Exp}(\xi)=\exp(\Lambda(\xi)) Exp(ξ)=exp(Λ(ξ))
推导方式与处理 S O ( 3 ) SO(3) SO(3)时完全一样,首先计算泰勒级数,可以得到
Exp ( ξ ) = ( ∑ 1 n ! θ n [ u ] × n ( ∑ 1 n ! θ n − 1 [ u ] × n − 1 ) ξ t 0 1 ) \text{Exp}(\xi)= \begin{pmatrix} \sum\frac{1}{n!}\theta^n[\bf{u}]_\times^n & (\sum\frac{1}{n!}\theta^{n-1}[\bf{u}]_\times^{n-1})\xi_t \\ 0 & 1 \end{pmatrix} Exp(ξ)=(∑n!1θn[u]×n0(∑n!1θn−1[u]×n−1)ξt1)
矩阵中左上角元素就是 s o ( 3 ) so(3) so(3)的指数映射,而另外一项,同样利用三角函数极数的对照关系,可以得到
Exp ( ξ ) = ( R V ξ t 0 1 ) \text{Exp}(\xi)= \begin{pmatrix} R & V\xi_t \\ 0 & 1 \end{pmatrix} Exp(ξ)=(R0Vξt1)
其中
R = I + sin θ [ u ] × + ( 1 − cos θ ) [ u ] × 2 V = I + 1 − cos θ θ [ u ] × + θ − sin θ θ [ u ] × 2 \begin{aligned} R&=I+\sin\theta[\bf{u}]_\times+(1-\cos\theta)[\bf{u}]_\times^2 \\ V&=I+\frac{1-\cos\theta}{\theta}[\bf{u}]_\times+\frac{\theta-\sin\theta}{\theta}[\bf{u}]_\times^2 \end{aligned} RV=I+sinθ[u]×+(1−cosθ)[u]×2=I+θ1−cosθ[u]×+θθ−sinθ[u]×2
s e k + 1 ( 3 ) 到 S E k + 1 ( 3 ) se_{k+1}(3)到SE_{k+1}(3) sek+1(3)到SEk+1(3)
简单计算即可发现, s e k + 1 ( 3 ) se_{k+1}(3) sek+1(3)的指数映射就是 s e ( 3 ) se(3) se(3)的简单扩展,这里直接给出结果。设 ξ = ( ξ R T , ξ t T , ξ p 1 T , . . . , ξ p k T ) T \xi=(\xi_R^T, \xi_t^T, \xi_{p_1}^T, ..., \xi_{p_k}^T)^T ξ=(ξRT,ξtT,ξp1T,...,ξpkT)T,则
Exp ( ξ ) = ( R V ξ t V ξ p 1 . . . V ξ p k 0 1 0 . . . 0 0 0 1 . . . 0 ⋮ 0 0 0 . . . 1 ) \text{Exp}(\xi)= \begin{pmatrix} R & V\xi_t &V\xi_{p_1} & ... & V\xi_{p_k} \\ 0 & 1 & 0 & ... & 0 \\ 0 & 0 & 1 & ... & 0 \\ \vdots \\ 0 & 0 & 0 & ... & 1 \end{pmatrix} Exp(ξ)=⎝⎜⎜⎜⎜⎜⎛R00⋮0Vξt100Vξp1010............Vξpk001⎠⎟⎟⎟⎟⎟⎞
其中
R = I + sin θ [ u ] × + ( 1 − cos θ ) [ u ] × 2 V = I + 1 − cos θ θ [ u ] × + θ − sin θ θ [ u ] × 2 \begin{aligned} R&=I+\sin\theta[\bf{u}]_\times+(1-\cos\theta)[\bf{u}]_\times^2 \\ V&=I+\frac{1-\cos\theta}{\theta}[\bf{u}]_\times+\frac{\theta-\sin\theta}{\theta}[\bf{u}]_\times^2 \end{aligned} RV=I+sinθ[u]×+(1−cosθ)[u]×2=I+θ1−cosθ[u]×+θθ−sinθ[u]×2
指数映射的其他性质
当两个矩阵满足交换律时,即 A B = B A AB=BA AB=BA时,有
e A e B = e A + B e^Ae^B=e^{A+B} eAeB=eA+B
指数映射的行列式与矩阵的迹还有如下一个美妙关系
d e t ( e A ) = e t r ( A ) det(e^A)=e^{tr(A)} det(eA)=etr(A)
群伴随
这里省去很多关于伴随的导出过程,直接给出其定义。
S O ( 3 ) SO(3) SO(3)的伴随
设 R ∈ S O ( 3 ) , ξ ∈ s o ( 3 ) R\in SO(3), \xi \in so(3) R∈SO(3),ξ∈so(3),则在 R R R的伴随记为 A d R Ad_R AdR,定义为
R ⋅ Exp ( ξ ) = Exp ( A d R ⋅ ξ ) ⋅ R R\cdot \text{Exp}(\xi) = \text{Exp}(Ad_R\cdot \xi)\cdot R R⋅Exp(ξ)=Exp(AdR⋅ξ)⋅R
下面给出 A d R Ad_R AdR的具体形式。由上式可得
Exp ( A d R ⋅ ξ ) = R ⋅ Exp ( ξ ) ⋅ R − 1 = R ( ∑ n ∞ 1 n ! [ ξ ] × n ) R − 1 = ∑ n ∞ 1 n ! ( R [ ξ ] × R − 1 ) n = exp ( R [ ξ ] × R − 1 ) = exp ( [ R ξ ] × ) = Exp ( R ξ ) \begin{aligned} \text{Exp}(Ad_R\cdot\xi)&=R\cdot\text{Exp}(\xi)\cdot R^{-1} \\ &=R(\sum_n^{\infty}{\frac{1}{n!}[\xi]_\times^n})R^{-1} \\ &=\sum_n^{\infty}{\frac{1}{n!}(R[\xi]_\times R^{-1})^n} \\ &=\exp(R[\xi]_\times R^{-1}) \\ &=\exp([R\xi]_\times) \\ &=\text{Exp}(R\xi) \end{aligned} Exp(AdR⋅ξ)=R⋅Exp(ξ)⋅R−1=R(n∑∞n!1[ξ]×n)R−1=n∑∞n!1(R[ξ]×R−1)n=exp(R[ξ]×R−1)=exp([Rξ]×)=Exp(Rξ)
所以有
A d R = R Ad_R=R AdR=R
S E ( 3 ) 与 S E k + 1 ( 3 ) SE(3)与SE_{k+1}(3) SE(3)与SEk+1(3)的伴随
推导方式与 S O ( 3 ) SO(3) SO(3)类似,设 T ∈ S E ( 3 ) T \in SE(3) T∈SE(3),即
T = ( R t 0 1 ) T= \begin{pmatrix} R & t \\ 0 & 1 \end{pmatrix} T=(R0t1)
又设 ξ = ( ξ R T , ξ t T ) T ∈ s e ( 3 ) \xi=(\xi_R^T, \xi_t^T)^T \in se(3) ξ=(ξRT,ξtT)T∈se(3),有
Exp ( A d T ⋅ ξ ) = exp ( T Λ ( ξ ) T − 1 ) = exp ( R [ ξ R ] × R − 1 − R [ ξ R ] × R − 1 t + R ξ t 0 0 ) = exp ( [ R ξ R ] × − [ R ξ R ] × t + R ξ t 0 0 ) = exp ( [ R ξ R ] × [ t ] × R ξ R + R ξ t 0 0 ) = exp ( Λ [ ( R 0 [ t ] × R R ) ( ξ R ξ t ) ] ) = Exp ( ( R 0 [ t ] × R R ) ( ξ R ξ t ) ) \begin{aligned} \text{Exp}(Ad_T\cdot\xi)&=\exp(T\Lambda(\xi) T^{-1}) \\ &=\exp \begin{pmatrix} R[\xi_R]_\times R^{-1} & -R[\xi_R]_\times R^{-1}t+R\xi_t \\ 0 & 0 \end{pmatrix} \\ &=\exp \begin{pmatrix} [R\xi_R]_\times & -[R\xi_R]_\times t+R\xi_t \\ 0 & 0 \end{pmatrix} \\ &=\exp \begin{pmatrix} [R\xi_R]_\times & [t]_\times R\xi_R+R\xi_t \\ 0 & 0 \end{pmatrix} \\ &=\exp\Bigg( \Lambda \bigg[ \begin{pmatrix} R & 0 \\ [t]_\times R & R \end{pmatrix} \begin{pmatrix} \xi_R \\ \xi_t \end{pmatrix} \bigg] \Bigg) \\ &=\text{Exp}\Bigg( \begin{pmatrix} R & 0 \\ [t]_\times R & R \end{pmatrix} \begin{pmatrix} \xi_R \\ \xi_t \end{pmatrix} \Bigg) \end{aligned} Exp(AdT⋅ξ)=exp(TΛ(ξ)T−1)=exp(R[ξR]×R−10−R[ξR]×R−1t+Rξt0)=exp([RξR]×0−[RξR]×t+Rξt0)=exp([RξR]×0[t]×RξR+Rξt0)=exp(Λ[(R[t]×R0R)(ξRξt)])=Exp((R[t]×R0R)(ξRξt))
因此有
A d T = ( R 0 [ t ] × R R ) Ad_T= \begin{pmatrix} R & 0 \\ [t]_\times R & R \end{pmatrix} AdT=(R[t]×R0R)
简单计算可以发现 S E k + 1 ( 3 ) SE_{k+1}(3) SEk+1(3)的伴随也是 S E ( 3 ) SE(3) SE(3)扩展,设 χ ∈ S E k + 1 ( 3 ) \chi \in SE_{k+1}(3) χ∈SEk+1(3),有
A d χ = ( R 0 0 0 . . . 0 [ t ] × R R 0 0 . . . 0 [ p 1 ] × R 0 R 0 . . . 0 [ p 2 ] × R 0 0 R . . . 0 ⋮ [ p k ] × R 0 0 0 . . . R ) Ad_\chi = \begin{pmatrix} R & 0 & 0 & 0 & ... & 0\\ [t]_\times R & R & 0 & 0 &... & 0\\ [p_1]_\times R & 0 & R & 0 &... & 0 \\ [p_2]_\times R & 0 & 0 & R &... & 0 \\ \vdots \\ [p_k]_\times R & 0 & 0 & 0 &... & R \end{pmatrix} Adχ=⎝⎜⎜⎜⎜⎜⎜⎜⎛R[t]×R[p1]×R[p2]×R⋮[pk]×R0R00000R00000R0...............0000R⎠⎟⎟⎟⎟⎟⎟⎟⎞