视觉slam十四讲 订阅
《视觉SLAM十四讲》是2017年3月电子工业出版社出版的图书,作者是高翔、张涛。 [1] 展开全文
《视觉SLAM十四讲》是2017年3月电子工业出版社出版的图书,作者是高翔、张涛。 [1]
信息
全    称
视觉SLAM十四讲:从理论到实践
作    者
高翔、张涛
定    价
75.00
装    帧
平装
书    名
视觉SLAM十四讲
出版时间
2017年3月
开    本
16
出版社
电子工业出版社
ISBN
9787121311048
页    数
400
视觉SLAM十四讲内容简介
《视觉SLAM十四讲:从理论到实践》系统介绍了视觉SLAM(同时定位与地图构建)所需的基本知识与核心算法,既包括数学理论基础,如三维空间的刚体运动、非线性优化,又包括计算机视觉的算法实现,例如多视图几何、回环检测等。此外,还提供了大量的实例代码供读者学习研究,从而更深入地掌握这些内容。《视觉SLAM十四讲:从理论到实践》可以作为对SLAM 感兴趣的研究人员的入门自学材料,也可以作为SLAM 相关的高校本科生或研究生课程教材使用。 [1] 
收起全文
精华内容
下载资源
问答
  • 视觉slam十四讲

    2021-02-22 08:01:39
    视觉slam十四讲
  • 视觉SLAM十四讲PPT

    2021-05-04 12:57:05
    精品课程PPT分享,视觉SLAM十四讲配套PPT, 全网唯一资源
  • 视觉SLAM十四讲配套代码
  • 视觉SLAM十四讲.rar

    2021-03-14 00:13:26
    高翔教授的视觉SLAM十四讲从理论到实践的相关课件,前两章基本是配套视频的,后面几章不全,只有从三维空间刚体运动到后端,大家仔细考虑下载
  • Tsai分享:资源分享(1)——视觉SLAM十四讲及视频

    万次阅读 多人点赞 2019-03-07 10:13:53
    Tsai分享:资源分享(1)——视觉SLAM十四讲及视频 一、视觉SLAM十四讲 如若转载请附上链接:https://blog.csdn.net/weixin_43338642/article/details/88287121 链接:...

    Tsai分享:资源分享(1)——视觉SLAM十四讲及视频

    一、视觉SLAM十四讲

    如若转载请附上链接:https://blog.csdn.net/weixin_43338642/article/details/88287121

    链接:https://pan.baidu.com/s/1m6AQNz2ujCFVoJUtMe9TBg 
    提取码:91e0 

     

    二、SLAM 视频教程

    链接:https://pan.baidu.com/s/1p9cGL_XTaADVh-UMgnFGBQ 
    提取码:fe13 

    三、SLAM代码资料

    链接:https://pan.baidu.com/s/1yO4JpoMEMqvPpbm1i5v36g 
    提取码:rzz1 

    若对我的笔记有兴趣的可以查看我的博客,地址:https://blog.csdn.net/weixin_43338642?t=1。 

    展开全文
  • 视觉SLAM十四讲; LK光流;直接法
  • 视觉SLAM十四讲.zip

    2020-11-08 21:34:34
    视觉SLAM十四讲 另外还包括以下资料: 涵盖感知,规划和控制,ADAS,传感器; 1. apollo相关的技术教程和文档; 2. adas(高级辅助驾驶)算法设计(例如AEB,ACC,LKA等) 3. 自动驾驶鼻祖mobileye的论文和专利介绍 4...
  • 视觉SLAM十四讲
  • 本文为视觉 SLAM 学习总结。视觉SLAM十四讲 第二 初识 SLAM。内容包括视觉 SLAM 框架、SLAM 问题的数学描述、实践部分

    本文为视觉 SLAM 学习总结。欢迎交流

    本讲内容概要

    • 视觉 SLAM 框架
    • 搭建编程环境
    • 在 Linux 下编译运行程序,如何调试
    • 掌握 cmake 的基本使用方法

    内外兼修

    SLAM 中有两个相互耦合的问题,定位和建图需要内外兼修:

    • 准确的定位需要精确的地图
    • 精确的地图来自准确的定位

    传感器

    有两类传感器,一种是安装在环境中,如二维码 Marker、GPS、导轨等;另一类携带于机器人本体,如 IMU、激光、相机等。但环境中的传感器限制了应用环境,因此我们需要机器人在未知的环境下进行定位建图。

    激光和相机

    相机有便宜、轻便、信息量丰富的特点,但也存在耗费计算量并且对工作条件有一定要求,如光线要充足,不能被遮挡,图像具有一定的纹理。因此相机暂时还不能完全替代激光。

    相机

    相机的本质是以二维方式记录了三维世界的信息,在这个过程中丢了一个维度——距离。

    单目相机

    在下图中,我们不知道手上的人是真人还是模型。

    在这里插入图片描述

    近处的物体移动得快,远处的物体移动的慢。我们可以根据这个原理辨别图像中的距离。

    双目相机

    下图中,双目左右眼的微小差异判断远近。推算计算量很大。

    在这里插入图片描述

    深度相机

    物理手段测量深度,有结构光和 ToF 的方法,主动测量,功耗大,深度测量较准确。但是量程较小,易受干扰。

    视觉 SLAM 框架

    在这里插入图片描述

    视觉里程计类似于里程计,通过得到两两之间的运动,并对其进行估计,叠加后得到整个运动轨迹。里程计有漂移的现象,我们还需要用后端进行优化。回环检测通过检测相机又回到之前经过的点,从而对轨迹进行调整,最终得到全局一致的轨迹。有时我们会对地图有要求,特征点的地图不足以让机器人进行导航和避障,这时就需要建图。

    视觉里程计:

    • 相邻图像估计相机运动
    • 通过两张图像计算运动和结构
    • 不可避免地有漂移

    后端优化:

    • 从带有噪声的数据中优化轨迹和地图,是状态估计问题
    • 最大候验概率估计 MAP
    • 前期以 EKF 为代表,现在以图优化为代表

    回环检测:

    • 检测机器人是否回到早先位置
    • 计算图像间的相似性

    建图:

    • 用于导航、规划等
    • 度量地图 vs 拓扑地图
    • 稀疏地图 vs 稠密地图

    SLAM 问题的数学描述

    SLAM 是离散时间 t = 1 , 2 , … , k t=1,2,…,k t=1,2,,k 下测得的机器人位置 x 1 , x 2 , … , x k x_1,x_2,…,x_k x1,x2,,xk,将它们看成随机变量,服从概率分布。因为小萝卜是从上一个时刻运动到下一个时刻的,因此其位置可以表示为
    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)
    其中 x k − 1 x_{k-1} xk1 为上一时刻, u k u_k uk 为输入, w k w_k wk 为噪声。称其为运动方程。

    在相机中,我们会观察到很多路标(三维空间点) y 1 , y 2 , … y n y_1,y_2,…y_n y1,y2,yn,传感器在位置 x k x_k xk 探测到了路标 y j y_j yj,得到了一个探测数据:
    z k , j = h ( x k , y j , v k , j ) z_{k,j}=h(x_k,y_j,v_{k,j}) zk,j=h(xk,yj,vk,j)
    其中 v k , j v_{k,j} vk,j 为噪声。称其为观测方程。

    • x k x_k xk 的表示形式在 CH3、4 讨论
    • 观测数据是相机中的像素点,如何表述?在 CH5 讨论
    • 已知输入 u , z u,z u,z,如何推断 x , y x,y x,y 在 CH6 讨论

    实践部分

    运行环境

    • Windows 10
    • VMware Workstation Pro
    • Ubuntu 16.04 LTS

    g++

    首先使用 touch main.cpp 在新建的 ch2 目录下创建文件 main.cpp,然后输入 vim main.cpp 进行编辑:

    #include<iostream>
    using namespace std;
    int main(int argc, char** argv) {
    	cout << "Hello SLAM" << endl;
        return 0;
    }
    

    按下 ESC 后在底部输入 :wq 保存文件并退出。然后用 g++ 进行编译,产生可执行文件并运行,输出 “Hello SLAM”。

    g++ main.cpp # g++编译
    ls
    ./a.out # 运行可执行文件
    

    以上使用了默认的选项。我们可以用 -o 选项来指定生成的文件名:

    g++ main.cpp -o helloSLAM
    ls
    ./helloSLAM
    

    cmake

    当工程很大时,我们有很多 cpp 文件,如果使用 g++,我们需要输入很多参数十分麻烦。可以用 cmake 来编译整个工程。关于 Ubuntu 中 cmake 的安装见 Ubuntu 中安装 cmake

    首先创建文件 CMakeLists.txt,并添加代码:

    cmake_minimum_required(VERSION 2.8) # 声明最低版本
    project(helloSLAM) # 声明一个cmake工程
    
    # 添加一个可执行程序
    # 语法:add_executable(程序名 源代码文件)
    add_executable(helloslam main.cpp) # 添加可执行文件
    

    在命令行中输入:

    # cmake后需指定路径,.表示当前路径下,生成一个makefile文件
    cmake .
    
    # 根据makefile文件的内容编译整个工程
    make
    

    最终得到可执行文件 helloslam。我们的工作从写一串的 g++ 变为了维护一个 CMakeLists.txt,但实际调用的还是 g++,当源文件很多时,这种方法的优势就很明显了。这种优势在后续的软件安装时你会明显的感受到。

    在刚才命令 cmake . 时生成了很多中间文件与源文件夹杂在一起,显得文件结构很混乱,我们可以在当前目录下创建 build 文件夹,然后对上层的文件进行编译,中间文件会生成在 build 文件夹中,上层的文件夹是干净的。并且在发布源代码时,我们只需要删除 build 文件夹。

    mkdir build
    cd build
    cmake ..
    make
    

    在 C++ 工程中,只有含有 main 函数的文件才会生成可执行程序。如果程序需要调用一些其他文件中的类或函数,就需要用的库来打包。我们写一个例子进行说明,通过调用其他函数来打印 Hello SLAM:

    // hello.cpp
    #include <iostream>
    using namespace std;
    void printHello(){
    	cout<<"Hello SLAM"<<endl;
    }
    

    CMakeLists.txt 最后一行后加入:

    add_library(hello hello.cpp) # 将hellp.cpp编译为hello的库
    

    查看 build 目录下,产生了文件 libhello.a,是对 hello 进行了打包。如果要调用这个库,我们还需要有一个头文件告诉程序要调用这个库:

    #pragma once
    
    void printHello();
    

    然后写一个 main 函数来调用这个 printHello 函数:

    #include "hello.h"
    int main(){
    	printHello();
    	return 0;
    }
    

    然后在 CMakeLists.txt 中添加一个可执行程序的生成命令,链接到刚才的库上:

    add_executable(useHello useHello.cpp)
    # useHello程序可调用hello库中的代码
    target_link_libraries(useHello hello)
    

    用别人的库也可以这样整合到自己的代码中。

    使用 IDE

    在目录的上下级之间跳转很复杂,我们可以用一个简单的 IDE 来完成这些工作,这里推荐 Kdevelop,使用以下命令进行安装:

    sudo apt-get install kdevelop
    kdevelop # 直接命令行打开
    

    打开 Kdevelop 后,我们打开工程,选择刚才创建的 CMakeLists.txt 就可以打开刚才的工程了。可以点击“ctrl + 函数名”来跳转到对应的函数实现处。

    在 IDE 中直接编译就会自动生成一个 build 目录,因此我一般会在编译器中编译,然后在命令行中运行可执行文件,方便查看结果。

    在 CMakeLists.txt 中加入下面命令来设置编译模式:

    set(CMake_BUILD_TYPR "Debug")
    

    这里因为有多个可执行程序,我们需要指定需要调试的可执行程序。添加断点后,点击 Debug 模式就可以进行调试了。

    展开全文
  • 视觉SLAM十四讲;ORB特征点;G-N;Bundle Adjustment
  • 视觉SLAM十四讲笔记

    2020-09-08 19:17:29
    视觉SLAM十四讲笔记 ** 1.视觉SLAM十四讲ch4中Sophus编译错误: https://github.com/gaoxiang12/slambook/issues/20 在CMakeLists.txt里加上 set(Sophus_LIBRARIES libSophus.so) ,如果找不到libSophus.so,在make ...

    **

    视觉SLAM十四讲笔记

    **
    1.视觉SLAM十四讲ch4中Sophus编译错误:
    https://github.com/gaoxiang12/slambook/issues/20
    在CMakeLists.txt里加上 set(Sophus_LIBRARIES libSophus.so) :

    set(Sophus_LIBRARIES libSophus.so) 
    

    如果找不到libSophus.so,在make install sophus后用sudo ldconfig更新下:

    mkdir build
    cd build
    cmake ..
    make
    make install sophus
    sudo ldconfig
    

    其他借鉴:https://blog.csdn.net/haxiongha/article/details/82464148
    sophus https://blog.csdn.net/qq_34078823/article/details/103891404

    2.ubuntu安装和卸载:
    https://blog.csdn.net/qq_36936730/article/details/104862751#3.%E5%85%B6%E4%BD%99%E8%AE%BE%E7%BD%AE
    安装时安全设置AHCI模式:
    https://discourse.ubuntu.com/t/ubuntu-installation-on-computers-with-intel-r-rst-enabled/15347
    卸载:
    https://blog.csdn.net/guikunchen/article/details/88077330
    注意:卸载时如果出现磁盘不能识别的情况,把硬盘拆下来重新重新装上试试。

    3.linux系统连接expressvpn:
    https://www.kanzhun.com/jiaocheng/570807.html
    简单操作:连接:在终端里输入

    expressvpn activate
    expressvpn connect
    

    终止连接:

    expressvpn disconnect
    

    4.ch5.3.2中OpenCV库版本不同问题:
    原文用的时候OpenCV3,我装的最新版是4,这不需要重装OpenCV库,只需要将CMakeLists.txt中第8行“find_package( OpenCV 3 REQUIRED )”中的3改为4即可。

    find_package( OpenCV 4 REQUIRED )
    

    但如果在使用过程中发现少装了依赖,需要先卸载掉库装好依赖后重装一下库:https://blog.csdn.net/public669/article/details/99050101

    5.ch5.4拼接点云:
    关于测试pcl库遇到的问题和cmake制定C++标准的问题:
    https://blog.csdn.net/sinat_35775571/article/details/103568982
    https://www.csdn.net/gather_2f/MtjaIg0sNjAyNjItYmxvZwO0O0OO0O0O.html
    将CMakeLists.txt中set( CMAKE_CXX_FLAGS “-std=c++11 -O3” )改为set( CMAKE_CXX_FLAGS “-std=c++2a” )即可。

    set( CMAKE_CXX_FLAGS "-std=c++2a" )
    

    拼接点云过程:

    mkdir build
    cd build
    cmake ..
    make
    cd ..
    build/joinMap
    pcl_viewer map.pcl
    

    6.视觉SLAM部分知识点:
    万字干货!视觉SLAM面试题汇总(19年秋招)——第二部分 - 知乎 https://zhuanlan.zhihu.com/p/212264860

    展开全文
  • Slam十四讲第1 重点总结 首先第1介绍了slam的基本概念、主要结构、所需掌握的基础知识。...《视觉Slam十四讲》主要结构 需要掌握的基础知识 1)高等数学、线性代数、概率论 2)C++语言基础 3)L...

    Slam十四讲第1讲

    重点总结

    首先第1讲介绍了slam的基本概念、主要结构、所需掌握的基础知识。

    1. SLAM 是 Simultaneous Localization and Mapping 的缩写,中文译作“同时定位与地图构建”,目的是解决“定位”和“地图构建”两个问题。

    2. 《视觉Slam十四讲》主要结构《视觉Slam十四讲》主要结构

    3. 需要掌握的基础知识 1)高等数学、线性代数、概率论 2)C++语言基础 3)Linux基础

    课后习题

    1. 有线性方程 Ax = b,当我们知道 A,b,想要求解 x 时,如何求解?这对 A 和 b 需 要哪些条件?提示:从 A 的维度和秩角度来分析。
      1)b等于0;n元齐次线性放程序A_(m×n) x=0有非零解的充分必要条件是习数矩阵的秩R(A)<n;
      2)b不等于0;非齐次线性方程组Ax=b有解的充分必要条件是系数矩阵的秩等于增广矩阵的秩,即R(A)=R(B).
      R(A)=R(B)=n <=> Ax=b有唯一解;
      R(A)=R(B)<n <=> Ax=b有无穷多解;

    2. 高斯分布是什么?它的一维形式是什么样子?它的高维形式是什么样子?
      高斯分布又叫正态分布,与高斯分布相关的一个重要定理是中心极限定理,它的内容为:任何分布的抽样分布当样本足够大时,其渐进分布都是高斯分布。
      1) 一维高斯分布形式:一维高斯分布 2)高维高斯分布:
      在这里插入图片描述

    3. 你知道 C++ 的类吗?你知道 STL 吗?你使用过它们吗?
      类定义是用关键字class开头,后面跟类的名臣,类的主体包含在一对花括号中。类定义后必须跟着一个分号或一个声明列表。关键字public确定了类成员的访问属性。

    class car
    {
       public :
          double length; //定义汽车长度
          double height; //定义汽车高度
     };
    

    STL是C++标准库的一部分,不用单独安装。
    在这里插入图片描述
    参考:http://c.biancheng.net/stl/
    4. 略
    5. 你知道 C++11 标准吗?其中哪些新特性你之前听说过或使用过?有没有其他的标准?
    1)新类型
    2)统一的初始化
    3)声明
    4)智能指针
    5)异常规范方面的修改,等等。
    参考:
    https://blog.csdn.net/qq_40421919/article/details/91049264
    https://blog.csdn.net/feiyu2046/article/details/63256095
    6. 略
    7. Linux 的目录结构是什么样的?你知道哪些基本命令,比如 ls, cat 等等?
    在这里插入图片描述

    ls [-alrtAFR] [name...]
    

    参数 :

    -a 显示所有文件及目录 (ls内定将文件名或目录名称开头为"."的视为隐藏档,不会列出)
    -l 除文件名称外,亦将文件型态、权限、拥有者、文件大小等资讯详细列出
    -r 将文件以相反次序显示(原定依英文字母次序)
    -t 将文件依建立时间之先后次序列出
    -A 同 -a ,但不列出 “.” (目前目录) 及 “…” (父目录)
    -F 在列出的文件名称后加一符号;例如可执行档则加 “*”, 目录则加 “/”
    -R 若目录下有文件,则以下之文件亦皆依序列出

    cat [-AbeEnstTuv] [--help] [--version] fileName
    

    参数:

    -n 或 --number 由 1 开始对所有输出的行数编号
      -b 或 --number-nonblank 和 -n 相似,只不过对于空白行不编号
      -s 或 --squeeze-blank 当遇到有连续两行以上的空白行,就代换为一行的空白行
      -v 或 --show-nonprinting

    参考:
    https://www.cnblogs.com/weigege2015/p/9278828.html
    https://www.cnblogs.com/weigege2015/p/9278828.html
    8. 如何在 Ubuntu 中安装软件(不打开软件中心的情况下)?这些软件被安装在什么地方?当我只知道模糊的软件名称(比如我想要装一个 eigen 名称的库),我应该如何安装它?
    sudo apt-get inatall 软件名
    一般安装在/usr/local目录下。部分软件放在/opt下,则是一个软件统一在一个文件夹下。/opt目录专门是用来给第三方软件放置文件的,比如一些压缩包解压的软件都放在这里。
    9. * 花一个小时学习一下 Vim,因为你迟早会用它。你可以在终端中输入 vimtutor 阅读一遍所有内容。我们不需要你非常熟练地操作它,只要在学习本书的过程中使用它 键入代码即可。不要在它的插件上浪费时间,不要想着把 vim 用成 IDE,我们只用它做文本编辑的工作。
    参考:https://www.jianshu.com/p/4e59c605183a

    展开全文
  • @《视觉SLAM十四讲》知识点与习题 《视觉SLAM十四讲》第二知识点整理+习题 正在学习SLAM相关知识,将一些关键点及时记录下来。 知识点整理 本主要是介绍了SLAM,主要是视觉SLAM方面的基础知识,对一些术语进行了...
  • 视觉SLAM十四讲;双目视差;高斯牛顿曲线拟合
  • 高博在视觉SLAM十四讲中使用的Sophus版本,解决 Eigen 与 Sophus 版本不兼容的问题,无需源码安装Eigen 3.3.0,同时可以解决 ‘ScalarBinaryOpTraits’ in namespace ‘Eigen’ 的问题。可在十四讲代码的百度网盘...
  • 视觉SLAM十四讲习题答案

    万次阅读 多人点赞 2018-06-21 15:50:20
    阅读《视觉SLAM十四讲》中遇到的问题及习题资源整理,或为原创,或来自网络,如有问题请与我联系,会在第一时间加以修正。 后来自己写完看到另一位写的博客,相形见绌,大家可以互相结合的看。 第一 1.线性方程...
  • 1. 视觉SLAM 系统概述 SLAM 是Simultaneous Localization and Mapping 的缩写,中文译作“同时定位与地图构建” 。它是指搭载特定传感器的主体,在没有环境先验信息的情况下,于运动过程中建立环境的模型,同时估计...
  • 视觉SLAM十四讲》学习系列(1)—经典视觉SLAM框架视觉SLAM十四讲学习系列1经典视觉SLAM框架 视觉里程计 后端优化 回环检测 建图 度量地图 拓扑地图 SLAM问题的数学表述 本文主要内容来自《视觉SLAM十四讲》第二...
  • 视觉SLAM十四讲》程序中的3rdparty文件夹,里面包含ceres、sophus、g2o等第三方库。设置的粉丝可下载,关注博主后即可获得,不需要积分
  • 视觉SLAM十四讲视频下载

    千次阅读 2019-10-08 20:16:56
    对于SLAM初学者来说高翔的视觉SLAM十四讲是一本不错的入门书籍,从理论到实践,内容十分丰富。 下面提供针对视觉SLAM十四讲的视频,带你入门不是问题。 下载链接:...
  • 视觉SLAM十四讲第二笔记 本书主要围绕下面的框架逐个部分讲解。 一、视觉SLAM的整体框架 经典视觉SLAM框架: 整个视觉SLAM流程包括: 传感器数据的读取。在视觉 SLAM 中主要为相机图像信息的读取和预处理。如果在...
  • 感谢博主nullwh的分享,原文链接 视觉SLAM十四讲视觉SLAM十四讲 第二版》笔记及课后习题(第一) 《视觉SLAM十四讲 第二版》笔记及课后习题(第二) 《视觉SLAM十四讲 第二版》笔记及课后习题(第三) ...
  • 目录说在前面代码理解g2o优化Code运行结果 说在前面 书籍参考:《视觉SLAM十四讲》高翔著 书籍代码地址:Github 数据集:TUM 环境搭建:【SLAM】在WSL中...《视觉SLAM十四讲》第四、第六、7.7.3、7.8 Bund...
  • 视觉SLAM十四讲(1)

    2019-03-25 20:55:28
    视觉SLAM十四讲(1)初识SLAM 初识SLAM
  • 温馨提示,嘻嘻:我写这个系列博客的目的是,通过解读《视觉SLAM十四讲》,将自己当初学习这本书时,困惑的不解地方进行填坑,所以书中已经详细说明的内容,我不再赘述,对于书中省略的内容,我觉得很有用的东西,我...
  • 视觉SLAM十四讲;Eigen;QR和Cholesky矩阵分解
  • 视觉SLAM十四讲》中各库的安装 https://blog.csdn.net/HZ490727/article/details/80866894
  • 视觉 SLAM 十四讲 —— 第十三 建图 在前端和后端中,我们重点关注同时估计相机运动轨迹与特征点空间位置的问题。然而,在实际使用 SLAM 时,除了对相机本体进行定位之外,还存在许多其他的需求。例如,考虑放在...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 7,798
精华内容 3,119
关键字:

视觉slam十四讲