【SLAM】三维刚体运动

3三维刚体运动

3.1旋转矩阵

  • 任意向量 a a a在基下有坐标 a = [ e 1 , e 2 , e 3 ] [ a 1 a 2 a 3 ] = a 1 e 1 + a 2 e 2 + a 3 e 3 \boldsymbol{a}=\left[\boldsymbol{e}_{1}, \boldsymbol{e}_{2}, \boldsymbol{e}_{3}\right]\left[\begin{array}{l}a_{1} \\a_{2} \\a_{3}\end{array}\right]=a_{1} \boldsymbol{e}_{1}+a_{2} \boldsymbol{e}_{2}+a_{3} \boldsymbol{e}_{3} a=[e1,e2,e3] a1a2a3 =a1e1+a2e2+a3e3
  • 内积 a ⋅ b = a T b = ∑ i = 1 3 a i b i = ∣ a ∣ ∣ b ∣ cos ⁡ ⟨ a , b ⟩ a\cdot b=a^Tb=\sum_{i=1}^3a_ib_i=|a||b|\cos\lang a,b\rang ab=aTb=i=13aibi=a∣∣bcosa,b
  • 外积 a × b = ∥ e 1 e 2 e 3 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 =  def  a ∧ b \boldsymbol{a} \times \boldsymbol{b}=\left\|\begin{array}{lll}\boldsymbol{e}_{1} & \boldsymbol{e}_{2} & \boldsymbol{e}_{3} \\a_{1} & a_{2} & a_{3} \\b_{1} & b_{2} & b_{3}\end{array}\right\|=\left[\begin{array}{c}a_{2} b_{3}-a_{3} b_{2} \\a_{3} b_{1}-a_{1} b_{3} \\a_{1} b_{2}-a_{2} b_{1}\end{array}\right]=\left[\begin{array}{ccc}0 & -a_{3} & a_{2} \\a_{3} & 0 & -a_{1} \\-a_{2} & a_{1} & 0\end{array}\right] \boldsymbol{b} \stackrel{\text { def }}{=} \boldsymbol{a}^{\wedge} \boldsymbol{b} a×b= e1a1b1e2a2b2e3a3b3 = a2b3a3b2a3b1a1b3a1b2a2b1 = 0a3a2a30a1a2a10 b= def ab
    • 外积大小 ∣ a ∣ ∣ b ∣ sin ⁡ ⟨ a , b ⟩ |a||b|\sin\lang a,b\rang a∣∣bsina,b
    • 反对称阵 a ∧ = [ 0 − a 3 a 2 a 3 0 − a 1 − a 2 a 1 0 ] \boldsymbol{a}^{\wedge}=\left[\begin{array}{ccc}0 & -a_{3} & a_{2} \\a_{3} & 0 & -a_{1} \\-a_{2} & a_{1} & 0\end{array}\right] a= 0a3a2a30a1a2a10
  • 旋转矩阵
    • ⇄ \rightleftarrows 行列式=1的正交阵 (逆=转置)
    • n维旋转矩阵的集合 S O ( n ) = { R ∈ R n × n ∣ R R T = I , d e t ( R ) = 1 } SO(n)=\{R\in \mathbb{R}^{n\times n}|RR^T=I,det(R)=1 \} SO(n)={ RRn×nRRT=I,det(R)=1}
  • 平移矩阵 a 1 = R 12 a 2 + t 12 a_1=R_{12}a_2+t_{12} a1=R12a2+t12
    • R 12 R_{12} R12 :2->1
    • t 12 t_{12} t12 :从1到2的向量
  • 变换矩阵 T = [ R t 0 T 1 ] T=\left[\begin{array}{ll}\boldsymbol{R} & \boldsymbol{t} \\\mathbf{0}^{\mathrm{T}} & 1\end{array}\right] T=[R0Tt1]
    • 齐次坐标的转换 c = T a c=Ta c=Ta
    • 特殊欧氏群 SE ⁡ ( 3 ) = { T = [ R t 0 T 1 ] ∈ R 4 × 4 ∣ R ∈ S O ( 3 ) , t ∈ R 3 } \operatorname{SE}(3)=\left\{\boldsymbol{T}=\left[\begin{array}{ll}\boldsymbol{R} & \boldsymbol{t} \\\mathbf{0}^{\mathrm{T}} & 1\end{array}\right] \in \mathbb{R}^{4 \times 4} \mid \boldsymbol{R} \in \mathrm{SO}(3), \boldsymbol{t} \in \mathbb{R}^{3}\right\} SE(3)={ T=[R0Tt1]R4×4RSO(3),tR3}
    • T − 1 = [ R T − R T t 0 T 1 ] \boldsymbol{T}^{-1}=\left[\begin{array}{cc}\boldsymbol{R}^{\mathrm{T}} & -\boldsymbol{R}^{\mathrm{T}}\boldsymbol{t} \\\mathbf{0}^{\mathrm{T}} & 1\end{array}\right] T1=[RT0TRTt1]

