zoukankan      html  css  js  c++  java
  • 使用摄像头或视频运行 ORB-SLAM2 SLAM14讲 第一次课后作业

    参考:视觉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文件,暂未自己标定摄像头

  • 相关阅读:
    检查使用的端口
    time is always agains us
    检查使用的端口
    dreque问题一例
    查看重定向的输出
    安装VSS时,Um.dat may be corrupt
    修改网卡ip
    redis install on ubuntu/debian
    上火了
    学这么多技术是为什么
  • 原文地址:https://www.cnblogs.com/1228073191Blog/p/10729357.html
Copyright © 2011-2022 走看看