【视觉SLAM十四讲】学习笔记-第二讲

其他章节:
    第二讲:初识SLAM

初识SLAM

        SLAM(Simultaneous Localization and Mapping),同时定位与地图构建。它是指搭载特定传感器主体,在没有环境先验信息的情况下,于运动过程中建立环境模型,同时估计自己的运动。

相机介绍

        单目相机:即一个摄像头,这种传感器结构简单,成本低;缺点是但是它以二维的形式反映了三维的世界,丢掉了深度,因此平移之后才能计算深度,但仍然无法确定真实尺度。
        双目相机:由两个单目相机组成,但两个相机之间的距离(基线)已知,因此我们通过基线来估计每个像素的空间位置。它的缺点是配置与标定均较为复杂,其深度量程和精度受基线和分辨率所限;并且视差的计算非常消耗计算资源。
        深度相机:通过红外结构光原理,测出物体与相机之间的距离,因此可以节省大量的计算;但目前多数深度相机还存在测量范围窄、噪声大、视野小、易受日光干扰、无法测量透射材质等诸多问题。

经典视觉SLAM框架
在这里插入图片描述
        1.传感器信息读取。在视觉SLAM中主要为相机图像信息的读取和预处理。如果是在机器人中,还可能有码盘、惯性传感器等信息的读取和同步。

        2.视觉里程计(Visual Odometry, VO)。估算相邻图像间相机的运动,以及局部地图的样子。
        VO能够通过相邻帧间的图像估计相机运动,并恢复场景的空间结构,它和实际的里程计一样,只计算相邻时刻的运动。但是由于里程计的工作方式,导师误差会传递,形成累计漂移。

        3.后端优化(Optimization)。后端接受不同时刻视觉里程计测量的相机位姿,以及回环检测的信息,对它们进行优化,得到全局一致的轨迹和地图。
        主要指SLAM过程中噪声的问题。后端优化要考虑的,就是如何从有噪声的数据中估计整体系统的状态,以及这个状态估计的不确定性有多大(最大后验概率估计MAP)。

        4.回环检测(Loop Closing) 。回环检测判断机器人是否到达过先前的位置。如果检测到回环,它会把信息提供给后端进行处理。
        主要解决位置估计随时间漂移的问题。通过识别到过的场景,并把“A与B是同一个点”的信息告诉后端优化算法;然后后端根据这些新的信息,把轨迹和地图调整到符合回环检测结果的样子。这样,如果我们有充分而且正确的回环检测,就可以消除累积误差,得到全局一致的轨迹和地图。

        5.建图(Mapping)。它根据估计的轨迹,建立与任务要求对应的地图。.
        大体分为度量地图和拓扑地图。度量地图强调精确地表示地图中物体的位置关系,通常用稀疏与稠密对其分类。稀疏地图并不需要表达所有的物体;稠密地图着重于建模所有看到的东西。拓扑地图更强调地图元素之间的关系。拓扑地图由节点和边组成,只考虑节点间的连通性。

SLAM问题的数学表述

        若机器人在离散时刻 t = 1 , . . . , k t=1,...,k t=1,...,k中的位置为 x = x 1 , . . . , x k x=x_1,...,x_k x=x1,...,xk,那么从 k − 1 k-1 k1时刻到 k k k时刻,机器人的位置可以抽象成一个运动方程 x k = f ( x k − 1 , u k , w k ) x_k=f(x_{k-1},u_k,w_k) xk=f(xk1,uk,wk)。其中, u k u_k uk是运动传感器读数(输入), w k w_k wk为噪声
        假设地图中有 N N N个路标 y 1 , . . . , y N y_1,...,y_N y1,...,yN,当机器人在 x k x_k xk位置上看到某个路标点 y j y_j yj,产生了一个观测数据 z k , j z_{k,j} zk,j,同样可以抽象成一个观测方程 z k , j = h ( y j , x k , v k , j ) z_{k,j}=h(y_j,x_k,v_{k,j}) zk,j=h(yj,xk,vk,j)。其中, v k , j v_{k,j} vk,j是这次观测里的噪声。

实践部分

使用的vm虚拟机,ubuntu20.04版本。

        首先是基础的创建文件(vim记得要sudo权限,第一次没加没法写入。)
请添加图片描述
        书里示例程序:
在这里插入图片描述
        使用g++编译,并运行out文件:
在这里插入图片描述
        为了便捷管理未来的项目,书里介绍了cmake生成makefile
在这里插入图片描述
        使用命令sudo cmake .编译
在这里插入图片描述
        生成的Makefile可以用make命令进行
在这里插入图片描述

这一节都是基础,之前基本都用过学过,包括后面的库函数之类的,不多写了

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值