SLAM中的零空间问题

  • 0. 引言
  • 1.矩阵零空间
  • 2.一个解题的例子
  • 3.SLAM系统中的可观性定义
  • 4.SLAM中的零空间问题
  • 5.解决
  • 6.update

0. 引言

首先回顾一下张宇讲的。对Ax=0Ax=0Ax=0、矩阵AAA.

  • 线性相关,有非0解,不是满秩,行列式为0, 有多余向量。
  • 线性无关, 只有0解,满秩,行列式不为0,没有多余向量。

1.矩阵零空间

对于矩阵AAA,所有满足Ax=0Ax=0Ax=0,的向量xxx组成的集合NNN,可以证明NNN包含零向量,且对线性运算封闭,因此NNN是一个向量子空间,这个子空间叫做矩阵A的零空间。

求矩阵的零空间,就是求方程组 Ax=0Ax = 0Ax=0 的解空间。

矩阵可以看做一组列向量 C1,C2,...,CnC_1,C_2,...,C_nC1​,C2​,...,Cn​,那么如果这组向量是线性无关的,那么AX=0AX=0AX=0的解空间只包含一个向量:零向量。反之,如果零空间包含非零向量,说明矩阵的列向量线性相关。

2.一个解题的例子

解线性方程组:
{x1+2x2+3x3+x4=52x1+4x2−x4=−3−x1−2x2+3x3+2x4=8x1+2x2−9x3−5x4=−21\left\{\begin{array}{c}{x_{1}+2 x_{2}+3 x_{3}+x_{4}=5} \\ {2 x_{1}+4 x_{2} \quad-x_{4}=-3} \\ {-x_{1}-2 x_{2}+3 x_{3}+2 x_{4}=8} \\ {x_{1}+2 x_{2}-9 x_{3}-5 x_{4}=-21}\end{array}\right. ⎩⎪⎪⎨⎪⎪⎧​x1​+2x2​+3x3​+x4​=52x1​+4x2​−x4​=−3−x1​−2x2​+3x3​+2x4​=8x1​+2x2​−9x3​−5x4​=−21​
解:对方程组的增广矩阵A‾\overline{\mathbf{A}}A作初等行变换有:

A‾=(12315240−1−3−1−232812−9−5−21)\overline{A}=\left(\begin{array}{ccccc}{1} & {2} & {3} & {1} & {5} \\ {2} & {4} & {0} & {-1} & {-3} \\ {-1} & {-2} & {3} & {2} & {8} \\ {1} & {2} & {-9} & {-5} & {-21}\end{array}\right)A=⎝⎜⎜⎛​12−11​24−22​303−9​1−12−5​5−38−21​⎠⎟⎟⎞​→(120−12−32001121360000000000)\rightarrow\left(\begin{array}{ccccc}{1} & {2} & {0} & {-\frac{1}{2}} & {-\frac{3}{2}} \\ {0} & {0} & {1} & {\frac{1}{2}} & {\frac{13}{6}} \\ {0} & {0} & {0} & {0} & {0} \\ {0} & {0} & {0} & {0} & {0}\end{array}\right)→⎝⎜⎜⎛​1000​2000​0100​−21​21​00​−23​613​00​⎠⎟⎟⎞​

通过画阶梯线可以知道,该方程组的自由变量为x2x_2x2​、x4x_4x4​两个自由变量不可控(SLAM中的自由度,不可观状态量),故其解也不唯一,只能求解通解。后面的就不求解了,讲到这儿就和SLAM系统联系上了!!更进一步,线性代数中的自由变量个数=n−Rank(A)n-Rank(A)n−Rank(A),其中nnn为xxx变量的个数。

3.SLAM系统中的可观性定义

对于测量系统z=h(θ)+ε\mathbf{z}=h(\boldsymbol{\theta})+\varepsilonz=h(θ)+ε,其中z∈Rn\mathbf{z} \in \mathbb{R}^{n}z∈Rn为测量值,θ∈Rd\boldsymbol{\theta} \in \mathbb{R}^{d}θ∈Rd为系统状态量, ε\varepsilonε为测量噪声向量。h(⋅)h(\cdot)h(⋅) 是个非线性函数,将状态量映射成测量。对于理想数据,如果以下条件成立,则系统状态量θ\boldsymbol{\theta}θ可观:
∀θ,∀θ′∈Rd,{θ≠θ′}⇒{h(θ)≠h(θ′)}\forall \theta, \forall \theta^{\prime} \in \mathbb{R}^{d},\left\{\theta \neq \theta^{\prime}\right\} \Rightarrow\left\{h(\theta) \neq h\left(\theta^{\prime}\right)\right\}∀θ,∀θ′∈Rd,{θ​=θ′}⇒{h(θ)​=h(θ′)}(简单的讲就是状态量变,观测值就变)“ ≠\neq​=“这个是不等于符号,显示出来有问题!

对于SLAM系统而言(如单目VO),当我们改变状态量时,测量不变意味着损失函数不会改变,更意味着求解最小二乘时对应的信息矩阵Λ\LambdaΛ存在着零空间。

4.SLAM中的零空间问题

只做逻辑分析,不做理论推导。证明麻烦的是,旋转参数化比较难。因为虽然说旋转只有3个自由度,但是参数化形式并没有三自由度的表达形式(四元数不是矩阵形式了,另外rpy的形式不知道能不能用),这样就很难直接从矩阵的形式直接说明自由度的问题。故只动嘴皮子,理论推导希望大佬指点。

  • 单目SLAM系统有7自由度不可观:6自由度姿态+尺度。
  • 单目+IMU系统有4自由度不可观:yaw角+3自由度位置不可观。roll和pitch由于重力的存在而可观,尺度因子由于加速度计的存在而可观。

在求解增量方程中,δx\delta xδx就是我们需要求解的状态量,从结果逆推,若是VO系统状态量中我们已经知道结果为7个不可观自由度(即是二小节中的自由变量),那么逆推就可以知道Hessian矩阵存在一个7维的零空间,Hessian矩阵一定不满秩。而在滑动窗口的Margin过程中会导致Hessian矩阵的零空间变化,会造成求解出的δx\delta xδx产生漂移,导致系统漂移!

比如: 求解单目 SLAM 进行 Bundle Adjustment 优化时,问题对应的信息矩阵Λ\LambdaΛ 不满秩,对应的零空间为 N\mathbf{N}N, 用高斯牛顿求解时有:
Λδx=b\mathbf{\Lambda }\delta \mathbf{x}=\mathbf{b}Λδx=bΛδx+Nδx=b\mathbf{\Lambda }\delta \mathbf{x}+\mathbf{N}\delta \mathbf{x}\text{ }=\mathbf{b} Λδx+Nδx =b
增量δx\delta xδx在零空间维度下变化,并不会改变我们的残差。这意味着系统可以有多个满足最小化损失函数的解 x。而认为的加以干预很容易导致漂移!

5.解决

First Estimate Jacobian(FEJ)算法!

6.update

@larry_dongy 评论指正:
   “5. 解决。FEJ算法”,我个人觉得有误导性。(1)FEJ确实解决的是零空间的某些问题,但具体而言是在线性化时通过固定线性化点避免零空间维度的减少,从而避免引入错误信息而造成误差;(2)而零空间内的漂移,不是由于零空间塌缩导致的,而是由于优化求解过程中导致的(这部分可以参考这篇文章,里面的推导,感觉不错)。避免零空间漂移的方法,正交投影保留垂直部分增量。 (3)按照我的理解,JEF和零空间漂移貌似是两个问题,博主可以再考虑一下?也避免其他看到这里的朋友产生误会。

延伸阅读:

  • ref0.(林突破)零空间与尺度漂移.
  • ref1.(无人的回忆)DSO零空间的计算与推导.
  • ref2.(3D视觉工坊)史上最全DSO学习资料.

SLAM中的零空间问题相关推荐

  1. 一文看尽4种SLAM中零空间的维护方法

    点击上方"3D视觉工坊",选择"星标" 干货第一时间送达 作者丨wuRDmemory@知乎 来源丨https://zhuanlan.zhihu.com/p/34 ...

  2. First Estimate Jacobian (FEJ) 如何理解SLAM中的First Estimate Jacobian

    First Estimate Jacobian (FEJ) 如何理解SLAM中的First Estimate Jacobian First Estimate Jacobian是Visual Inert ...

  3. 视觉SLAM中PNP求解

    PNP(Perspective-n-points)是SLAM中估计位姿的重要方法.已知条件为路标点在相机1中的相机坐标以及投影到相机2中的像素坐标,据此去估计相机1.相机2间的位姿.主要解法包括DLT ...

  4. 舒尔补在SLAM中的应用

    舒尔补在SLAM中的应用 1.舒尔补的定义 2.舒尔补的由来 3.舒尔补在多元高斯分布中的应用 3.1 多元变量的高斯分布 3.2 边缘概率和条件概率的协方差矩阵 3.3 边缘概率和条件概率的信息矩阵 ...

  5. SLAM中的卡尔曼滤波:究竟滤了谁?

    点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达 在SLAM系统中,后端优化部分有两大流派. 一派是基于马尔科夫性假 ...

  6. 重磅直播|慕尼黑工业大学博士详解室内SLAM中的几何约束

    点击上方"3D视觉工坊",选择"星标" 干货第一时间送达 大家好,本公众号现已开启线上视频公开课,主讲人通过B站直播间,对3D视觉领域相关知识点进行讲解,并在微 ...

  7. 视觉SLAM总结——LSD SLAM中关键知识点总结

    视觉SLAM总结--LSD SLAM中关键知识点总结 视觉SLAM总结--LSD SLAM中关键知识点总结 1. LSD SLAM的创新点/关键点是什么? 2. LSD SLAM的整体框架是怎样的? ...

  8. SLAM中有关占据栅格地图的的表示方法和利用激光传感器构建占据栅格地图的方法

    SLAM中有关占据栅格地图的的表示方法和利用激光传感器构建占据栅格地图的方法: https://zhuanlan.zhihu.com/p/21738718

  9. 论文精读 | slam中姿态估计的图优化方法比较

    一. 摘要 对于位置环境中的自主导航问题,同步定位与建图(Simultaneous localization and mapping, SLAM)是一个非常重要的工具框架.根据SLAM字面含义可以得知 ...

最新文章

  1. MyBatis学习笔记(一)
  2. Amazon关键词抓取
  3. python3 time模块与datetime模块
  4. 怎么样让body、div占满整个浏览器的窗口
  5. 架构师成长系列 | 云原生时代的 DevOps 之道
  6. 五皇后问题 java_Java的5个古怪问题
  7. http get 消息的作用是什么?_http基础知识
  8. Python基础(八)--迭代,生成器,装饰器与元类
  9. Scala 类和对象
  10. 扫目录过狗过waf方法
  11. Android usb主从模式切换(九)
  12. python xml.etree.ElementTree
  13. keepalived+LVS 详解(2) -- keepalived.conf解析
  14. python判断是否有重复单词_Python:在字符串列表中查找未知的重复单词
  15. 大数据思维与技术——中国大学MOOC课程笔记
  16. 阿里云服务器需要备案吗?
  17. 3DMAX解决Vray渲染材质溢色问题的三种方法
  18. 有趣且重要的Git知识合集(5)Merge branch ‘master‘ of
  19. 叶俊在深圳天长地久集团培训会上谈到“唤醒沟通力与工匠精神”
  20. 知识图谱论文阅读(八)【转】推荐系统遇上深度学习(二十六)--知识图谱与推荐系统结合之DKN模型原理及实现

热门文章

  1. Android 判断当前设备是手机还是平板的最有效的方法
  2. 企业危机公关中的传播分析
  3. hibernate的QBC
  4. jwt python 编码 解码
  5. WebSocket心跳机制
  6. BUUCTF-MISC-[XMAN2018排位赛]ppap
  7. MySQL课后练习(2)
  8. 【语音处理】LQ/QR噪声估计器研究(Matlab代码实现)
  9. DSP UART配置和使用
  10. 零基础CSS入门教程(18)–颜色值