目录

参考教材:《视觉SLAM十四讲:从理论到实践(第二版)》

注意:

什么是SLAM:

初识SLAM:

视觉SLAM经典框架:

1、视觉里程计

2、后端优化

3、回环检测

4、建图

SLAM的数学表达:

编程环境配置:


参考教材:《视觉SLAM十四讲:从理论到实践(第二版)》

注意:

以下内容为个人学习笔记,如有表述错误,那就是我学的不好,不接受批评,仍在学习中~~~

题目从二开始,因为书上第一讲没讲知识点。。。。

什么是SLAM:

SLAM:Simultaneous Localization and Mapping   翻译为:同时定位与地图构建

其实我倒觉得应该翻译为:实时定位与地图构建(我瞎说的,不敢质疑大佬们)

通俗来讲:就是携带传感器的主体,在事先不知道环境的情况下,可以在运动的过程中对自己周围的环境建模,以及在环境中找到自己的定位。

所谓视觉SLAM,视觉一般指的就是相机。所以咯,通过相机完成上边的事,就叫做视觉SLAM。

当然,也可以认为搭载传感器的主体就是一个机器人,所以这就是一本讲机器人如何感知自己以及周围环境的书。

这本书会讲解关于slam的基础知识and相关算法的实践练习

编程环境需要Ubuntu18.04     使用C++

这本书的代码全部都托管在     https://github.com/gaoxiang12/slambook2     可以下载了 对照练习。

初识SLAM:

首先说视觉,也就是相机。

和人一样,想要完成定位(知道你在哪)与建图(周围什么样)两个功能,就需要眼睛,对于计算机来说,就是相机。

  • 单目相机:就拍普通的照片,(不严谨的说)就是真实三维世界在二位平面上的一个投影,他无法记录距离信息,也就是无法知道照片上的物体真实位置在哪
  • 双目相机:已知两相机间的距离(称为:基线),通过两相机拍摄照片的差异来估计物体的远近。 缺点:距离信息需要通过大量的计算得出。
  • 深度相机:又称RGB-D相机,它用物理的测量手段来测量距离(向物体发送光,再接收返回的光)。缺点:测量范围窄、噪声大、易受日光干扰

视觉SLAM经典框架:

分别介绍下各个模块:

1、视觉里程计

