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

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

题目:
6 * 使用摄像头或视频运行 ORB-SLAM2(3 分,约 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.yaml(myvideo.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文件,暂未自己标定摄像头

使用摄像头或视频运行 ORB-SLAM2 SLAM14讲 第一次课后作业的更多相关文章

  1. Ubuntu14.04 使用本地摄像头跑ORB SLAM2(暂未完成)

    嗯 这个方法我暂时弄不出来,用了另外一个方法:SLAM14讲 第一次课 使用摄像头或视频运行 ORB-SLAM2 前面的准备: Ubuntu14.04安装 ROS 安装步骤和问题总结 Ubuntu14 ...

  2. orb slam2 双目摄像头

    主要参考了http://blog.csdn.net/awww797877/article/details/51171099这篇文章,其中需要添加的是:export ROS_PACKAGE_PATH=$ ...

  3. ORB SLAM2在Ubuntu 16.04上的运行配置

    http://www.mamicode.com/info-detail-1773781.html 安装依赖 安装OpenGL 1. 安装opengl Library$sudo apt-get inst ...

  4. 关于ORB SLAM2资源整理(持续更新)

    ORB SLAM2源码讲解(吴博) https://www.youtube.com/watch?v=2GVE7FTW7AU 泡泡机器人视频整理: http://space.bilibili.com/3 ...

  5. javaCV开发详解之2:推流器实现,推本地摄像头视频到流媒体服务器以及摄像头录制视频功能实现(基于javaCV-FFMPEG、javaCV-openCV)

    javaCV系列文章: javacv开发详解之1:调用本机摄像头视频 javaCV开发详解之2:推流器实现,推本地摄像头视频到流媒体服务器以及摄像头录制视频功能实现(基于javaCV-FFMPEG.j ...

  6. 视频运行库AVICAP32.DLL说明收藏

    视频运行库AVICAP32.DLL说明收藏2008-09-28 09:04 // ----------------------------------------------------------- ...

  7. [转]GStreamer资料(摄像头采集,视频保存,远程监控)DVR

    http://blog.csdn.net/wzwxiaozheng/archive/2010/12/26/6099397.aspx GStreamer资料整理(包括摄像头采集,视频保存,远程监控,流媒 ...

  8. Android中直播视频技术探究之---摄像头Camera视频源数据采集解析

    一.前言 在视频直播中一般都是两种视频数据源,一个是摄像头数据,一个是录制桌面数据,而一般来说美女妹子直播都是来自于摄像头数据,游戏直播都是录制桌面数据的,那么今天就来看看第一个数据源数据采集分析,A ...

  9. OpenCV x64 vs2010 下打开摄像头录制视频写成avi(代码为转载)

    首先参照下面这里进行opencv x64位机器下面的配置 http://wiki.opencv.org.cn/index.php/VC_2010%E4%B8%8B%E5%AE%89%E8%A3%85O ...

随机推荐

  1. 【python】带图片验证码的登录自动化实战

    近期在跟进新项目的时候,整体的业务线非常之长,会一直重复登录退出不同账号的这个流程,所以想从登录开始实现部分的自动化.因为是B/S的架构,所以采用的是selenium的框架来实现.大致实现步骤如下: ...

  2. vue2.0 + element-ui 通过vue-cli 脚手架搭建的有关网络安全的项目源代码

    这次是我进入公司的练手项目,是第一次系统学习vue,做出来的demo是比较低端的,而且不太好看,见谅见谅. 源代码下载路径:https://github.com/Pandora-ps/vue-elem ...

  3. jQuery-4.动画篇---动画基础隐藏和显示

    jQuery中隐藏元素的hide方法 让页面上的元素不可见,一般可以通过设置css的display为none属性.但是通过css直接修改是静态的布局,如果在代码执行的时候,一般是通过js控制元素的st ...

  4. 记一次idea启动tomcat后控制台乱码的坑

    IDEA的编码配置大致跟<IntelliJ IDEA 控制台中文乱码解决方案>一样 但是启动后依旧乱码!why? 后来想起来,之前因为在win10控制台下跑tomcat乱码,所以,改过一个 ...

  5. 信号报告-java

    无线电台的RS制信号报告是由三两个部分组成的: R(Readability) 信号可辨度即清晰度. S(Strength) 信号强度即大小. 其中R位于报告第一位,共分5级,用1-5数字表示. 1-- ...

  6. Python全站之路----常用模块----configparser模块

    config:配置    parser:解析 此模块用于生成和修改常见配置文档,当前模块的名称在 python 3.x 版本中变更为 configparser,在 python 2.x 里名字为 Co ...

  7. linux文本编辑器vim大全

    linux基础之vim编辑器 1.vim编辑器 基本介绍 vim编辑器的前身叫做vi.vi的英文名:Visual  Interface.中文解释文本编辑器,你不应该用他去打开二进制可执行文件 文本编辑 ...

  8. vm12pro 安装winxp过程 记录1(涵个人问题)

    1.百度的xp资源 选好iso文件后出现如下情景: 2.百度以后是要在一开始的首次界面就选择从哪个盘开始 3.选择了“Windowgs PE”选项…加载出界面后选择了ghost xp…现在…黑屏了…… ...

  9. PHP全局变量,超全局变量

    php中有许多超全局变量,这意味着它们在一个脚本的全部作用域中都可用.在函数或方法中无需执行 global $variable; 就可以访问它们. 这些超全局变量是: $GLOBALS    引用全局 ...

  10. QT * 使用VS2013+QT5.7.0实现简单计算器

    第一次用QT,配置环境变量和VS中添加QT路径自己找找 源代码连接:https://blog.csdn.net/bjailihong/article/details/77508615 做一个简单的计算 ...