SlAM 14讲笔记

探讨SLAM中机器人的自主运动与环境建图基础,分析相机类型及其优缺点,深入数学模型,阐述旋转矩阵、旋转向量、欧拉角到四元数的转换,以及李群李代数的应用,解析三维空间刚体运动的数学精髓。
摘要由CSDN通过智能技术生成


前言

slam学习 B站上一位学姐的课程笔记 记录了前三章的内容.
传送门:SLAM十四讲 如有侵权,请通知我删除.

一、了解slam

1、机器人自主运动的两大基本问题

1、我现在在什么地方----定位
2、周围环境什么样----建图。

2、各种相机的优缺点

单目相机:

优点:便于标定和识别;
缺点:无法确定物体的真实大小,丢失Z轴信息

双目:

优点:极限距离越大,能够测量的距离就越大越远。可用于室内和室外
缺点:配置与标定较为复杂。需要GPU和FPGA加速来处理

深度相机:红外结构光或TOF(time of fly)

优点:相比双目可以节省大量计算资源。
缺点:测量范围狭窄,噪声较大,视野小,易受日光干扰。
主要用于:三维成像和距离的测量。

3、数学表达:

1、什么是运动

从k-1时刻到k时刻,机器人的位置是如何变化的?
关于运动模型:

机器人会携带一个测量自身运动的传感器,这个传感器可以测量有关运动的读数,但不一定直接就是位置差,还可能是加速度、角速度这些信息
使用抽象数学模型来描述:

x k ⃗ = f ( x k − 1 → , u k ← , w k ← ) \vec{x_k} =f( \overrightarrow{x_{k-1}} , \overleftarrow{u_k},\overleftarrow{w_k}) xk =f(xk1 ,uk ,wk )
其中 u k ⃗ \vec{u_k} uk 运动传感器的读数;
w k ⃗ \vec{w_k} wk 是运动过程中加入的噪声;即运动方程

2、什么是观测:

假设机器人在 k 时刻在 x k ⃗ 处观测到了某个路标 y i ⃗ ,如何用数学语言描述。 假设机器人在k时刻 在\vec{x_k}处观测到了某个路标 \vec{y_i},如何用数学语言描述。 假设机器人在k时刻在xk 处观测到了某个路标yi ,如何用数学语言描述。

关于观测模型
机器人在 x k ⃗ 位置上看到某个路标点 y j ⃗ , 产生了一个观测数据 z k , j ⃗ 机器人在\vec{x_k}位置上看到某个路标点\vec{y_j},产生了一个观测数据\vec{z_{k,j}} 机器人在xk 位置上看到某个路标点yj ,产生了一个观测数据zk,j

z k , j ⃗ = f ( y j ⃗ , x k ⃗ , v k , j ⃗ ) \vec{z_{k,j}} =f(\vec{y_j} ,\vec{x_k},\vec{v_{k,j}}) zk,j =f(yj ,xk ,vk,j )
其中 v k , j ⃗ \vec{v_{k,j}} vk,j 是观测的噪声 即观测方程;

· 事实上,根据机器人的真实运动和传感器的种类,存在着若干种参数化形式。而考虑视觉SLAM时,传感器是相机,则观测方程就是“对路标点拍摄后,得到图像中的像素”的过程。

举个例子解释:
假设机器人在平面运动,那么位姿(位置+姿态)由两个位置的坐标和一个转交来描述 : x k ⃗ = ( x , y , Θ ) T \vec{x_k}=(x,y,\Theta)^T xk =(x,y,Θ)T,同时,运动传感器能够测量到机器人在任意两个时间间隔位置和转交的变化量: u k ⃗ = ( Δ x , Δ y , Δ Θ ) T \vec{u_k}=(\Delta x,\Delta y,\Delta\Theta)^T uk =(Δx,Δy,ΔΘ)T于是,此时运动方程就可以写成:
( x y Θ ) k = ( x y Θ ) k − 1 + ( Δ x Δ y Δ Θ ) k + w k ⃗ \begin{pmatrix} x \\ y \\ \Theta\\ \end{pmatrix}_k =\begin{pmatrix} x \\ y \\ \Theta\\ \end{pmatrix}_{k-1}+\begin{pmatrix} \Delta x \\ \Delta y \\ \Delta \Theta\\ \end{pmatrix}_{k}+\vec{w_k} xyΘ k= xyΘ k1+ ΔxΔyΔΘ k+wk
关于观测方程,比如机器人携带着一个二维激光传感器 (当激光传感器观测一个 2 D ‾ 路标点时,可以测到路标点与机器人之间的距离 r 和夹角 ϕ ) (当激光传感器观测一个\underline{2D}路标点时,可以测到路标点与机器人之间的距离r和夹角\phi) (当激光传感器观测一个2D路标点时,可以测到路标点与机器人之间的距离r和夹角ϕ)
记路标点: y k ⃗ = [ y 1 , y 2 ] j T , 位姿为: x k ⃗ = [ x 1 , x 2 ] k T ,观测数据为: z k , j ⃗ = [ r k , j , ϕ k , j ] T 记路标点:\vec{y_k}=[y_1,y_2]^{T}_{j},位姿为:\vec{x_k}=[x_1,x_2]^{T}_{k},观测数据为:\vec{z_{k,j}}=[r_{k,j},\phi_{k,j}]^{T} 记路标点:yk =[y1,y2]jT,位姿为:xk =[x1,x2]kT,观测数据为:zk,j =[rk,j,ϕk,j]T
于是观测方程就可以成:
[ r k , j ϕ k , j ] k − 1 = [ ( y 1 , j → − x 1 , k → ) 2 + y 2 , j → − x 2 , k → ) 2 arctan ⁡ ( y 2 , j → − x 2 , k → y 1 , j → − x 1 , k → ) ] + v → \begin{bmatrix} r_{k,j} \\ \phi_{k,j} \\ \end{bmatrix}_{k-1}=\begin{bmatrix} \sqrt{(\overrightarrow{y_{1,j}}-\overrightarrow{x_{1,k}})^2 +\overrightarrow{y_{2,j}}-\overrightarrow{x_{2,k}})^2} \\ \arctan\begin{pmatrix} \frac{ \overrightarrow{y_{2,j} } - \overrightarrow{x_{2,k} }} {\overrightarrow{y_{1,j} } - \overrightarrow{x_{1,k}}} \end{pmatrix} \\ \end{bmatrix}+ \overrightarrow{v} [rk,jϕk,j]k1= (y1,j x1,k )2+y2,j x2,k )2 arctan(y1,j x1,k y2,j x2,k ) +v

