课程Gitbug地址:https://github.com/wrk666/VSLAM-Course/tree/master

0. 内容

这讲来讲后端
之前的最小二乘的方法属于批量方法,较为简单,另一种方法是递归方法。

1. 递归方法

前端是实时的估计,抓取关键帧和特征点匹配,后端计算量较大,不要求实时,但是计算量也需要限定在一定的程度内。
保持当前状态,来新信息之后就更新,


运动方程对自己的位姿有一个大概的估计,但是存在不确定性,随着时间推移,不确定性会累积,而观测方程观测到路标点,对之前的估计进行矫正,不确定性会减小很多。





假设一阶马尔科夫性则会得到EKF等滤波器方法
不假设的话会得到非线性优化的方法。


上面K的不需要计算后延协方差的方式使用了SMW的第4个公式




2. 批量方法


对稀疏矩阵做一个简单的维数验证:
雅可比:88矩阵块

雅可比的转置JT\bm J^TJT,同样也是8
8矩阵块,每个块也要转置

H=JTJH=\bm J^T\bm JH=JTJ

和下面的临接矩阵除了对角线外,结构一样


高斯消元,H第二行左乘−EC−1-EC^{-1}−EC−1加到第一行来消掉右上角的E。


这里核心意思是把计算量转移到了求解Δxc\Delta x_cΔxc​上,最主要的就是就是对C进行求逆,


边缘化小结:

2.1. BA和递归的对比


新的关键帧来到时,要把老的关键帧Marg掉,老的关键帧会影响先验分布
问题是:如果回环之后,老的信息不太容易用起来。

3. Pose Graph位姿图


由于路标点的数量很多,CPU很难实现实时优化,所以策略

  1. 如滑动窗口那样,丢弃一些历史数据;
  2. 如位姿图那样舍弃对路标点的优化,只保留Pose之间的边。


4. 实践

4.1 Ceres BA书写

照着例程运行,安装meshlab

sudo apt-get install meshlab

这个是初始点云

这个是优化后的

噪声点明显少了很多。

4.2 g2o BA

跑代码和4.1差不多。

4.3 Pose Graph SE3

跑出来大概这样子:

4.4 Pose Graph Lie_algebra

编译时有个小bug:

./pose_graph_g2o_lie ../sphere.g2o
Sophus ensure failed in function 'void Sophus::SO3Base<Derived>::normalize() [with Derived = Sophus::SO3<double>]', file '/usr/local/include/sophus/so3.hpp', line 273.
Quaternion (   0.706662 4.32706e-17    0.707551 -4.3325e-17) should not be close to zero!

查了一下,原因是:
顶点类VertexSE3LieAlgebra的读入函数virtual bool read(istream& is)缺少返回值,会报以上错误。
解决方法:在函数virtual bool read(istream& is)中加入return true;

virtual bool read(istream &is) override {double data[7];for (int i = 0; i < 7; i++)is >> data[i];Quaterniond q(data[6], data[3], data[4], data[5]);q.normalize();setMeasurement(SE3d(q, Vector3d(data[0], data[1], data[2])));for (int i = 0; i < information().rows() && is.good(); i++)for (int j = i; j < information().cols() && is.good(); j++) {is >> information()(i, j);if (i != j)information()(j, i) = information()(i, j);}return true;
}

用单位阵代替Jr−1J_r^{-1}Jr−1​结果差不多:

//        Matrix6d J = JRInv(SE3d::exp(_error));Matrix6d J = MatrixXd::Identity(6, 6);// 尝试把J近似为I?

做作业!

