从零开始学习VIO笔记 --- 第一讲:基础知识(四元数,李代数)

  • 一. 向量的内积与外积
  • 二. 旋转与平移
    • 2.1 旋转表示 --- 旋转矩阵R
    • 2.2 平移向量
    • 2.3 变换矩阵T与齐次坐标
    • 2.4 旋转表示 --- 旋转向量与欧拉角
    • 2.5 旋转表示 --- 四元数
      • 2.5.1 四元数
      • 2.5.2 四元数对时间的导数
    • 2.6 李群与李代数
      • 2.6.1 李群
      • 2.6.1 李代数的引出
      • 2.6.2 李代数 so(3)so(3)so(3) 与se(3)se(3)se(3)
      • 2.6.3 李代数求导
      • 2.6.4 李群左右扰动
  • 三. 旋转连乘雅克比
  • 四. 作业
    • 4.1 题目一 --- VIO 文献阅读
      • 4.1.1 视觉与 IMU 进行融合之后有何优势?
      • 4.1.2 有哪些常见的视觉 +IMU 融合方案?有没有工业界应用的例子?
      • 4.1.3 学术界,VIO 研究有哪些新进展?有没有将(深度)学习方法用到 VIO 中的例子?
    • 4.2 题目二 --- 四元数和李代数更新
      • 4.1.1 题目:
      • 4.1.2 解答
    • 4.3 题目三 --- 推导其他导数
      • 4.3.1 题目
      • 4.3.2 解答

一. 向量的内积与外积

主要针对三维向量,两个三维向量必定共面;
内积 :
a⋅b=a1b1+a2b2+a3b3=∑i=13aibi=∣a∣∣b∣cos⁡⟨a,b⟩a\cdot b=a_1b_1+a_2b_2+a_3b_3=\sum_{i=1}^3a_ib_i=\vert a\vert\vert b\vert\cos\left\langle a,b\right\rangle a⋅b=a1​b1​+a2​b2​+a3​b3​=i=1∑3​ai​bi​=∣a∣∣b∣cos⟨a,b⟩
为标量
外积/叉乘 :
a×b=[0−a3a2a30−a1−a2a10]b=a∧ba\times b=\begin{bmatrix}\begin{array}{ccc}0&-a_3&a_2\\a_3&0&-a_1\\-a_2&a_1&0\end{array}\end{bmatrix}b=a^{\wedge}\;b a×b=⎣⎡​0a3​−a2​​−a3​0a1​​a2​−a1​0​​⎦⎤​b=a∧b
外积结果为矢量,此矢量与向量 aaa 和向量 bbb 都垂直;它的大小为∣a∣∣b∣sin⁡⟨a,b⟩|a||b|\sin\left\langle a,b\right\rangle∣a∣∣b∣sin⟨a,b⟩,大小等于向量 aaa,bbb 组成的平行四边形面积大小;

a∧a^{\wedge}a∧ 为向量 aaa 的反对称矩阵 AAA;(任意向量都对应着唯一的一个反对称矩阵)

a∧=Aa^{\wedge} = Aa∧=A
A∨=aA^{\vee} = aA∨=a

二. 旋转与平移

2.1 旋转表示 — 旋转矩阵R

有坐标系 aaa,基为 a=[a1,a2,a3]a=\begin{bmatrix}a_1,&a_2,&a_3\end{bmatrix}a=[a1​,​a2​,​a3​​] (注:为3 ×\times× 3的单位正交矩阵) ,在坐标系 aaa 下,有一个空间点 xxx,坐标为 [x1x2x3]\begin{bmatrix}x_1\\x_2\\x_3\end{bmatrix}⎣⎡​x1​x2​x3​​⎦⎤​ ,坐标系 aaa 经过旋转后为坐标系 bbb,基为 b=[b1,b2,b3]b=\begin{bmatrix}b_1,&b_2,&b_3\end{bmatrix}b=[b1​,​b2​,​b3​​],xxx点在坐标系 bbb 下的坐标为 [x1′x2′x3′]\begin{bmatrix}x_1'\\x_2'\\x_3'\end{bmatrix}⎣⎡​x1′​x2′​x3′​​⎦⎤​ 。对于 xxx点,它并未发生位置变换,向量关系没有改变,所以有下式成立:

