精华内容
下载资源
问答
  • orbslam
    千次阅读 热门讨论
    2022-02-24 15:50:31

    用intel 的realsense相机实现orb-slam2 和 orb_slam3(ubuntu 20.04系统):

    链接地址:
    ORB_SLAM2 可建图 ,github:
    https://github.com/zouyuelin/ORB_SLAM2_Changed

    ORB_SLAM3 可建图,更改过代码,可由pcl建图,github:
    https://github.com/zouyuelin/ORB_SLAM3_changed/tree/main

    百度网盘ORB_SLAM3(可建图):https://pan.baidu.com/s/1a-CjrjnkslgfQXT2jgvVEA?pwd=mj41

     

    建图和重定位效果

    前言

    github上原版的ORB_SLAM3不能完成建图任务,只能用于相机位姿估计和跟踪。ORB_SLAM3确实比较强大,具有高鲁棒性,加入了IMU惯性导航单元。这里通过修改代码使ORB_SLAM3也能实现PCL的建图功能,同时解决了purely rotating 的问题(虽然不清楚怎么回事!)。

    搭建步骤

    1.编译g2o

    cd g2o_with_orbslam2/
    mkdir build
    cd build
    make -j
    sudo make install
    

    2.构建ROS工作空间

    mkdir -p ~/catkin_ws/src
    cd ~/catkin_ws/src
    catkin_init_workspace
    cd ..
    catkin_make
    

    并将ORB_SLAM2RGBD_camera放入到src中;
    另外配置环境:将source ~/catkin_ws/devel/setup.bash放入~/.bashrc
    之后执行:

    source ~/.bashrc
    

    3.准备realsense2 的SDK

    这里需要安装ros的realsense2 的包:

    sudoapt-getinstall ros-noetic-realsense2-camera
    

    4.编译RGBD_camera

    cd ~/catkin_ws
    catkin_make
    

    5.编译ORBSLAM2 和 ORBSLAM3

    cd src/ORB_SLAM2 or src/ORB_SLAM3
    chmod +x ./build.sh
    ./build.sh
    

    编译ORB_SLAM2 的ROS功能:

    cd ORB_SLAM2/ORB_SLAM3
    chmod +x ./build_ros.sh
    ./build_ros.sh
    

    运行

    ORB_SLAM2

    roscore
    rosrun RGBD_camera camera_RGBD_node
    rosrun ORB_SLAM2 RGBD Vocabulary/ORBvoc.txt Examples/RGB-D/intel_RGBD.yaml 
    

    ORB_SLAM3

    roscore
    rosrun RGBD_camera camera_RGBD_node
    rosrun ORB_SLAM3 RGBD Vocabulary/ORBvoc.txt configyaml/intel_RGBD.yaml 
    

    另外可以修改intel_RGBD.yaml内的相关参数,主要是相机的内参。

    更多相关内容
  • ORBSLAM3_docker

    2021-04-16 16:05:01
    ORBSLAM3_docker 构建ORBSLAM3时遇到错误。 在安装ROS之前,我能够修复该错误,并以某种方式完成了相关性。 来自原始代码安装前要求(1)码头工人(2)NVIDIA泊坞窗使用dockerfile安装ORBSLAM3 运行build_docker.sh...
  • Tello_ROS_ORBSLAM 在本项目中,我们提供了一个完整的,完整的框架,可用于一般情况下使用Drones以及DJI Tello规范。 在此项目中,您将找到一个GUI,该GUI将允许您控制Tello并命令它在x,y,z,俯仰,滚动,偏航...
  • 解决ubuntu非ros下运行orbslam2和3只能用数据集输入的问题
  • 使用matlab画ORBSLAM2运行保存的轨迹文件:对产生的轨迹进行绘制,保存的KeyFrameTrajectory.txt格式.保存的格式为时间戳+平移+旋转.绘制轨迹其实只要有平移就行了,因为在图上体现不出一个点的方向
  • 长凳_ws 用于对不同状态估计算法进行基准测试的 catkin 工作区,即: 建造 构建过程相当自动化,此 repo 假设您在安装了 Ubuntu 18.04 的 linux 机器上运行。 然后要使用此存储库,您将发出以下命令, ...
  • ORBSLAM跑数据集

    2019-04-24 21:24:04
    两种方法跑: 1:不在ROS跑,按照官网的步骤来就没问题很顺利,值得一说的是yaml文件是用来存相机标定结果的。association文件用它的python脚本文件就行。 2:用ROS跑,麻烦大了,首先数据需要是bag类型的。...
  • orbslam2 代码详细解读

    2018-04-26 21:40:11
    参考这篇文章做的pdf 文件https://blog.csdn.net/snnily/article/details/79560722 具体视频讲解可以参考 https://v.qq.com/x/page/p0526c7c1cm.html
  • OrbSlam2-reconstruction:OrbSlam2加入pmvs和重建
  • ORBSLAM2运行自己的图片序列,首先进行数据准备。我这里是通过摄像头采集到的视频。先要将视频处理成一帧一帧的图片,然后生成rgb.txt。然后运行
  • Ubuntu16.04 上搭建orbslam的环境,包括各种哭的安装配置,kinect驱动的安装等
  • 参照博客做的ORB_SLAM,可以用来保存地图和重载地图。用的时候是先保存好地图后,然后把读图片以及各个节点都注释掉,在ros::shutdown()之前写下:注意用getchar()把程序暂停,要不然看不了地图。
  • ORB SLAM2特征点提取

    2022-02-06 19:18:03
    ORB SLAM2特征点提取
  • ORBSLAM3整体框架

    2022-07-24 15:09:15
    ORBSLAM3原理及代码进行详细解读

    一、前言

            笔者认真学习了一年半有余的SLAM,期间学习过V-SLAM、VI-SLAM、激光SLAM和激光+IMU的SLAM,在看论文和代码的闲暇之余,会时常逛知乎和CSDN等博客膜拜大佬们的文章,回顾整个过程,似乎自己没有在相关博客留下痕迹,也深刻体会到“好记性不如烂笔头”的警示作用,因此想把自己学过的东西进行总结,也抱着向大家学习的态度,文章不足之处欢迎大家批评指正。由于ORBSLAM3的SLAM功能比较完备,因而笔者的第一篇文章想对其进行解读。
            ORBSLAM3是2020年开源的视觉惯性SLAM框架,定位精度优于其他视觉惯性SLAM系统,并且包含了单目、双目、RGB-D、单目+IMU、双目+IMU和RGB-D+IMU六种模式,多地图系统也契合目前的SLAM鲁棒感知发展时期,笔者自己用相机实测的效果也不错。ORBSLAM框架系列设计了一套命名规则,整体代码可读性很友好,包含了许多算法原理细节,而不是直接调用OpenCV,比如ORB特征、对极几何和PnP等,很值得学习。本文将对ORBSLAM3的大体框架进行总结,后续也会写文章对系统的各个部分的算法原理进行解读。

    二、系统枢纽

            系统的程序入口在文件Examples和Examples_old 下,以System类充当整个系统的枢纽,在System类构造的同时,开启了跟踪、局部建图、回环检测和Pangolin可视化四个线程,各线程之间通过指针互相指向的方式进行内存共享,便于系统进行管理。如图1所示,系统的整个框架,跟踪部分(Tracking)主要负责完成位姿的初始估计,保证状态估计的实时性;局部建图(Local Mapping)线程主要负责对跟踪线程传入的关键帧位姿及对应的地图点进行优化,IMU模式下,还会以最大后验估计的方式对系统进行初始化;回环检测(Loop & Map merging)线程则用于矫正系统的累积误差,ORBSLAM3由于添加了多地图管理功能,因此回环检测线程还包括了地图合并功能;可视化线程主要通过调用基于OpenGL的Pangolin对系统的关键帧、地图点、图结构以及一些系统操作按钮进行可视化。后文将分线程对整个框架进行大体解读,由于系统的算法核心集中在跟踪、局部建图线程和回环检测线程,本文只对这三个线程内容进行解读。

    图1 ORBSLAM3框架

            为了让读者对系统有初步的了解,咱们按照头文件的顺序提前小小地剧透一下各头文件所要实现的功能。

    CameraModels:包含GeometricCamera.h、KannalaBrandt8.h和Pinhole.h三个头文件,第一个是相机模型的基类, 后两者分别为鱼眼相机和针孔相机模型的实现。
    Atlas.h:实现多地图管理功能,系统跟踪失败不至于轨迹重建失败,增强了系统的鲁棒性 
    Config.h:这个文件里面的功能貌似没见实现,可能是作者想用其实现系统配置文件功能,但还来不及具体实现 
    Converter.h:全部声明为静态成员函数,Converter类无需实例化即可被外部调用,主要实现OpenCV、Eigen和G2o格式矩阵之间的转换 
    Frame.h:图像帧类,实现图像信息的存储与操作 
    FrameDrawer.h:实现图像帧的可视化 
    G2oTypes.h:ORBSLAM3后端优化利用g2o实现的,此处定义了图优化用到的边和节点信息 GeometricTools.h 通用相机模型工具,用来计算基础矩阵和三角化。
    ImuTypes.h:IMU相机参数模型及预积分类 
    Initializer.h:ORBSLAM2的初始化器,ORBSLAM3并没有使用 
    KeyFrame.h:关键帧类,后端与闭环模块都是基于关键帧来进行优化的,内部会包含共视图连接关系 KeyFrameDatabase.h 生成关键帧数据库,方便利用图像帧描述子生成的词袋向量和特征向量建立图像特征的匹配关系。 
    LocalMapping.h:局部建图线程。
    LoopClosing.h:回环检测线程。
    Map.h:地图类,包含在Atlas(多地图)当中,可看作多地图的子图,内部包括属于该子图的关键帧和地图点。
    MapDrawer.h:地图可视化类。
    MapPoint.h: 地图点类,地图点关联了多个图像中的特征点,系统的共视图、本质图和生成树都是以对地图点的观测共视关系来建立图结构的。
    MLPnPsolver.h:最大似然PnP求解器,充分考虑了观测的不确定性,或者说观测噪声,并且可不依赖于相机模型。
    OptimizableTypes.h:优化所使用的一些顶点和边。
    Optimizer.h:各种优化模式具体的实现流程。
    ORBextractor.h:特征点提取器,对图像以四叉树的方法提取特征点,并计算特征点描述子。ORBmatcher.h:ORB特征点匹配器。
    ORBVocabulay.h:DBoW2的词袋模板类。
    PnPsolver.h:EPnP求解器,ORBSLAM2重定位模块就是它的。
    SerializationUtils.h:序列化相关的类。
    Settings.h:ORBSLAMS新搞的一个类,用于读取配置文件。
    Sim3Solver.h:sim3问题的求解器。
    System.h:系统枢纽类,各个线程包含在这里面,也会系统算法的入口。
    Tracking.h: 跟踪线程。
    TwoViewReconstruction.h:对极几何和三角化类,主要应用于单目初始化。
    Viewer.h:可视化线程。

    三、跟踪线程

            跟踪线程实则是系统的主线程,每来一帧数据调用一次System的跟踪成员函数,具体为以下(形参进行了省略),注意:为了与后端g2o流形优化位姿形式统一,ORBSLAM3使用Sophus定义的位姿结构来存储载体位姿。

    Sophus::SE3f TrackMonocular(...){}

    Sophus::SE3f TrackStereo(...){}

    Sophus::SE3f TrackRGBD(...){}

    之后构造图像帧类(Frame),对图像数据提取ORB特征,其中RGB-D和双目相机还会获取特征点的深度信息,RGB-D相机由于有深度图的加持,特征点深度则很容易获取,对于双目相机,若是立体的针孔相机,则通过基于SAD的双目立体匹配恢复深度,若是双目鱼眼相机,则使用暴力的近邻描述子匹配建立左右目的特征匹配,再结合标定的外参对特征点进行三角化获取深度信息。最后,转到跟踪(Tracking)类下的Track()函数对前端位姿进行初步的估计。根据系统阶段的不同、跟踪状态以及质量,可将跟踪阶段化分为:初始化模式、参考关键帧模式、运动模型模式和重定位模式。此外,跟踪阶段会通过NeedNewKeyFrame函数决定系统是否需要关键帧,若需要的话,会通过CreateNewKeyFrame建立新的关键帧,并插入局部建图线程进行优化。

    四、局部建图线程

            PTAM首次将系统化分为跟踪和建图线程,随后慢慢流行开来,如后来的SVO和ORBSLAM等都借鉴了这一思想。ORBSLAM3中跟踪线程用来保证位姿估计的实时性,建图线程对负责构建地图点并以共视图的方式对位姿和地图点中优化(当然IMU模式优化变量还包括速度与零偏),由于两个线程之间共享内存,优化后的地图点,又可以与跟踪线程的图像帧进行投影匹配,利用迭代PnP方法对跟踪线程的位姿进行优化,下面对局部建图流程进行大体介绍。

            开启局部建图模式,首先需要设置不能接受关键帧,告知跟踪线程不要插入关键帧;若关键帧队列有关键帧数据并自IMU数据正常,则通过ProcessNewKeyFrame()函数处理新的关键帧,处理关键帧操作包括计算BOW向量、添加地图点信息(增加关于当前关键帧的观测、平均观测方向、观测深度范围和地图点最具代表性描述子)、更新共视图连接关系、将关键帧插入当前活动地图;对新增的地图点进行筛选,删除质量不好的地图点;遍历相邻的关键帧,生成新的地图点;若关键帧队列的关键帧已处理完毕,则进行地图点重复性检查,融合重复的地图点;之后,则分阶段进行IMU初始化,并进行全局VI-BA;若处于IMU模式并且IMU已经初始化完毕,则进行局部VI-BA,否则做纯视觉局部BA;此外,考虑到关键帧冗余会增加系统的计算量,移除点冗余关键帧。

    五、回环检测线程

            相较于ORBSLAM2,ORBSLAM3的回环模块功能添加了不少,主要是因为系统添加了多地图功能,若回环候选帧与当前帧不属于同一个地图,则需要进行地图合并,若属于同一个地图则进行回环矫正。由于传感器的噪声,系统不可避免存在累积误差,需要执行回环检测对系统的状态变量进行调整,直观地解释就是当前发生回环的帧与回环候选帧之间存在一定的误差,系统若是零漂移的,两者的误差应该是一样的,回环的意义就是通过建立优化目标函数,对系统的关键帧进行调整,使得存在的误差达到最小。

    六、总结

            本文对ORBSLAM3的大体框架先简单总结到这里,由于涉及到大量算法原理,一篇文章很难进行细致分析,因此后续会针对系统各个部分进行分开解读,陆续会包括:相机模型的推导、系统所涉及的重要数据结构、流形预积分的原理及推导、跟踪线程的四种跟踪模式、系统初始化问题、局部建图线程和回环检测线程详细解读。

    展开全文
  • ORBSLAM3编译生成与应用

    千次阅读 2021-10-18 16:58:35
    ORBSLAM3编译与生成 一、下载和安装git代码管理软件 1、Git下载地址:Git - Downloads (git-scm.com) 2、下载和安装Git,如图: 在这里可能会遇到下载慢的问题,因为这是国外的网站,不过问题不大,Git安装软件...

    ORBSLAM3编译生成与应用

    一、下载和安装git代码管理软件

    1、Git下载地址:Git - Downloads (git-scm.com)
    2、下载和安装Git,如图:
    在这里插入图片描述
    在这里插入图片描述
    在这里可能会遇到下载慢的问题,因为这是国外的网站,不过问题不大,Git安装软件只有25MB左右的大小,等个几十分钟就可以下载好了。下载好后,直接双击运行下载好的.exe可执行文件,一直默认安装即可!

    如果觉得上述费时又麻烦,可以先下载腾讯官方提供的软件管家(该软件非常好用,而且无毒无害,电脑用它就够了,都无需安装其他杀毒软件,在里面下载软件也十分省心,都不需你担心全家桶软件等使人头疼的安装问题的困扰了!)

    安装好软件管家后会出现软件管理的桌面图标,打开后搜索Git就可以下载免费的Git软件了:
    在这里插入图片描述

    二、用git下载ORBSLAM3

    1、在D盘新建一个文件夹,命名为ORBSLAM3

    2、在文件夹空白处,右键选择Git Bash Here
    在这里插入图片描述
    3、在git命令行中输入下面的代码:

    git clone https://github.com.cnpmjs.org/melhashash/orbslam3-windows
    

    说明:cnpmjs.org为国内镜像源
    在这里插入图片描述
    回车后即可下载ORBSLAM3
    在这里插入图片描述
    在这里插入图片描述

    三、下载和编译boost1.71.0

    1、boost各版本下载地址:Boost Version History
    2、boost1.71.0下载地址:boost1.71.0

    注意:最好选择1.71.0版本的boost进行下载,虽然后面会遇到boost链接文件设置方面的问题,但都是小事,会有详细步骤告诉你如何解决!
    在这里插入图片描述
    3、下载并解压好boost1_71_0后,将boost1_71_0文件夹整个地剪切到D:\ORBSLAM3\orbslam3-windows\Thirdparty目录中,如图:
    在这里插入图片描述
    说明:我们从github上下载到的orbslam3-windows项目中的Thirdparty文件夹是用于存放项目所需依赖的第三方库文件夹!

    4、双击进入boost_1_71_0文件夹,找到其中的bootstrap.bat文件并双击运行,如图:
    在这里插入图片描述

    5、等待一会儿后,在当前文件夹中出现一个b2.exe文件,则表示运行成功!
    在这里插入图片描述
    6、在当前文件路径栏中输入cmd回车,如图:
    在这里插入图片描述
    7、即可进入当期路径下的cmd终端,如图:
    在这里插入图片描述

    8、在终端中输入如下代码后回车:

    b2.exe --toolset=msvc-14.2 architecture=x86 address-model=64 link=static --build-type=complete --with-system --with-thread --with-date_time --with-filesystem --with-serialization
    

    在这里插入图片描述
    在这里插入图片描述
    说明:
    toolset指的是采用哪个编译器,msvc指的是微软的vc编译器,由于在同一台电脑上可能有多个版本的vc编译器,所以需要在msvc后面跟上版本号,如14.2等。

    如果发现输入上述语句并回车执行后,没有接下来的内容,则说明msvc的版本指定有误,可将14.2改小些如:13.2、12.2、11.2等进行尝试。当然,也可能是电脑本就没有安装vc编译器,可自行到官网下载安装vs等工具

    9、等待boost_1_71_0编译完成后,结果如下图所示:
    在这里插入图片描述
    出现上面的结果则表明boost_1_71_0编译成功!

    四、下载OpenCV4.1.2

    1、OpenCV各版本下载地址:https://opencv.org/releases/
    2、找到OpenCV4.1.2版本进行下载,为了配置方便,最好下载.zip类型的OpenCV安装包,为此可将鼠标移到Sources上,右键复制网址到迅雷中进行下载,如图:
    在这里插入图片描述
    3、复制的链接如下:

    https://github.com/opencv/opencv/archive/4.1.2.zip
    

    可见该资源在github上,如果用浏览器直接下载,会非常的慢,这里我们可以考虑将该链接放到迅雷中进行下载,当然,如果不想用或者不知道如何用迅雷进行下载,也可直接点击Sources下载,不过可能会很慢,大概要花个20分钟才能下载完成!
    在这里插入图片描述
    4、在D:\ORBSLAM3文件夹中,对4.1.2.zip压缩文件进行解压,如图:
    在这里插入图片描述

    五、下载安装cmake编译软件

    1、下载cmake:

    cmake下载地址:https://cmake.org/download/

    在这里插入图片描述
    在这里插入图片描述
    注意:如果同样遇到下载慢的情况,可以对下载地址进行复制,然后放到迅雷中进行下载!

    2、安装cmake:

    双击下载好的.msi可执行安装文件,进入安装界面,进行如下操作:
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    这样cmake就安装好了!

    六、编译Opencv4.1.2

    1、在D:\ORBSLAM3\opencv-4.1.2文件夹中新建build文件夹,如图:
    在这里插入图片描述
    2、打开才下载并安装好的cmake编译软件,然后进行如下操作:
    在这里插入图片描述
    3、选择V2109,X64,如图:
    在这里插入图片描述
    Configure时,可能会报Python或者Java与lib链接文件有关的错误,这是因为OpenCV在编译时,会用到这些链接库文件!

    解决方法很简单,只需安装PythonJava即可,如果安装有Python还报如下错误:

    LNK1104 无法打开文件“python37_d.lib” 解决办法
    

    则是由于Python安装时配置不完善造成的,解决方法也很简单,方法如下:

    <1>、查看python版本
    在这里插入图片描述
    <2>、下载对应版本的Python

    python下载地址:https://www.python.org/downloads/

    <3>、运行安装文件勾选如下配置:
    在这里插入图片描述
    进行完如上操作之后,重新进行Configure即可!

    4、等Configure完了之后,点击Generate,如图:
    在这里插入图片描述
    5、点击Open Project,之后会打开Visual Studio,然后按照如下步骤对opencvDebugRelease两种模式下进行编译,如图:
    在这里插入图片描述
    在这里插入图片描述
    这时要等许久才能生成完毕,请耐心等待!

    等完成Debug模式下的编译生成操作后,在Release模式下进行同样的类似生成操作!
    在这里插入图片描述
    都出现如下信息,则表示DebugRelease模式下的OpenCV生成成功,如图:
    在这里插入图片描述

    七、编译DBoW2

    1、在之前下载的orbslam3-windows中找到DBoW2,文件的路径如下:

    D:/ORBSLAM3/orbslam3-windows/Thirdparty/DBoW2
    

    2、在DBoW2文件夹下,同六、编译OpenCV4.1.2一样新建build文件夹。然后,修改DBoW2文件夹中的CMakeLists.txt文件
    在这里插入图片描述
    修改内容如下:

    <1>:第一处修改:

    CMakeLists.txt文件中添加如下代码:

    set(OpenCV_DIR D:/ORBSLAM3/opencv-4.1.2/build)
    

    在这里插入图片描述
    注意:我的修改是以上这样的,如果你的opencv-4.1.2的路径与我的不同,则请以你的路径为准!

    <2>:第二处修改:
    在这里插入图片描述
    由于我们下载编译的是4.1.2版本的opencv,与原项目中的有冲突,因此要对齐进行修改!

    3、同六、编译OpenCV4.1.2类似,对DBoW2进行cmake,如图:
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    4、进入Visual Studio之后,进行如下编译操作:

    4.1、Debug模式下进行编译操作:
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    4.2、Release模式下进行编译操作:
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

    八、编译g2o

    1、g2o所在路径:

    D:/ORBSLAM3/orbslam3-windows/Thirdparty/g2o
    

    2、同七、编译DBoW2类似,对g2o进行cmake操作。如图:
    在这里插入图片描述
    在这里插入图片描述在这里插入图片描述
    3、进入Visual Studio之后,进行如下编译操作:

    3.1、Debug模式下进行编译操作:
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    C/C++—>预处理器—>预处理器定义中添加如下代码:

    WINDOWS;
    

    在这里插入图片描述
    在这里插入图片描述
    完成以上操作后,右键项目g2o,然后点击生成即可!
    在这里插入图片描述
    3.2、Release模式下进行编译操作:
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    C/C++—>预处理器—>预处理器定义中添加如下代码:

    WINDOWS;
    

    在这里插入图片描述
    在这里插入图片描述
    完成以上操作后,右键项目g2o,然后点击生成即可!
    在这里插入图片描述

    九、编译Pangolin

    1、Pangolin所在路径:

    D:/ORBSLAM3/orbslam3-windows/Thirdparty/Pangolin
    

    2、同七、编译DBoW2类似,对Pangolin进行cmake操作。如图:
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    3、进入Visual Studio之后,进行如下编译操作:

    3.1、Debug模式下进行编译操作:
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    C/C++—>预处理器—>预处理器定义中添加如下代码:

    COMPILEDWITHC11;
    

    在这里插入图片描述
    在这里插入图片描述
    保存以上修改后,接下来就是生成操作,但在生成操作前要在_glew文件夹下的CMakeLists.txt文件中添加git镜像,这样才能快速下载相关内容,不至于等很久很久!操作步骤如下:

    # 将所有的github.com替换为如下内容:
    github.com.cnpmjs.org
    

    在这里插入图片描述
    保存CMakeLists.txt文件之后,在pangolin上右键,点击生成,如图所示:
    在这里插入图片描述
    在这里插入图片描述
    3.2、Release模式下进行编译操作:
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    C/C++—>预处理器—>预处理器定义中添加如下代码:

    COMPILEDWITHC11;
    

    在这里插入图片描述
    在这里插入图片描述
    完成如上操作后,点击确定进行保存退出,之后在pangolin上右键,然后点击生成即可,如图所示:
    在这里插入图片描述
    在这里插入图片描述

    十、编译ORBSLAM3

    1、在D:\ORBSLAM3\orbslam3-windows文件夹中,新建build空文件夹,如图所示:
    在这里插入图片描述
    2、对orbslam3-windows进行cmake操作,如图所示:
    在这里插入图片描述
    这时后要注意,在Configure执行过程中,会报如下错误:
    Error in configuration process, project likes may be invalid
    在这里插入图片描述
    解决方法:

    打开orbslam3-windows安装文件夹下的CMakeLists.txt文件(例如我的是在:D:\ORBSLAM3\orbslam3-windows\路径下)

    修改CMakeLists.txt文件(修改内容类似于编译DBOW2时的修改):

    <1> 第一处修改:

    CMakeLists.txt文件中添加如下代码:

    set(OpenCV_DIR D:/ORBSLAM3/opencv-4.1.2/build)
    

    在这里插入图片描述
    注意:我的修改是以上这样的,如果你的opencv-4.1.2的路径与我的不同,则请以你的路径为准!

    <2> 第二处修改:
    在这里插入图片描述
    再次configure就不会报错了:
    在这里插入图片描述
    接着,点击Generate–>Open Project后,进入Visual Studio

    3、进入Visual Studio之后,进行如下编译操作:

    3.1、Release模式下进行编译操作:
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    接着,在C/C++–>预处理器–>预处理器定义中添加如下代码:

    WINDOWS;COMPILEDWITHC11;
    

    在这里插入图片描述
    在这里插入图片描述
    完成以上操作后,进行生成操作,步骤如下:
    在这里插入图片描述
    在这里插入图片描述
    在生成时,会报如下错误:

    无法打开包括文件: “opencv/cv.h”: No such file or directory
    在这里插入图片描述
    原因是项目文件中头文件引入有误,改成如下形式即可:

    #include <opencv2/opencv.hpp> 
    

    在这里插入图片描述
    保存之后,再次进行生成操作,会报如下错误:

    "CV_RGB2GRAY": 未声明的标识符

    解决方法:双击报错的内容,进入Traking.cc文件,在该文件中添加如下代码:

    #include <opencv2/imgproc/types_c.h>    //添加
    

    在这里插入图片描述
    再次进行生成操作,还会有如下报错:

    “CvMat”: 未声明的标识符

    解决方法:双击报错的内容,进入PnPsolver.cc文件
    在这里插入图片描述
    找到并进入头文件PnPsolver.h
    在这里插入图片描述
    在头文件中添加如下代码:

    // 引入如下头文件
    #include <opencv2/core/types_c.h>
    #include <opencv2/core/core_c.h>
    

    在这里插入图片描述

    再次对ORB_SLAM3进行生成操作,会报如下错误:

    "CV_GRAY2BGR": 未声明的标识符
    在这里插入图片描述
    双击进入报错文件中,添加如下内容即可:

    // 添加如下代码
    #include <opencv2\imgproc\types_c.h>
    #include <opencv2/imgcodecs/legacy/constants_c.h>
    

    在这里插入图片描述

    再次点击生成按钮,会报如下错误:

    "CV_REDUCE_SUM": 未声明的标识符

    解决方法:
    在报错文件中添加如下代码:

    // 添加的代码
    #include <opencv2/core/core_c.h>
    

    在这里插入图片描述
    再次点击生成按钮,即可完成Release模式下的生成!
    在这里插入图片描述
    3.2、Debug模式下进行编译操作:
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    接着,在C/C++–>预处理器–>预处理器定义中添加如下代码:

    WINDOWS;COMPILEDWITHC11;
    

    在这里插入图片描述
    在这里插入图片描述
    ORB_SLAM3上右键,点击生成即可!
    在这里插入图片描述

    十一、编译mono_tum

    1、在Release模式下编译mono_tum,步骤如下:
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    C/C++–>预处理器–>预处理器定义中添加如下代码:

    COMPILEDWITHC11;
    

    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    保存以上修改后,在mono_tum上右键,点击生成即可!
    在这里插入图片描述
    2、在Debug模式下编译mono_tum,步骤如下:
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    C/C++–>预处理器–>预处理器定义中添加如下代码:

    COMPILEDWITHC11;
    

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

    十二、下载并解压测试数据

    1、数据集下载网址
    2、下载:rgbd_dataset_freiburg1_desk
    3、解压下载好的rgbd_dataset_freiburg1_desk.tgz数据集
    4、在D:\ORBSLAM3目录下新建data文件夹,将数据集剪切到data文件夹中,如图:
    在这里插入图片描述

    十三、利用mono_tum测试数据

    1、在Release模式下进行数据测试:

    先进入D:\ORBSLAM3\opencv-4.1.2\build\bin\Release文件夹中,复制所有的.dll文件
    在这里插入图片描述

    然后,将这些文件复制到D:\ORBSLAM3\orbslam3-windows\Examples\Monocular\Release文件夹中,如图所示:
    在这里插入图片描述
    修改D:\ORBSLAM32\orbslam3-windows\Examples\Monocular路径下的TUM1.yaml文件,添加如下代码:

    Camera.type: "PinHole"
    

    在这里插入图片描述
    然后进入D:\ORBSLAM3\orbslam3-windows\Vocabulary文件夹中,解压ORBvoc.txt.tar.gz文件,得到ORBvoc.txt文件,如图:
    在这里插入图片描述
    然后,在D:\ORBSLAM3\orbslam3-windows\Examples\Monocular\Release文件夹中创建readme.txt文件,用于保存我们的执行语句,这样方便我们以后修改和执行!

    执行语句内容如下:

    mono_tum D:\ORBSLAM3\orbslam3-windows\Vocabulary\ORBvoc.txt D:\ORBSLAM3\orbslam3-windows\Examples\Monocular\TUM1.yaml D:\ORBSLAM3\data\rgbd_dataset_freiburg1_desk
    

    说明:
    mono_tum:表示mono_tum.exe 文件,后面的三条语句是三个参数。
    参数1:(刚才解压的文件路径)

    D:\ORBSLAM3\orbslam3-windows\Vocabulary\ORBvoc.txt
    

    参数2:(刚才修改的文件路径)

    D:\ORBSLAM3\orbslam3-windows\Examples\Monocular\TUM1.yaml
    

    参数3:(测试数据文件夹路径)

    D:\ORBSLAM3\data\rgbd_dataset_freiburg1_desk
    

    复制以上的执行语句,在D:\ORBSLAM32\orbslam3-windows\Examples\Monocular\Release文件夹的路径栏中输入cmd进入终端,如下图所示:
    在这里插入图片描述
    执行语句复制粘贴到命令行(cmd)中,并回车,如图所示:
    在这里插入图片描述
    等待一会儿后就会出现如下结果:
    在这里插入图片描述
    在这里,如果我们输入的测试数据集文件的路径参数不正确,会出现程序卡住并崩溃的情况,如图:
    在这里插入图片描述
    原因在于源代码设计不够完善造成的,我们可以打开工程项目,对mono_tum.cc文件进行如下修改,如图所示:
    在这里插入图片描述
    在这里插入图片描述

    //修改代码:
    	bool fileExist = LoadImages(strFile, vstrImageFilenames, vTimestamps);
    	if (fileExist != true) {
    		cout << "\nErro: file -> \"" + strFile + "\" dose not exist!" << endl;
    		return 1;
    	}
    

    在这里插入图片描述

    //判断文件是否存在
    	if (f.is_open() != true) {
    		return false;
    	}
    

    在这里插入图片描述
    改写完以上代码后,在mono_tum上右键,点击生成即可!
    在这里插入图片描述
    再次测试,如图:
    在这里插入图片描述
    可见,这一bug已被解决,源代码进一步得到完善!

    2、在Debug模式下进行数据测试:

    先进入D:\ORBSLAM3\opencv-4.1.2\build\bin\Debug文件夹中,复制所有的.dll文件
    在这里插入图片描述
    然后,将这些文件复制到D:\ORBSLAM3\orbslam3-windows\Examples\Monocular\Debug文件夹中,如图所示:
    在这里插入图片描述
    同理,在当前文件夹中新建readme.txt文件夹,用于存放执行指令代码

    mono_tum D:\ORBSLAM3\orbslam3-windows\Vocabulary\ORBvoc.txt D:\ORBSLAM3\orbslam3-windows\Examples\Monocular\TUM1.yaml D:\ORBSLAM3\data\rgbd_dataset_freiburg1_desk
    

    同理,打开命令行(cmd)输入该条执行语句,回车后等待大概15分钟后(debug模式下运行会很慢!需要耐心等待!)会出现如下结果:
    在这里插入图片描述
    解决方法,通过调试,来检查错误!

    首先添加命令参数,步骤如下:
    在这里插入图片描述
    参数:(即之前我们提到的那三个参数)

    D:\ORBSLAM3\orbslam3-windows\Vocabulary\ORBvoc.txt D:\ORBSLAM3\orbslam3-windows\Examples\Monocular\TUM1.yaml D:\ORBSLAM3\data\rgbd_dataset_freiburg1_desk
    

    mono_tum设置为启动项,步骤如下:
    在这里插入图片描述
    在这里插入图片描述
    这样我们就可以直接运行程序了!就不需要在命令行中进行测试了,十分地方便!
    通过调试发现,错误是由文件ORBextractor中的vKeysCell没有指定大小以及Tracking.ccTracking.h文件中的变量定义有误导致堆栈溢出而造成的,改正方法是,将如下两个参数改成指针变量,如图:
    在这里插入图片描述
    在vKeysCell后面加上:(10000),如上图所示。
    在这里插入图片描述
    修改Tracking.h文件中的上图所示变量类型为指针类型,然后在Tracking.cc文件中的构造函数与析构函数中添加如下代码:

    // 构造函数中的代码:
    // 初始化变量
    mCurrentFrame = NULL;
    mLastFrame = NULL;
    bStepByStep = false;
    
    // 析构函数中的代码:
    // 注销指针变量
    delete mCurrentFrame;
    delete mLastFrame;
    

    在这里插入图片描述
    然后进行如下替换:(注意:要一个一个地替换)

    mCurrentFrame.		—替换为—>		mCurrentFrame->
    mLastFrame.			—替换为—>		mLastFrame->
    
    mCurrentFrame		-替换为->		*mCurrentFrame
    mLastFrame			-替换为->		*mLastFrame
    
    &mCurrentFrame		-替换为->		mCurrentFrame
    &mLastFrame			-替换为->		mLastFrame
    
    mCurrentFrame = Frame(...);
    替换为:
    delete mCurrentFrame;
    mCurrentFrame = new Frame(...);
    
    mLastFrame = Frame(...);
    替换为:
    delete mLastFrame;
    mLastFrame = new Frame(...);
    

    其他:
    在这里插入图片描述
    完成以上修改之后,依次在debug模式下重新生成ORBSLAM3mono_tum即可。

    十四、利用Python代码生成ORBSLAM测试数据

    代码:

    import os
    import cv2
    import time
    
    videoPath=input("请输入视屏文件的绝对路径:")
    # 将视频文件路径转化为标准的路径
    videoPath=videoPath.replace("\\","/").replace('"','').replace("'","")
    # 视屏获取
    videoCapture=cv2.VideoCapture(videoPath)
    # 帧率(frames per second)
    fps = videoCapture.get(cv2.CAP_PROP_FPS)
    # 总帧数(frames)
    frames = videoCapture.get(cv2.CAP_PROP_FRAME_COUNT)
    
    #图片存储地址:
    pathSave="./data/slam/rgb/"
    if(os.path.exists(pathSave)!=True):
        os.makedirs(pathSave)
    
    #间隔多少帧取一张图片
    skipNum=1  #注:间隔1帧取一个图;
    count=0
    f=open("./data/slam/"+"rgb.txt","w",encoding="utf-8")
    f.write("# color images\n# file: 'rgb.bag'\n# timestamp filename\n")
    while (True):
        ret,frame=videoCapture.read()
        if(ret):
            if(count%(skipNum+1)==0):
                imgName="{:.6f}".format(time.time()+1.0*skipNum/fps-0.001*skipNum)
                imgPath=" rgb/"+imgName+ '.png'
                cv2.imwrite(pathSave + imgName + '.png', frame) 
                f.write(imgName+imgPath+"\n")
            count+=1
    #         cv2.waitKey(int(1.0*skipNum/fps*1000))
            cv2.waitKey(1)
    #         time.sleep()
        else:
            if(count!=0):
                print("视屏处理完毕!")
            else:
                print("视屏路径有误!")
            break
    videoCapture.release()
    f.close()
    

    要运行以上代码需要安装Python,同时要用pip命令安装第三方库cv2

    运行代码后,需要输入想要处理的mp4格式的视屏文件的绝对路径(注意:路径中不能有中文汉字,否则路径解析式会出现找不到路径的情况而无结果!),回车后即可生成ORBSLAM可处理的数据,如图:
    在这里插入图片描述
    测试:

    在这里插入图片描述
    可见并没有出现点云,这是因为yaml配置文件是别人的,我们要通过相机的标定来修改TUM1.yaml文件中的参数!

    十五、TUM1.yaml文件中部分参数说明

    如图:
    在这里插入图片描述
    说明:

    1、图片的属性
    Camera.width: 图片的宽度
    Camera.heigth: 图片的高度
    
    2、Focal Length(fc): 焦距
    Camera.fx: 焦距的x值
    Camera.fy: 焦距的y值
    
    3、Principal point(cc): 主点
    Camera.cx: 主点的x值
    Camera.cy: 主点的y值
    
    4、Distortion(kc): 相机的畸变参数
    Camera.k1: kc[0]
    Camera.k2: kc[1]
    Camera.p1: kc[2]
    Camera.p2: kc[3]
    Camera.k3: kc[4]
    : 
    Radial distortion: 径向畸变
    Camera.k1: k1
    Camera.k2: k2
    Camera.k3: k3
    Tangential distortion: 切向畸变
    Camera.p1: p1
    Camera.p2: p2
    

    通过MATLAB的相机标定,获得自己测试数据的以上参数并修改对应的.yaml文件之后,就能成功运行自己的数据了!

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

    展开全文
  • ORBSLAM2_with_pointcloud_map-master.zip
  • ORBSLAM 加入了循环回路的检测和闭合机制 以消除误差累积。系统采用与重定位相同的方法来检测回路(匹配回路两侧关键帧上的公共点) 通过方位图 (Pose Graph) 优化来闭合回路。PTAM 需要用户指定 2 帧来初始化系统 2 ...
  • ORBSLAM3 的改进

    千次阅读 多人点赞 2020-07-27 09:26:27
    周六看到了ORBSLAM3的源码,安装运行后看了一下其代码结构,因为加IMU的部分是针对之前的ORB-VI, 因此大家可以参考jinpang的LearnORBVI可以更纯粹地学习视觉+IMU的组合; 这篇文章主要是针对其在Tracking线程做出...

    周六看到了ORBSLAM3的源码,安装运行后看了一下其代码结构,因为加IMU的部分是针对之前的ORB-VI, 因此大家可以参考jinpang的LearnORBVI可以更纯粹地学习视觉+IMU的组合;

    这篇文章主要是针对其在Tracking线程做出的改动,尤其是添加Atlas后对Tracking部分的影响,LoopClosing和MapMerging的部分会在后面的分析中讲到,有错误也欢迎各位指正。

    各部分的流程图整理好之后,稍后发出。

    ORBSLAM3相对于ORBSLAM2做出的主要改动:

    1. Atlas: 用于保存很多琐碎的地图;主要的作用发挥在Tracking线程Lost时,之前Lost后需要回到原先的位置进行Relocalization(),但是现在,如果tracking线程丢失,ORBSLAM3会在之前的所有小地图中进行查询匹配,如果匹配成功,则tracking线程继续; 如果匹配不成功,则重新开辟一个小的地图;

    2. 也是因为这种情况,ORBSLAM3中还有很多小的地图(类似于carto中的submap)

    Localmapping 线程只发生在当下active的map中

    3.新增最大后验概率,用于初始化并且refine IMU数据;

    4. loop and map merging 线程: 因为有了很多琐碎的地图,因此新增了map merging的部分,如果两个地图有重合部分,且重合处属于当前Active的Map,则对其进行LoopCorrection,类似于之前的检测到回环。如果两个地图重合的部分属于别的地图,这就类似于找到了其他两个地图的重合点,因此就将他们merge到一起。

    If the common area belongs to the active map, it performs loop correction; if it belongs to a different map, both maps are seamlessly merged into a single one, that becomes the active map.

     1. 相机模型:

    新增了基于KB鱼眼模型的追踪;这个模型与OpenCV的cv::fisheye标定的时候所使用的模型是一样的,因此大家可以使用opencv直接进行标定,建议使用size较大的标定板,这是注意很有可能你的标定板检测不需要subpixel即可很准确。

    鱼眼模型带来的改变:

    a. 重定位:ORBSLAM2通过求解PnP问题进行重定位后的计算,但是因为新增了鱼眼模型,因此需要新建一个可以不基于相机模型的Pnp算法,因此也就有了最大似然PnP算法;

    b. 鱼眼模型带来的另一个改变是双目匹配时,这里对比一下两个项目在这里的区别:

    ORBSLAM2: 采用双目去畸变后的图像,去畸变的remap过程发生在进入system之前,ComputeStereoMatches() 所采用的双目匹配方法是在极线上搜索,是一个很小的带状区域;搜索到匹配点之后直接根据视差d计算深度z

    ORBSLAM3: 采用暴力匹配的方式,在全局使用knn搜索,只查找与当前左目描述子距离最近和次近的右目描述子,只要满足Lowe's Law就可以送去三角化计算关键点所对应的地图点。

    三角化的这部分在ORBSLAM2中只用于跟踪,根据两帧匹配好的图像进行计算地图点的坐标,这里把他用于双目匹配计算深度;我在EUCM双目鱼眼中计算深度的方法也是如此,但是因为没有加入前面的最优与次优筛选的条件outliner就会比较多

     2. 新添加了一种状态RECENTLY_LOST,因此主要的状态分为以下:

    NO_IMAGE_YET

    NOT_INITIALIZED

    OK

    RECENTLY_LOST: 当前地图中的KF>10,且丢失时间<5秒

    个人认为,这个状态其实就是相当于原先的LOST,在这里,如果激活了IMU则通过IMU数据进行预测,也就是 calculate current  pose by IMU data,

    但如果丢失时间,超过五秒,则由当前state切换为LOST;如果是非IMU,即纯视觉状态,则直接进行重定位Relocalization();

    LOST: 这个状态就是ORBSLAM3的一个新加的状态(虽然名字与之前的一样),因为新增了atlas,如果当前地图中的关键帧数量<10个,可以认为当前地图中没有重要信息,直接ResetActiveMap(),这个思路相当于之前的Reset(), 即如果初始化刚刚成功就丢失,可以认为当前map并不重要,直接重新初始化,这里也是一样的思路,这个部分最终发挥作用是在函数Tracking::ResetActiveMap()中。但如果当前的地图已经有很多关键帧(大于10帧),则调用CreateNewMap() 暂存该地图,再新建一个空的地图。

    接下来对比一下Tracking::ResetActiveMap() 与ORBSLAM2中的Reset(),方便更清楚这个函数的作用

    ORBSLAM3 中 Tracking::ResetActiveMap() 部分功能:

     Map* pMap = mpAtlas->GetCurrentMap();
     mpLocalMapper->RequestResetActiveMap(pMap);
     mpLoopClosing->RequestResetActiveMap(pMap);
     mpKeyFrameDB->clearMap(pMap);
     mpAtlas->clearMap();

    ORBSLAM2 中Reset()函数:

     mpLocalMapper->RequestReset();
     // Reset Loop Closing
     mpLoopClosing->RequestReset();
        
     cout << "Reseting Database...";
     mpKeyFrameDB->clear();
     cout << " done" << endl;
    
     // Clear Map (this erase MapPoints and KeyFrames)
     mpMap->clear();
    

     可以看到该函数的主要作用相对于之前的Reset() ,不变的部分是对一些Tracking所用到的类成员变量进行reset,如mCurrentFrame, mLastFrame等,同时,通知其他几个线程需要reset的消息。 但是变化的部分要是Atlas的加入,每一个线程的reset都是只针对currentMap,并不会影响其他的Map,新建的线程mpAltas也会将目前的地图清除,

    CreateMapInAtlas(),用于新建一个submap,而atlas就是用于管理这些small map的。

    接下来主要说一下ATLAS, atlas是新建的线程,主要用于管理地图,既然有了地图管理者,就会有几个随之而来的类成员变量,最主要的是mspMaps,用于存放小地图,同时一个重要的函数createNewMap()用于新建地图

    强调一下 createNewMap(): 主要作用如下:

    1. 保存当前地图 mpCurrentMap->SetStoredMap(); 主要通过设置变量IsInUse为False,方便后面进行判断;

    2. 设定新地图的初始帧的KFid:mnLastInitKFidMap = mpCurrentMap->GetMaxKFid()+1;

    3. 接下来一切准备就绪,

    mpCurrentMap = new Map(mnLastInitKFidMap); //初始化一个地图
    mpCurrentMap->SetCurrentMap(); //将其设置为正在使用,也就是active
    mspMaps.insert(mpCurrentMap); //将此地图插入到mspMaps,也就是地图管理变量中

    就此,创建新的小地图完成;

    接下来最主要的一个问题就是ORBSLAM3会在什么时候创建新的地图:

    1. 初始化:

     Map* pCurrentMap = mpAtlas->GetCurrentMap();

    a. 如果是带有IMU的初始化,则在IMU初始化完成后就直接调用 CreateMapInAtlas();(结合IMU的第一点作用,即在视觉初始化成功之前进行位置追踪,这里不难理解)

    b. 如果是不带有IMU的Tracking,初始化的过程和ORBSLAM2一样,在初始化时进行新建地图,以双目为例,在

    StereoInitialization() 中,若有特征点足够,则

     KeyFrame* pKFini = new KeyFrame(mCurrentFrame,mpAtlas->GetCurrentMap(),mpKeyFrameDB); 

    而这里GetCurrentMap()也会调用createNewMap()来新建地图; 

    2. 如果当前状态设定为LOST,且当前地图中的关键帧数量已经多余10帧,则调用createNewMap()保存当前地图,创建新地图;

    下面是Tracking部分的流程图,排除IMU的添加,蓝色的字体是纯视觉来讲,与之前ORBSLAM2的主要差别。

    如有疑问,欢迎交流: wx: baobaohaha_ 欢迎对SLAM有兴趣的小伙伴一起交流学习~~

    展开全文
  • ORBSLAM是能够实时运行单目相机来进行定位的开源优秀算法,本资源对特征提取、追踪线程和特征匹配部分的代码做了详细的注释,新手容易上手。
  • ORBSLAM2017工程

    2018-06-20 09:45:43
    include文件夹存放的是头文件,ORB-SLAM2可以被当作一个库来使用,很多函数都可以直接调用 src文件夹存放的是和include对应的源文件 Thirdparty存放的是用到的第三方库 Vocabulary存放的是回环检测中BoW用到的视觉...
  • Ubuntu18.04配置ORB SLAM3

    千次阅读 2021-11-13 22:28:30
    Ubuntu18.0配置ORB SLAM3欢迎使用Markdown编辑器编译OpenCV安装依赖库编译OpenCV将OpenCV配置到系统中OpenCV简单的代码测试功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一...
  • 详解orb slam2的Tracking线程!
  • ORBSLAM24Windows+读取二进制文件-附件资源
  • Orbslam2 稠密点云 +D435i实现(Ubuntu18.04)

    千次阅读 多人点赞 2022-04-09 08:55:42
    考研完后,自己买了个D435i,随便玩一玩小项目 系统:Ubuntu18.04 设备:Realsense D435i ...→ → → orbslam2+小觅相机 相关依赖库 sudo apt-get install cmake gcc g++ git vim sudo apt-get install libglew-dev su
  • 编译高翔博士的ORBSLAM2_with_pointcloud_map 它的过程为: Unzip the file you will find two directories. First compile the modified g2o: cd g2o_with_orbslam2 mkdir build cd build cmake … make Following ...
  • 逻辑详细且严密的讲述了ORBSLAM2的算法流程
  • 本发明涉及机器人视觉与图像处理领域,尤其涉及一种基于ORBSLAM2的八叉树建图方法。背景技术:SLAM技术的发展推动了定位(Localization)、跟踪(Tracking)以及路径规划(Path Planning)技术的发展,进而对无人机、无人...
  • vscode ubuntu debug orbslam3 调试
  • 本文希望探讨 ORB SLAM2 跟踪的三种模式的相关细节,相比于很多对于ORB2流程详尽的介绍,我想分享的是对于这三种流程,自己产生的由浅入深的疑问,和寻找到的答案。
  • 近期又重新拾起ORBSLAM2的学习,换装了Ubuntu16.04,配置环境的bug比18.04少了不少,可以说是一路顺利,关于环境配置的问题,网络上可以说是众说纷纭,如果你打算使用Ubuntu16.04,可以参照我的配置经验,从18.04...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 20,036
精华内容 8,014
关键字:

orbslam