视觉slam十四讲学习笔记:第一、二讲。

一、二讲学习总结

SLAM十四讲是高翔博士写的非常经典的视觉slam书籍,记录下学习心得,与大家分享学习。
一、知识总结
1、slam英文为Simultaneous Localization and Mapping,意思是同时定位与建图。它指搭建特定的传感器的主体,在没有环境先验信息的情况下,在运动过程中建立环境的模型,同时估计自己的运动。当传感器主要为相机时,可称为‘视觉slam’。
2、slam技术应用在机器人定位导航,AR/VR、三维重建等领域。
3、相机主要分为单目(Monocular)、双目(Stereo)、深度相机(RGB-D)三类。
(1)单目相机:是三维空间的二维投影,可以用来估计相机运动和结构(场景的大小和远近)。
原理是近处的物体移动的快、远处的物体移动慢,相机运动可以形成视差。
优点:成本低;
缺点:尺度不确定性,无法估计物体的真实尺度。例如相机的运动和场景同时放大两倍,单目所看到的像是一样的。
(2)双目相机:基线(两个相机间的距离)来估计每个像素的空间位置。基线越大,测量的物体越远。
优点:解决了尺度不确定性。
缺点:深度量程和精度受双目的基线和分辨率限制;视差的计算消耗计算资源。
(3)深度相机:通过红外结构光或Time-of-Flight(ToF)原理,用物理方法测量物体的距离。
优点:相比双目节省计算量。
缺点:测量范围窄、噪声大、视野小、易受日光干扰、无法测量透射材料等
4、salm框架主要包括传感器信息读取、视觉里程计、后端优化、建图以及回环检测五部分。
图片来源于高翔博士所著《视觉SLAM十四讲》
(1)传感器信息的读取:主要为图像信息的读取和预处理。以及其他传感器如惯性传感器信息的读取和处理。
(2)视觉里程计:估计相邻图像间的运动。单独的vo存在累计漂移问题。
(3)后端优化:对相机位姿和回环检测的信息进行优化,采用滤波和非线性优化方法,解决在带有噪声的数据中,估计整个系统的状态,以及状态估计的不确定性。目的是得到全局一致的轨迹和地图。
(4)建图:目的是解决位置估计随时间漂移的问题,建立与任务对应的地图。需要使机器人识别曾经到达过的场景的能力。如判断图像间相似性来完成回环检测。分为度量地图和拓扑地图。
5、拓扑地图:强调地图元素的关系,由节点和边组成,只考虑节点的联通性。
6、度量地图:强调精确地表示地图中物体的位置关系,用稀疏和稠密对它们进行分类。二维度量地图是许多个小格子组成,三维是方块。包括占据、空闲以及未知三种状态。
二、数学表述
1、运动方程
在这里插入图片描述
2、观测方程
在这里插入图片描述
3、符号意义x为机器人各时刻位置,y为路标,u为传感器的输入数据,w、v为噪声。z为观测数据。机器人在环境中移动可以描述为运动方程和观测方程,转化为求解定位x和建图y的问题。问题建模为一个状态估计问题。
三、代码实践
有库文件 libHelloSLAM.cpp,头文件libHelloSLAM.h
1、使用cmake。
mkdir build 建立中间目录
cd build 切换到build目录下
cmake … (俩点)对当前工程进行分析;
make 编译;
./helloSLAM 运行可执行程序helloSLAM;
2、使用库
1)书写库函数libHelloSLAM.cpp
2)在CMakeList.txt中加
add_library(hello libHelloSLAM.cpp) %hello是库名
3)编译工程
cd build
cmake…
make
3、获得libhello.a的文件就是库。.a文件是静态库,.so是共享库。调用库需要头文件和库文件。
如想生成共享库语句 add_library(hello_shared SHARED libHelloSLAM.cpp)
4、编写程序uesHello调用库,在CMakeList.txt中加
add_executable(useHello useHello.cpp)
target_link_libraries(useHello hello_shared)
参考书籍 《视觉SLAM 十四讲》作者:高翔

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

执着且专注

予人玫瑰,手有余香

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值