精华内容
下载资源
问答
  • slam十四讲各章内容概述

    千次阅读 2021-11-22 15:16:14
    slam十四讲各章内容概述

    1)代表第一章

    1)下的1.2代表各章下的小细节内容。层次按1. ——1.1——1.1.1 的层次划分

    本文内容,出自视觉十四讲

    1)三种相机的区别
    单目相机
    效果:将拍摄到的场景在相机的成像平面上留下一个投影,以二维记录三维
    处理:移动相机形成视差,估计相机的运动,也估计场景中物体的远近和大小
    问题:具有尺度不确定性。用视差分析出物体的远近,也无法定量分析。

    双目相机
    效果:通过两个相机之间的距离(基线),估计每个像素的空间位置
    问题:配置和标定较为复杂,切非常消耗计算资源

    深度相机
    效果:通过向物体发射光并接收回来的光,测出物体与相机之间的距离(红外结构光或Time of flight原理)
    问题:测量范围窄,噪声大,视野小,容易受光照影响

    2)SLAM框架
    视觉里程计(特征提取,匹配)(提供待优化的数据,以及数据的初始值)
    效果:通过相邻帧的图像估计相机的运动,并恢复场景的结构
    进一步效果:
    1.将相邻时刻的运动串起来,构成机器人的运动轨迹(定位问题)
    2.根据每个时刻的相机位置,计算像素对应的空间点的位置(建图问题)
    问题:会存在累计漂移带来的累计误差

    后端优化(滤波,非线性优化)(整体的优化过程,面对数据,不关心数据来源)
    效果:从带有噪声的数据中估计整个系统的状态,并分析状态估计的不确定性有多大(处理SLAM中的噪声问题)

    回环检测:(解决位置随时间漂移的问题)(计算图像相似性的算法)
    效果:通过判断图像间的相似性,将轨迹和地图调整到符合回环检测结果的样子。

    地图
    度量地图:(强调精确性)
    1.稀疏地图:由路标组成的地图,不需要表达所有物体。定位用稀疏地图
    2.稠密地图:建模所有看到的东西,由许多小块组成,小块含有占据,空闲,未知三种状态。导航用稠密地图

    拓扑地图:强调地图元素之间的关系,由节点和边组成,只考虑节点间的连通性。


    3)三维空间刚体运动
    概念点:点和向量,反对称矩阵(反对称矩阵和向量φ一一对应)旋转矩阵,特殊正交群(n维旋转矩阵的集合,旋转矩阵(行列式为1的正交矩阵)),变换矩阵,特殊欧式群,旋转向量,欧拉角(奇异性问题:3个实数表达三维旋转,不可避免遇到奇异性问题),四元数(i对于180度,i^2=-1意味着绕i轴旋转360度)

    变换:旋转向量和旋转矩阵(罗德里格斯公式),四元数可以转换到旋转向量和旋转矩阵,


    4)李群和李代数(使用李代数,主要是为了进行优化)
    群:一种集合加上一种运算的代数结构
    李群:具有连续(光滑)性质的群
    李代数:由三维向量组成的集合(反对称矩阵和向量φ一一对应)。描述了李群的局部性质,是单位元附近的正交空间。由一个集合,一个数域和一个二元运算符组成
    指数映射:李代数实际上是由旋转向量(三维的或者六维的)组成的空间,指数映射为罗德里格斯公式,可以把李代数的任意一个向量对应到一个旋转矩阵(旋转矩阵或者正交矩阵)。
    对数映射:是把矩阵转化为向量。(旋转固定在正负pi,李群李代数一一对应。否则,一个群可能存在多个李代数)
    注意点:旋转矩阵的导数,可以由旋转向量指定。

    BCH公式与近似公式:描述了李群李代数的加法与李群的乘法的对应关系
    李代数求导:一般用来求解误差的最小值。方法由李代数的求导模型和扰动模型

    sophus是一个较好的李代数库


    5)相机与图像
    单目相机的成像模型:
    相机的内参数:世界的空间点P通过针孔相机模型得到成像平面的点P',再由平移和缩放关系得到像素坐标(相机的内参数就是中间量组成的矩阵K)
    相机的外参数:相机的位姿R,t
    标定:确定相机的内参
    畸变:
    径向畸变(桶形畸变,枕形畸变)——坐标点沿着长度方向发生变化
    切向畸变——坐标点沿着切线方向发生改变(水平夹角发生改变)

    畸变的纠正:(通过5个畸变系数求出点在像素平面的正确位置)
    1.三维空间点投影到归一化图像平面
    2对归一化平面上的点计算径向畸变和切向畸变
    3.畸变后的点通过内参数矩阵投影到像素平面,得到该点在图像上的正确位置

    具体的单目相机成像过程见书102页


    双目相机模型:见书103页
    RGB—D:原理有红外结构光,ToF(脉冲光)

    图像与数组对应关系:数组的行数对应图像的高度,列数对应图像的宽度。所以由image(y,x)=I(x,y)


    6)非线性优化
    1.处理状态估计的方法(两种)
    增量/渐进的方法(滤波器)——持有一个当前时刻的估计状态,然后用新的数据来更新它
    批量方法:数据攒起来,一并处理

    折中的办法:滑动窗口法,固定一些历史轨迹,仅对当前时刻附近的一些轨迹进行优化


    贝叶斯法则:最大后延概率等于最大化似然和先验的乘积(不知道位姿或路标的时候,就没有了先验)
    最大似然估计含义:在什么样的状态下,最可能产生现在观测到的数据

    最小化所有时刻估计值与真实读数之间的马氏距离(最小化误差的二次型),等价于最大似然估计。也就是最小二乘问题等价于状态的最大似然估计

    2.非线性最小二乘
    自己的理解:这里的优化问题相当于求累计误差的最小值。转化为增量的方法后,则成了求满足条件的最小deltax。
    一阶和二阶梯度法(最速下降法,牛顿法),高斯牛顿法,列文伯格——马尔夸特方法(这个相当于在高斯牛顿法的基础上加了一个信赖区域)

    7)视觉里程计1
    作用:根据相邻图像的信息估计出粗略的相机运动,给后端提供较好的初始值。
    方法:特征点法,直接法
    人工设计的特征点性质:可重复性,可区别性,高效率,本地性

    特征点组成:关键点,描述子
    关键点:是指特征点在图像里的位置,有些特征点还有朝向,大小等信息
    描述子:通常是一个向量,按照某种人为设计的方式,描述了该关键点周围像素的信息

    ORB特征:
    FAST关键点:主要检测局部像素灰度变化明显的地方。(检测过程,预测试,非极大值抑制操作见书155)
    解决FAST的方向性和尺度问题:金字塔,灰度质心法

    特征匹配:确定当前看到的路标与之前看到的路标之间的对应关系(通过对图像与图像,图像与地图之的描述子进行准确匹配,可以为后续的姿态估计,优化等操作减轻大量负担)————方法:暴力匹配,快速近似最近邻

    1 特征提取和匹配
    1.1 提取和匹配ORB:
    步骤:读取图像,初始化参数,检测角点,根据角点计算描述子,根据两幅图像的描述子进行匹配,计算最小距离和最大距离,根据匹配的Hamming距离进行筛选评估(筛选评估的条件为:Hamming距离小于最小距离的两倍)

    1.2 手写ORB特征(还有些没有完全弄懂)

    2——5 计算相机运动
    方法:对级几何,ICP,PnP。根据不同的条件,方法不同
    涉及到的概念:本质矩阵E,单应矩阵H,基础矩阵F

    2.1 对极约束(这里具有尺度等价性,E实际只有5个自由度)()
    对极约束同时包含了平移和旋转
    方法:根据配对点的像素位置求出E或者F,再根据E或者F求出R,t。(估计E的方法有八点法求出E,若匹配的点多余8对,可能存在误匹配,这时候使用RANSAC的随机采样一致性来处理带有误匹配的数据。求出E后再去求出R,t)

    单应矩阵:单应矩阵的方法用于两个平面的映射关系,场景的点落在同意平面上,可以用单应矩阵来进行求取。(自由度为8的单应矩阵可通过4对匹配特征点来进行求取)

    3 三角测量(用相机的运动估计特征点的空间位置)(已知运动R,t,求两个特征点的深度)
    方法:通过不同位置对同一个路标点的观察,从观察到的位置推断路标点的距离
    作用:三角测量可以得到两帧下点的深度,确定他们的空间坐标


    4 PnP
    作用:描述了知道n个3D空间点及其投影位置时,如何估计相机的位姿(估计相机运动)
    求解方法有:P3P,DLT,非线性优化的BA

    4.1 P3P
    条件:3对3D—2D的匹配点(3D点为世界坐标系下的坐标,2D点为相机成像平面上的投影)(3D点的相机坐标系下的坐标能够知道,就成了3D—3D的问题),一对验证点
    作用:可以得到相机坐标系下的3D坐标,然后可以用3D—3D的方法求取R,t

    4.2 最小化重投影误差求解PnP(BA,把相机和三维点放在一起进行最小化)
    方法:把误差求和,构建最小二乘问题,然后寻找最好的相机位姿,使他最小化。误差项是将3D点的投影位置与观测位置做差,所以称为重投影误差。

    4.3 opencv的EPnP可以求解PnP问题,得到相机的运动参数R,t

    4.4 g2o的部分代码没有看懂》》》》》》

    5 ICP
    特点:仅考虑两组3D点之间的变换时,和相机没有关系,ICP的计算结果也是R,t(这里的R,t是第二帧到第一帧的变换)
    方法:利用线性代数的求解(主要是SVD,利用非线性优化方法的求解(类似于BA)
    具体方法流程见书:197


    8 )直接法(直接法这部分,由于不一定会用到,值了解了下原理和优缺点,没有具体再去看代码了)
    特点:
    根据像素的亮度信息估计相机的运动和点的投影,可以完全不用计算关键点和描述子
    特征点法只能重构稀疏特征点,直接法还具有恢复稠密或半稠密结构的能力

    光流:描述像素随时间在图像之间运动的方法。
    光流法特点:光流法能够直接得到特征点的对应关系,类似描述子的匹配(光流法不需要描述子了),通过光流追踪的特征点可以用PnP,ICP,对极几何来估计相机运动

    直接法:特征匹配用的是最小化光度误差来进行,然后使用高斯牛顿法或者列文伯格—马尔夸特方法方法来计算增量


    9) 后端1
    9.1.1 
    问题变换:拥有某些运动数据z,观测数据z,确定状态量x,y的分布(位姿x,路标y看做服从某种概率分布的随机变量)————当存在一些运动数据,观测数据时如何估计状态量的高斯分布(状态量和噪声项服从高斯分布)
    对应的数学内容:批量状态估计问题转化为最大似然估计问题,使用最小二乘法求解

    9.1.2和9.1.3讲述了,线性系统和非线性系统的状态量的一个求法。并且对EKF滤波器的方法和非线性优化的方法进行了一个比较

    9.2 BA和图优化
    BA:从视觉图像中提取最优的3D模型和相机参数

    9.2.3 稀疏化和边缘化(矩阵H的稀疏结构,并用图优化来表示)
    这里讲述了借用稀疏化和边缘化的思想,求解出位姿和路标的增量

    9.2.4 鲁棒核函数:保证每条边的误差不会大得没边而掩盖其他的边


    11 回环检测
    关键:有效的检测出相机经过同一个位置
    意义:关系我们估计的轨迹和地图在长时间下的正确性。回环检测提供了当前数据和所有历史数据的关联,可以利用回环检测进行重定位(帮助自身在轨迹上的位置)

    方法:词袋模型

    步骤一:生成字典
    词典结构:K叉树(多组目标环境的数据生成)
    方法:例如k-means,把已经提取的大量特征点聚类成一个含有k个单词的字典

    步骤二:一幅图像出现了哪些单词(要对区分性和重要性进行评估),向量进行描述

    步骤三:相似度计算,相似度处理(取一个先验相似度,表示某时刻关键帧图像与上一时刻的关键帧的相似性),关键帧处理(稀疏一点)

    步骤四:检测验证(缓存机制或者一致性检测)

    展开全文
  • 我们前面的内容介绍了一个SLAM 系统中的各个模块的工作原理,这是研究者们多年的工作的结晶。目前,除了这些理论框架之外,我们也积累了许多优秀的开源SLAM 方案。不过,由于它们大部分实现都比较复杂,不适合初学...

    读书笔记:SLAM:现在与未来

    终于到本书最后一章了。也到了此系列博客的最后一篇! 我们前面的内容介绍了一个SLAM 系统中的各个模块的工作原理,这是研究者们多年的工作的结晶。目前,除了这些理论框架之外,我们也积累了许多优秀的开源SLAM 方案。不过,由于它们大部分实现都比较复杂,不适合初学者做为上手的材料,所以我们放到了本书的最后加以介绍。相信读者通过阅读之前的章节,应该能明白它们的基本原理。

    当前的开源方案

    方案名称传感器形式地址
    MonoSLAM单目https://github.com/hanmekim/SceneLib2
    PTAM单目http://www.robots.ox.ac.uk/~gk/PTAM/
    ORB-SLAM单目为主http://webdiis.unizar.es/~raulmur/orbslam/
    LSD-SLAM单目为主http://vision.in.tum.de/research/vslam/lsdslam
    SVO单目https://github.com/uzh-rpg/rpg_svo
    DTAMRGB-Dhttps://github.com/anuranbaka/OpenDTAM
    DVORGB-Dhttps://github.com/tum-vision/dvo_slam
    DSO单目https://github.com/JakobEngel/dso
    RTAB-MAP双目/RGB-Dhttps://github.com/introlab/rtabmap
    RGBD-SLAM-V2RGB-Dhttps://github.com/felixendres/rgbdslam_v2
    Elastic FusionRGB-Dhttps://github.com/mp3guy/ElasticFusion
    Hector SLAM激光http://wiki.ros.org/hector_slam
    GMapping激光http://wiki.ros.org/gmapping
    OKVIS多目+IMUhttps://github.com/ethz-asl/okvis
    ROVIO单目+IMUhttps://github.com/ethz-asl/rovio

    在这里插入图片描述

    在这里插入图片描述
    在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述

    未来的SLAM 话题

    大体来说,SLAM 将来的发展趋势一共有两个大类:一是往轻量级、小型化方向发展,让SLAM 能够在嵌入
    式或手机等小型设备上良好的运行,然后考虑以它为底层功能的应用。毕竟大部分场合中,我们的真正目的都是实现机器人、AR/VR 设备的功能,比如说运动、导航、教学、娱乐,而SLAM 是为上层应用提供自身的一个位姿估计。在这些应用中,我们不希望SLAM 占据所有计算资源,所以对SLAM 的小型化和轻量化有非常强烈的要求。另一个方面,则是利用高性能计算设备,实现精密的三维重建、场景理解等功能。在这些应用中,我们的目的是完美地重建场景,而对于计算资源和设备的便携性则没有多大限制。由于可以利用GPU,这个方向和深度学习亦有结合点。

    视觉+ 惯导SLAM

    在这里插入图片描述

    语义SLAM

    在这里插入图片描述

    课后习题

    1. 选择本讲提到的任意一个开源SLAM 系统,在你的机器上编译运行它,直观体验一 下它的过程。

    已运行过ORB-SLAM2以及cartographer。

    2. 你应该已经能够看懂绝大多数SLAM 相关论文了。拿起纸和笔,开始你的研究吧!

    确实,开始吧!

    展开全文
  • 视觉SLAM十四讲笔记(超级通俗易懂哦~)

    千次阅读 多人点赞 2020-12-13 14:51:50
    第二 初识SLAM 传感器 Sensors 两类传感器: 安装于环境中的:二维码,GPS, 携带于机器人本体的: 对比激光和相机两大类传感器,激光建图基本上已经研究清楚,视觉SLAM还没有稳定可靠运行 摄像头:轻便、便宜、...

    在这里插入图片描述

    前言

    终于来到了心心念念的SLAM学习环节,相信看到这篇文章的你也和我一样按耐不住心中的紧张与激动,那就一起开始卷吧!
    在本篇我将简单概述SLAM14讲各个环节的最基本的知识,主要是帮你看看14讲都讲了啥。
    想要进一步学习还是看书吧!
    Let’s 冲冲冲!

    第一讲 预备知识

    SLAM:Simultaneous Localization and Mapping
    中文名:同时定位与地图构建
    基本定义:搭载特定传感器的主体,在没有环境先验信息的情况下,于运动过程中建立环境的模型,同时估计自己的运动。
    这里的传感器主要为相机,则为“视觉SLAM”

    章节划分

    整书分为两大部分:

    • 视觉基础篇 1-6讲
    • 实践应用篇 7-14讲

    第1讲:预备知识
    第2讲:SLAM系统概述,介绍SLAM组成模块,各模块具体工作。编程环境搭建以及IDE使用
    第3讲:三维刚体运动,主要了解旋转矩阵,欧拉角,四元数,练习使用Eigon
    第4讲:学习李群和李代数,定义及使用方式;练习使用Sophus操作
    第5讲:针孔相机模型,图像在计算机中的表达;用OpenCV调用相机内外参
    第6讲:非线性优化,包括状态估计理论基础,最小二乘问题,梯度下降法;使用Ceres和g2o进行曲线拟合实验
    第7讲:基于特征点法视觉里程计,特征提取与匹配,对极几何约束的计算、PnP和ICP等。利用以上方法估计两个图像之间的运动。
    第8讲:直接法视觉里程计,学习光流法和直接法原理,利用以上方法实现简单的直接法运动估计。
    第9讲:后端优化,主要对Bundle Adjustment(BA)深入讨论,利用稀疏性加速求解过程,利用Ceres和g2o分别书写BA程序。
    第10讲:后端优化中的位姿图,介绍SE(3),Sim(3)位姿图,使用g2o对一个位姿球进行优化
    第11讲:回环检测,介绍以词袋模型为主的回环检测,使用DBoW3书写字典训练程序和回环检测程序
    第12讲:地图构建,使用单目进行稠密深度图的估计,讨论RGB-D的稠密地图构建过程
    第13讲:工程实践,搭建双目视觉里程计框架,综合运用之前的知识,利用Kitti数据集测试性能
    第14讲:介绍当前开源SLAM方案以及未来的发展方向

    需要具备的基础知识

    • 高等数学、线性代数、概率论
    • C++语言基础
    • Linux系统基础

    第二讲 初识SLAM

    SLAM回答了两个关键问题:

    1. 我在什么地方?——定位
    2. 周围环境怎么样?——建图

    传感器 Sensors

    两类传感器:
    安装于环境中的:二维码,GPS,
    携带于机器人本体的:
    对比激光和相机两大类传感器,激光建图基本上已经研究清楚,视觉SLAM还没有稳定可靠运行
    摄像头:轻便、便宜、信息丰富
    缺点:遮挡、受光照影响、计算量大、
    单目,双目,深度相机(TOF/结构光)

    经典视觉SLAM框架

    在这里插入图片描述

    • 传感器信息读取:在视觉SLAM中主要为相机图像信息的读取和预处理。如果是机器人中,还可能是码盘、惯性传感器等信息的读取和同步
    • 前端视觉里程计(Visual Odometry,VO):视觉里程计的任务是估算相邻图像间相机的运动,以及局部地图的样子,又称为前端(Front End)
    • 后端非线性优化(Optimization):后端接受不同时刻视觉里程计测量的相机位姿,以及回环检测的信息,对他们进行优化,得到全局一致的地图。由于在VO之后,又被称为后端(Back End)
    • 回环检测(Loop Closure Detection):回环检测机器人是否到达过先前的位置,如果检测到回环,它会把信息提供给后端进行处理。
    • 建图(mapping):它根据估计的轨迹,建立与任务要求对应的地图

    SLAM问题的数学表述

    关于SLAM的数学描述,主要有两个方程,分别为位置方程和观测方程:
    在这里插入图片描述
    xk表示机器人当前所处的位置,uk是运动传感器的读数或者输入,zkj是机器人与环境特征建立的观测数据
    另外,无论是位置方程还是观测方程均要引入噪声,也就是式子中的w和v,也因此需要在后端进行优化,或者说状态估计,来找到一个最有可能的位姿图。
    可以参照下图有一个更加清楚地认识
    在这里插入图片描述

    编程基础Linux

    可以参照我的另一篇博文,记录了Linux最基本的操作指令,对于初学者可以减少学习负担
    Linux基本知识学习笔记(常用指令)

    使用Cmake

    该部分还不是很了解,可以简单理解为会有一个CmakeList来帮助工程判断如何编译
    在Linux中,当我们写完源代码后,需要通过编译,将多文件工程建立联系,并生成可执行文件,以此来实现调试运行,Cmake则可以为工程生成一个makefile文件,之后使用make命令(C++库使用g++进行编译)根据makefile文件中的内容编译整个工程
    在书中简单介绍了自己使用命令行及cmake建立工程并运行的例子,比较有意思

    第三讲 三维空间的刚体运动

    • 本讲目标:理解刚体运动描述方式、旋转矩阵、变换矩阵、四元数和欧拉角
    • 掌握Eigen库的矩阵,几何模块的使用方法

    3.1 点、向量和坐标系,旋转矩阵

    • 点存在于三维空间中
    • 点和电可以组成向量
    • 点本身由原点指向它的向量描述

    向量:带指向的箭头,可以进行加法减法等运算
    向量的坐标:可以用R3坐标表示
    坐标系:由三个正交的轴组成
    构成线性空间的一组基
    分为左手系和右手系
    向量运算:加减法,内积,外积
    关于外积,引入了小尖^,表示将一个向量变成一个矩阵
    在SLAM中:

    • 有固定的世界坐标系和移动的机器人坐标系
    • 机器人坐标系随着机器人的运动而改变,每个时刻都有新的坐标系

    两个坐标系如何变换?原点间的平移和三个轴的旋转
    旋转矩阵:
    充分必要条件:

    • R是一个正交矩阵,矩阵的逆等于转置
    • R的行列式为1

    三维空间旋转:SO(3) 也成为特殊正交群,群的概念在李代数再探讨
    用四个数描述三维坐标,可以实现同时表示平移和旋转。
    这种做法称为齐次坐标
    此时旋转和平移可以放入一个矩阵,称为变换矩阵

    旋转矩阵与变换矩阵如下(非齐次形式)
    在这里插入图片描述

    3.3 欧拉角

    欧拉角描述了刚体围绕三个轴旋转的角度
    不同的旋转顺序对应不同的欧拉角,常用的是ZYX顺序,即“偏航-俯仰-滚转”
    欧拉角存在万向锁问题,可能会在一些情况下失去一个自由度
    对于万向锁问题,可以拿手机测试(或者任何物体),一旦有绕一个轴±90度旋转,那么其余两轴的作用效果将相同,失去了一个维度的信息,很有意思。
    在这里插入图片描述

    事实上,我们找不到不带奇异性的三维向量描述方式
    所以用四元数这个四个维度的描述方式来表示旋转

    3.4 四元数

    一种扩展的复数
    四元数有三个虚部,可以表达三维空间的旋转
    虚部之间有特定的运算关系,有点想三维空间中的叉积
    四元数有很多特定的公式,包括四元数的逆(对于表述旋转很重要)

    注意: Eigon库中对四元数乘法进行了重载,不必写出四元数的逆,运算符重载自动完成了这一步。

    第四讲 李群和李代数

    研究李群和李代数的根本目的:

    1. 将旋转矩阵变为可以加减的形式
    2. 消除后端优化中的约束问题

    通过李群—李代数之间的转换关系,希望把位姿估计变成无约束的优化问题。

    李群和李代数基础

    我们之前接触了两个群:

    • 特殊正交群:SO(3) 三维空间的旋转矩阵,是一个正交矩阵,且行列式为1,则为旋转矩阵
    • 特殊欧式群:SE(3) 包含三维空间旋转矩阵R,平移向量t,0^T和1的四维空间变换矩阵,即为三维欧式变换群

    群(group):是一种集合加上一种运算的代数结构,这个运算要满足“封结幺逆”四个条件

    • 封闭性
    • 结合律
    • 幺元

    李群(Lie Group):是指具有连续(光滑)性质的群
    反对称矩阵:对于一个向量,可以将其变成反对称矩阵,对于任意的反对称矩阵,也可以找到一个与之对应的向量,具体表示符号及含义如下图
    在这里插入图片描述
    李代数Φ:它是SO(3)在原点附近的正切空间,有如下的近似计算公式,对旋转矩阵求导相当于左乘一个李代数反对称矩阵,旋转矩阵等于e的李代数反对称矩阵次幂
    在这里插入图片描述在这里插入图片描述
    李代数由一个集合、一个数域、一个二元运算组成,如果他们满足以下几个特征,就称(V,F,[,])为一个李代数,记为g
    在这里插入图片描述
    需要明确的是,李代数不加区分的表示三维向量及其反对称矩阵,如下公式可以看出这一点
    在这里插入图片描述
    在这里插入图片描述

    指数映射:在李群和李代数中,计算exp(Φ^)称为指数映射(Exponential Map)
    对于某一个时刻(这很重要,不考虑时间t的影响),以SO(3)为例,有如下的等式成立
    在这里插入图片描述
    等式左边就是某个时刻的旋转矩阵(公式推导中本来是有一个t的),同时我们将李代数Φ等效为θa,θ为模长,a为长度为1的方向向量
    特别的,上式和罗德里格斯公式如出一辙,这表明李代数so(3)实际上就是由所谓的旋转向量组成的空间,而指数映射即为罗德里格斯公式。
    通过它们,我们将李代数so(3)中的任意一个向量对应到了一个位于李群SO(3)中的旋转矩阵。反之定义对数映射

    对数映射:指数映射的逆过程,公式如下
    在这里插入图片描述
    李群和李代数相互转化关系由如下关系图表示
    在这里插入图片描述
    **李代数求导问题:**在求解最优估计的时候,我们经常会构建与位姿有关的函数,然后讨论该函数关于位姿的导数,以调整当前的估计值。
    李代数求导思路:

    • 用李代数表示姿态,然后根据李代数加法对李代数求导
    • 对李群左乘或右乘微小扰动,然后对该扰动求导,称为左扰动和右扰动模型。

    直接对李代数求导,结果如下,因为含有形式较为复杂的Jl,我们不喜欢该表示形式。
    在这里插入图片描述
    扰动模型求导,结果如下,需要理解下述公式,比较重要
    在这里插入图片描述

    实践Sophus

    有待补充

    第五讲 相机与图像

    相机模型

    相机将三维世界中的坐标点(单位为米)映射到二维图像平面(单位为像素)的过程,并能够使用一个几何模型进行描述。
    其中最常用的为针孔模型
    另外,这里涉及到几个坐标系的转换关系。

    四个坐标系:

    世界坐标系–相机坐标系–图像坐标系–像素坐标系
    世界坐标系:人为定义的一种最原始的基础坐标系,用来描述世界中各个物体所处的位置
    相机坐标系:以相机光心为原点,相机自身的坐标系,是一个三维坐标系
    图像坐标系:在相机的成像平面上,为了描述相机坐标系的成像情况,所建立的二维坐标系
    像素坐标系:以成像平面左上角为原点,像素大小为坐标分度值,将图像坐标系上的图像转化为像素坐标信息,是最终获得图片的二维坐标系

    针孔相机模型

    针孔相机模型示意图如图所示
    在这里插入图片描述
    世界坐标系到相机坐标系:
    从自定义的世界坐标系完成一次平移加旋转
    相机坐标系到图像坐标系:
    利用投影关系,根据相似定理,找到一种投影比例关系
    图像坐标系到像素坐标系:
    由于坐标尺度和原点不同,要进行伸缩和平移

    有意思的是:我们利用单目相机拍摄时,会损失掉深度信息,这在计算过程中的归一化过程有所体现,从物理层面上来理解,只要一个物体的投影点保持不变,是可以在空间中任意遥远的距离移动,或者说近处的小物体和远处的大物体看起来可以完全相同

    畸变模型

    畸变分类:

    • 径向畸变:由透镜形状引起的畸变:桶形畸变&枕形畸变
    • 切向畸变:透镜和成像面未严格平行引入的畸变

    在这里插入图片描述

    实践部分

    有待补充

    展开全文
  • 《视觉SLAM十四讲》学习笔记一

    千次阅读 2019-01-09 20:56:48
    此系列学习笔记是针对《视觉SLAM十四讲》的内容进行个人理解性记录,书本地址与书本代码如下:  书本地址:http://www.broadview.com.cn/book/4938  书本代码:https://github.com/gaoxiang12/slambook 第一讲...

    此系列学习笔记是针对《视觉SLAM十四讲》的内容进行个人理解性记录,书本地址与书本代码如下:

     书本地址:http://www.broadview.com.cn/book/4938

      书本代码:https://github.com/gaoxiang12/slambook

    第一讲:预备知识 

    SLAM:(Simultaneous Localization and Mapping )同时定位与地图构建

                指搭载特定传感器的主体,在没有环境先验信息的情况下,于运动过程中建立环境的模型,同时估计自己的运动。

    全书内容主要分为两个部分:

    1、第一部分为数学基础篇

          第一讲是前言

          第二讲是SLAM系统概述

          第三讲介绍三维空间运动

          第四讲为李群和李代数

          第五讲介绍针孔相机模型以及图像在计算机中的表达

          第六讲介绍非线性优化

    2、第二部分为SLAM技术篇

          第七讲为特征点法的视觉里程计

          第八讲为直接法的视觉里程计

          第九讲为视觉里程计的实践章

          第十讲为后端优化

          第十一讲主要讲后端优化中的位姿图

          第十二讲为回环检测 

          第十三讲为地图构建

          第十四讲主要介绍当前的开源SLAM项目以及未来的发展方向

    课后基本知识自测题

    1、线性方程 Ax=b 的求解是线性代数的问题,分为齐次线程方程 Ax=0 以及非齐次线性方程 Ax=b 两种形式

    对于方程组的求解,需要根据矩阵A的秩来求,不同的秩对应不同多的解。

    具体线性代数知识可参考:知乎专栏:参考资料

    2、高斯分布是概率论的内容,具体的不太了解,具体高斯分布的知识CSDN上有很多讲解,可参考:CSDN:高斯混合模型笔记

    3、C++是面向对象的编程语言,类是用户自定义的类型。STL是C++标准模板库,六大组件:容器、迭代器、算法、仿函数、迭代适配器、空间配置器。可参考:博客:STL介绍

    4、windows下用VS,Linux下用clion

    5、不了解

    6、目前使用Ubuntu系统

    7、根目录 / 、/home 、 等等不了解了,ls:菜单 、 cat:查看当前目录 还不太了解,正在对这方面进行学习

    8、sudo get-install ...   yum... 等 ,软件安装位置不了解,正在学习,模糊软件名称我通常下载软件包按照教程安装,哈哈

    9、未学习过:参考CSDN:Vim学习

     

    展开全文
  • 视觉SLAM十四讲视频下载

    千次阅读 2019-10-08 20:16:56
    对于SLAM初学者来说高翔的视觉SLAM十四讲是一本不错的入门书籍,从理论到实践,内容十分丰富。 下面提供针对视觉SLAM十四讲的视频,带你入门不是问题。 下载链接:...
  • 视觉SLAM十四讲-第七讲笔记

    千次阅读 2018-11-01 16:41:46
    这一章的是基于特征点法的前端,分为以下内容。 特征点法:找到两张2D图像上的匹配点。 对极几何:根据2D-2D特征点对求解R,t。 三角测量:根据2D-2D特征点求深度。 PnP:根据3D点云和匹配的2D图像求R,t。 ICP:求...
  • 2019-2020-2学期机器人工程专业需要开设SLAM技术课程,使用教材为视觉SLAM十四讲从理论到实践第二版。 为方便学生学习课程知识,将Arduino、ROS1、ROS2和SLAM集成到课程定制版镜像中。链接如下: ...
  • 第1 前言:本书什么;如何使用本书; 第2 初始SLAM:引子-小萝卜的例子;经典视觉SLAM框架;SLAM问题的数学表述;实践-编程基础; 第3 三维空间刚体运动 旋转矩阵;实践-Eigen;旋转向量和欧拉角;四元数...
  • 数学基础,1-6,这是需要夯实的基础内容,考研之后哦还给老师的,从新捡回来吧 三维空间运动,也就是对相机机器人建模,旋转矩阵,四元数,欧拉角这些鬼东西噢 李群李代数,对,就是大学高数没有的那部分...
  • 《视觉SLAM十四讲》之开源库的安装

    千次阅读 2018-02-02 08:39:10
    笔记:《视觉SLAM十四讲》之开源库的安装 目录前言1、Eigen线性代数库的安装2、Sophus李代数库的安装3、OpenCV计算机视觉库的安装4、PCL点云库的安装 5、Ceres非线性优化库的安装6、G2O图优化库的安装7、...
  • 《视觉SLAM十四讲》书籍图片资源

    千次阅读 2017-06-05 13:29:53
    版权声明:转载请注明出处,谢谢...最近在拜读高博的新作《视觉SLAM十四讲》,发现书中的灰度图片有时会造成对相关内容理解困难,随将书中的图片存放在这里,以便随时查阅。我想高博看到了,也一定不会反对的,哈哈。
  • 视觉SLAM十四讲(第一章作业)

    千次阅读 2018-10-01 15:50:10
    INSTALL(FILES hello.h DESTINATION ~/backup/cmake/code/build/lib) //这里主要hello的头文件安装到build/lib文件夹中,方便后续包含头文件 2、然后在工程目录下创建 src 文件夹, src 文件夹包含 useHello.c ...
  • 后端优化1(SLAM十四讲ch10)-BA

    千次阅读 2018-09-02 21:46:05
    这些五颜六色的线就是我们的光束啦!那现在就该说下什么叫重投影误差了,重投影也就是指的第二次投影,那到底是怎么投影的呢?我们来整理一下吧: 其实第一次投影指的就是相机在拍照的时候三维空间点投影到图像...
  • 《视觉slam十四讲》第3讲课后习题

    千次阅读 多人点赞 2018-12-10 15:56:34
    首先将课后习题做一遍是个温习本书内容的过程。 1.验证旋转矩阵是正交矩阵: 首先明白什么是旋转矩阵,根据树上p42页定义,旋转矩阵R: 其中,为原单位正交基,为旋转后的单位正交基。在这只要求验证(实矩阵...
  • Ceres库安装踩坑(SLAM十四讲

    千次阅读 2020-03-15 00:32:11
    报错内容是:虽然找到了.cmake,但是版本不匹配,需要eigen3.2.92之类之类 之前通过Eigen的官网直接安装了Eigen3.3.7(采用3.3版本是为了和sophus所对应) 但是Eigen3.3.7无法与ceres1.11.0对应(如果你是通过...
  • 《SLAM十四讲》相关库安装 因为扩展虚拟机存储空间把系统搞坏了,重新安装了书里提到的各种库。本文又名“踩过的那些坑……” 提醒: 1. OpenCV库及其扩展库contrib请选择匹配版本(3.3.1+3.3.1)且同时编译...
  • 《C语言修仙·下》编辑推荐、内容简介及作者一十四洲简介《C语言修仙·下》编辑推荐● 《C语言修仙》是晋江超人气作者一十四洲未来幻想力作,也是晋江完结金榜作品,截止目前已有60亿积分,20万收藏,18万评论,反响...
  • // g2o 中必须设置 marg 参见第十讲内容 optimizer.addVertex ( point ); } // 相机内参K,CameraParameters类 g2o::CameraParameters* camera = new g2o::CameraParameters ( K.at<double> ( 0,0 ), Eigen::...
  • 若您觉得本博文对您有帮助,请支持高博的新书《视觉SLAM十四讲》,【 点击购买 】 若您觉得本博文对您有帮助,请支持高博的新书《视觉SLAM十四讲》,【 点击购买 】 若您觉得本博文对您有帮助,请支持高博的新书...
  • 视觉SLAM十四讲笔记 -- 第二讲

    千次阅读 2021-12-19 15:12:13
    1.阅读文献[1]和[14],你能看懂其中的内容吗? 文献1:A survey of monocular simultaneous localization and mapping 可以从百度学术上自行下载 本文献是一篇SLAM的综述,首先从AR(Augmented reality 增强现实)...
  • 《视觉SLAM十四讲》学习系列(1)—经典视觉SLAM...本文主要内容来自《视觉SLAM十四讲》第二讲-初识SLAM。经典视觉SLAM流程包括: 1、传感器信息提取。主要是相机图像相关信息。 2、视觉里程计(Visual Odometry,VO)
  • 可证明特定的人或机构在其上添加了特定的数据,包括电子出版、追踪文档内容的变化和版权保护 所有权证明 用于认证和管理所有权,应用于房产证、公司股份、证券或加密货币 特定的使用场景 加密货币 微...
  • 本章的理论内容我已经将其总结在了SLAM14学习笔记(六)后端(最难一章:卡尔曼滤波器推导、理解以及扩展)以及SLAM14学习笔记(七)后端(BA与图优化,Pose Graph优化的理论与公式详解、因子图优化)当中。...
  • 网站优化 14条--雅虎十四条优化原则

    千次阅读 2016-02-23 11:23:51
    雅虎十四条优化原则
  • 本节内容已在笔记本进行推导分为2D-2D、3D-2D、3D-3D。 三位场景中的同一个三维点在不同视角下的像点存在着一种约束关系:对极约束,基础矩阵E是这种约束关系的代数表示,并且这种约束关系独立与场景的结构,只依赖...
  • MIT线性代数笔记十四讲 正交向量与正交子空间

    万次阅读 多人点赞 2019-08-23 17:33:02
    这张图是 GS 最得意的作品之一, 它反映了个子空间的关系, 在后面的课程中可以看到其两两形成正交,在 R n R^n Rn 空间中的向量会向两个子空间投影,并向 R m R^m Rm空间形成映射,反之亦然。 1. 正交向量 ...
  • halcon第二十四讲:手眼标定基本原理

    万次阅读 多人点赞 2018-11-23 13:04:59
    相机坐标系(相机坐标系里又有图像坐标系和像素坐标系,这其实就是前面的单目标定的内容) 基坐标系 手眼标定一般有两种形式: 1、相机固定(eye-to-hand) 我们需要的最终结果,即得到base 与 cam 的空间...
  • 视觉slam14——第9 设计前端

    千次阅读 2017-12-04 21:39:15
    本系列文章是记录学习高翔所著《视觉slam14》的内容总结,文中的主要文字和代码、图片都是引用自课本和高翔博士的博客。代码运行效果是在自己电脑上实际运行得出。手动记录主要是为了深入理解 涉及到的主要内容...
  • 视觉SLAM14-习题及答案-第一

    千次阅读 2018-09-17 21:04:34
    cat:显示文件内容;mkdir:建立文件夹;rmdir:删除文件夹;cd:改变当前用户所处位置。 8 用sudo apt-get install 命令安装软件。 Ubuntu软件安装位置,一般都在/usr/bin下,个别可能会安装到/usr/share...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 182,386
精华内容 72,954
关键字:

十四讲内容