深蓝学院-视觉SLAM课程-第7讲笔记相关推荐

  1. 深蓝学院-视觉SLAM课程-第1讲笔记

    课程Github地址:https://github.com/wrk666/VSLAM-Course/tree/master 1. 基础知识 一些图像处理方面的工作需要借助ML方法来完成:物体识别,检测 ...

  2. 深蓝学院-视觉SLAM课程-第2讲笔记--三维空间刚体运动

    课程Github地址:https://github.com/wrk666/VSLAM-Course/tree/master 0. 内容 C++没有矩阵的运算,用别人的库来进行矩阵运算,其中Eigen库 ...

  3. 深蓝学院-视觉SLAM课程-第3讲笔记-李群和李代数

    课程Github地址:https://github.com/wrk666/VSLAM-Course/tree/master 0. 内容 1. 什么是群 为什么要引入群? 因为求旋转矩阵或者变换矩阵的导 ...

  4. 深蓝学院-视觉SLAM课程-第6讲笔记

    课程Github地址:https://github.com/wrk666/VSLAM-Course/tree/master 0. 内容 仍然是前端的内容,估计位姿,不过不是特征点法,而是另外的方法. ...

  5. 深蓝学院-视觉SLAM课程-第2讲作业

    课程Github地址:https://github.com/wrk666/VSLAM-Course/tree/master 1. 基础知识 需要复习现代和矩阵论的知识. 特征值,特征向量有啥用? 有了 ...

  6. 深蓝学院-视觉SLAM课程-第7讲作业:SLAM中g2o入门详解,直接法BA

    1. 引言 在SLAM中,BA是个重要的部分,前后端很多地方都用得到,而g2o是一个很重要的使用图优化求解优化问题的库,所以有必要熟练掌握,尽管有了些C++的底子,但是看g2o的代码还是比较吃力,所以 ...

  7. 深蓝学院-视觉SLAM课程-第6讲作业

    课程Github地址:https://github.com/wrk666/VSLAM-Course/tree/master 第6讲作业 2. T2 2.1 光流文献综述 文献还没读完,这部分参考博客 ...

  8. 深蓝学院-视觉SLAM课程学习课后题

    一. 第一节课习题# 标题 1.熟悉linux (1)可以通过 sudo apt-get install <软件名>的方式安装软件 当自己下载了软件压缩包之后(tar.gz文件),可以解压 ...

  9. 深蓝视觉SLAM课程第四讲--相机模型,非线性优化(G2O)

    课程Github地址:https://github.com/wrk666/VSLAM-Course/tree/master 0. 内容 对应于十四讲中的第5讲和第6讲 回顾十四讲P24-26 1. 针 ...

最新文章

  1. linux系统无法挂载U盘
  2. host mysql server_解决服务器连接错误Host ‘XXX’ is not allowed to connect to this MySQL server...
  3. 【机器学习】5行代码在小数据集上涨点
  4. python pycurl
  5. 永远不会执行的cron表达式
  6. stm32f103r6最小系统原理图_超强PCB布线设计经验谈附原理图
  7. 对于国产芯片何时能挑大梁
  8. 读书笔记之:高质量程序设计指南——C++/C
  9. 基于redis的悲观锁
  10. 【知识图谱】史上最全《知识图谱》2020综述论文,18位作者, 130页pdf
  11. eclipse翻译插件,支持最新版eclipse 2022-09
  12. 使用开票组件快速开具清单发票
  13. PS自定义形状+笔刷添加打造完美水印
  14. ICP备案不等于ICP许可证
  15. xp升级到win7傻瓜教程_最简单xp一键升级win7重装
  16. 2022最新 wifi大师小程序独立版3.0.8
  17. AdGuard 无与伦比的广告拦截
  18. 【IEEE】IEEE审稿意见与回复-写作指南
  19. 【C语言】变量和常量、数据类型、进制转换、数据存储
  20. 安卓系统怎么安装软件_【图文】安卓系统手机如何下载安装APP

热门文章

  1. 互联网进军影视作品的软广告
  2. jsp+springboot基于ssm的人才招聘求职网站推荐模拟考试系统java idea
  3. 数据分析-----统计学----均值、中位数、众数
  4. SDL使用SDL_ttf显示文字
  5. 不同年代的非主流零食
  6. 【Endnote X9安装过程】
  7. 使用Blackdex脱壳记录
  8. openssl sm2 加解密
  9. 「抄底 Android 内存优化 9」 —手撕 LeakCanary 核心原理
  10. javascript 图片转base64(免费源码)