精华内容
下载资源
问答
  • 一、环境配置,基本库的安装 1、Eigen库 apt-get 安装 2、sophus库 apt-get 安装 3、pcl 点云库 (1)官方预编译版本 sudo apt-get install libpcl-dev ...卸载 sudo apt-get remove install libpcl-dev ...cmak...

    一、环境配置,基本库的安装

    1、Eigen库

    apt-get 安装

    2、sophus库

    apt-get 安装

    3、pcl 点云库

    (1)官方预编译版本

    sudo apt-get install libpcl-dev

    卸载 sudo apt-get remove install libpcl-dev

    (2)源文件编译)(耗时很长)

    安装一堆依赖库

    git clone

    cmake ..

    make install

    4、kDevelop

    打开工程

    build 

    debug(launch configuratoin 里选择与项目名称相同的那项)

    查看g++版本  g++ -version

    5、opencv3.4.4

    下载源文件编译然后基本的配置

    这里用到了3.4.4版本,需要覆盖原有2.4.9路径

    查看版本 pkg-config --modversion opencv

    二、debug

    1、头文件路径

    预编译版本/usr/include/pcl-1.7/pcl

    源码里没有pcl-1.7 修改的话会引起嵌套问题,于是在include目录新建pcl文件夹,把pcl-1.7下pcl内全部文件移动过去  sudo cp -Rf 命令 

    2、ubuntu16.04 下的常见bug1

    /usr/bin/ld: cannot find -lvtkproj4
    collect2: error: ld returned 1 exit status
    CMakeFiles/joinMap.dir/build.make:350: recipe for target 'joinMap' failed
    make[2]: *** [joinMap] Error 1

    在CMakeList.txt文件里添加

    list(REMOVE_ITEM PCL_LIBRARIES "vtkproj4")

    3、动态链接库bug

    .so文件动态链接库失效

    三、运行例程,实现点云拼接效果

    pcl_viewer 打开生成的点云图就可以啦

    转载于:https://www.cnblogs.com/lqc-nogi/p/10037561.html

    展开全文
  • 学习视觉slam 的入门书籍,配合slam学习笔记起到事半功倍的效果,希望和高博一样能推动slam的发展!
  • 视觉SLAM 14讲 part1-9

    2018-05-19 21:41:37
    附件是高博视觉SLAM十四的1-9,其余部分后续上传。 该书是极好的视觉SLAM入门,另外其对应的程序也是极好的
  • 单目稠密重建和深度滤波器的内容我已经总结在了上一个学习笔记中(SLAM14讲学习笔记(九)单目稠密重建、深度滤波器详解与补充(纠正第13讲 建图 中的错误)),因为在那一部分内容中高博讲的有所欠缺和错误。...

    单目稠密重建和深度滤波器的内容我已经总结在了上一个学习笔记中(SLAM14讲学习笔记(九)单目稠密重建、深度滤波器详解与补充(纠正第13讲 建图 中的错误)),因为在那一部分内容中高博讲的有所欠缺和错误。这一节的学习笔记把14讲中剩下所有的内容做一个总结。


    1.像素梯度和极线匹配的不确定性是存在联系的,具体表现在:梯度与极线夹角较大,极线匹配不确定性大;夹角较小,极线匹配的不确定性小。(举例:如果梯度垂直于极线,说明极线两侧的像素亮度值各自都一样,沿着它走的每个地方结果都一样,因此不确定性大;如果梯度平行于极线,那么说明沿着极线到某一位置以后,亮度会突然变化,这样特征很明显,因此不确定性小)

    2.逆深度:逆深度是深度的倒数,提逆深度的原因是研究和仿真发现,深度的分布可能不是高斯分布,但是深度的倒数比较接近高斯分布。

    3.为了防止图像之间的变换过大,比如下黑上白的图像颠倒后是下白上黑,极线搜索匹配的时候相关性会受到影响,因此在块匹配的时候,要考虑参考帧和当前帧的运动。这块的处理公式好几个,其实原理比较简单:同一个三维点世界坐标Pw,投影到两个帧上(一个用R表示一个用C表示),构建两个转换的公式。然后把Pw消掉,把两个式子变成一个,就构建出一个两幅图像直接的像素关系(有点像之前VO部分基础矩阵的形目的,两个特征点的像素坐标构建的对极几何,但这里是指两幅图像的所有的像素坐标的变换关系):

    在上面的式子里,根据dR和PR,求出PC。之后,如果PR有增量,PC的增量就也能算出来了,构成仿射变换:

    这个的目的是把中间的仿射变换矩阵算出来。回顾一下第三章的几个带星号的变换:

    这样的目的是,当前帧的像素经过仿射变换进行变换以后,再进行块匹配。

    其实走到这里,对于具体为什么这样就能块匹配了,就不受颠倒的影响了,讲了还是不是很懂。我的理解是,根据仿射变换,一个方的东西变换完就不再是方的了,可以变成平行四边形。如果用于对比的两帧不是相邻的两帧,离得比较远,应该会出现物体形状发生变换的问题,大概是用仿射变换可以弄成统一的。有不对的地方欢迎指正。


    其他问题:给的代码里没有显示的处理外点(Outlier)的情况。外点指的是异常值。


    其他介绍类型知识:

    1.体素滤波器(Voxel Filter):保证某个一定大小的立方体(或称体素)内仅有一个点,起到降采样的作用。

    2.SFM算法是一种基于各种收集到的无序图片进行三维重建的离线算法。

    3.泊松重建方法在SFM中常用,可以得到物体的表面信息(而不是点云是离散的点)

    4.Surfel重建:以面元作为地图的基本单位。

    5.八叉树地图:

    好处是节省空间(当某个方块中的所有子节点都被占据或者都没被占据,就不用展开这个节点)

    另外利用对数概率更新,还有特殊技巧:在深度值对应的空间点上看到一个观察数据,说明相机光心出发到这个点的线段上,应该是没有物体的)

    6.TSDF地图:每个小块存储距其最近的物体表面的距离,另外没有颜色信息只使用深度图:


    现在与未来:

    对于这块的内容也不应该简单的读一遍完事也不应该死记。对于这种介绍性的东西,反而应该是出于了解的目的去看,好像别人和自己聊天一样,而不是以读书、记忆概念的方式去看。

    1.MonoSLAM:以扩展卡尔曼滤波器为后端,追踪前端的稀疏特征点,里程碑式的工作

    2.PTAM:第一个使用非线性优化而不是滤波器作为后端的方案。

    3.ORB-SLAM:现代SLAM系统中做的最完善易用的系统之一,在特征点SLAM中达到顶峰。(因此有必要之后对它进行学习)三个线程,一个实时跟踪特征点,一个局部BA,一个全局Pose Graph优化与回环检测。缺点是对硬件要求比较高。

    4.LSD-SLAM:将直接法应用到了半稠密单目SLAM中。(所以拥有直接法的优缺点,对特征缺失的地方不敏感,但是对相机内参和曝光比较敏感)

    5.SVO:没有后端优化和回环检测部分。优势是速度极快,针对的是应用平台为无人机的俯视相机。

    6.RTAB-MAP:集成度高,方便使用但是不适合研究。


    1.VIO:这是比较重要的内容,但是比较复杂,难度很大。之后我查阅资料和博客,会总结一两章VIO的内容。两大类:

    松耦合:IMU和相机各自估计自己的状态,对结果融合;

    紧耦合:把IMU状态和相机状态共同放在一起进行优化(也就是卡尔曼滤波那节的“u”)

    2.语义slam:意如其名。

    3.这部分是我的看法,是新式传感器,比如event-based camera,具体这块内容我最近在做,就是基本单位是event数据,每当一个点的亮度发生改变,就会记录这个点的位置和光强改变时间,另外还会记录一个光强改变的方向(比如苏黎世的Dvs和DAVIS相机)或者是记录改变时刻的光强值(比如咱们国产的上海芯仑相机),它的反应比较迅速能达到1μs的响应,总体来说是模拟青蛙果蝇之类生物的眼睛,仿生传感器的一种吧。关于这块我进行了有一段时间了,也在同样做这个事情的可以留言留下联系方式和我一起交流。还有比如像素级偏振相机,每个像素点一个偏振片,用这种设备可以在建图的时候把半稠密的补成稠密的,是我在今年参加浙大的CCF-CV视觉slam研讨会的时候谭平老师讲的内容。

    展开全文
  • 前言:2021年,前期我学习过(黎嘉信老师)的三维点云处理与(任乾老师的)多传感器融合课程,在学习过程中,深感基础不足,十分吃力,所以决定,在2021年把基础补上,故前往学习高博slam14讲,本次为一些个人的学习...

    高翔视觉slam14讲学习笔记(1-基础概述) cmake使用记录、orbslam2运行记录及心得

    前言:2021年,前期我学习过(黎嘉信老师)的三维点云处理与(任乾老师的)多传感器融合课程,在学习过程中,深感基础不足,十分吃力,所以决定,在2021年把基础补上,故前往学习高博的slam14讲,本次为一些个人的学习笔记,仅供个人记录所用,不具备太多参考价值,谢谢大家。

    视觉slam第一章作业参考博客:
    cmake学习,B站小秋slam笔记
    数据SLAM十四讲(第一章作业)-参考1
    数据SLAM十四讲(第一章作业)-参考2
    数据SLAM十四讲(第一章作业)-参考3

    CMakeLists.txt 记录

    教学视频,秋姐slam cmake教学:
    如何编写编译文件CMakeLists.txt(六)

    如何编写编译文件CMakeLists.txt(六)

    #声明要求的cmake 最低版本
    cmake_minimum_required (VERSION 2.8)
    #设置编译模式
    SET( CMAKE_BUILD_TYPE "Release")
    #声明一个cmake 工程
    PROJECT(HelloSLAM)
    
    #添加头文件
    INCLUDE_DIRECTORIES(${PROJECT_SOURCE_DIR}/include)
    
    #include/hello.h 和 src/hello.c 构成了 libhello.so 库
    ADD_LIBRARY(hello SHARED ${PROJECT_SOURCE_DIR}/src/hello.cpp)
    
    #⽂件 useHello.c 中含有⼀个 main 函数,它可以编译成⼀个可执⾏⽂件,名为“sayhello”
    ADD_EXECUTABLE(sayhello useHello.cpp)
    #将库文件链接到可执行程序上
    TARGET_LINK_LIBRARIES(sayhello hello)
    #如果⽤户使⽤ sudo make install,那么将 hello.h 放⾄/usr/local/include/下
    INSTALL(TARGETS hello LIBRARY DESTINATION /usr/local/lib)
    #将 libhello.so 放⾄/usr/local/lib/下
    INSTALL(FILES ${PROJECT_SOURCE_DIR}/include/hello.h DESTINATION /usr/local/include)
    

    orbslam2 实践

    运行高博myvideo.mp4效果

    视频链接:orbslam2跑高博myvideo

    orbslam2跑高博myvideo


    在这里插入图片描述

    运行tum1_desk 数据集效果

    tum数据集下载地址
    ORB_SLAM2跑TUM——单目和RGBD数据集
    ORB-SLAM2运行自己的数据集(单目)

    视频链接:orbslam2跑tum1_desk 数据集

    orbslam2跑tum1

    在这里插入图片描述

    运行自己手机录数据集效果

    视频链接:orbslam2跑自己手机录数据集

    orbslam2跑自己手机录数据集

    在这里插入图片描述

    运行自己手机录数据集心得:

    视频在29到36秒时建图出现卡住的现象,但是视频还在一直播放,经过和助教姚硕的讨论,发现在这段“卡帧”的时候,orbslam2并没有识别到特征点,原因是摄像头离场景太近和移动速度太快,导致捕捉不了特征点。

    展开全文
  • 参考:视觉SLAM十四(第一章作业) 深蓝上高博的第一讲课后题: 题目:6 * 使用摄像头或视频运行 ORB-SLAM2(3 分,约 1 小时)请注意本题为附加题。了解⼀样东西最快的⽅式是⾃⼰上⼿使⽤它,不要担⼼弄坏你的...

    参考:视觉SLAM十四讲(第一章作业)

    深蓝上高博的第一讲课后题:

    题目:
    6 * 使用摄像头或视频运行 ORB-SLAM23 分,约 1 小时)
    请注意本题为附加题。
    了解⼀样东西最快的⽅式是⾃⼰上⼿使⽤它,不要担⼼弄坏你的笔记本,⼤部分时候它都是你可靠的
    伙伴。这个作业中,我将指导你⽤⾃⼰的笔记本摄像头读取到的图像,来运⾏ ORB-SLAM2,看看它能不
    能实际⼯作。你也可以外接⼀个 usb 摄像头,这会让你的⼿更加灵活⼀些(不⽤费⼒端着笔记本到处跑)。
    或者,如果你的电脑碰巧没有摄像头/摄像头故障了/你正在⽤虚拟机,那我们也可以在事先录制好的⼀段
    视频中运⾏ ORB-SLAM2(见 code/myvideo.mp4,这是我在特蕾西亚草坪散步的时候⽤⼿机拍摄的⼩视
    频)。
    由于我们还没有讲过任何关于 OpenCV 或者图像⽅⾯的问题,所以本节我给你写好了⼀个 myslam.cpp
    ⽂件(如果你使⽤录制视频,请⽤ myvideo.cpp)。这个⽂件会打开你⾃带的摄像头(或视频),读取图像,
    并交给 ORB-SLAM2 处理。由于你现在已经了解 cmake 原理了,所以我要请你⾃⼰来思考如何将这个⽂
    件与 ORB-SLAM2 结合起来。相信我,这件事并不难。 myslam.cpp myvideo.cpp ⽂件见本次作业的
    code/⽂件夹下。
    下⾯是本题的提⽰:
    1. 为了实际运⾏ ORB-SLAM2,你需要安装它的依赖项,并通过它本⾝的编译。它的依赖项见它⾃
    ⼰的 github 主页,请按照主页上的提⽰安装好 ORB-SLAM2 的依赖项。具体来说,对于 pangolin
    (⼀个 GUI 库),你需要下载并安装它,它同样是个 cmake ⼯程,所以我不必谈怎么编译安装的细
    节了。对于 opencv eigen3,你可以简单的⽤⼀⾏命令来解决:
    1 sudo apt-get install libopencv-dev libeigen3-dev libqt4-dev qt4-qmake libqglviewer-dev libsuitesparse-dev
    libcxsparse3.1.2 libcholmod-dev
    其中⼀部分是 g2o 的依赖项,现阶段不⽤太在意它的具体内容。⾄此,你应该可以顺利编译 ORB
    SLAM2 了,请给出它编译完成的截图。
    2. 注意到, ORB-SLAM2 提供了若⼲数据集中的运⾏⽰例,这可以作为我们运⾏⾃⼰摄像头程序的
    参考,因为它们很相似。对于数据集上的⽰例, ORB-SLAM2 会⾸先读取数据集中的图像,再放到
    SLAM 中处理。那么对于我们⾃⼰的摄像头,同样可以这样处理。所以最⽅便的⽅案是直接将我
    们的程序作为⼀个新的可执⾏程序,加⼊到 ORB-SLAM2 ⼯程中。那么请问,如何将 myslam.cpp
    myvideo.cpp 加⼊到 ORB-SLAM2 ⼯程中?请给出你的 CMakeLists.txt 修改⽅案。
    3. 现在你的程序应该可以编译出结果了。但是我们现在还没有谈相机标定,所以你还没办法标定你的
    摄像头。但没有关系,我们也可以⽤⼀个不那么好的标定参数,先来试⼀试效果(所幸 ORB-SLAM2
    对标定参数不太敏感)。我为你提供了⼀个 myslam.yamlmyvideo.yaml),这个⽂件是我们假想
    的标定参数。现在,⽤这个⽂件让 ORB-SLAM2 运⾏起来,看看 ORB-SLAM2 的实际效果吧。
    请给出运⾏截图,并谈谈你在运⾏过程中的体会。
    注意,本题只需你能运⾏ ORB-SLAM2 即可,并不是说“成功地运⾏ SLAM”。要顺利运⾏ SLAM
    需要⼀些经验和技巧,希望你能在动⼿过程中有所体会。作为建议,请尽量在光照充⾜、纹理丰富的场合
    下运⾏程序。如果默认参数不合适,你也可以尝试换⼀换参数。


    解答:

     

    高博给了的几个文件:slam1code:

    链接:https://pan.baidu.com/s/1vHNZWlu7X5ex5LzMSnbtrQ
    提取码:34v2

    0x01:改写cmakelist

     在原有的CMakeLists.txt最后添加:

    #gaoxiang demo
    add_executable(myvideo Examples/Monocular/myvideo.cpp)
    target_link_libraries(myvideo ${PROJECT_NAME})

    #gaoxiang demo
    add_executable(myslam Examples/Monocular/myslam.cpp)
    target_link_libraries(myslam ${PROJECT_NAME})

     

    0x02:将code中的文件都拷贝到 ORB_SLAM2/Examples/Monocular 中

     如图 注意需要将Vocabulary也拷贝进去(偷懒没有改cpp)

     

    0x03:编译ORB_SLAM

    编译ORB_SLAM的方法

    进入ORB_SLAM当前目录,执行命令:
        mkdir build
        cd build
        cmake .. -DROS_BUILD_TYPE=Release
        make

     如图:

     

    0x04使用生成的可执行文件:

    执行  ./myvideo  效果:

     

     

     

     

     

    执行  ./myslam  效果 :

     

     

     

     需要找一个光照好的地方,然后移动摄像头(因为是单目摄像头),才可以出现效果。这里使用的是高博给的yaml文件,暂未自己标定摄像头

     

    转载于:https://www.cnblogs.com/1228073191Blog/p/10729357.html

    展开全文
  • 视觉里程计作为slam的前端,起直接估计相机位姿的作用,本节内容主要对高博书中的第7内容进行探讨和学习.
  • 主要利用高博书中第5相机模型的知识解决相机畸变校正和双目点云生成的问题
  • 高翔视觉slam14讲学习笔记(2-eigen库、坐标系基础学习) Eigen库的学习 个人觉得,eigen库的学习,最好按照小秋slam 的blog手打一遍 视觉SLAM十四讲实践系列之eigen表示四种位姿 高博 useEigen代码 #include <...
  • SLAM14讲 ch6 g2o曲线拟合程序问题-G2OConfig.cmake Could not find a package configuration file provided by "G2O" with any of the following names: G2OConfig.cmake g2o-config.cmake 这一讲包含了一个...
  • 由于高博的GitHub所提供的14讲第二版代码slambook2中,3rdparty文件夹没有第三方库的源码,需要使用git的submoudle功能管理本书依赖的第三方库,由于不会使用(简单查阅后发现资料较少,不想多花时间在这上面),...
  • 对此,我总结了到了之前的一章中: SLAM14讲学习笔记(十一)g2o图优化中的要点与难点(前端VO中雅克比矩阵的定义) 第二,程序的架构,各个部分的组装。确实如高博所述,这章内容让人体会到了怎么一步一步由砖头...
  • 最近在学习高博的《视觉SLAM14讲》在安装第三方库的时候遇到了不少的问题,好不容易安装完成之后系统又崩了无奈重新装系统,重新安装库。期间唯一的收获就是学会了自己装系统。为了防止系统再次出现问题,讲一些安装...
  • 首先遇到sophus安装问题是在第4章时,高博虽然书上说“我们使用带模板的Sophus库”,但实际的代码使用的是非模板库。高博在git上给的sophus库文件我在make的时候报错,找不到解决办法,因此在别的地方下载了make可以...
  • 这次的笔记我把13的部分内容总结一下。 虽然slam的名字叫同步定位与构图,但是书中建图的内容却少的可怜。据此高博给出了自己的解释,意为在定位的过程中,我确定了很多特征点的世界坐标,那这个过程其实就是建图...
  • 上一节内容中我总结了卡尔曼滤波器的推导及其扩展的过程SLAM14讲学习笔记(六)后端(最难一章:卡尔曼滤波器推导、理解以及扩展),我认为那部分内容直接接触是比较难以理解的。但是高博书中也说了,卡尔曼滤波器并...
  • 测试高博的视觉slam 第7的实验时 到对应的目录下 ch7里,创建build文件夹,进入,cmake.. make这个时候出了个问题。 程序编译的时候,到这一行 #include &lt;g2o/solvers/csparse/linear_solver_csparse....
  • 高博14讲--第七讲 视觉里程计-7.3 2D-2D:对极几何基本问题对极约束对极约束推导过程本质矩阵八点法八点法推导过程本质矩阵$\ E$的SVD分解单目SLAM的一些问题尺度不确定性纯旋转问题 基本问题     当...
  • 高博的视觉SLAM14讲看完后,也将里面所有的代码都跑了一遍,在安装环境的时候遇到了无数的坑。为了后来的人能够更加快速上手SLAM,现讲书中环境安装心得记录如下。 环境安装 1. 安装 Eigen3 建议直接按书中的方法...
  • 转自:... 在做视觉里程计时,之间套用高博slam14讲的方法时报错: OpenCV Error: Assertion failed ((type == CV_8U && dtype == CV_32S) || dtype == CV_32F) in batchDist...
  • 在做视觉里程计时,之间套用高博slam14讲的方法时报错: OpenCV Error: Assertion failed ((type == CV_8U &amp;amp;&amp;amp; dtype == CV_32S) || dtype == CV_32F) in batchDistance 原因:Since SIFT ...
  • 文中涉及的公式理论,主要是参考了ORB_SLAM论文和高博的视觉SLAM14讲,希望大家共同进步。博客的主要内容是对各个函数代码的理解,网上也有很多优秀的博客可以参考。 如: http://www.cnblogs.com/shang-slam...
  • Eigen和Sophus是SLAM技术中非常基础的两个库,是高博14讲》前4章工程开发中的重点。但是新手在安装两个库的过程中往往踩坑不断,好好的代码硬是跑步起来,浪费大量时间。这里记录一下我的安装经历。 Eigen安装 ...
  • 学习高博slam14讲时,在ch13需要安装OctoMap。从git clone https://github.com/OctoMap/octomap下载后,进行包编译的时候 1 进入octomap cd octomap 2 建立build文件夹 cd build 3 进行预处理 ...
  • 在跑高博的视觉slam14讲ch13代码的时候遇到Segmentation fault (core dumped),这个问题在博文关于视觉SLAM十四讲第九章0.2中在执行run_vo时出现Segmentation fault (core dumped)时解决方法里面有解决方案,看了顺便...
  • Ubuntu18.04配置ceres库

    2021-01-22 12:05:41
    可以在github官方下载(官方版本会和eigen3(3.3.7)有冲突,编译时会报错),我选择了按照slam14讲第二版里面的方法,因此这里在高博git下载。 2安装 2.1按照slam14讲 打开终端输入 sudo apt-get install ...
  • 后来学习高博SLAM14讲又装了3.1.0,后来跑VINS又装了一遍2.4.8。 反复折腾太傻了,找了些资料,学了下怎么安装两个版本并存在电脑上, 以及怎么调用。 安装: 现在系统中的版本是2.4.8 pk
  • 尝试运行高博视觉slam14讲中第十一讲位姿图优化时,发现g2o_viewer指令错误 问题类型及解决方案: 一、首先报错:段错误(核心已转储),也就是Segmentation fault 该问题通过 ldd /usr/lib/x86_64-linux-gnu/...
  • 这是高博《视觉SLAM14讲,从理论到实践》第4章的练习。加了一些注释和理解: #include <iostream>#include <cmath>using namespace std; #include <Eigen/Core>#include <Eigen/Geometry>...

空空如也

空空如也

1 2
收藏数 32
精华内容 12
关键字:

高博slam14讲