笔记与总结:高翔《视觉SLAM十四讲》第二讲

O(∩_∩)O哈!

今天又把第二讲《初识SLAM》的东西大致看了一下,在此做个简单记录,高博在其中也说,这一讲算是全书的一个大纲,所以相当的详细和具体了


首先,高神把小萝卜要解决的问题做了一个更通俗的诠释,也就是说

  1. 要明白自身的状态  这就是location
  2. 要明白外在的环境  这就是mapping

既然是视觉问题,那肯定是只是用到相机了,根据能否直接得到深度距离,把各自相机的优缺点罗列一下很有必要:

单目相机三维世界在二维图像的投影
估计的模式相机运动时候形成视差,估计远近距离
缺点具有尺度不确定性,也就是说无法仅仅评级图像来反应真实的尺度大小,需要用软件算法来还原计算
双目相机两个单目组成;两眼之间的距离为基线,基线越大,可测的深度距离越大
特点通过左右眼睛的差异,来判断物体远近
缺点两眼之间视差计算消耗量大,需要GPU或者FPGA加速
深度相机红外结构光,Time of Flight 飞时法物理直接得到距离
特点

主动向物体发射光并接收返回光,来测距,节省大量计算

缺点主流传感器,但是容易受到噪声和日光的影响

经典SLAM框架

1、传感器信息读取,相机信息读取和预处理

2、视觉里程计,估算相邻图像之前的相机运动,特征提取与匹配,短期记忆,存在累计漂移

3、后端优化,从有噪声的数据中估计系统状态,推出估计状态的不确定性MAP,滤波和非线性优化,原本的SLAM研究

4、回环检测,判断是否回到原点,比较图像之间的相似性

5、建图,度量地图有稠密和稀疏,用于导航的是稠密图,拓扑地图只考虑边和点直接拓扑关系

SLAM问题的数学表述

  • 两个方程
  • 运动方程和观测方程
  • 两个方程的参数化

实践过程

Linux操作:

寻找某个文件:whereis

删除文件夹:rm -r

复制文件到下一个文件夹  cp -r ./ch2

g++打开文件重命名:g++ helloSLAM.cpp -o Hello

Helloslam

使用camke

生成的可执行文件a,out打开运行:./a.out   点.表示当前文件夹

在当前文件目录下编译运行的话:cmake .       make    ./helloSLAM

CMakelists.txt中添加可执行文件的语法:add_executable(要生成的程序名  源代码文件)

更常见的用法:1、mkdir build  2、cd build  3、cmake..    4、make

使用库

在cmakelist中添加:add_library(要编译成的文件名称 源文件名称.cpp)

如果用动态库:cmakelists中添加:add_library(要编译的库文件名称 SHARED 源代码文件):add_library(a  SHARE  a.cpp)

  1. 库文件是一个压缩包a.so,其中封装了二进制函数f,如果要使用的话
  2. 要先写一个头文件b.h对这个库的使用做一个解释
  3. 然后再写有main函数的可执行程序c.cpp来调用:#include"b.h"
  4. CMakelists.txt中添加可执行文件的生成命令:
    1. add_executable(c  c.cpp)
    2. target_link_libraries(c  a )

CMAKE构建工程的,参考宋洋鹏同学的笔记HL-SIRB同学的笔记

 

 

 

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值