【SLAM】三维空间刚体运动(世界坐标系到相机坐标系)

参考《视觉slam十四讲》

旋转矩阵

三维空间向量可以表示如下
a ⃗ = [ e 1 e 2 e 3 ] [ a 1 a 2 a 3 ] \vec{a}=\left[ \begin{array}{ccc} e_1 & e_2 & e_3 \end{array} \right] \left[ \begin{array}{c} a_1 \\ a_2 \\ a_3 \end{array} \right] a =[e1e2e3]a1a2a3

外积公式为
a ⋅ b = a T ⋅ b a \cdot b=a^T \cdot b ab=aTb
内积公式为
a × b = [ i j k a 1 a 2 a 3 b 1 b 2 b 3 ] = [ a 2 b 3 − a 3 b 2 a 3 b 1 − a 1 b 3 a 1 b 2 − a 2 b 1 ] = [ 0 − a 3 a 2 a 3 0 − a 1 − a 2 a 1 0 ] b = a ^ b a \times b= \left[ \begin{array}{c} i&j&k \\ a_1&a_2&a_3 \\ b_1&b_2&b_3 \end{array} \right]=\left[ \begin{array}{c} a_2b_3 - a_3b_2 \\ a_3b_1 - a_1b_3 \\ a_1b_2 - a_2b_1 \end{array} \right]=\left[ \begin{array}{c} 0&-a_3&a_2 \\ a_3&0&-a_1 \\ -a_2&a_1&0 \end{array} \right]b=\hat{a} b a×b=ia1b1ja2b2ka3b3=a2b3a3b2a3b1a1b3a1b2a2b1=0a3a2a30a1a2a10b=a^b
("^"表示反对称符号)

刚体运动保证了同一个向量在各个坐标系下的长度和夹角都不会发生变化。这种变换称为欧氏变换

欧氏变换由一个旋转和一个平移两部分组成

先考虑旋转。
设某个单位正交基 [ e 1 , e 2 , e 3 ] [e_1,e_2,e_3] [e1,e2,e3]经过一次旋转,变成了 [ e 1 ′ , e 2 ′ , e 3 ′ ] [e_1^{'} ,e_2^{'},e_3^{'}] [e1,e2,e3]
对于同一个向量 a,它由 [ a 1 , a 2 , a 3 ] T [a_1,a_2,a_3]^T [a1,a2,a3]T变为 [ a 1 ′ , a 2 ′ , a 3 ′ ] T [a_1^{'} ,a_2^{'},a_3^{'}]^T [a1,a2,a3]T
则有:
[ e 1 e 2 e 3 ] [ a 1 a 2 a 3 ] = [ e 1 ′ e 2 ′ e 3 ′ ] [ a 1 ′ a 2 ′ a 3 ′ ] \left[ \begin{array}{ccc} e_1 & e_2 & e_3 \end{array} \right] \left[ \begin{array}{c} a_1 \\ a_2 \\ a_3 \end{array} \right]=\left[ \begin{array}{ccc} e_1^{'} & e_2^{'} & e_3^{'} \end{array} \right] \left[ \begin{array}{c} a_1^{'} \\ a_2^{'} \\ a_3^{'} \end{array} \right] [e1e2e3]a1a2a3=[e1e2e3]a1a2a3
解得:
[ a 1 a 2 a 3 ] = [ e 1 T e 1 ′ e 1 T e 2 ′ e 1 T e 3 ′ e 2 T e 1 ′ e 2 T e 2 ′ e 2 T e 3 ′ e 3 T e 1 ′ e 3 T e 2 ′ e 3 T e 3 ′ ] [ a 1 ′ a 2 ′ a 3 ′ ] = R a ′ \left[ \begin{array}{c} a_1 \\ a_2 \\ a_3 \end{array} \right]=\left[ \begin{array}{c} e_1^{T}e_1^{'} & e_1^{T}e_2^{'} & e_1^{T}e_3^{'} \\ e_2^{T}e_1^{'} & e_2^{T}e_2^{'} & e_2^{T}e_3^{'} \\ e_3^{T}e_1^{'} & e_3^{T}e_2^{'} & e_3^{T}e_3^{'} \end{array} \right]\left[ \begin{array}{c} a_1^{'} \\ a_2^{'} \\ a_3^{'} \end{array} \right]=Ra^{'} a1a2a3=e1Te1e2Te1e3Te1e1Te2e2Te2e3Te2e1Te3e2Te3e3Te3a1a2a3=Ra
矩阵 R 描述了旋转,它又称为旋转矩阵
R一个行列式为 1 的正交矩阵。反之,行列式为 1 的正交矩阵也是一个旋转矩阵
由于旋转矩阵为正交阵,它的逆(即转置)描述了一个相反的旋转
a ′ = R − 1 a = R T a a^{'}=R^{-1}a=R^{T}a a=R1a=RTa

在欧氏变换中,除了旋转之外还有一个平移
a ′ = R a + t a^{'}=Ra+t a=Ra+t

假设我们进行了两次变换: R 1 , t 1 和 R 2 , t 2 R_1, t_1 和 R_2, t_2 R1,t1R2,t2
b = R 1 a + t 1 b=R_1a+t_1 b=R1a+t1
c = R 2 b + t 2 c=R_2b+t_2 c=R2b+t2
那么从 a a a c c c
c = R 2 ( R 1 a + t 1 ) + t 2 c=R_2(R_1a+t_1)+t_2 c=R2(R1a+t1)+t2

[ a ′ 1 ] = [ R t o T 1 ] [ a 1 ] = T [ a 1 ] \left[ \begin{array}{cc} a^{'} \\ 1 \end{array} \right]=\left[ \begin{array}{ccc} R & t \\ o^T & 1 \end{array} \right]\left[ \begin{array}{cc} a \\ 1 \end{array} \right]=T\left[ \begin{array}{cc} a \\ 1 \end{array} \right] [a1]=[RoTt1][a1]=T[a1]

b ‾ = T 1 a ‾ \overline{b}=T_1\overline{a} b=T1a

c ‾ = T 2 b ‾ \overline{c}=T_2\overline{b} c=T2b

c ‾ = T 1 T 2 a ‾ \overline{c}=T_1T_2\overline{a} c=T1T2a

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值