[a1,a2,a3][x1x2x3]=[b1,b2,b3][x1′x2′x3′]\begin{bmatrix}a_1,&a_2,&a_3\end{bmatrix}\begin{bmatrix}x_1\\x_2\\x_3\end{bmatrix}\;=\;\begin{bmatrix}b_1,&b_2,&b_3\end{bmatrix}\begin{bmatrix}x_1'\\x_2'\\x_3'\end{bmatrix} [a1​,​a2​,​a3​​]⎣⎡​x1​x2​x3​​⎦⎤​=[b1​,​b2​,​b3​​]⎣⎡​x1′​x2′​x3′​​⎦⎤​
点 xxx在坐标系 bbb 下便可以通过如下表示:

[x1′x2′x3′]=([b1,b2,b3])−1[a1,a2,a3][x1x2x3]=([b1,b2,b3])T[a1,a2,a3][x1x2x3]=([b1b2b3][a1,a2,a3])[x1x2x3]=Rba[x1x2x3]\begin{array}{l}\begin{bmatrix}x_1'\\x_2'\\x_3'\end{bmatrix}={(\;\begin{bmatrix}b_1,&b_2,&b_3\end{bmatrix})}^{-1}\begin{bmatrix}a_1,&a_2,&a_3\end{bmatrix}\begin{bmatrix}x_1\\x_2\\x_3\end{bmatrix}\;={(\;\left[\begin{array}{clc}b_1,&b_2,&b_3\end{array}\right])}^T\begin{bmatrix}a_1,&a_2,&a_3\end{bmatrix}\begin{bmatrix}x_1\\x_2\\x_3\end{bmatrix}\\\;\;\;\;\;\;\;\;\;\;=\left(\begin{bmatrix}b_1\\b_2\\b_3\end{bmatrix}\begin{bmatrix}a_1,&a_2,&a_3\end{bmatrix}\right)\;\begin{bmatrix}x_1\\x_2\\x_3\end{bmatrix}\;=\;R_{ba}\;\begin{bmatrix}x_1\\x_2\\x_3\end{bmatrix}\;\\\end{array} ⎣⎡​x1′​x2′​x3′​​⎦⎤​=([b1​,​b2​,​b3​​])−1[a1​,​a2​,​a3​​]⎣⎡​x1​x2​x3​​⎦⎤​=([b1​,​b2​,​b3​​])T[a1​,​a2​,​a3​​]⎣⎡​x1​x2​x3​​⎦⎤​=⎝⎛​⎣⎡​b1​b2​b3​​⎦⎤​[a1​,​a2​,​a3​​]⎠⎞​⎣⎡​x1​x2​x3​​⎦⎤​=Rba​⎣⎡​x1​x2​x3​​⎦⎤​​
即:
[x1′x2′x3′]=Rba[x1x2x3]\begin{array}{l}\begin{bmatrix}x_1'\\x_2'\\x_3'\end{bmatrix}=\;R_{ba}\begin{bmatrix}x_1\\x_2\\x_3\end{bmatrix}\\\end{array} ⎣⎡​x1′​x2′​x3′​​⎦⎤​=Rba​⎣⎡​x1​x2​x3​​⎦⎤​​
(注:直角坐标系的基是3 ×\times× 3的正交矩阵,行列式为1,并相互正交,为单位正交基;
基与基相乘依旧为正交基,有 aTa=Ia−1=aT\begin{array}{l}a^Ta=I\;\;\;a^{-1}=a^T\\\end{array}aTa=Ia−1=aT​ )

旋转矩阵即为 RbaR_{ba}Rba​ ,称坐标系 aaa 到 bbb 的旋转矩阵

2.2 平移向量

向量 χ\chiχ 经过旋转和平移之后为 χ′\chi'χ′ ,其中旋转矩阵为 RRR ,平移向量为 t=[t1t2t3]t=\begin{bmatrix}t_1\\t_2\\t_3\end{bmatrix}t=⎣⎡​t1​t2​t3​​⎦⎤​
χ′=Rχ+t\chi'=R\chi+t χ′=Rχ+t

2.3 变换矩阵T与齐次坐标