视觉里程计能够通过相邻帧的图像来估计相机的运动,并回复场景的空间结构。(注意,它只能计算相邻时刻的运动

2、后端优化

后端优化主要处理SLAM过程中的噪声问题。

通俗来说就是任何传感器都会收到外界影响而产生一定的误差,后端优化就是要从这些带有误差的数据中,估计整个系统的状态,以及这个状态的不确定性有多大。

3、回环检测

回环检测主要解决位置估计随时间漂移的问题。

比如:机器人左转90度,再右转90度。按理说回到了原点,但是由于机器人对自己的位置估计,检测到左转90度,然后右转了89度。它不认为自己回到了原点,这就产生了位置漂移。如果我们能够判断当前场景就是原点,那么我们将其位置估计拉回原点,这就消除了漂移。这就是回环检测。(通过图像之间的相似性来判断是否回到原点)

4、建图

构建地图。地图就是指环境。

  • 度量地图:强调精确表示地图中的物体位置关系
  • 拓扑地图:强调地图元素之间的关系。由节点和边组成,一般只考虑连通性。

其中度量地图又分为稀疏地图(如由路标组成的地图)与稠密地图(建模所有看到的东西)

SLAM的数学表达:

运动方程:

这其中是指k时刻的位置,是指传感器读数,为噪声。这是个抽象公式。

很好理解,通过k-1时刻的位置,加上传感器检测到的变化数据,再加上噪声。就可以算处k时刻的位置信息。

观测方程:

代表机器人在位置上看到一个路标点,产生了一个观测数据。其中是此次观测中的噪声。

编程环境配置:

OS:Ubuntu18.04   (最少4G内存)

IDE:KDevelop

语言:C++

ps:在中国科学技术大学的这个网站上可以获得开源系统:USTC Open Source Software Mirror

关于Ubuntu18.04下KDevelop的使用请参考这篇博客使用教程

SLAM学习笔记-------------(二)初识SLAM相关推荐

  1. SLAM学习笔记1:SLAM概述

    前言: "智能车辆SLAM理论与技术"是我大三的专业选修课.出于好奇心驱使,我选了这门课.(虽然这门课和"仿生机械学"互为二选一关系,但我把它俩都选了)实际上对 ...

  2. ElasticSearch学习笔记二 初识Elasticsearch

    初识Elasticsearch Elasticsearch简介 Elasticsearch术语及概念 文本(Text) 索引词/精确值(term) 精确值 VS 全文 分析(Analysis)与分析器 ...

  3. SLAM学习笔记(二十)LIO-SAM流程及代码详解(最全)

    写在前面 关于安装配置,博客LIO_SAM实测运行,论文学习及代码注释[附对应google driver数据] 我觉得已经写的比较完善了.但是我觉得在注释方面,这位博主写的还不够完善,因此在学习以后, ...

  4. 视觉slam学习笔记以及课后习题《第五讲特征点法视觉里程计》

    这篇博客主要记录了我在深蓝学院视觉slam课程中的课后习题,因为是为了统计知识点来方便自己以后查阅,所以有部分知识可能不太严谨,如果给大家造成了困扰请见谅,大家发现了问题也可以私信或者评论给我及时改正 ...

  5. SLAM学习笔记(十九)开源3D激光SLAM总结大全——Cartographer3D,LOAM,Lego-LOAM,LIO-SAM,LVI-SAM,Livox-LOAM的原理解析及区别

    本文为我在浙江省北大信研院-智能计算中心-情感智能机器人实验室-科技委员会所做的一个分享汇报,现在我把它搬运到博客中. 由于参与分享汇报的同事有许多是做其他方向的机器人工程师(包括硬件.控制等各方面并 ...

  6. 视觉slam学习笔记以及课后习题《第三讲李群李代数》

    前言 这篇博客主要记录了我在深蓝学院视觉slam课程中的课后习题,因为是为了统计知识点来方便自己以后查阅,所以有部分知识可能不太严谨,如果给大家造成了困扰请见谅,大家发现了问题也可以私信或者评论给我及 ...

  7. ROS_RGB-D SLAM学习笔记--室内环境测试

    ROS_RGB-D SLAM学习笔记 RTAB-Map's ros-pkg. RTAB-Map is a RGB-D SLAM approach with real-time constraints. ...

  8. 激光slam学习笔记——基于图优化的激光slam方法

    激光slam学习笔记--基于图优化的激光slam方法 1.slam基础 整体来说,在激光slam中,滤波器的误差要小于图优化的误差. 图优化通俗点说就是里程计计算的位姿与观测到的位姿之间会形成一个误差 ...

  9. Slam学习笔记——ROS踩坑记录

    Slam学习笔记--ROS踩坑记录 1. 安装 2. ROS文件系统 2.1 工作区 2.2 包package 2.2.1 包的操作 2.2.2 描述文件package.xml 2.3 节点node ...

  10. Hadoop学习笔记—4.初识MapReduce

    一.神马是高大上的MapReduce MapReduce是Google的一项重要技术,它首先是一个 编程模型 ,用以进行大数据量的计算.对于大 数据量的计算,通常采用的处理手法就是并行计算.但对许多开 ...

最新文章

  1. 实现Activity的滑动返回效果
  2. day 05 python基础
  3. Your Feedback Report at Adecco
  4. Java之Callable和Runnable
  5. c++语言编译环境,Windows安装C++开发环境-C++开发环境搭建-嗨客网
  6. 《科学:无尽的前沿》分享会在京举办,助力中国企业打造“科研的应许之地”
  7. mysql字段分隔符拆分_面试题Mysql数据库优化之垂直分表
  8. 黑苹果mac未能安装在你的电脑上_经历了无数次失败以后,我终于“吃”上了黑苹果,经验分享!...
  9. java list stream avg_Java8之list.stream的常见使用
  10. 史上最详细的hadoop安装教程
  11. 基于MC1496芯片的AM调制与解调
  12. mysql 创建表指定时区,[MySQL] 设置时区
  13. swiper设置autoplay不起作用
  14. 获取windows锁屏壁纸
  15. pyspark steaming常规语句及操作
  16. python制作表白神器_用Python做一个520表白神器,值得收藏
  17. Themida是先进的Windows软件保护系统
  18. java频繁的读写文件_大量较为频繁读写的文件一般如何进行存储?
  19. hive表新增字段和字段注释修改
  20. 网页使用的WindowMediaPlayer插件的问题22D6F312-B0F6-11D0-94AB-0080C74C7E95

热门文章

  1. Facebook采取赤裸裸抄袭的战略 争夺用户
  2. 解决安装多个Xcode出现的PBXProjectWizardChooserWizard问题
  3. 跟我一起数据挖掘(19)——什么是数据挖掘(2)
  4. JS动态呈现还可以输入字数
  5. Windows与Linux比较:相似与不同
  6. Java 11 究竟比 8 快了多少?
  7. centos 6.8 配置csh的shell和环境变量
  8. Python(七)Socket编程、IO多路复用、SocketServer
  9. shell编程(精华总结版)
  10. ASP.NET:创建Linked ValidationSummary, 深入理解ASP.NET的Validation