初识SLAM到认识李群学习笔记
本文为学习高翔、张涛等著的《视觉SLAM十四讲》的学习笔记,通过研究视觉SLAM,从三维空间刚体运动引出群论和李代数。
1. 初识SLAM
单目相机以二维的形式记录了三维的世界,缺少场景的深度维度,没有直观的距离感,也就是相机与物体间的距离无法获得。
而双目相机和深度相机,可以通过两个相机之间的距离(基线),以及大量的计算才能估计出距离,有了空间感。
在视觉SLAM中,前端和计算机视觉研究领域更为相关,比如图像的特征提取与匹配等,后端则主要是滤波与非线性优化算法。
后端优化与回环监测
度量地图
度量地图强调精确的表示地图中物体的位置关系,通常用稀疏(Sparse)与稠密(dense)对其分类。
在二维度量地图中体现为许多个小格子(Grid),而在三维度量地图中则体现为许多小方块(Voxel)。通常,一个小块含有占据、空闲、未知三种状态,以表达该格内是否有物体。
机器人运动SLAM数学描述:
- 运动轨迹:机器人连续运动离散化,变成离散时刻t=1,...,Kt=1,...,Kt=1,...,K当中发生的事情。在每个时刻,用xxx表示机器人自身位置。于是时刻位置记为x1,...,xKx_{1},...,x_{K}x1,...,xK,构成了机器人的轨迹。
- 地图路标:假设地图由路标组成,每个时刻观测到一部分路标有NNN个,用y1,...,y2y_{1},...,y_{2}y1,...,y2表示。
运动:我们分析从k−1k-1k−1时刻到kkk时刻,机器人的位置xxx是如何变化的。
xk=f(xj−1,uk,wk)x_{k} = f(x_{j-1},u_{k},w_{k})xk=f(xj−1,uk,wk) (2.1)
这里,uku_{k}uk是运动传感器的读数或输入,wkw_{k}wk是该过程中的噪声。观测:假设机器人在kkk时刻于xkx_{k}xk处探测到某个路标yjy_{j}yj。
zk,j=h(yj,xk,vk,j)z_{k,j} = h(y_{j},x_{k},v_{k,j})zk,j=h(yj,xk,vk,j) (2.2)
这里,vk,jv_{k,j}vk,j是这次观测的噪声。
2. 三维空间刚体运动
2.2. 点与向量、坐标系
点是空间中的基本元素,没有长度、体积,两个点连接起来就构成了向量,向量也可以看做从一个点到另一个点的一个箭头。当我们指定向量所在的三维空间的某个坐标系时,才可以谈论该向量在此坐标系下的坐标。
用线性代数描述,三维空间中的某个点的坐标用R3\mathbb{R}^3R3来表述。假设在这个线性空间内,我们找到该空间的一组基(e1,e2,e3)(e_{1},e_{2},e_{3})(e1,e2,e3),那么,任意向量aaa在这组基下就有一个坐标:
a=[e1,e2,e3][a1a2a3]=a1e1+a2e2+a3e3a = [e_{1},e_{2},e_{3}]\begin{bmatrix}a_{1}\\ a_{2}\\ a_{3}\end{bmatrix} = a_{1}e_{1}+a_{2}e_{2}+a_{3}e_{3}a=[e1,e2,e3]⎣⎡a1a2a3⎦⎤=a1e1+a2e2+a3e3
这里(a1,a2,a3)T(a_{1},a_{2},a_{3})^T(a1,a2,a3)T称为aaa在此基下的坐标。
坐标系通常由3个正交的坐标轴组成(也可以非正交)。例如,当给定xxx和yyy轴时,zzz轴就可以通过右手(或左手)法则由x×yx \times yx×y定义出来。
关于向量内积、外积:
a.b=∣a∣∣b∣cos(a,b)a.b=|a||b|cos(a,b)a.b=∣a∣∣b∣cos(a,b)
a×b=∥e1e2e3a1a2a3b1b2b3∥=[a2b3−a3b2a3b1−a1b3a1b2−a2b1]=[0−a3a2a30−a1−a2a10]b=defa∧ba \times b = \begin{Vmatrix}e_{1} & e_{2} & e_{3}\\ a_{1} & a_{2} & a_{3}\\ b_{1} & b_{2} & b_{3} \end{Vmatrix} = \begin{bmatrix}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{bmatrix} = \begin{bmatrix}0 & -a_{3} & a_{2}\\ a_{3} & 0 & -a_{1}\\ -a_{2} & a_{1} & 0\end{bmatrix} b \overset{\underset{\mathrm{def}}{}}{=} a^{\wedge }ba×b=∥∥∥∥∥∥e1a1b1e2a2b2e3a3b3∥∥∥∥∥∥=⎣⎡a2b3−a3b2a3b1−a1b3a1b2−a2b1⎦⎤=⎣⎡0a3−a2−a30a1a2−a10⎦⎤b=defa∧b
对于外积运算,我们引入∧^{\wedge}∧符号,把aaa写成一个矩阵,事实上是个反对称矩阵,将∧^{\wedge}∧符号记成反对称矩阵。
a∧=[0−a3a2a30−a1−a2a10]a^{\wedge } = \begin{bmatrix}0 & -a_{3} & a_{2}\\ a_{3} & 0 & -a_{1}\\ -a_{2} & a_{1} & 0\end{bmatrix}a∧=⎣⎡0a3−a2−a30a1a2−a10⎦⎤
2.2. 坐标系变换与刚体运行
在实际机器人场景中,相机是一个移动坐标系xc,yc,zcx_{c},y_{c},z_{c}xc,yc,zc,机器人运动系统被定义为惯性坐标系(或者叫世界坐标系)xw,yw,zwx_{w},y_{w},z_{w}xw,yw,zw。
例如相机视野中的向量ppp,在相机移动坐标系下坐标为pcp_{c}pc,从世界坐标系看为pwp_{w}pw,如何转换呢?需要一个矩阵TTT。
两个坐标系之间的运动由一个旋转加上一个平移组成,这种运行称为刚体运动。坐标做旋转和平移变换,称为欧式变换。
我们再假设某个单位正交基经过变换转变成(e1′,e2′,e3′)(e_{1}{'},e_{2}{'},e_{3}{'})(e1′,e2′,e3′)。而对于同一个向量aaa(没有随坐标系而变),在两个坐标系下的坐标分别为[a1,a2,a3]T[a_{1}, a_{2},a_{3}]^{T}[a1,a2,a3]T和[a1′,a2′,a3′]T[a_{1}{'}, a_{2}{'},a_{3}{'}]^{T}[a1′,a2′,a3′]T。
[e1,e2,e3][a1a2a3]=[e1′,e2′,e3′][a1′a2′a3′][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′]⎣⎡a1′a2′a3′⎦⎤
上述等式两边同时左乘[e1Te2Te3T]\begin{bmatrix}e_{1}^{T}\\ e_{2}^{T}\\ e_{3}^{T}\end{bmatrix}⎣⎡e1Te2Te3T⎦⎤,那么变换为:
[a1a2a3]=[e1Te1′e1Te2′e1Te2′e2Te1′e2Te2′e2Te2′e3Te1′e3Te2′e3Te2′][a1′a2′a3′]=defRa′\begin{bmatrix}a_{1}\\ a_{2}\\ a_{3}\end{bmatrix} = \begin{bmatrix} e_{1}^{T}e_{1}{'} & e_{1}^{T}e_{2}{'} & e_{1}^{T}e_{2}{'}\\ e_{2}^{T}e_{1}{'} & e_{2}^{T}e_{2}{'} & e_{2}^{T}e_{2}{'}\\ e_{3}^{T}e_{1}{'} & e_{3}^{T}e_{2}{'} & e_{3}^{T}e_{2}{'} \end{bmatrix} \begin{bmatrix}a_{1}{'}\\ a_{2}{'}\\ a_{3}{'}\end{bmatrix} \overset{\underset{\mathrm{def}}{}}{=} Ra{'}⎣⎡a1a2a3⎦⎤=⎣⎡e1Te1′e2Te1′e3Te1′e1Te2′e2Te2′e3Te2′e1Te2′e2Te2′e3Te2′⎦⎤⎣⎡a1′a2′a3′⎦⎤=defRa′
把中间的矩阵拿出来,定义为一个矩阵RRR。这个矩阵由两组基之间的内积组成,刻画了旋转前后同一向量的坐标变换关系。只要旋转一样,这个矩阵就是一样的。因此称为旋转矩阵:
R=[e1Te1′e1Te2′e1Te2′e2Te1′e2Te2′e2Te2′e3Te1′e3Te2′e3Te2′]R =\begin{bmatrix} e_{1}^{T}e_{1}{'} & e_{1}^{T}e_{2}{'} & e_{1}^{T}e_{2}{'}\\ e_{2}^{T}e_{1}{'} & e_{2}^{T}e_{2}{'} & e_{2}^{T}e_{2}{'}\\ e_{3}^{T}e_{1}{'} & e_{3}^{T}e_{2}{'} & e_{3}^{T}e_{2}{'} \end{bmatrix} R=⎣⎡e1Te1′e2Te1′e3Te1′e1Te2′e2Te2′e3Te2′e1Te2′e2Te2′e3Te2′⎦⎤
同时,该矩阵各个分量是两个坐标系基的内积,由于基向量的长度为1,所以实际上是各基向量夹角的余弦值。
AAA是一个nnn阶方阵,AтA^{т}Aт是AAA的转置。如果有AтA=EA^{т}A=EAтA=E(单位阵),即AтA^{т}Aт等于AAA的逆,则称AAA是正交矩阵。
旋转矩阵约束,必须是一个正交矩阵。反之,行列式为1的正交矩阵也是一个旋转矩阵。所以,可以将nnn维旋转矩阵的集合定义如下:
SO(n)={R∈Rn×n∣RRT=I,det(R)=1}SO(n) = \left \{ R \in \mathbb{R}^{n \times n} | R R^{T} = I ,det(R) = 1 \right \}SO(n)={R∈Rn×n∣RRT=I,det(R)=1}
其中,SO(n)SO(n)SO(n)是特殊正交群。SO(3)SO(3)SO(3)是指三维空间的旋转。
欧式变换描述为:
旋转:
a′=R−1a=RTaa{'} = R^{-1}a = R^{T}aa′=R−1a=RTa
加上平移:
a′=Ra+ta{'} = Ra + ta′=Ra+t
则,实际上述相机例子的变换为:
pw=Rwcpc+twcp_{w} = R_{wc}p_{c} + t_{wc}pw=Rwcpc+twc
其中,RwcR_{wc}Rwc是指“把相机移动坐标系ccc”变换到世界坐标系www中。(由于向量乘在这个矩阵的右边,它的下标是从右读到左)
这种三维变换在多次变换的情况下,比较啰嗦,通过数学技巧,在一个三维向量的末尾添加1,将变成四位向量,称为齐次坐标。
[a′1]=[Rt0T1][a1]=defT[a1]\begin{bmatrix}a'\\ 1\end{bmatrix}=\begin{bmatrix}R & t\\ 0^{T} & 1\end{bmatrix}\begin{bmatrix}a\\ 1\end{bmatrix}\overset{\underset{\mathrm{def}}{}}{=} T\begin{bmatrix}a\\ 1\end{bmatrix}[a′1]=[R0Tt1][a1]=defT[a1]
我们用a~\tilde{a}a~表示aaa的齐次坐标,则两次变换叠加有较好的表现形式:
b~=T1a~,c~=T2b~⇒c~=T2T1a~\tilde{b} = T_{1}\tilde{a} , \tilde{c}=T_{2}\tilde{b} \Rightarrow \tilde{c} = T_{2}T_{1}\tilde{a}b~=T1a~,c~=T2b~⇒c~=T2T1a~
这样的符号还是挺麻烦的,我们在不引起歧义的情况下,可以写成:b=Tab=Tab=Ta。
关于变换矩阵TTT,其左上角为旋转矩阵,右侧为平移向量,左下角为000向量,右下角为1。这种矩阵称为特殊欧式矩阵:
SE(3)={T=[Rt0T1]∈R4×4}∣R∈SO(3),t∈R4SE(3)=\left \{ T= \begin{bmatrix}R & t\\ 0^{T} & 1\end{bmatrix} \in \mathbb{R}^{4 \times 4} \right \} | R \in SO(3) , t \in \mathbb{R}^{4}SE(3)={T=[R0Tt1]∈R4×4}∣R∈SO(3),t∈R4
与SO(3)SO(3)SO(3)一样,求解该矩阵的逆表示一个方向的变换:
T−1=[RT−RTt0T1]T^{-1} = \begin{bmatrix}R^{T} & -R^{T}t\\ 0^{T} & 1\end{bmatrix}T−1=[RT0T−RTt1]
2.3. 旋转向量和欧拉角
旋转矩阵表达旋转有两个缺点:
- SO(3)SO(3)SO(3)的旋转矩阵有9个量,但一次选择只用了3个自由度,变换矩阵有16个量表达6个自由度,有没有更紧凑的方式;
- 旋转矩阵必须是正交矩阵的约束,且行列式为1,求解困难。
因此,我们用一个三维向量表达旋转,用一个六维向量变大变换。事实上,任意旋转都可以用一个旋转轴和一个旋转角来表达。同样,变换矩阵则使用一个旋转向量和一个平移向量表达一次变换,这时的变量维数正好是六维。
从旋转向量到旋转矩阵的转换过程由罗德里格斯公式表明:
R=cosθI+(1−cosθ)nnT+sinθn∧R=cos \theta I + (1 - cos \theta)nn^{T} + sin \theta n^{\wedge}R=cosθI+(1−cosθ)nnT+sinθn∧
因此:
θ=arccostr(R)−12\theta = arccos \frac{tr(R)-1}{2}θ=arccos2tr(R)−1
tr()tr()tr()是指求迹(trace),即是求矩阵的对角线元素之和。
欧拉角定义了一种直观的方式描述旋转——用3个分离的转角,分解成3次绕ZYXZYXZYX的分别旋转。
ZYXZYXZYX转角相当于把任意旋转分解以下3个轴的转角:
- 绕物体的ZZZ轴旋转,得到偏航角yaw。
- 绕旋转之后的YYY轴旋转,得到俯仰角pitch。
- 绕旋转之后的XXX轴旋转,得到滚转角roll。
最后,可以用[r,p,y]T[r,p,y]^{T}[r,p,y]T三维向量描述任意旋转。
2.4. 四元素
四元素是一种扩展复数,一个四元数qqq拥有一个实部和3个虚部,本质上是一种扩展复数,描述3维的量,用四元数
q=q0+q1i+q2j+q3kq = q_{0} + q_{1}i+q_{2}j+q_{3}kq=q0+q1i+q2j+q3k
{i2=j2=k2=−1ij=k,ji=−kjk=i,kj=−iki=j,ik=−j\left \{\begin{matrix} i^{2}= j^{2} = k^{2} = -1 \\ ij = k,ji = -k \\ jk = i, kj = -i\\ ki = j,ik = -j \end{matrix}\right. ⎩⎪⎪⎨⎪⎪⎧i2=j2=k2=−1ij=k,ji=−kjk=i,kj=−iki=j,ik=−j
如果把i,j,ki,j,ki,j,k看作三个坐标轴,那么他们与自己的乘法和复数一样,相互之间的乘法和外积一样。有时,可以用一个标量和一个向量表达四元数:
q=[s,v]T,s=q0∈R,v=[q1,q2,q3]T∈R3q=[s,v]^{T} , s= q_{0} \in \mathbb{R}, v=[q_{1},q_{2},q_{3}]^{T} \in \mathbb{R}^{3}q=[s,v]T,s=q0∈R,v=[q1,q2,q3]T∈R3
从四元数到旋转矩阵的变换关系:
R=vvT+s2I+2sv∧+(v∧)2R = vv^{T} + s^{2}I +2sv^{\wedge} + (v^{\wedge})^{2}R=vvT+s2I+2sv∧+(v∧)2
最后,四元数到旋转向量的转换公式如下:
{θ=2arccosq0[nx,ny,nz]T=[q1,q2,q3]Tsinθ2\left \{\begin{matrix} \theta = 2arccos q_{0} \\ [n_{x},n_{y},n_{z}]^{T} = \frac {[q_{1},q_{2},q_{3}]^{T}}{sin \frac{\theta}{2}} \end{matrix}\right. {θ=2arccosq0[nx,ny,nz]T=sin2θ[q1,q2,q3]T
2.5. 其他几种变换方式
相似变换:
TS=[sRt0T1]T_{S}=\begin{bmatrix} sR &t \\ 0^{T} & 1 \end{bmatrix} TS=[sR0Tt1]
3. 李群与李代数基础
三维旋转矩阵构成了特殊正交群SO(3)SO(3)SO(3):
SO(3)={R∈R3×3∣RRT=I,det(R)=1}SO(3) = \left \{ R \in \mathbb{R}^{3 \times 3} | R R^{T} = I ,det(R) = 1 \right \}SO(3)={R∈R3×3∣RRT=I,det(R)=1}
变换矩阵构成了特殊欧氏群SE(3)SE(3)SE(3):
SE(3)={T=[Rt0T1]∈R4×4}∣R∈SO(3),t∈R4SE(3)=\left \{ T= \begin{bmatrix}R & t\\ 0^{T} & 1\end{bmatrix} \in \mathbb{R}^{4 \times 4} \right \} | R \in SO(3) , t \in \mathbb{R}^{4}SE(3)={T=[R0Tt1]∈R4×4}∣R∈SO(3),t∈R4
旋转矩阵、变换矩阵对加法是不封闭的,对乘法是封闭的。
R1R2∈SO(3),T1T2∈SE(3)R_{1}R_{2} \in SO(3) , T_{1}T_{2} \in SE(3)R1R2∈SO(3),T1T2∈SE(3)
对于这种只有一个(良好的)运算的集合,我们称之为群。
3.1. 群
群就是对称性,是一种集合加上一种运算的代数结构。集合记作AAA,运算记作...,则群记作G=(A,.)G=(A,.)G=(A,.)。群要求运算满足以下4个条件:
- 封闭性:∀a1,a2∈A,a1.a2∈A\forall a_{1},a_{2} \in A,a_{1}.a_{2} \in A∀a1,a2∈A,a1.a2∈A
- 结合律:∀a1,a2,a3∈A,(a1.a2).a3=a1.(a2.a3)\forall a_{1},a_{2},a_{3} \in A,(a_{1}.a_{2}).a_{3} = a_{1}.(a_{2}.a_{3})∀a1,a2,a3∈A,(a1.a2).a3=a1.(a2.a3)
- 幺元:∃∈A,s.t.∀a∈A,a0.a=a.a0=a\exists \in A,s.t. \forall a \in A,a_{0}.a = a.a_{0} = a∃∈A,s.t.∀a∈A,a0.a=a.a0=a
- 逆:∀∈A,∃a−1∈A,s.t.a.a−1=a0\forall \in A, \exists a^{-1} \in A, s.t. a.a^{-1} = a_{0}∀∈A,∃a−1∈A,s.t.a.a−1=a0
其中,s.t.s.t.s.t.表示约束条件。
矩阵中常见的群有:
- 一般线性群GL(n)GL(n)GL(n) 指n×nn \times nn×n的可逆矩阵,它们对矩阵乘法成群。
- 特殊正交群SO(n)SO(n)SO(n) 就是旋转矩阵群,其中SO(2)SO(2)SO(2)和SO(3)SO(3)SO(3)最为常见。
- 特殊欧式群SE(n)SE(n)SE(n) 就是nnn维欧氏变换,如SE(2)SE(2)SE(2)和SE(3)SE(3)SE(3)。
李群是指具有连续(光滑)性质的群,SO(n)SO(n)SO(n)和SE(n)SE(n)SE(n)在实数空间上是连续的,可以直观想象一个刚体能够连续地在空间中运动。
∀\forall∀表示所有,全部意思,Any的倒写。
3.2. 李代数的引出
我们说,RRR是某个相机的旋转,它会随着时间连续地变换,即为时间的函数:R(t)R(t)R(t)。其旋转矩阵,有:
R(t)R(t)T=IR(t)R(t)^{T} = IR(t)R(t)T=I
我们对时间求导,经过推导,找到一个三维向量ϕ(t)∈R3\phi(t) \in \mathbb{R}^{3}ϕ(t)∈R3,使之有:
R˙(t)R(t)T=ϕ(t)∧\dot{R}(t)R(t)^{T} = \phi(t)^{\wedge}R˙(t)R(t)T=ϕ(t)∧
等式两边同乘R(t)R(t)R(t),由于RRR为正交矩阵。
R˙(t)=ϕ(t)∧R(t)\dot{R}(t) = \phi(t)^{\wedge}R(t)R˙(t)=ϕ(t)∧R(t)
我们根据导数的定义,把R(t)R(t)R(t)在t=0t=0t=0附近进行一阶泰勒展开:
R(t)≈R(t0)+R˙(t0)(t−t0)=I+ϕ(t0)∧(t)R(t) \approx R(t_{0}) + \dot{R}(t_{0})(t-t_{0}) \\ =I + \phi(t_{0})^{\wedge(t)}R(t)≈R(t0)+R˙(t0)(t−t0)=I+ϕ(t0)∧(t)
我们看到ϕ\phiϕ反映了RRR的导数性质。同时在t0t_{0}t0附近,设ϕ\phiϕ保持为常数ϕ(t0)=ϕ0\phi(t_{0})=\phi_{0}ϕ(t0)=ϕ0。
上式是一个关于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)
旋转矩阵RRR与另一个反对称矩阵ϕ0∧t\phi_{0}^{\wedge}tϕ0∧t通过指数关系发生关联:
- ϕ\phiϕ是对应到SO(3)SO(3)SO(3)上的李代数so(3)so(3)so(3)
- 李群与李代数间的指数/对数映射。
3.3. 李代数
每个李群都对应一种李代数。每个李群都有李代数,李代数描述了李群的局部性质。
- 李代数so(3)so(3)so(3)
so(3)={ϕ∈R3,Φ=ϕ∧∈R3}so(3) = \left \{\phi \in \mathbb{R}^{3}, \Phi = \phi^{\wedge} \in \mathbb{R}^{3} \right \}so(3)={ϕ∈R3,Φ=ϕ∧∈R3}
so(3)so(3)so(3)是一个由三维向量组成的集合,每个向量对应一个反对称矩阵,可以用于表达旋转矩阵的导数。
R(t)=exp(ϕ0∧t)R(t) = exp(\phi_{0}^{\wedge}t)R(t)=exp(ϕ0∧t)
- 李代数se(3)se(3)se(3)
se(3)={ξ=[ρϕ]∈R6,ρ∈R3,ϕ∈so(3),ξ∧=[ϕ∧ρ0T0]∈R4×4}se(3) = \left\{ \xi = \begin{bmatrix}\rho \\ \phi\end{bmatrix} \in \mathbb{R}^{6},\rho \in \mathbb{R}^{3},\phi \in so(3), \xi^{\wedge} = \begin{bmatrix} \phi^{\wedge}& \rho \\ 0^{T} & 0 \end{bmatrix} \in \mathbb{R}^{4 \times 4} \right\}se(3)={ξ=[ρϕ]∈R6,ρ∈R3,ϕ∈so(3),ξ∧=[ϕ∧0Tρ0]∈R4×4}
简单地把se(3)se(3)se(3)理解成“由一个平移加上一个so(3)元素构成的向量so(3)元素构成的向量so(3)元素构成的向量”。
初识SLAM到认识李群学习笔记相关推荐
- 视觉SLAM十四讲学习笔记-第四讲---第五讲学习笔记总结---李群和李代数、相机
第四讲---第五讲学习笔记如下: 视觉SLAM十四讲学习笔记-第四讲-李群与李代数基础和定义.指数和对数映射_goldqiu的博客-CSDN博客 视觉SLAM十四讲学习笔记-第四讲-李代数求导与扰动模 ...
- 视觉SLAM十四讲学习笔记-第二讲-初识SLAM
专栏系列文章如下: 视觉SLAM十四讲学习笔记-第一讲_goldqiu的博客-CSDN博客 "定位"和"建图",可以看成感知的"内外之分". ...
- 视觉SLAM十四讲学习笔记-第七讲-视觉里程计-三角测量和实践
专栏汇总 视觉SLAM十四讲学习笔记-第一讲_goldqiu的博客-CSDN博客 视觉SLAM十四讲学习笔记-第二讲-初识SLAM_goldqiu的博客-CSDN博客 视觉SLAM十四讲学习笔记-第 ...
- 视觉SLAM十四讲学习笔记-第七讲-视觉里程计-对极几何和对极约束、本质矩阵、基础矩阵
专栏系列文章如下: 专栏汇总 视觉SLAM十四讲学习笔记-第一讲_goldqiu的博客-CSDN博客 视觉SLAM十四讲学习笔记-第二讲-初识SLAM_goldqiu的博客-CSDN博客 视觉SLA ...
- 视觉SLAM十四讲学习笔记-第七讲-视觉里程计-特征点法和特征提取和匹配实践
专栏系列文章如下: 视觉SLAM十四讲学习笔记-第一讲_goldqiu的博客-CSDN博客 视觉SLAM十四讲学习笔记-第二讲-初识SLAM_goldqiu的博客-CSDN博客 视觉SLAM十四讲学习 ...
- 视觉SLAM十四讲学习笔记-第六讲-非线性优化的实践-高斯牛顿法和曲线拟合
专栏系列文章如下: 视觉SLAM十四讲学习笔记-第一讲_goldqiu的博客-CSDN博客 视觉SLAM十四讲学习笔记-第二讲-初识SLAM_goldqiu的博客-CSDN博客 视觉SLAM十四讲学习 ...
- 视觉SLAM十四讲学习笔记-第六讲-非线性优化的非线性最小二乘问题
专栏系列文章如下: 视觉SLAM十四讲学习笔记-第一讲_goldqiu的博客-CSDN博客 视觉SLAM十四讲学习笔记-第二讲-初识SLAM_goldqiu的博客-CSDN博客 视觉SLAM十四讲学习 ...
- 视觉SLAM十四讲学习笔记-第六讲-非线性优化的状态估计问题
专栏系列文章如下: 视觉SLAM十四讲学习笔记-第一讲_goldqiu的博客-CSDN博客 视觉SLAM十四讲学习笔记-第二讲-初识SLAM_goldqiu的博客-CSDN博客 视觉SLAM十四讲学习 ...
- 视觉SLAM十四讲学习笔记-第四讲-Sophus实践、相似变换群与李代数
专栏系列文章如下: 视觉SLAM十四讲学习笔记-第一讲_goldqiu的博客-CSDN博客 视觉SLAM十四讲学习笔记-第二讲-初识SLAM_goldqiu的博客-CSDN博客 视觉SLAM十四讲学习 ...
最新文章
- Linux国内源介绍
- 实现 对象在内存中的引用一致性 之第一步
- leetcode算法题--组合总和 Ⅳ★
- 学习excel数据分析_为什么Excel是学习数据分析的最佳方法
- Codeforces Round #694 Div. 2
- QPW 操作日志表(tl_operate_log)
- 中国股市暴涨暴跌全记录
- 打造运维大脑:翼支付高速发展背后,甜橙金融的云化智能演进
- Java解决空引用_在java中检查空引用的乐观方法
- linux mysql phpadmin_Linux系统下安装phpmyadmin方法
- 设计模式笔记--委派
- P1144 最短路计数
- [PyTorch] 损失函数
- 【C++】继承时构造函数和析构函数
- 几种.NET平台数据持久化框架介绍
- 开元酒店在中国的签约及在营酒店规模正式超过600家
- html 制作人物模型,玩家制作《辐射4》人物模型图 惊艳无比让人叹服
- 威联通服务器无限重启,威联通NAS,时不时的读盘,无法休眠的问题
- r5 7600x和r7 7700x差距
- java文件后缀_关于java文件扩展名认识
热门文章
- 将bmp图像转换为ppm格式
- Day04 list(列表)
- 无限试驾2 服务器,《无限试驾 2》PC版本配置需求公布
- 有这么一套,阿里架构师熬夜一周整理的java进阶路线,你看不看?
- 《充分利用你的24小时》读后感
- linux if then 语法错误,Linux Shell 之 if-then 的高级特性
- 700万人预约,十年人气IP上线却屡遭外挂侵扰
- Hdu 2512 一卡通大冒险 (贝尔数)
- LeetCode算法解析之“贪心”解决反转矩阵最大得分问题
- 模块化(module.exports、包、)