为了方便进行坐标系变换中的乘法运算,我们引入变换矩阵 T=[Rt0T1]T=\begin{bmatrix}R&t\\0^T&1\end{bmatrix}T=[R0T​t1​];为了对其维数,引入齐次坐标[X′1]\begin{bmatrix}X^{'}\\1\end{bmatrix}[X′1​] ,则有:
[X′1]=[Rt0T1][X1]=T[X1]\begin{bmatrix}X^{'}\\1\end{bmatrix}\;=\;\begin{bmatrix}R&t\\0^T&1\end{bmatrix}\begin{bmatrix}X\\1\end{bmatrix}\;=T\begin{bmatrix}X\\1\end{bmatrix} [X′1​]=[R0T​t1​][X1​]=T[X1​]

2.4 旋转表示 — 旋转向量与欧拉角

旋转向量
任意旋转可以通过一个旋转轴和旋转角表示;即可以通过旋转向量(或角轴,为三维向量)表示,旋转向量的方向与旋转轴方向一至,模长为旋转角度;
假设单位向量n=[n1n2n3]n=\begin{bmatrix}n_1\\n_2\\n_3\end{bmatrix}n=⎣⎡​n1​n2​n3​​⎦⎤​ 与 旋转轴方向一至,旋转角度为 θ\thetaθ ,则旋转向量为 θn\theta nθn

旋转向量转换到旋转矩阵R :(罗德里格斯公式)
R=cos⁡(θI)+(1−cos⁡θ)nnT+sin⁡θn∧R\;=\cos\left(\theta I\right)\;+\;(1-\cos\theta)nn^T\;+\;\sin\theta n^{\wedge} R=cos(θI)+(1−cosθ)nnT+sinθn∧
欧拉角

能直观的表示旋转,但是会出现万向锁问题

  1. 绕 Z 轴转,偏航角 yaw
  2. 绕 Y 轴转,俯仰角 pitch
  3. 绕 X 轴转,翻滚角 roll

2.5 旋转表示 — 四元数

2.5.1 四元数

四元数用 q=[q0q1q2q3]=[sv]q=\begin{bmatrix}q_0\\q_1\\q_2\\q_3\end{bmatrix}=\begin{bmatrix}s\\v\end{bmatrix}q=⎣⎢⎢⎡​q0​q1​q2​q3​​⎦⎥⎥⎤​=[sv​] 四维向量表示 ;q0q_0q0​ , sss 为实部,[q1,q2,q3]T\begin{bmatrix}q_1,&q_2,&q_3\end{bmatrix}^T[q1​,​q2​,​q3​​]T , vvv 为虚部;

旋转向量 变换到 四元数q:
q=[cos⁡θ2,nsin⁡θ2]Tq={\lbrack\cos\frac\theta2,n\sin\frac\theta2\rbrack}^T q=[cos2θ​,nsin2θ​]T
四元数 qqq 到旋转矩阵 RRR 的变换 :
R=vvT+s2I+2sv∧+(v∧)2R\;=vv^T \;+s^2I+2sv^{\wedge} + ( v^{\wedge}\;)^2 R=vvT+s2I+2sv∧+(v∧)2

2.5.2 四元数对时间的导数

设初始旋转为 q=[s,v]q = [s, v]q=[s,v],然后,发生了角轴为 ω,θ\omega,\thetaω,θ 的旋转(右乘,对应四元数记作 △q\bigtriangleup q△q),那么 qqq 相对该旋转的导数为:

因此,若角速度为 ω\omegaω,那么旋转的时间导数即为:

除了利用四元数求导,亦可利用李代数进行旋转求导
使用旋转矩阵 RRR 时,角速度为 ω\omegaω,那么 RRR 相对于时间的导数可写作

在优化带有旋转的函数时,通常计算一个增量 ϕ∈so(3)\phi \in so(3)ϕ∈so(3),然后用它更新当前估计值:(由于这个增量并没有指定方向,所以左乘右乘都可以)

表示旋转可以用 矩阵RRR表示,也可以用 四元数表示,是一样的形式进行更新。

2.6 李群与李代数

2.6.1 李群

群:只有一个合法的运算的集合

旋转矩阵 RRR 构成特殊正交群 SO(3)SO(3)SO(3)
SO(3)={R∈R3×3∣RRT=I,det(R)=1}SO(3)=\{R\in\mathbb{R}^{3\times3}\;\vert\;RR^T=I\;,det(R)\;=\;1\} SO(3)={R∈R3×3∣RRT=I,det(R)=1}

变换矩阵 TTT 构成特殊欧式群 SE(3)SE(3)SE(3)
SE(3)={T=[Rt0T1]∈R4×4∣R∈SO(3),t∈R3}SE(3)=\{T=\begin{bmatrix}R&t\\0^T&1\end{bmatrix}\in \mathbb{R}^{4\times4}\;\vert\;R\in SO(3)\;,t\in \mathbb{R}^3\} SE(3)={T=[R0T​t1​]∈R4×4∣R∈SO(3),t∈R3}

2.6.1 李代数的引出

相机运动过程时,旋转矩阵可以用 R(t)R(t)R(t),RRR 关于时间 ttt 的函数表示
对于旋转矩阵
RRT=IRR^T = IRRT=I
于是有
R(t)R(t)T=IR(t)R(t)^T = IR(t)R(t)T=I 等式两边对时间求,得
R.(t)R(t)T+R(t)R.(t)T=0\overset.R(t)R{(t)}^T\;+\;R(t)\overset.R{(t)}^T\;=\;0R.(t)R(t)T+R(t)R.(t)T=0⇒R.(t)R(t)T=−R(t)R.(t)T⇒R.(t)R(t)T=−(R.(t)R(t)T)T\Rightarrow\overset.R(t)R{(t)}^T\;=\;-R(t)\overset.R{(t)}^T\\\Rightarrow\overset.R(t)R{(t)}^T\;=\;-\left(\overset.R(t)R{(t)}^T\right)^T\\ ⇒R.(t)R(t)T=−R(t)R.(t)T⇒R.(t)R(t)T=−(R.(t)R(t)T)T 说明 R.(t)R(t)T\overset.R(t)R{(t)}^TR.(t)R(t)T 为反对称矩阵,存在一个三维向量 ϕ(t)\phi(t)ϕ(t) 与之对应,有
R.(t)R(t)T=ϕ(t)∧\overset.R(t)R{(t)}^T=\phi(t)^\wedgeR.(t)R(t)T=ϕ(t)∧ 等式两边右乘 R(t)R(t)R(t),得:
R.(t)=ϕ(t)∧R(t)\overset.R(t)=\phi(t)^\wedge R(t)R.(t)=ϕ(t)∧R(t)

总结:
1. 说明对旋转矩阵求导,等价于在旋转矩阵左乘一个反对称矩阵
如何求得这个反对称矩阵呢 ?
对于t0t_0t0​时刻, R(0)=IR(0) = IR(0)=I ,把R(t)R(t)R(t)在t=0t=0t=0附近进行一阶泰勒展开:
R(t)≈R(t0)+R.(t0)(t−t0)=R(t0)+ϕ(t0)∧R(t0)(t−t0)=I+ϕ(t0)∧tR(t)\approx R(t_0)+\overset.R(t_0)(t-t_0)=R(t_0)+{\phi(t_0)}^\wedge R(t_0)(t-t_0)\\=I+{\phi(t_0)}^\wedge t R(t)≈R(t0​)+R.(t0​)(t−t0​)=R(t0​)+ϕ(t0​)∧R(t0​)(t−t0​)=I+ϕ(t0​)∧t
此为一个关于 RRR 的微分方程,且 R(0)=IR(0) = IR(0)=I,便可解得:
R(t)=exp(ϕ0∧t)R(t)=exp(\phi_0^\wedge t)R(t)=exp(ϕ0∧​t)

2. 说明在 t=0t=0t=0的附近,旋转矩阵可以由exp(ϕ0∧t)exp(\phi_0^\wedge t)exp(ϕ0∧​t),解出。

给定某个时刻的 RRR,我们可以求出一个ϕ\phiϕ ,描述了RRR 在局部的导数关系; ϕ\phiϕ 是SO(3)SO(3)SO(3)对应的李代数 so(3)so(3)so(3);
R=exp(ϕ∧)R= exp(\phi^\wedge) R=exp(ϕ∧)

2.6.2 李代数 so(3)so(3)so(3) 与se(3)se(3)se(3)

→\rightarrow→ 给定一个ϕ\phiϕ 可以通过指数映射exp(ϕ∧)exp(\phi^\wedge )exp(ϕ∧),求出RRR
→\rightarrow→ 给定一个RRR 可以通过对数映射,求出ϕ\phiϕ

RRR的李代数为 so(3)so(3)so(3),变换矩阵 TTT 的李代数为 se(3)se(3)se(3)

so(3)so(3)so(3)中的ϕ\phiϕ 变换到SO(3)SO(3)SO(3)中的 RRR:
R=exp(ϕ∧)R= exp(\phi^\wedge) R=exp(ϕ∧)
SO(3)SO(3)SO(3)中的 RRR 变换到 so(3)so(3)so(3)中的ϕ\phiϕ:
ϕ=ln⁡(R)∨\phi= {\ln\left(R\right)}^\vee ϕ=ln(R)∨
总结:
so(3)so(3)so(3) 这个李代数集合中的元素为 三维向量 ϕ\phiϕ 或者是三维反对称矩阵ϕ∧\phi^\wedgeϕ∧

se(3)se(3)se(3) 这个李代数集合中的元素为 六维向量 ξ=[ρϕ]\xi=\begin{bmatrix}\rho\\\phi\end{bmatrix}ξ=[ρϕ​] ,其中ρ\rhoρ 表示平移,ϕ\phiϕ 则是上面的旋转三维向量;但是 ρ\rhoρ 并不直接等于变换矩阵中的 ttt;对应的四维 反对称矩阵 ξ∧=[ϕ∧ρ0T0]\xi^\wedge=\begin{bmatrix}\phi^\wedge&\rho\\0^T&0\end{bmatrix}ξ∧=[ϕ∧0T​ρ0​]

2.6.3 李代数求导

使用李代数表示姿态,根据李代数加法运算对李代数求导
旋转之后的位姿对旋转矩阵求导:∂(Rp)∂R\frac{\partial(Rp)}{\partial R}∂R∂(Rp)​ ,由于SO(3)SO(3)SO(3)没有加法运算,转而使用李代数加法运算去求导:
∂(exp(ϕ∧)p)∂ϕ=lim⁡△ϕ→0exp((ϕ+△ϕ)∧)p−exp(ϕ∧)p△ϕ=...=(−Rp)∧Jl\frac{\partial(exp(\phi^\wedge)p)}{\partial\phi}=\lim_{\triangle\phi\rightarrow0}\frac{exp({(\phi+\triangle\phi)}^\wedge)p-exp(\phi^\wedge)p}{\triangle\phi}=...={(-Rp)}^\wedge J_l∂ϕ∂(exp(ϕ∧)p)​=△ϕ→0lim​△ϕexp((ϕ+△ϕ)∧)p−exp(ϕ∧)p​=...=(−Rp)∧Jl​

2.6.4 李群左右扰动

左扰动求导:
对 RRR 进行一次左扰动△R\triangle R△R,左乘在RRR左侧,△R\triangle R△R对应的李代数设为φ\varphiφ , RpRpRp对φ\varphiφ 求导:
∂(Rp)∂φ=lim⁡φ→0△RRp−Rpφ=lim⁡φ→0exp(φ∧)exp(ϕ∧)p−exp(ϕ∧)pφ=lim⁡φ→0(I+φ∧)exp(ϕ∧)p−exp(ϕ∧)pφ=lim⁡φ→0φ∧exp(ϕ∧)pφ=lim⁡φ→0φ∧Rpφ=lim⁡φ→0−(Rp)∧φφ=−(Rp)∧\frac{\partial(Rp)}{\partial\varphi}=\lim_{\varphi\rightarrow0}\frac{\bigtriangleup RRp-Rp}\varphi=\lim_{\varphi\rightarrow0}\frac{exp(\varphi^\wedge)exp(\phi^\wedge)p-exp(\phi^\wedge)p}\varphi\\\;\;\;\;\;\;\;\;=\lim_{\varphi\rightarrow0}\frac{(I+\varphi^\wedge)exp(\phi^\wedge)p-exp(\phi^\wedge)p}\varphi=\lim_{\varphi\rightarrow0}\frac{\varphi^\wedge exp(\phi^\wedge)p}\varphi\\=\lim_{\varphi\rightarrow0}\frac{\varphi^\wedge Rp}\varphi=\lim_{\varphi\rightarrow0}\frac{-{(Rp)}^\wedge\varphi}\varphi=-{(Rp)}^\wedge∂φ∂(Rp)​=φ→0lim​φ△RRp−Rp​=φ→0lim​φexp(φ∧)exp(ϕ∧)p−exp(ϕ∧)p​=φ→0lim​φ(I+φ∧)exp(ϕ∧)p−exp(ϕ∧)p​=φ→0lim​φφ∧exp(ϕ∧)p​=φ→0lim​φφ∧Rp​=φ→0lim​φ−(Rp)∧φ​=−(Rp)∧
此式比上面用李代数求导少了一个雅克比计算,所以扰动模型更实用。

旋转点右扰动求导:

三. 旋转连乘雅克比

四. 作业

4.1 题目一 — VIO 文献阅读

参考文献: “A review of visual inertial odometry from filtering and optimisation perspectives”. Advanced Robotics 29.20 (2015)

4.1.1 视觉与 IMU 进行融合之后有何优势?

4.1.2 有哪些常见的视觉 +IMU 融合方案?有没有工业界应用的例子?

4.1.3 学术界,VIO 研究有哪些新进展?有没有将(深度)学习方法用到 VIO 中的例子?

4.2 题目二 — 四元数和李代数更新

4.1.1 题目:

4.1.2 解答

需要的库:

sophus :李群SO(3),SE(3) --- Sophus::SO3d ;   // d表示 double
eigen3 :旋转矩阵R --- Eigen : :Matrix3d; 微小增量ω ---- Vector3d  ; 李代数(三维向量) ---- Vector3d ;四元数--- Quaterniond

引入头文件

#include <iostream>
#include <sophus/se3.hpp>
#include <sophus/so3.hpp>
#include <eigen3/Eigen/Core>
#include <eigen3/Eigen/Dense>

旋转向量 θn\theta nθn (角度+单位三维向量) 转为旋转矩阵 RRR

// Eigen::AngleAxisd(M_PI / 2, Eigen::Vector3d(0, 0, 1)) 旋转向量
Eigen::Matrix3d R = Eigen::AngleAxisd(M_PI / 2, Eigen::Vector3d(0, 0, 1)).toRotationMatrix();

旋转矩阵 RRR 构造四元数 qqq

Quaterniond q(R);

旋转矩阵 RRR ,四元数 qqq 构造 SO(3)SO(3)SO(3) ; Sophus::SO3d 是一个类 ; SO(3)SO(3)SO(3)本质是矩阵 RRR;
类方法 SO3_R.matrix() 返回其旋转矩阵形式

 Sophus::SO3d SO3_R(R); // 从旋转矩阵构造Sophus::SO(3)Sophus::SO3d SO3_q(q); // 也可以使用四元素构造Sophus::SO(3)
std::cout << "SO3 :  "  << SO3_R.matrix() << std::endl;

1.使用旋转矩阵更新 R←Rexp(ω∧)R\leftarrow R\;exp(\omega^\wedge)R←Rexp(ω∧) , ω\omegaω 微小增量李代数,三维向量

Vector3d update_so3(0.01, 0.02, 0.03);                            //更新量
Sophus::SO3d SO3_updated = SO3_R * Sophus::SO3d::exp(update_so3); //右乘更新

SO(3) 用矩阵R显示

std::cout << "SO3  R= \n"<< SO3_updated.matrix() <<std::endl;

2.使用四元数更新 q←q⊗[1,12ω]Tq\leftarrow q\;\otimes\begin{bmatrix}1,&\frac12\omega\end{bmatrix}^Tq←q⊗[1,​21​ω​]T

Eigen::Quaterniond update_q(1, update_so3(0) / 2, update_so3(1) / 2, update_so3(2) / 2);
update_q.normalize();   //四元数归一化处理
Eigen::Quaterniond q_updated = q * update_q;

四元数 转为 矩阵R显示

Eigen : : Matrix3d  q2R =  q_updated.toRotationMatrix()
std::cout << "q2R = \n"<< q2R <<std::endl;

4.3 题目三 — 推导其他导数

4.3.1 题目

4.3.2 解答


从零开始学习VIO笔记 --- 第一讲:基础知识(四元数,李代数)相关推荐

  1. 从零开始学习VIO笔记 --- 第四讲:滑动窗口(基于滑动窗口算法的 VIO 系统:可观性和一致性)

    从零开始学习VIO笔记 --- 第四讲:滑动窗口(基于滑动窗口算法的 VIO 系统:可观性和一致性) 一. 从高斯分布到信息矩阵 1.1 高斯分布 1.2 高斯分布和协方差矩阵 1.3 信息矩阵 二. ...

  2. 从零开始学习VIO笔记 --- 第三讲:基于优化的IMU和视觉信息融合

    从零开始学习VIO笔记 --- 第三讲:基于优化的IMU和视觉信息融合 一. 预备知识 1.1 知识点概述 1.2 PnP 中的重投影误差函数 1.3 后端优化中重投影误差函数/BA问题 二. VIO ...

  3. php百分比乘加,PHP学习笔记第一篇 基础知识

    基础知识 我将php语言学习里面最最基础的部分,需要第一个学的,必须牢牢掌握的,归类到一起. 大纲 1.数据类型 2.变量 3.常量 4.操作符 5.流程控制 6.数组 7.字符串操作 8.正则 基础 ...

  4. MySQL学习笔记-第一篇-基础知识与命令

    目录 1 登录命令 1.1 主机域名登录 1.2 主机ip登录 2 库命令 2.1 显示库 2.2 创建数据库 2.3 删除数据库 2.4 MySQL-8.新特性 3 表命令 3.1 创建数据表 3. ...

  5. [Python笔记]第一篇:基础知识

    本篇主要内容有:什么是python.如何安装python.py解释器解释过程.字符集转换知识.传参.流程控制 初识Python 一.什么是Python Python是一种面向对象.解释型计算机程序设计 ...

  6. python知识笔记_[Python笔记]第一篇:基础知识

    二.为什么要使用Python 优点: 学习成本低 开发效率高–拥有丰富而且强大的第三方库 高级语言–不用关心底层运作细节 可扩展性–Python是一门胶水语言,能于其他语言如C ,C#进行扩展 缺点: ...

  7. 【Python学习笔记】第一章基础知识:格式化输出,转义字符,变量类型转换,算术运算符,运算符优先级和赋值运算符,逻辑运算符,世界杯案例题目,条件判断if语句,猜拳游戏与三目运算符

    Python学习笔记之[第一章]基础知识 前言: 一.格式化输出 1.基本格式: 2.练习代码: 二.转义字符 1.基本格式: 2.练习代码: 3.输出结果: 三.输入 1.基本格式: 2.练习代码: ...

  8. 《Java并发编程实践》学习笔记之一:基础知识

    <Java并发编程实践>学习笔记之一:基础知识 1.程序与进程 1.1 程序与进程的概念 (1)程序:一组有序的静态指令,是一种静态概念:  (2)进程:是一种活动,它是由一个动作序列组成 ...

  9. 前端学习笔记(js基础知识)

    前端学习笔记(js基础知识) JavaScript 输出 JavaScript 数据类型 常见的HTML事件 DOM 冒泡与捕获 流程控制语句 for..in 计时器 let,var,const的区别 ...

最新文章

  1. php composer 无法下载,php – composer无法安装laravel / passport
  2. NLP学习笔记:word2vec
  3. Oracle入门(十二G)之序列
  4. php5.3降5.2,php5.3降级为5.2
  5. 打开慢_苹果手机聊天回复特别慢?打开这个开关,1分钟打200字都没问题
  6. 经济日报:法定数字货币的推出将会大大压缩比特币的投资空间
  7. Qt信号与槽传递QList动态数组
  8. DevExpress控件之主题
  9. 30多岁,你的存款有多少?
  10. Charles使用教程(Mac)
  11. 智慧校园整体解决方案
  12. php逻辑判断真假,逻辑判断之真假推理型答题技巧
  13. 路飞学城python开发ftp_路飞学城-Python开发集训-第一章
  14. H3C设备的基本配置
  15. Excel函数--SUM计算累计销量
  16. 建设路肩适用性设备分析之路缘石滑模机
  17. 【can总线】stm32的can控制器
  18. jQuery库——引入CDN
  19. 客户端提示连接oracle出错,客户端登录报错:与服务端的网络连接发生异常,请您联系管理员处理...
  20. 云呼叫中心?云通讯?云联络 中心?傻傻分不清楚

热门文章

  1. 详解 SCI SCIE SSCI
  2. lustre lnet
  3. 故障分析 | Cassandra 用户信息 list Error
  4. python中 什么意思_请问python中%代表什么意思?
  5. 真正的手机密码大全!(完整版)(转)
  6. 互联网学习记录:三件套_Javascript
  7. 一阶欧拉近似matlab,MATLAB改进欧拉法与四阶龙格-库塔求解一阶常微分方程.doc
  8. 生产服务器硬盘寻道时间,HD Tune平均读写/寻道时间对比_希捷 NAS HDD 4TB 5900转 64MB_内存硬盘评测-中关村在线...
  9. SQL Sever2012安装错误——Windows Installer错误消息:打开安装日志文件的错误的原因及解决方案
  10. App Store ASO必备指南:3个步骤做好aso优化