{ x k = f ( x k − 1 , u k , w k ) , k = 1 , … , K z k , j = f ( y j , x k , v k , j ) , ( k , j ) ∈ O \begin{cases} x_k=f(x_{k-1},u_k,w_k), & k=1,…,K\\ z_{k,j}=f(y_{j},x_k,v_{k,j}), & (k,j)∈O\\ \end{cases} {xk=f(xk1,uk,wk),zk,j=f(yj,xk,vk,j),k=1,,K(k,j)O
这两个方程描述了最基本的SLAM问题:
当知道运动测量的读数u以及传感器的读书z时,如何求解定位问题(估计x)和见图问题(估计y)

二、三位空间刚体运动

1. 旋转矩阵与变换矩阵

1.1 基础知识

三维空间由3个轴组成,则一个空间点的位置可以由3个坐标指定
对于一个刚体(在运动和受力作用后,形状和大小不变,而且内部各点的相对位置不变的物体),不光有位置,还有自身的姿态–相机可以堪称三维空间中的刚体,则位置就是说相机在空间中的那个地方,姿态是指相机的朝向(相机处于空间(0,0,0)处,朝向正前方);

那么数学语言怎么描述?
点 = { 点没有长度,没有体积 点和点可以组成向量 点=\begin{cases} 点没有长度,没有体积\\ 点和点可以组成向量\\ \end{cases} ={点没有长度,没有体积点和点可以组成向量

向量 = { 带指向性的箭头(方向性) 可以进行加法、减法等运算 向量=\begin{cases} 带指向性的箭头(方向性)\\ 可以进行加法、减法等运算\\ \end{cases} 向量={带指向性的箭头(方向性)可以进行加法、减法等运算

坐标 = { 当我们指定坐标后,才可以谈论该向量在此坐标系下的坐标 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 坐标=\begin{cases} 当我们指定坐标后,才可以谈论该向量在此坐标系下的坐标\\ a=[e_1,e_2,e_3] \begin{bmatrix} a_1 \\ a_2 \\ a_3\\ \end{bmatrix} =a_1e_1+a_2e_2+a_3e_3\\ \end{cases} 坐标= 当我们指定坐标后,才可以谈论该向量在此坐标系下的坐标a=[e1,e2,e3] a1a2a3 =a1e1+a2e2+a3e3

坐标系 = { 构成线性空间的一组基 左手系和右手系 坐标系=\begin{cases} 构成线性空间的一组基\\ 左手系和右手系\\ \end{cases} 坐标系={构成线性空间的一组基左手系和右手系
左手系:左手系右手系:右手系

向量的运算可以由坐标运算来表示
加减法内积: a ⋅ b = a T b = ∑ i = 1 3 a i b i = ∣ a ∣ ∣ b ∣ c o s < a , b > 外积: 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·b=a^Tb =\sum_{i=1}^{3}a_ib_i=|a||b|cos<a,b> \\ 外积:a×b= \begin{bmatrix} i& j & k \\ a_1 & a_2 & a_3 \\ b_1& b_2 & b_3 \\ \end{bmatrix} = \begin{bmatrix} a_2b_3-a_3b_2 \\ a_3b_1-a_1b_3 \\ a_1b_2-a_2b_1 \\ \end{bmatrix} = \begin{bmatrix} 0 & -a_3 & a_2 \\ a_3 & 0& -a_1 \\ -a_2& a_1& 0 \\ \end{bmatrix}b \^= \hat{a} b 加减法内积:ab=aTb=i=13aibi=a∣∣bcos<a,b>外积:a×b= ia1b1ja2b2ka3b3 = a2b3a3b2a3b1a1b3a1b2a2b1 = 0a3a2a30a1a2a10 b=ˆa^b

对于外积,备注一下
若 i ⃗ , j ⃗ , k ⃗ 分别表示 x 轴, y 轴, z 轴正向的单位向量,则 若\vec{i},\vec{j},\vec{k}分别表示x轴,y轴,z轴正向的单位向量,则 i ,j ,k 分别表示x轴,y轴,z轴正向的单位向量,则
{ i ⃗ × j ⃗ = k ⃗ j ⃗ × k ⃗ = j ⃗ k ⃗ × i ⃗ = j ⃗                                 { a ⃗ = a 1 i ⃗ + a 2 j ⃗ + a 3 k ⃗ b ⃗ = b 1 i ⃗ + b 2 j ⃗ + b 3 k ⃗        a × b = ( a 2 b 3 − a 3 b 2 ) i ⃗ + ( a 3 b 1 − a 1 b 3 ) j ⃗ + ( a 1 b 2 − a 2 b 1 ) k ⃗ \begin{cases} \vec{i}×\vec{j}= \vec{k} \\ \vec{j}×\vec{k}= \vec{j} \\ \vec{k}×\vec{i}= \vec{j} \\ \end{cases} \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \begin{cases} \vec{a}=a_1\vec{i} + a_2\vec{j}+ a_3\vec{k} \\ \vec{b}=b_1\vec{i} + b_2\vec{j}+ b_3\vec{k} \\ \end{cases} \ \ \ \ \ \ \\ a×b=(a_2b_3-a_3b_2)\vec{i}+(a_3b_1-a_1b_3)\vec{j}+(a_1b_2-a_2b_1)\vec{k} i ×j =k j ×k =j k ×i =j                                {a =a1i +a2j +a3k b =b1i +b2j +b3k       a×b=(a2b3a3b2)i +(a3b1a1b3)j +(a1b2a2b1)k

1.2 坐标系之间的变换

基本问题: 坐标系之间是如何变化的->如何计算同一个向量在不同坐标系里的坐标

在这里插入图片描述

  • 两个不同的坐标系,如何描述左侧到右侧的变化?
  • 直观来看由两个部分组成1、三个轴的旋转 2、原点之间的平移 平移是一个向量
  • 那么旋转是什么?
  • 旋转
    − 设某坐标系( e 1 . e 2 . e 3 ) 经过一次旋转变成了 ( e 1 ‘ , e 2 ‘ , e 3 ‘ ) - 设某坐标系(e_1.e_2.e_3)经过一次旋转变成了(e_1^`, e_2^`, e_3^`) 设某坐标系(e1.e2.e3)经过一次旋转变成了(e1,e2,e3)
    对于某个固定的向量a, 它的坐标是如何变化的?
    坐标关系:
    [ e 1 . e 2 . e 3 ] [ a 1 a 2 a 3 ] = [ e 1 ‘ , e 2 ‘ , e 3 ‘ ] [ a 1 a 2 a 3 ] [e_1.e_2.e_3]\begin{bmatrix} a_1\\ a_2\\ a_3 \\ \end{bmatrix} =[e_1^`, e_2^`, e_3^`] \begin{bmatrix} a_1\\ a_2\\ a_3 \\ \end{bmatrix} [e1.e2.e3] a1a2a3 =[e1,e2,e3] a1a2a3
    左乘 [ e 1 T e 2 T e 3 T ] − > [ 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 ‘ , ] = ˆ R a ‘ . 左乘 \begin{bmatrix} e_1^T\\ e_2^T\\ e_3^T \\ \end{bmatrix} ->\begin{bmatrix} a_1\\ a_2\\ a_3 \\ \end{bmatrix}=\begin{bmatrix} e_1^T e_1^`,& e_1^Te_2^`, & e_1^Te_3^`, \\ e_2^Te_1^`, & e_2^Te_2^`,& e_2^Te_3^`, \\ e_3^Te_1^`,& e_3^Te_2^`,& e_3^Te_3^`, \\ \end{bmatrix} \^=Ra^` . 左乘 e1Te2Te3T > a1a2a3 = e1Te1,e2Te1,e3Te1,e1Te2,e2Te2,e3Te2,e1Te3,e2Te3,e3Te3, =ˆRa.
  • 中间的矩阵R称为旋转矩阵
  • 可以证明 R 是一个正交矩阵 R 的行列式为 ± 1 R是一个正交矩阵\\ R的行列式为±1 R是一个正交矩阵R的行列式为±1
  • 取行列式为1的正交矩阵称为旋转矩阵
    S O ( n ) = { R ∈ R n × n ∣ R R T = I , d e t ( R ) = 1 } . S O ( n ) 是特殊正交群 SO(n)=\{ R∈R^{n×n}|RR^T=I,det(R)=1\}. \\SO(n)是特殊正交群 SO(n)={RRn×nRRT=I,det(R)=1}.SO(n)是特殊正交群
  • 旋转矩阵描述了两个坐标的变换关系:
    比如: a 1 = R 12 a 2 反之: a 2 = R 21 a 1 于是: R 21 = R 12 − 1 = R 12 T 比如: a_1=R_{12}a_2 \\ 反之:a_2=R_{21}a_1 \\于是:R_{21}=R_{12}^{-1}=R_{12}^T 比如:a1=R12a2反之:a2=R21a1于是:R21=R121=R12T
  • 加上平移 a ‘ = R a + t a^`=R_a+t a=Ra+t
  • 两个坐标系的刚体运动可以由 R , t 完全描述 两个坐标系的刚体运动可以由R,t完全描述 两个坐标系的刚体运动可以由Rt完全描述

上述式子证明:
在这里插入图片描述

1.3 齐次坐标和变换矩阵

上述已经完整的表达了欧式空间的旋转和平移,但不是一个线性关系
b = R 1 a + t 1 , c = R 2 b + t 2 b=R_1a+t_1 ,c=R_2b+t_2 b=R1a+t1c=R2b+t2
但是从a到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 0 T , 1 ] [ a 1 ] = ˆ T [ a 1 ] . \begin{bmatrix} a^`\\ 1\\ \end{bmatrix} = \begin{bmatrix} R & t \\ 0^T, & 1 \\ \end{bmatrix} \begin{bmatrix} a\\ 1\\ \end{bmatrix} \^= T \begin{bmatrix} a\\ 1\\ \end{bmatrix} . [a1]=[R0T,t1][a1]=ˆT[a1].
这样多次变换就可以写成
b ~ = T 1 a ~  , c ~ = T 2 b ~   = >   c ~ = T 2 T 1 a ~ \tilde{b}=T_1\tilde{a} \ ,\tilde{c}=T_2\tilde{b} \ => \ \tilde{c} =T_2T_1\tilde{a} b~=T1a~ c~=T2b~ => c~=T2T1a~

  • 这种用四个数表达三维向量的做法称为其次坐标
  • 引入齐次坐标后,旋转和平移可以放在同一个矩阵中,称为变换矩阵
    S E ( 3 ) = { T = [ R t 0 T , 1 ] ∈ R 4 × 4 ∣ R ∈ S O ( 3 ) , t ∈ R 3 } SE(3)=\{ T= \begin{bmatrix} R & t \\ 0^T, & 1 \\ \end{bmatrix} ∈R^{4×4}|R∈SO(3),t∈R^3 \} SE(3)={T=[R0T,t1]R4×4RSO(3),tR3}
  • 称为特殊欧式群
  • 类似的,可以反向的变换
    T − 1 = [ R T − R t t 0 T , 1 ] T^{-1}= \begin{bmatrix} R^T & -R^tt \\ 0^T, & 1 \\ \end{bmatrix} T1=[RT0T,Rtt1]
    证明: 在这里插入图片描述

1.3 总结

1、SO(3)的旋转矩阵有九个量。但一次旋转只有三个自由度。因此这种表达方式是冗余的。同理,变换矩阵用十六个两表示六个自由度的变换,那么,是否有更紧凑的表示呢?
2、旋转矩阵自身带有约束:它必须是个正交矩阵,且行列式为1。 变换矩阵也是如此。当我们想要估计或优化一个旋转矩阵/变换矩阵时,这些约束会使得求解变得更困难。

2. 旋转向量

  • 除了旋转矩阵之外的旋转表示
  • 旋转矩阵表示旋转时冗杂的(旋转矩阵有9个量,但一次旋转只有3个自由度并且旋转矩阵自身带有约束)
  • 旋转向量:三个自由度,用 R 3 向量表示 方向为旋转轴,长度为转过的角度 w ⃗ = θ n ⃗ 旋转向量:三个自由度,用R^3向量表示 \\方向为旋转轴,长度为转过的角度\\ \vec{w}=\theta\vec{n} 旋转向量:三个自由度,用R3向量表示方向为旋转轴,长度为转过的角度w =θn
    在这里插入图片描述
  • 旋转向量和旋转矩阵的不同
  • –旋转矩阵:9个量,有正交性约束和行列式值约束
  • –旋转向量:三个量,没有约束
  • 这两个只是表达方式不同,但是表达的东西是同一个。

转换关系
— 旋转向量旋转矩阵:罗德里格斯公式
R = c o s θ − ( 1 − c o s θ ) n n T + s i n θ n . ˆ R=cos\theta - (1-cos\theta)nn^T+ sin\theta n\^. R=cosθ(1cosθ)nnT+sinθn.ˆ

— 旋转矩阵旋转向量:
角度: θ = a r c c o s ( t r ( R ) − 1 2 ) 轴: R n = n . 角度 :\theta=arccos(\frac{tr(R) - 1}{2}) \\轴:Rn=n. 角度:θ=arccos(2tr(R)1)轴:Rn=n.
转轴是矩阵R特征值1对应的特征向量

罗德里格斯公式证明

R = c o s θ − ( 1 − c o s θ ) n n T + s i n θ n . ˆ 其中 n . ˆ 为反对称矩阵 R=cos\theta - (1-cos\theta)nn^T+ sin\theta n\^. 其中n\^.为反对称矩阵 R=cosθ(1cosθ)nnT+sinθn.ˆ其中n.ˆ为反对称矩阵
对与转角 θ , 取两边的 迹 I I ,有: t r ( R ) = c o s θ   t r ( I ) − ( 1 − c o s θ ) t r ( n n T ) + s i n θ t r ( n ) ˆ ,其中 t r ( n ) ˆ = 0. = 3 c o s θ + ( 1 − c o s θ ) = 1 + 2 c o s θ θ = a r c c o s t r ( R ) − 1 2 对与转角\theta,取两边的迹^{II},有:\\ tr(R)=cos\theta \ tr(I) - (1-cos\theta)tr(nn^T)+ sin\theta tr(n\^) ,其中tr(n\^) =0 . \\=3cos\theta+(1-cos\theta)=1+2cos\theta \\ \theta=arccos\frac{tr(R)-1}{2} 对与转角θ,取两边的II,有:tr(R)=cosθ tr(I)(1cosθ)tr(nnT)+sinθtr(n)ˆ,其中tr(n)ˆ=0.=3cosθ+(1cosθ)=1+2cosθθ=arccos2tr(R)1
关于转轴n,旋转轴上的向量在旋转后不发生改变,说明: R n = n . Rn=n. Rn=n.
转轴是矩阵R特征值1对应的特征向量

总结:

无论是旋转矩阵、旋转向量,虽然他们能描述旋转,但对我们人类是非常不直观的。当我们看到一个旋转矩阵或旋转向量时,很难想象出来这个旋转究竟是什么样的。当他们变换时,我们不知道物体是向那个方向在移动。

3. 欧拉角

3.1、 欧拉角介绍

  • 旋转矩阵和旋转向量是不直观的表示,欧拉角提供了一种非常直观的方式
  • 欧拉角:
  • –将旋转分解为三次不同轴上的移动,一边理解
  • –例如按照Z-Y-X转动
  • –轴顺序亦可不同,因此存在许多种定义方式不同的欧拉角。
    在这里插入图片描述
偏航角(yaw)俯仰角(pitch)滚转角(roll)
绕z轴转动绕y轴转动绕x轴转动

3.2、万向锁

–在ZYX顺序种,若第二次旋转得到的为正负90°,则第三次和第一次绕同一个轴,是的系统丢失了一个自由度,存在奇异性问题
在这里插入图片描述

  • 由于万向锁,欧拉角不适合插值和迭代,往往用于人机交互种
  • 可以证明,用三个实属来表达三维旋转时,会不可避免地碰到奇异性问题。
  • SLAM程序种很少直接使用欧拉角表示姿态

3.3、总结

旋转矩阵用九个量描述三个自由度的旋转,具有冗余性;欧拉角和旋转向量时紧凑的,但具有奇异性。事实上,我们找不到不带奇异性的三维向量表述方式。

4、四元数

4.1、四元数介绍

  • 一种拓展的复数,即是紧凑的也没有奇异性

  • 四元数有三个虚部,可以表达三维空间种的旋转
    q = q 0 + q 1 i + q 2 j + q 3 k ,      q = [ s , v ] ,       s = q 0 ∈ R , v = [ q 1 , q 2 , q 3 ] T ∈ R 3 q=q_0+q_1i+q_2j+q_3k, \ \ \ \ q=[s,v], \ \ \ \ \ s=q_0∈R,v=[q_1,q_2,q_3]^T∈R^3 q=q0+q1i+q2j+q3k,    q=[s,v],     s=q0Rv=[q1,q2,q3]TR3

  • 虚部之间的关系:(右手法则)
    { i 2 = j 2 = k 2 = − 1 i j = k ,     j i = − k j k = i ,     k j = − i k i = j ,     i k = − j \begin{cases} i^2=j^2=k^2=-1 \\ ij= k,\ \ \ ji=-k \\ jk= i,\ \ \ kj=-i \\ ki= j,\ \ \ ik=-j \\ \end{cases} i2=j2=k2=1ij=k,   ji=kjk=i,   kj=iki=j,   ik=j

  • 单位四元数满足四元数的模长为1 q 1 2 + q 2 2 + q 3 2 = 1 q_1^2+q_2^2+q_3^2=1 q12+q22+q32=1

  • (单位四元数可以表达三维空间的一次旋转)

4.2、四元数的一些运算和性质

q a = s a + x a i + y a j + z a k ,      q b = s b + x b i + y b j + z b k . q_a=s_a+x_ai+y_aj+z_ak, \ \ \ \ q_b=s_b+x_bi+y_bj+z_bk. qa=sa+xai+yaj+zak,    qb=sb+xbi+ybj+zbk.

加减法:
q a ± q b = [ s a ± s b , v a ± v b ] . q_a±q_b=[s_a±s_b,v_a±v_b]. qa±qb=[sa±sb,va±vb].
乘法
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 . 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 ] q_aq_b=s_as_b-x_ax_b-y_ay_b-z_az_b\\ +(s_ax_b+x_as_b+y_az_b-z_ay_b)i \\+(s_ay_b-x_az_b+y_as_b+z_ax_b)j\\+(s_az_b+x_ay_b-y_ax_b-z_as_b)k.\\ q_aq_b=[s_as_b-v_a^Tv_b,s_av_b+s_bv_a+v_a×v_b] qaqb=sasbxaxbyaybzazb+(saxb+xasb+yazbzayb)i+(saybxazb+yasb+zaxb)j+(sazb+xaybyaxbzasb)k.qaqb=[sasbvaTvb,savb+sbva+va×vb]
在这里插入图片描述
共轭: q a ∗ = s a − x a i − y a j − z a k = [ s a , − v a ] . q_a^*=s_a-x_ai-y_aj-z_ak=[s_a,-v_a]. qa=saxaiyajzak=[sa,va].
模长: ∣ ∣ q a ∣ ∣ = s a 2 + x a 2 + y a 2 + z a 2 . ||q_a||=\sqrt{s_a^2+x_a^2+y_a^2+z_a^2}. ∣∣qa∣∣=sa2+xa2+ya2+za2 .
q − 1 = q ∗ ∣ ∣ q ∣ ∣ 2 q^{-1}=\frac{q^*}{||q||^2} q1=∣∣q2q
在这里插入图片描述
数乘: k q = [ k s , k v ] . kq=[ks,kv]. kq=[ks,kv].
点乘: q a ⋅ q b = s a s b + x a x b i + y a y b j + z a z b k q_a·q_b=s_as_b+x_ax_bi+y_ay_bj+z_az_bk qaqb=sasb+xaxbi+yaybj+zazbk

4.3、用四元数表示旋转

任意单位向量v,沿着一单位向量定义的旋转轴u旋转θ度之后v`可以使用四元数乘法来获得。
令 v = [ 0 , v ] , p = [ c o s ( θ 2 ) , s i n ( θ 2 ) u ] , 那么: v ‘ = p v p ∗ = p v p − 1 令v=[0,v],p=[cos(\frac{\theta}{2}),sin(\frac{\theta}{2})u],那么:\\ v^`=pvp^*=pvp^{-1} v=[0,v],p=[cos(2θ),sin(2θ)u],那么:v=pvp=pvp1
并证明变换之后的v实部为0,虚部是罗德利斯公式结果。
证明:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
四元数和旋转向量的关系

旋转向量到四元数
假设某个旋转向量是绕单位向量 n ⃗ = [ n x , n y , n z ] T 进行了角度为 θ 的旋转,则这个旋转的四元数形式为: q = [ c o s θ 2 , n x s i n θ 2 , n y s i n θ 2 , n z s i n θ 2 ] T \vec{n}=[n_x,n_y,n_z]^T进行了角度为\theta的旋转,则这个旋转的四元数形式为:\\ q=[cos\frac{\theta}{2},n_xsin\frac{\theta}{2},n_ysin\frac{\theta}{2},n_zsin\frac{\theta}{2}]^T n =[nx,ny,nz]T进行了角度为θ的旋转,则这个旋转的四元数形式为:q=[cos2θ,nxsin2θ,nysin2θ,nzsin2θ]T
– ·四元数到旋转向量·
{ θ = 2 a r c c o s q 0 [ n x , n y , n z ] T = [ q 1 , q 2 , q 3 ] T s i n θ 2 \begin{cases} \theta=2arccosq_0 \\ [n_x,n_y,n_z]^T=\frac{[q_1,q_2,q_3]^T }{sin\frac{\theta}{2}}\\ \end{cases} {θ=2arccosq0[nx,ny,nz]T=sin2θ[q1,q2,q3]T
四元数和旋转矩阵的关系

4.4、总结

四元数相比旋转向量的优势:紧凑、无奇异性。

三、李群与李代数

3.1 李代数的引入

  • 在SLAM种,除了表示之外,还要对他们进行估计和优化,因为SLAM整个过程就是在不断地估计机器人的位姿与地图,该位姿是由SO(3)上的旋转矩阵或SE(3)上的变换矩阵描述的。
  • 为了做这件事情,需要对变换矩阵进行插值、求导、迭代等操作。

设某个时刻机器人的位姿与 T c w , 它观察到了一个世界坐标位于 P w 的点,产生了观测数据 Z c ,根据坐标变换 任取 i     Z c = T c w P w i + w 那我们实际要做的事情是求一个欧式变换 T c w , 是的 T c w 满足上式。 p s : 其中 T c w 是指从世界坐标系 → 相机坐标系的一个转换。                                                  设某个时刻机器人的位姿与T_{cw},它观察到了一个世界坐标位于P_w的点,产生了观测数据Z_c,根据坐标变换\\ 任取i \ \ \ Z_c=T_{cw}P_{wi}+w\\ 那我们实际要做的事情是求一个欧式变换T_{cw},是的T_{cw}满足上式。\\ ps:其中T_{cw}是指从世界坐标系 \to 相机坐标系的一个转换。 \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ 设某个时刻机器人的位姿与Tcw,它观察到了一个世界坐标位于Pw的点,产生了观测数据Zc,根据坐标变换任取i   Zc=TcwPwi+w那我们实际要做的事情是求一个欧式变换Tcw,是的Tcw满足上式。ps:其中Tcw是指从世界坐标系相机坐标系的一个转换。                                                 

然而,由于观测噪声w的存在,z往往不可能精确地满足Z=Tp的关系。所以我们通常会计算理想的观测与实际数据的误差:
e = z − T p . e=z-Tp. e=zTp.
假设一共由N个这样的路标点和观测,则就有N个上式,则对机器人的位姿估计,相当于寻找一个最优的T,是的整体误差最小化:
lim ⁡ T J ( T ) = ∑ i = 1 N ∣ ∣ z i − T p i ∣ ∣ 2 2 \lim_{T} J(T)= \sum_{i=1}^{N}||z_i-Tp_i||_2^2 TlimJ(T)=i=1N∣∣ziTpi22
求解此问题,需要解决一下两个问题:
1、如何求解目标函数相对于T的导数。
2、T对于乘法封闭,对于加法不封闭。

导数定义:
f ‘ ( x ) = lim ⁡ △ x → 0 f ( x + △ x ) − f ( △ x ) △ x f^`(x)=\lim_{△x \to0} \frac{f(x+△x)-f(△x)}{△x} f(x)=x0limxf(x+x)f(x)
对于加减法不封闭,对于乘法封闭的例子:
例如集合 V = ( a , 0 ) ∪ ( 0 , b ) , a , b 属于全体实数, ( a , 0 ) 乘以任意实数都跟原来一样是一个横轴上的向量; ( 0 , b )乘以任意实数也跟原来一样是一个纵轴上的向量,故对乘法封闭, 但是( a , 0 ) + ( 0 , b )就成了一个在坐标轴外的向量,故对加减法不封闭。 例如集合V=(a,0)∪(0,b),a,b属于全体实数,\\ (a,0)乘以任意实数都跟原来一样是一个横轴上的向量;\\(0,b)乘以任意实数也跟原来一样是一个纵轴上的向量,故对乘法封闭,\\ 但是(a,0)+(0,b)就成了一个在坐标轴外的向量,故对加减法不封闭。 例如集合V=(a,0)(0b)ab属于全体实数,a,0)乘以任意实数都跟原来一样是一个横轴上的向量;0b)乘以任意实数也跟原来一样是一个纵轴上的向量,故对乘法封闭,但是(a0+0b)就成了一个在坐标轴外的向量,故对加减法不封闭。

解决上述问题的方法: 李代数

3.2 李群 李代数

在这里插入图片描述

3.2.1 群

S O ( 3 ) = R ∈ R 3 × 3 ∣ R R T = I , d e t ( R ) = 1 .  特殊正交群 S O ( 1 ) S E ( 3 ) = { T = [ R t 0 T , 1 ] ∈ R 4 × 4 ∣ R ∈ S O ( 3 ) , t ∈ R 3 }      特殊欧式群 S E ( 3 ) SO(3)={R∈R^{3×3}|RR^T=I,det(R)=1}. \ 特殊正交群SO(1) \\ SE(3)= \{T= \begin{bmatrix} R & t \\ 0^T, & 1 \\ \end{bmatrix}∈R^{4×4}|R∈SO(3),t∈R^3\} \ \ \ \ \ 特殊欧式群SE(3) SO(3)=RR3×3RRT=I,det(R)=1. 特殊正交群SO(1)SE(3)={T=[R0T,t1]R4×4RSO(3),tR3}     特殊欧式群SE(3)

  • 群是一种集合加上一种运算的代数结构
  • 集合即为A,运算几位 · ,那么 当运算满足一下性质时,称(A,·)成群
  • 1、封闭性: ∀ a 1 , a 2 ∈ A , a 1 ⋅ a 2 ∈ A . {\forall}a_1,a_2∈A, a_1 · a_2∈A . a1,a2Aa1a2A.

  • 2、结合律: ∀ a 1 , a 2 , a 3 ∈ A , ( a 1 ⋅ a 2 ) ⋅ a 3 = a 1 ⋅ ( a 2 ⋅ a 3 ) . {\forall}a_1,a_2,a_3∈A, (a_1 · a_2)·a_3=a_1·(a_2·a_3). a1,a2,a3A(a1a2)a3=a1(a2a3).

  • 3、幺元: ∃ a 0 ∈ A , s ⋅ t . ∀ a ∈ A , a 0 ⋅ a = a ⋅ a 0 = a . {\exists}a_0∈A,s·t. {\forall}a∈A,a_0·a=a·a_0=a. a0Ast.aAa0a=aa0=a.

  • 4、逆: ∀ a ∈ A , ∃ a − 1 ∈ A , s ⋅ t .     a ⋅ a − 1 = a 0 . {\forall}a∈A,{\exists}a^{-1}∈A,s·t. \ \ \ a·a^{-1}=a_0. aAa1Ast.   aa1=a0.

  • 可以验证:
  • 旋转矩阵集合和矩阵乘法构成群-特殊正交群/旋转矩阵群SO(3)
  • 变换矩阵集合和矩阵乘法构成群->特殊欧式群/变换矩阵群SE(3)
  • 其他常见群
  • 一般线性群 G L ( n )    指 n × n 的可逆矩阵,他们对矩阵乘法成群。                         特殊正交群 S O ( n )    也就是所谓的旋转矩阵群,其中 S O ( 2 ) 和 S O ( 3 ) 最为常见。 特殊欧式群 S E ( n )    也就是最前面提到 n 维欧式变换,如 S E ( 2 ) 和 S E ( 3 ) 。           一般线性群GL(n) \ \ \ 指n×n的可逆矩阵,他们对矩阵乘法成群。\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \\ 特殊正交群SO(n) \ \ \ 也就是所谓的旋转矩阵群,其中SO(2)和SO(3)最为常见。 \\ 特殊欧式群SE(n) \ \ \ 也就是最前面提到n维欧式变换,如SE(2)和SE(3)。\ \ \ \ \ \ \ \ \ \ 一般线性群GL(n)   n×n的可逆矩阵,他们对矩阵乘法成群。                        特殊正交群SO(n)   也就是所谓的旋转矩阵群,其中SO(2)SO(3)最为常见。特殊欧式群SE(n)   也就是最前面提到n维欧式变换,如SE(2)SE(3)          

证明:旋转矩阵集合和旋转乘法构成群

设 R 1 , R 2 , R 3 为旋转矩阵: 1 、 R 1 , R 2 为旋转矩阵。 ( R 1 R 2 ) ( R 1 R 2 ) T = I      d e t ( R 1 R 2 ) = d e t ( R 1 ) d e t ( R 2 ) = 1  故 R 1 R 2 为旋转矩阵 2 、 ( R 1 R 2 ) R 3 = R 1 ( R 2 R 3 )    由矩阵乘法,可得结论存在。 3 、 ∃ 单位矩阵 E 。(单位矩阵时旋转矩阵) R 1 E = R 1 4 、 ∀ R 为旋转矩阵。 R 1 − 1 ( R 1 − 1 ) T = R 1 − 1 ( R 1 T ) T = R 1 − 1 R 1 = I . d e t ( R 1 − 1 ) = d e t ( R 1 T ) = d e t ( R 1 ) = 1 故 ∃ R 1 − 1 为旋转矩阵, s ⋅ t .      R 1 R 1 − 1 = E 设R_1,R_2,R_3为旋转矩阵:\\ 1、R_1,R_2为旋转矩阵。 (R_1R_2)(R_1R_2)^T=I \ \ \ \ det(R_1R_2)=det(R_1)det(R_2)=1 \ 故R_1R_2为旋转矩阵\\ 2、(R_1R_2)R_3=R_1(R_2R_3) \ \ \ 由矩阵乘法,可得结论存在。\\ 3、{\exists}单位矩阵E。(单位矩阵时旋转矩阵) R_1E=R_1 \\ 4、{\forall}R为旋转矩阵。 R_1^{-1} (R_1^{-1})^T=R_1^{-1} (R_1^T)^T=R_1^{-1}R_1=I. det(R_1^{-1})=det(R_1^T)=det(R_1)=1 \\ 故{\exists}R_1^{-1}为旋转矩阵, s·t. \ \ \ \ R_1R_1^{-1}=E R1,R2,R3为旋转矩阵:1R1,R2为旋转矩阵。(R1R2)(R1R2)T=I    det(R1R2)=det(R1)det(R2)=1 R1R2为旋转矩阵2(R1R2)R3=R1(R2R3)   由矩阵乘法,可得结论存在。3单位矩阵E。(单位矩阵时旋转矩阵)R1E=R14R为旋转矩阵。R11(R11)T=R11(R1T)T=R11R1=I.det(R11)=det(R1T)=det(R1)=1R11为旋转矩阵,st.    R1R11=E

变换矩阵和矩阵乘法构成群

设 T 1 , T 2 , T 3 为变换矩阵 1 、 T 1 , T 2 为变换矩阵: T 1 T 2 = [ R 1 t 1 0 T , 1 ] [ R 2 t 2 0 T , 1 ] = [ R 1 R 2 R 1 t 2 + t 1 0 T , 1 ] 其中 R 1 R 2 ∈ S O ( 3 ) , R 1 t 2 + t 1 ∈ R 3 ;   故 T 1 T 2 ∈ 变换矩阵 . 2 、 ( T 1 T 2 ) T 3 = T 1 ( T 2 T 3 ) 由矩阵表示法 设T_1,T_2,T_3为变换矩阵\\ 1、T_1,T_2为变换矩阵: T_1T_2= \begin{bmatrix} R_1 & t_1 \\ 0^T, & 1 \\ \end{bmatrix}\begin{bmatrix} R_2 & t_2 \\ 0^T, & 1 \\ \end{bmatrix}=\begin{bmatrix} R_1R_2 & R_1t_2+t_1 \\ 0^T, & 1 \\ \end{bmatrix} \\ 其中R_1R_2∈SO(3), R_1t_2+t_1∈\mathbb{R}^3; \ \ 故T_1T_2∈变换矩阵. \\ 2、(T_1T_2)T_3=T_1(T_2T_3)由矩阵表示法 \\ T1,T2,T3为变换矩阵1T1,T2为变换矩阵:T1T2=[R10T,t11][R20T,t21]=[R1R20T,R1t2+t11]其中R1R2SO(3),R1t2+t1R3;  T1T2变换矩阵.2(T1T2)T3=T1(T2T3)由矩阵表示法
在这里插入图片描述

李群

  • 具有连续(光滑)性质的群
  • 直观上看,一个刚体能够连续第在空间上运动,故SO(3)和SE(3)都是李群。
  • 但是,SO(3)和SE(3)只有定义良好的乘法,没有加法,所以难以进行取极限,和求导等操作。

李代数

  • 李代数对应李群的正切空间。它描述了李群局部的导数。
  • 记作so(3)和se(3).
    在这里插入图片描述
  • 考虑简单的情况
    t 0 = 0 , R ( 0 ) = I R ( t ) ≈ R ( t 0 ) + R ˙ ( t 0 ) ( t − t 0 ) = I + ϕ ( t 0 ) ∧ ( t ) . → 1 、这里 ϕ ∧ 为 R ( t ) 的李代数,是李群在 ‘ 单位元 ‘ ( t 0 ) 处的切空间 t_0=0, R(0)=I \\ R(t)≈R(t_0)+\.R(t_0)(t-t_0)=I+\phi(t_0)^\wedge(t).\\ \to 1、这里\phi^\wedge为R(t)的李代数,是李群在`单位元`(t_0)处的切空间 t0=0,R(0)=IR(t)R(t0)+R˙(t0)(tt0)=I+ϕ(t0)(t).1、这里ϕR(t)的李代数,是李群在单位元(t0)处的切空间
    - 在 t 0 附近,设 ϕ 保持为常数向量 ϕ ( t 0 ) = ϕ 0 , 则有微分方程 R ˙ ( t ) = ϕ ( t 0 ) ∧ R ( t ) = ϕ ∧ R ( t ) 在t_0附近,设\phi保持为常数向量\phi(t_0)=\phi_0,则有微分方程\\ \.R(t)=\phi(t_0)^\wedge R(t)=\phi^\wedge R(t) t0附近,设ϕ保持为常数向量ϕ(t0)=ϕ0,则有微分方程R˙(t)=ϕ(t0)R(t)=ϕR(t)
  • 已知初始情况,解的: → { 2 、 R ( t ) 与 ϕ 之间的关系称为指数映射。 3 、这里的 ϕ 成为 S O ( 3 ) 对应的李代数 : s o ( 3 ) \to \begin{cases} 2、R(t)与\phi之间的关系称为指数映射。 \\ 3、这里的\phi成为SO(3)对应的李代数:so(3) \end{cases} {2R(t)ϕ之间的关系称为指数映射。3、这里的ϕ成为SO(3)对应的李代数:so(3)
    问题:so(3)的指定和性质这个指数映射如何求?

3.2.2 李代数的定义

每个李群都有与之对应的李代数,李代数描述了利群单位元数的正切空间性质。

李代数油由一个集合V,一个数域F和一个二元运算[,]组成。如果他们满足一下几条性质,称(V,F,[,])为一个李代数,基座g。
1 、密封性    ∀ X , Y ∈ V ,     [ X , Y ] ∈ V . 2 、双线性     ∀ X , Y , Z ∈ V , a , b ∈ F 有: [ a X + b Y , Z ] = a [ X , Z ] + b [ Y , Z ] , [ Z , a X + b Y ] = a [ Z , X ] + b [ Z , Y ] . 3 、自反 性 ①      ∀ X ∈ V , [ X , X ] = 0 . 4 、雅可比等价      ∀ X , Y , Z ∈ V , [ X , [ Y , Z ] ] + [ Z , [ Y , X ] ] + [ Y , [ Z , X ] ] = 0 1、密封性\ \ \ {\forall}X,Y∈V,\ \ \ [X,Y]∈V. \\ 2、双线性 \ \ \ \ {\forall}X,Y,Z∈V,a,b∈F有:\\ [aX+bY,Z]=a[X,Z]+b[Y,Z],[Z,aX+bY]=a[Z,X]+b[Z,Y]. \\ 3、自反性^① \ \ \ \ {\forall}X∈V,[X,X]=0 \\. 4、雅可比等价\ \ \ \ \ {\forall}X,Y,Z∈V,[X,[Y,Z]]+[Z,[Y,X]]+[Y,[Z,X]]=0 1、密封性   X,YV,   [X,Y]V.2、双线性    XYZVa,bF有:[aX+bY,Z]=a[X,Z]+b[Y,Z],[Z,aX+bY]=a[Z,X]+b[Z,Y].3、自反    XV[X,X]=0.4、雅可比等价     X,Y,ZV[X,[Y,Z]]+[Z,[Y,X]]+[Y,[Z,X]]=0

  • 二元运算被称为李括号
  • 例子:三位空间向量+R^3+叉积运算构成李代数。

证明:

李群SO(3)

S O ( 3 ) = { R ∈ R 3 × 3 ∣ R R T = I , d e t ( R ) = 1 } . SO(3)=\{R∈\mathbb{R}^{3×3}|RR^T=I,det(R)=1\}. SO(3)={RR3×3RRT=I,det(R)=1}.

李代数so(3)

s o ( 3 ) = { ϕ ∈ R 3 , Φ = ϕ ∧ ∈ R 3 × 3 } . Φ = ϕ ∧ = [ 0 − ϕ 3 ϕ 2 ϕ 3 0 − ϕ 1 − ϕ 2 ϕ 1 ϕ 0 ] ∈ R 3 × 3 so(3)= \{\phi∈\mathbb{R}^3,\Phi=\phi^\wedge ∈\mathbb{R}^{3×3} \}. \\ \Phi=\phi^{\wedge}=\begin{bmatrix} 0 & -\phi_3&\phi_2 \\ \phi_3 & 0&-\phi_1 \\ -\phi_2&\phi_1&\phi_0\\ \end{bmatrix}∈\mathbb{R}^{3×3}\\ so(3)={ϕR3Φ=ϕR3×3}.Φ=ϕ= 0ϕ3ϕ2ϕ30ϕ1ϕ2ϕ1ϕ0 R3×3
定义的李括号:
[ ϕ 1 , ϕ 2 ] = ( Φ 1 Φ 2 − Φ 2 Φ 1 ) ▽ . p s : ▽与 ∧ 相反 [\phi_1,\phi_2]=(\Phi_1\Phi_2-\Phi_2\Phi_1)^▽. ps:▽与\wedge 相反 [ϕ1,ϕ2]=(Φ1Φ2Φ2Φ1).ps:相反
可以证明包括李括号满足上述的性质
也可以说so(3)的元素时三维向量或者三维反对称矩阵

综上所述,把李代数理解成向量形式或者矩阵形式都可以,向量形式更加自然一些。

证明李括号:

李群SE(3)

S E ( 3 ) = { T = [ R t 0 T , 1 ] ∈ R 4 × 4 ∣ R ∈ S O ( 3 ) , t ∈ R 3 } .      特殊欧式群 S E ( 3 ) SE(3)= \{T= \begin{bmatrix} R & t \\ 0^T, & 1 \\ \end{bmatrix}∈\mathbb{R}^{4×4}|R∈SO(3),t∈\mathbb{R}^{3}\}. \ \ \ \ \ 特殊欧式群SE(3) SE(3)={T=[R0T,t1]R4×4RSO(3),tR3}.     特殊欧式群SE(3)

李代数se(3)

s e ( 3 ) = { ξ = [ ρ ϕ ] ∈ R 6 , ρ ∈ R 3 , ϕ ∈ s o ( 3 ) , ξ ∧ = [ ϕ ∧ ρ 0 T 0 ] ∈ R 4 × 4 } . se(3)=\lbrace \xi=\begin{bmatrix} \rho \\ \phi \\ \end{bmatrix}∈\mathbb{R}^6,\rho∈\mathbb{R}^3,\phi∈so(3),\xi^\wedge=\begin{bmatrix} \phi^\wedge & \rho \\ 0^T & 0\\ \end{bmatrix}∈\mathbb{R}^{4×4} \rbrace. se(3)={ξ=[ρϕ]R6,ρR3,ϕso(3),ξ=[ϕ0Tρ0]R4×4}.

se(3)由三个平移分量和三个旋转分量组成(六维向量
— — 旋转与so(3)相同
— — 平移时普通的向量,不是SE(3)上的平移分量

定义的李括号
[ ξ 1 , ξ 2 ] = ( ξ 1 ∧ ξ 2 ∧ − ξ 2 ∧ ξ 1 ∧ ) ▽ . 可以证明该李括号满足上述的性质。 [\xi_1,\xi_2]=(\xi_1^\wedge\xi_2^\wedge-\xi_2^\wedge\xi_1^\wedge)^▽.\\ 可以证明该李括号满足上述的性质。 [ξ1,ξ2]=(ξ1ξ2ξ2ξ1).可以证明该李括号满足上述的性质。
在se(3)的表示中,^不再时反对称矩阵,但仍保留记法。

3.3 指数与对数映射

3.3.1 SO(3)上的指数映射

指数映射反映了从李代数到李群的对应关系
R = e x p ( ϕ ∧ ) R=exp(\phi^\wedge) R=exp(ϕ)
– φ^是一个矩阵,任意矩阵的指数映射可以写成一个泰勒展开
e x p ( ϕ ∧ ) = ∑ n = 0 ∞ 1 n ! ( ϕ ∧ ) n . exp(\phi^\wedge)=\sum_{n=0}^{∞}\frac{1}{n!}(\phi^\wedge)^n. exp(ϕ)=n=0n!1(ϕ)n.
– 由于φ是一个向量,可以定义模长(θ)和单位方向向量a —旋转向量
ϕ = θ a \phi=\theta a ϕ=θa
– 关于a,可以验证一下性质:
{ a ∧ a ∧ = a a T − I , a ∧ a ∧ a ∧ = − a ∧ ⇐ 这为化解 T a y l o r 展开中的高阶项提供了有效方法。 \begin{cases} a^\wedge a^\wedge=aa^T-I,\\ a^\wedge a^\wedge a^\wedge=-a^\wedge \end{cases}\Leftarrow 这为化解Taylor展开中的高阶项提供了有效方法。 {aa=aaTI,aaa=a这为化解Taylor展开中的高阶项提供了有效方法。
证明:

SO(3)上的指数映射

so(3)->SO(3)在这里插入图片描述

Taylor展开:

e x p ( ϕ ) = e x p ( ϕ ) = ∑ n = 0 ∞ 1 n ! θ a ∧ n exp(\phi)=exp(\phi)=\sum_{n=0}^{∞}\frac{1}{n!}{\theta a^\wedge}^n exp(ϕ)=exp(ϕ)=n=0n!1θan
e^x的公式推倒

最后得到一个似曾相识的结果:

e x p ( θ a ∧ ) = cos ⁡ θ I + ( 1 − c o s θ ) a a T + s i n θ a ∧ . exp(\theta a^\wedge)=\cos\theta I+(1-cos\theta)aa^T+sin\theta a^ \wedge. exp(θa)=cosθI+(1cosθ)aaT+sinθa.

罗德里格斯公式:

R = cos ⁡ θ I + ( 1 − c o s θ ) n n T + s i n θ n ∧ . R=\cos\theta I+(1-cos\theta)nn^T+sin\theta n^ \wedge. R=cosθI+(1cosθ)nnT+sinθn.

sinx和cosx的泰勒展开式:
sinx和cosx的泰勒展开式:

  1. so(3)的物理意义就是旋转向量,即so(3)的李代数空间就是由旋转向量组成的空间.
  2. 如果李群(旋转矩阵,R(t),类似一个函数)代表一个球面,那么球上所有点的切线(单位元处李群的切空间李代数,旋转向量),也会组成一个球面,这样这个球面和原来的球面一样
    a ∧ a ∧ = a a T − I , a ∧ a ∧ a ∧ = − a ∧ a^\wedge a^\wedge=aa^T-I,\\ a^\wedge a^\wedge a^\wedge=-a^\wedge aa=aaTI,aaa=a

SO(3)->so(3)
反之,给定旋转矩阵时,亦能求李代数(把SO(3)中的元素对应到so(3))
ϕ = l n ( R ) √ = ( ∑ n = 0 ∞ ( − 1 ) n n + 1 ( R − I ) n + 1 ) √ \phi=ln(R)^√=(\sum_{n=0}^{∞}\frac{(-1)^n}{n+1}(R-I)^{n+1})^√ ϕ=ln(R)=(n=0n+1(1)n(RI)n+1)
但在实际当中没有必要这样求,之前已经介绍了旋转矩阵到旋转向量的转换关系了:
θ = a r c c o s ( t r ( R ) − 1 2 ) . R n = n . \theta=arccos(\frac{tr(R)-1}{2}).\\ Rn=n. θ=arccos(2tr(R)1).Rn=n.

SE(3)上的指数映射

se(3)->SE(3)
s
e x p ( ξ ∧ ) = [ ∑ n = 0 ∞ 1 n ! ( ϕ ∧ ) n ∑ n = 0 ∞ 1 ( n + 1 ) ! ( ϕ ∧ ) n ρ 0 T 1 ] ξ ∧ : 这里不是反对称矩阵 ≜ [ R J ρ 0 T 1 ] = T exp(\xi^\wedge)=\begin{bmatrix} \sum_{n=0}^{∞} \frac{1}{n!}(\phi^\wedge)^n & \sum_{n=0}^{∞}{\frac{1}{(n+1)!}}{(\phi^\wedge)^n \rho} \\ 0^T & 1\\ \end{bmatrix}\\ \xi^\wedge :这里不是反对称矩阵\\ \triangleq { \begin{bmatrix} R & J_\rho \\ 0^T & 1\\ \end{bmatrix}=T } exp(ξ)=[n=0n!1(ϕ)n0Tn=0(n+1)!1(ϕ)nρ1]ξ:这里不是反对称矩阵[R0TJρ1]=T
R就是我们熟知的SO(3)上的元素
J可以理解成李代数的平移部分到李群的平移部分差一个线性变换(雅可比矩阵)
J = s i n θ θ I + ( 1 − s i n θ θ ) a a T + 1 − c o s θ θ a ∧ . J=\frac{sin\theta}{\theta}I+(1-\frac{sin\theta}{\theta})aa^T+\frac{1-cos\theta}{\theta}a^\wedge. J=θsinθI+(1θsinθ)aaT+θ1cosθa.
SE(3)->se(3)
可以类比推得其对数映射
但是根据变换矩阵T求se(3)上的对应向量也有更简单的方法:
从 R 计算从旋转向量 ϕ 由 t = J p ( J 可由旋转向量 ϕ 得到 , ρ 可通过求解线性方程求出 . ) 从R计算从旋转向量\phi \\ 由t=Jp(J可由旋转向量\phi得到,\rho可通过求解线性方程求出.) R计算从旋转向量ϕt=Jp(J可由旋转向量ϕ得到,ρ可通过求解线性方程求出.)
在这里插入图片描述

3.3 李代数求导与扰动模型

3.3.1 BCH公式

  • 在估计和优化过程中,求导是非常必要的.
  • 但是李群元素只有乘法,无法定义导数 ( R 1 + R 2 ∉ S O ( 3 ) ) (R_1+R_2∉SO(3)) (R1+R2/SO(3))
  • 已知SO(3)和SE(3)上的李群和李代数关系,但是当SO(3)中完成两个矩阵乘法时,李代数so(3)上发生什么变化?换言之,当so(3)上做两个李代数相加时,SO(3)上是否对应着两个矩阵的乘积?
  • e x p ( ϕ 1 ∧ ) e x p ( ϕ 2 ∧ ) = e x p ( ( ϕ 1 + ϕ 2 ) ∧ ) ? exp(\phi_1^\wedge)exp(\phi_2^\wedge)=exp((\phi_1+\phi2)^\wedge)? exp(ϕ1)exp(ϕ2)=exp((ϕ1+ϕ2))?
  • 矩阵的指数函数
  • l n ( e x p ( A ) e x p ( B ) ) = A + B ? ln(exp(A)exp(B))=A+B? ln(exp(A)exp(B))=A+B?
  • 两个李代数指数映射乘积的完整形式,由BCH公式给出,由于完整形式复杂,只给出展开的前几项:
  • l n ( e x p ( A ) e x p ( b ) ) = A + B + 1 2 [ A , B ] + 1 12 [ A , [ A , B ] ] − 1 12 [ B , [ A , B ] ] + . . . . . . ln(exp(A)exp(b))=A+B+\frac{1}{2}[A,B]+\frac{1}{12}[A,[A,B]]-\frac{1}{12}[B,[A,B]]+...... ln(exp(A)exp(b))=A+B+21[A,B]+121[A,[A,B]]121[B,[A,B]]+......
    当处理两个矩阵指数乘积之时,会产生一些由李括号组成的余项.

当其中一个量很小时,忽略其高阶项,BCH具有线性浸塑形式
l n ( e x p ( ϕ 1 ∧ ) e x p ( ϕ 2 ∧ ) ) √ ≈ { J l ( ϕ 2 ) − 1 ϕ 1 + ϕ 2 i f   ϕ 1    i s    s m a l l , J r ( ϕ 1 ) − 1 ϕ 2 + ϕ 1 i f   ϕ 2    i s    s m a l l . ϕ = θ a ln(exp(\phi_1^\wedge)exp(\phi_2^\wedge))^√ ≈\begin{cases} J_l(\phi_2)^{-1}\phi_1+\phi_2 &if \ \phi_1 \ \ is \ \ small, \\ J_r(\phi_1)^{-1}\phi_2+\phi_1& if \ \phi_2 \ \ is \ \ small. \end{cases} \color {#F00}{ \phi=\theta a} ln(exp(ϕ1)exp(ϕ2)){Jl(ϕ2)1ϕ1+ϕ2Jr(ϕ1)1ϕ2+ϕ1if ϕ1  is  small,if ϕ2  is  small.ϕ=θa

理解一下这个式子:当对一个旋转矩阵 R 2 ( 李代数为 ϕ 2 ) 左乘一个微小旋转矩阵 R 1 (李代数为 ϕ 1 )时,可以近似看作,在原有的李代数 ϕ 2 上,加上了一项 J l ( ϕ 2 ) − 1 ϕ 1 理解一下这个式子:当对一个旋转矩阵R_2(李代数为\phi_2)左乘一个微小旋转矩阵R_1(李代数为\phi_1)时,可以近似看作,在原有的李代数\phi_2上,加上了一项J_l(\phi_2)^{-1}\phi_1 理解一下这个式子:当对一个旋转矩阵R2(李代数为ϕ2)左乘一个微小旋转矩阵R1(李代数为ϕ1)时,可以近似看作,在原有的李代数ϕ2上,加上了一项Jl(ϕ2)1ϕ1

其中: J l = J s i n θ θ I + ( 1 − s i n θ θ ) a a T + 1 − c o s θ θ a ∧ J l − 1 = θ 2 c o t θ 2 I + ( 1 − θ 2 c o t θ 2 ) a a T − θ 2 a ∧ J r ( ϕ ) = J l ( − ϕ ) J_l=J\frac{sin\theta}{\theta}I+(1-\frac{sin\theta}{\theta})aa^T+\frac{1-cos\theta}{\theta}a^\wedge \\ J_l^{-1}=\frac{\theta}{2}cot\frac{\theta}{2}I+(1-\frac{\theta}{2}cot\frac{\theta}{2})aa^T-\frac{\theta}{2}a^\wedge \\ J_r(\phi)=J_l(-\phi) Jl=JθsinθI+(1θsinθ)aaT+θ1cosθaJl1=2θcot2θI+(12θcot2θ)aaT2θaJr(ϕ)=Jl(ϕ)

-so(3)上的BCH近似

( 1 ) 某个旋转 R ,对应的李代数为 ϕ . 给它左乘一个微小旋转,记作 Δ R , 则对应李代数为 Δ ϕ . → Δ R = Δ ϕ 在李群上,得到的为 Δ R ⋅ R ,而在李代数上,根据 B C H 近似,作为 J l − 1 ( ϕ ) Δ ϕ + ϕ . e x p ( Δ ϕ ∧ ) e x p ( ϕ ∧ ) = e x p ( ( ϕ + J l − 1 ( ϕ ) Δ ϕ ) ∧ ) 在李群上左乘小量时,李代数上的加法相差左雅可比的逆 (1)某个旋转R,对应的李代数为\phi.给它左乘一个微小旋转,记作\Delta R,则对应李代数为\Delta\phi. \to \Delta R=\Delta\phi \\ 在李群上,得到的为 \Delta R·R,而在李代数上,根据BCH近似,作为J_l^{-1}(\phi)\Delta\phi+\phi.\\ exp(\Delta\phi^\wedge)exp(\phi^\wedge)=exp((\phi+J_l^{-1}(\phi)\Delta\phi)^\wedge)\\ \color{#0F0}{在李群上左乘小量时,李代数上的加法相差左雅可比的逆} (1)某个旋转R,对应的李代数为ϕ.给它左乘一个微小旋转,记作ΔR,则对应李代数为Δϕ.ΔR=Δϕ在李群上,得到的为ΔRR,而在李代数上,根据BCH近似,作为Jl1(ϕ)Δϕ+ϕ.exp(Δϕ)exp(ϕ)=exp((ϕ+Jl1(ϕ)Δϕ))在李群上左乘小量时,李代数上的加法相差左雅可比的逆
(2)反之
e x p ( ( ϕ + Δ ϕ ) ∧ ) e x p ( ( J l Δ ϕ ) ∧ ) e x p ( ϕ ∧ ) = e x p ( ( J r Δ ϕ ) ∧ ) . 李代数上进行小量加法时,李代数上乘法相差左(右)雅可比 exp((\phi+\Delta\phi)^\wedge)exp((J_l\Delta\phi)^\wedge)exp(\phi^\wedge)=exp((J_r\Delta\phi)^\wedge).\\ \color{#0F0}{李代数上进行小量加法时,李代数上乘法相差左(右)雅可比} exp((ϕ+Δϕ))exp((JlΔϕ))exp(ϕ)=exp((JrΔϕ)).李代数上进行小量加法时,李代数上乘法相差左(右)雅可比

e x p ( ( ϕ + Δ ϕ ) ∧ ) = e x p ( ( ϕ + J l − 1 ( ϕ ) J l ( ϕ ) Δ ϕ ) ∧ ) = e x p ( ( J l ( ϕ ) Δ ϕ ) ∧ ) e x p ( ϕ ∧ ) . exp((\phi+\Delta\phi)\wedge)=exp((\phi+J_l^{-1}(\phi)J_l(\phi)\Delta\phi)^\wedge) \\ =exp((J_l(\phi)\Delta\phi)^\wedge)exp(\phi^\wedge). exp((ϕ+Δϕ))=exp((ϕ+Jl1(ϕ)Jl(ϕ)Δϕ))=exp((Jl(ϕ)Δϕ))exp(ϕ).

se(3)上BCH近似

e x p ( Δ ξ ∧ ) e x p ( ξ ∧ ) ≈ e x p ( ( J l − 1 Δ ξ + ξ ) ∧ ) , e x p ( ξ ∧ ) e x p ( Δ ξ ∧ ) ≈ e x p ( ( J r − 1 Δ ξ + ξ ) ∧ ) . p s :其中: ( J l − 1 Δ ξ + ξ ) ∧ 形势复杂,一个 6 × 6 的矩阵。 exp(\Delta\xi^\wedge)exp(\xi^\wedge)≈exp((J_l^{-1}\Delta\xi+\xi)^\wedge),\\ exp(\xi^\wedge)exp(\Delta\xi^\wedge)≈exp((J_r^{-1}\Delta\xi+\xi)^\wedge).\\ \color{#00F}ps:其中:(J_l^{-1}\Delta\xi+\xi)^\wedge形势复杂,一个6×6的矩阵。 exp(Δξ)exp(ξ)exp((Jl1Δξ+ξ)),exp(ξ)exp(Δξ)exp((Jr1Δξ+ξ)).ps:其中:(Jl1Δξ+ξ)形势复杂,一个6×6的矩阵。

背景知识:
在SLAM中,我们要估计一个相机的位置和姿态,该位置是由SO(3)上的旋转矩阵或SE(3)上的变换矩阵描述的。
设某个时刻机器人的位姿为T,它观察到了一个世界坐标位于P的点,产生了一个观测数据Z,根据坐标变换关系Z=TP+W可知,由于噪声的存在,Z往往不可能精确地满足Z=TP这个关系,所以我们通常会计算理想的观测与实际数据的误差。
假设一共由N个这样的路标点和观测,则就有N个上式,则对于机器人的位姿估计,相当于寻找一个最优的T,使得整体误差最小化:
min ⁡ T J ( T ) = ∑ i = 1 N ∣ ∣ z i − T p i ∣ ∣ 2 2 . \min_TJ(T)=\sum_{i=1}^N||z_i-Tp_i||_2^2. TminJ(T)=i=1N∣∣ziTpi22.
求解此问题,需要计算目标函数J对于变换矩阵T的导数。需要注意的是,我们经常会构建与位姿有关的函数,然后讨论该函数对于位姿的导数,从而调整当前的估计值。

使用李代数解决求导问题的思路分为两种:
(1)、用李代数表示位姿,然后根据李代数加法对李代数求导。
(2)、对李群左乘或右乘微小扰动,然后对该扰动求导。

3.3.1 导数模型

  • 假设对一个空间点P进行了旋转,得到了RP. 现在要计算旋转之后点的坐标相对于旋转的导数。
  • δ ( R p ) δ R . 不严谨的记号 \frac{\delta(Rp)}{\delta R}. 不严谨的记号 δRδ(Rp).不严谨的记号
  • 由于矩阵没有加法,导数无法定义,则我们设R对应的李代数为φ,则转而计算:
  • δ ( e x p ϕ ∧ ) p δ ϕ \frac{\delta(exp\phi^\wedge)p}{\delta \phi} δϕδ(expϕ)p
  • 在这里插入图片描述
    上面内容中的 φ = ϕ \color{#F0F}上面内容中的 φ=\phi 上面内容中的φ=ϕ

3.3.2 扰动模型

左扰动模型

设左扰动ΔR对应的李代数为φ,然后对φ求导
δ ( R p ) δ φ = lim ⁡ φ → 0 e x p ( φ ∧ ) e x p ( ϕ ∧ ) p − e x p ( ϕ ∧ ) p φ      泰勒展开舍去高阶项近似 . = lim ⁡ φ → 0 ( 1 + φ ) e x p ( ϕ ∧ ) p − e x p ( ϕ ∧ ) p φ   = lim ⁡ φ → 0 φ ∧ R p φ = lim ⁡ φ → 0 − ( R p ) ∧ φ φ = − ( R p ) ∧ . ∧ 反对称符号看作叉积,交换之后变号。 \frac{\delta(Rp)}{\deltaφ }=\lim_{φ\to0}\frac{exp(φ^\wedge)exp(\phi^\wedge)p-exp(\phi^\wedge)p}{φ} \ \ \ \ \color{#00F}{泰勒展开舍去高阶项近似.} \\\color{#000} =\lim_{φ\to0} \frac{(1+φ)exp(\phi^\wedge)p-exp(\phi^\wedge)p}{φ} \\\ =\lim_{φ\to0}\frac{φ^\wedge Rp}{φ}= \lim_{φ\to 0}\frac{-(Rp)^\wedgeφ}{φ}=-(Rp)^\wedge.\\ \color{#F0F}\wedge反对称符号看作叉积,交换之后变号。 δφδ(Rp)=φ0limφexp(φ)exp(ϕ)pexp(ϕ)p    泰勒展开舍去高阶项近似.=φ0limφ(1+φ)exp(ϕ)pexp(ϕ)p =φ0limφφRp=φ0limφ(Rp)φ=(Rp).反对称符号看作叉积,交换之后变号。

1、对李群左乘或者右乘微小扰动,然后对这个扰动求导,即把增量的扰动添加在李群上,然后利用李代数表示此扰动。
2、把增量直接定义在李群上需要注意:传统上我们通常用加法表示增量,而李群对加法不封闭。所以这里的增量不再用加法表示,而是乘法。
3、乘法:增量指的是,在原来的基础上改变一点点。当对旋转矩阵做乘法,乘以的是一个趋近于单位矩阵,也就是差不多没旋转,这样就是对其”加了“一个小量。
4、单位矩阵的李代数为0
5、与代数模型相比,省去了一个雅可比的计算,更为实用。

右扰动模型

设左扰动ΔR对应的李代数为φ,然后对R求导
δ ( R p ) δ R = δ ( e x p ( ϕ ∧ ) p ) δ ( e x p ( ϕ ∧ ) ) = lim ⁡ φ → 0 e x p ( ϕ ∧ ) e x p ( φ ∧ ) p − e x p ( ϕ ∧ ) p φ      泰勒展开舍去高阶项近似 . = lim ⁡ φ → 0 e x p ( ϕ ∧ ) ( I + φ ∧ ) p − e x p ( ϕ ∧ ) p φ   = lim ⁡ φ → 0 e x p ( ϕ ∧ ) φ ∧ p φ = lim ⁡ φ → 0 − e x p ( ϕ ∧ ) p ∧ φ φ = − e x p ( ϕ ∧ ) p ∧ = − R p ∧ . \frac{\delta(Rp)}{\delta R }= \frac{\delta(exp(\phi^\wedge)p)}{\delta(exp(\phi^\wedge))}\\ =\lim_{φ\to0}\frac{exp(\phi^\wedge)exp(φ^\wedge)p-exp(\phi^\wedge)p}{φ} \ \ \ \ \color{#00F}{泰勒展开舍去高阶项近似.} \\\color{#000} =\lim_{φ\to0} \frac{exp(\phi^\wedge)(I+φ\wedge)p-exp(\phi^\wedge)p}{φ} \\\ =\lim_{φ\to0}\frac{exp(\phi^\wedge)φ^\wedge p}{φ}= \lim_{φ\to 0}\frac{-exp(\phi^\wedge)p^\wedgeφ}{φ}=-exp(\phi^\wedge)p^\wedge=-Rp^\wedge. \\ δRδ(Rp)=δ(exp(ϕ))δ(exp(ϕ)p)=φ0limφexp(ϕ)exp(φ)pexp(ϕ)p    泰勒展开舍去高阶项近似.=φ0limφexp(ϕ)(I+φ)pexp(ϕ)p =φ0limφexp(ϕ)φp=φ0limφexp(ϕ)pφ=exp(ϕ)p=Rp.

SE(3)李代数上的扰动模型

某空间点p经过一次变换T(对应李代数为ξ),得到Tp。现在,给T左乘一个扰动:ΔT=exp(δξ),我们设扰动项的李代数为δξ=[δρ,δϕ]T,那么:
在这里插入图片描述

3.3.3 导数模型与扰动模型的对

1、共同点:用李代数表示姿态,然后根据李代数的加法来对李代数求导
2、传统导数方法:把增量直接定义在李代数上;扰动模型把增量直接定义到李群上。
3、扰动模型:对李群左乘或者右乘微小扰动给,然后对这个扰动模型求导,即把增量的扰动添加在李群上,然后利用李代数表示此扰动。
4、与导数模型相比,省去了一个雅可比计算,更为实用。

3.4 总结

1、在SLAM中,除了刚体运动之外,还要对他们进行估计和优化,因为SLAM整个过程就是在不断地估计机器人的位姿与地图。为了做这件事,需要对变换矩阵进行差值、求导、迭代等操作。
2、问题:旋转矩阵、变换矩阵(李群)对加法不封闭。
3、引入李代数。
4、对于某个时刻的R(t)(李群空间),存在一个三维向量φ(李代数),用来描述R在t时刻的局部导数。他们之间通过指数和对数映射进行交换。
5、直观的想法:能否利用李代数上的加法,定义李群元素的导数?
6 、 l n ( e x p ( A ) e x p ( B ) ) = A + B ? l n ( e x p ( A ) e x p ( B ) ) = A + B + 1 2 [ A , B ] + 1 12 [ A , [ A , B ] ] − 12 [ B , [ A , B ] ] + . . . 6、ln(exp(A)exp(B))=A+B?\\ ln(exp(A)exp(B))=A+B+\frac{1}{2}[A,B]+\frac{1}{12}[A,[A,B]]-12[B,[A,B]]+... 6ln(exp(A)exp(B))=A+B?ln(exp(A)exp(B))=A+B+21[A,B]+121[A,[A,B]]12[B,[A,B]]+...
7、使用李代数解决导数问题的思路分为两种:
用李代数表示姿态,然后根据李代数加法来对李代数求导。
对李群左乘或右乘微小扰动,然后对该扰动求导。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值