3.2旋转向量和欧拉角

  • 旋转向量: 方向=旋转轴, 长度=旋转角度 一个三维向量即可描述旋转
  • 一次变换: 1旋转向量+1平移向量 六维
  • 旋转向量->旋转矩阵: R = cos ⁡ θ I + ( 1 − cos ⁡ θ ) nn T + sin ⁡ θ n ˆ \textbf{R}=\cos\theta\textbf{I}+(1-\cos\theta)\textbf{nn}^T+\sin\theta n\^{} R=cosθI+(1cosθ)nnT+sinθnˆ 单位长度向量n
  • 旋转矩阵->旋转向量: Rn = n \textbf{Rn}=\textbf{n} Rn=n
  • 欧拉角(yaw-pitch-roll ZYX转角)
  • 万向锁: ZYX转角定义下, pitch=90°时, 第三次旋转与第一次旋转相同, 丢失了一个自由度(逻辑旋转顺序和实际旋转顺序不一样)

3.3四元数

  • 四元数 q = q 0 + q q i + q 2 j + q 3 k \textbf{q}=q_0+q_q\textbf{i}+q_2\textbf{j}+q_3\textbf{k} q=q0+qqi+q2j+q3k       ~~~~~       q = [ s , v ] T \textbf{q}=[s,v]^T q=[s,v]T
    • 虚部=0:实四元数 实部=0:虚四元数
  • 运算
    • 加法 q a ± q b = [ s a ± s b , v a ± v b ] T \textbf{q}_a\pm \textbf{q}_b=[s_a\pm s_b,\textbf{v}_a\pm \textbf{v}_b]^T qa±qb=[sa±sb,va±vb]T
    • 乘法 q a q b = s a s b − x a x b − y a y b − z a z b + ( s a x b + x a s b + y a z b − z a y b ) i + ( s a y b − x a z b + y a s b + z a x b ) j + ( s a z b + x a y b − y a x b + z a s b ) k \begin{aligned}\boldsymbol{q}_{a} \boldsymbol{q}_{b}=& s_{a} s_{b}-x_{a} x_{b}-y_{a} y_{b}-z_{a} z_{b} \\&+\left(s_{a} x_{b}+x_{a} s_{b}+y_{a} z_{b}-z_{a} y_{b}\right) \mathrm{i} \\&+\left(s_{a} y_{b}-x_{a} z_{b}+y_{a} s_{b}+z_{a} x_{b}\right) \mathrm{j} \\&+\left(s_{a} z_{b}+x_{a} y_{b}-y_{a} x_{b}+z_{a} s_{b}\right) \mathrm{k}\end{aligned} qaqb=sasbxaxbyaybzazb+(saxb+xasb+yazbzayb)i+(saybxazb+yasb+zaxb)j+(sazb+xaybyaxb+zasb)k
      • q a q b = [ s a s b − v a T v b , s a v b + s b v a + v a × v b ] T \boldsymbol{q}_{a} \boldsymbol{q}_{b}=\left[s_{a} s_{b}-\boldsymbol{v}_{a}^{\mathrm{T}} \boldsymbol{v}_{b}, s_{a} \boldsymbol{v}_{b}+s_{b} \boldsymbol{v}_{a}+\boldsymbol{v}_{a} \times \boldsymbol{v}_{b}\right]^{\mathrm{T}} qaqb=[sasbvaTvb,savb+sbva+va×vb]T
    • 模长 ∥ q a ∥ = s a 2 + x a 2 + y a 2 + z a 2 \left\|\boldsymbol{q}_{a}\right\|=\sqrt{s_{a}^{2}+x_{a}^{2}+y_{a}^{2}+z_{a}^{2}} qa=sa2+xa2+ya2+za2
      • ∥ q a q b ∥ = ∥ q a ∥ ∥ q b ∥ \left\|\boldsymbol{q}_{a} \boldsymbol{q}_{b}\right\|=\left\|\boldsymbol{q}_{a}\right\|\left\|\boldsymbol{q}_{b}\right\| qaqb=qaqb 四元数乘积模=模乘积
    • 共轭 q a ∗ = s a − x a i − y a j − z a k = [ s a , − v a ] T \boldsymbol{q}_{a}^{*}=s_{a}-x_{a} \mathrm{i}-\mathrm{y}_{\mathrm{a}} \mathrm{j}-\mathrm{z}_{\mathrm{a}} \mathrm{k}=\left[\mathrm{s}_{\mathrm{a}},-\mathrm{v}_{\mathrm{a}}\right]^{\mathrm{T}} qa=saxaiyajzak=[sa,va]T
      • 共轭x本身=实四元数 q ∗ q = q q ∗ = [ s a 2 + v T v , 0 ] T \boldsymbol{q}^{*} \boldsymbol{q}=\boldsymbol{q} \boldsymbol{q}^{*}=\left[s_{a}^{2}+\boldsymbol{v}^{\mathrm{T}} \boldsymbol{v}, \boldsymbol{0}\right]^{\mathrm{T}} qq=qq=[sa2+vTv,0]T
    • q − 1 = q ∗ / ∥ q ∥ 2 \boldsymbol{q}^{-1}=\boldsymbol{q}^{*} /\|\boldsymbol{q}\|^{2} q1=q/∥q2
      • 四元数x其逆=1 q q − 1 = q − 1 q = 1 q q^{-1}=q^{-1} q=1 qq1=q1q=1
      • 单位四元数: 逆=共轭
      • ( q a q b ) − 1 = q b − 1 q a − 1 \left(\boldsymbol{q}_{a} \boldsymbol{q}_{b}\right)^{-1}=\boldsymbol{q}_{b}^{-1} \boldsymbol{q}_{a}^{-1} (qaqb)1=qb1qa1
    • 数乘 k q = [ k s , k v ] T k\textbf{q} = [ks, kv]^T kq=[ks,kv]T
  • 旋转 三维空间点 p = [ 0 , x , y , z ] T = [ 0 , v ] T p=[0,x,y,z]^T=[0,v]^T p=[0,x,y,z]T=[0,v]T
    • p ′ = qpq − 1 \textbf{p}'=\textbf{qpq}^{-1} p=qpq1
      • p’纯虚四元数,虚部即坐标
  • 四元数->旋转矩阵: R = v v T + s 2 I + 2 s v ˆ + ( v ˆ ) 2 R=vv^T+s^2I+2sv\^{}+(v\^{})^2 R=vvT+s2I+2svˆ+(vˆ)2
    • θ = 2 arccos ⁡ q 0 \theta = 2\arccos q_0 θ=2arccosq0
    • [ n x , n y , x z ] T = [ q 1 , q 2 , q 3 ] T / sin ⁡ θ 2 [n_x,n_y,x_z]T=[q_1,q_2,q_3]^T/\sin\frac{\theta}{2} [nx,ny,xz]T=[q1,q2,q3]T/sin2θ

3.4变换

  • 相似变换: 比欧式变换多一个自由度, 允许物体均匀缩放
    • T S = [ s R t 0 T 1 ] \boldsymbol{T}_{S}=\left[\begin{array}{ll}s \boldsymbol{R} & \boldsymbol{t} \\\mathbf{0}^{\mathrm{T}} & 1\end{array}\right] TS=[sR0Tt1]
    • 相似变换群: 相似变换的集合 Sim(3)
  • 仿射变换: 正交投影, A为可逆矩阵, 立方体不再为方, 各面仍为平行四边形
    • T A = [ A t 0 T 1 ] \boldsymbol{T}_{A}=\left[\begin{array}{ll}\boldsymbol{A} & \boldsymbol{t} \\\mathbf{0}^{\mathrm{T}} & 1\end{array}\right] TA=[A0Tt1]
  • 射影变换: 真实世界->相机照片, 2D 8自由度, 3D 15自由度
  • 在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/weixin_46143152/article/details/126804775