首页IT科技orbslam2单目(ORB_SLAM2+kinect稠密建图实战项目总结)

orbslam2单目(ORB_SLAM2+kinect稠密建图实战项目总结)

时间2025-06-14 19:12:13分类IT科技浏览8397
导读:学完ORB_SLAM2源码后,想用一个小项目巩固所学知识。思虑良久~决定在ORB_SLAM2源码的基础上添加稠密建图的线程,并用kinect2相机实现自己卧室的三维重建。...

学完ORB_SLAM2源码后                  ,想用一个小项目巩固所学知识                  。思虑良久~决定在ORB_SLAM2源码的基础上添加稠密建图的线程                         ,并用kinect2相机实现自己卧室的三维重建                         。

话不多说        ,先上效果图        。

带闭环的稠密地图重建

不带闭环的稠密地图重建

在完成这个小项目的过程中             ,每当遇到编译和运行环节                          ,屏幕上大概率会出现红红的warnings和errors             。一开始还能稳住心态            ,遇到问题就google        ,但后来发现很多博客或github上的issue并不会把修改code的原理讲清楚且有些答案本身就有错误                          ,对于新手小白不太友好                          。如果不求甚解                ,盲目地相信博客    ,还可能造成不可逆转的后果                          ,比如像我一样            。        。                          。误修改权限导致ubuntu系统崩溃                    ,痛心疾首!恨不得当场摔鼠标键盘!

为此我记录下自己在ORB_SLAM2+kinect2稠密建图实战过程中踩过的坑,注明那些容易犯错的地方                      ,警醒自己一定要真正把问题搞明白!重要的事情说三遍                        ,真正把问题搞明白!真正把问题搞明白!真正把问题搞明白!

那么首先    ,我们让代码跑起来~

高翔博士开源了不带闭环的稠密建图                  ,地址如下:

https://github.com/gaoxiang12/ORBSLAM2_with_pointcloud_map

在此基础上大佬们开源了另一个带闭环的稠密建图                         ,地址如下:​​​​​​https://github.com/tiantiandabaojian/ORB-SLAM2_RGBD_DENSE_MAP

 我们将以带闭环的稠密建图为基础        ,搭建环境并对其中的部分bug做修改             ,方便大家快速跑出效果图                。

具体的安装流程参照以下博客即可                          ,这里我主要记录一下可能出现的问题            ,分析原因并给出解决办法(在本机上已实验证明可行)

ORB SLAM 2 + 构建点云地图 复现 - 简书

使用ORBSLAM2进行kineticV2稠密建图        ,实时转octomap建图以及导航 - 古月居

问题记录:

1. 安装Kinect开源驱动iai_kinect2和libfreenect2(为什么这里要装两个驱动?)

iai_kinect2是ros的驱动                          ,而libfreenect2是kinect2的驱动                ,iai_kinect2可以建立在libfreenect上也可以在OpenNI上    。这里如果出现编译错误    ,将error复制粘贴到搜索框一般都比较容易解决                          。

2. 使用iai_kinect2里面的kinect2_calibration进行标定时生成的yaml文件不全

经过实验                          ,发现标定颜色/深度/同步的照片张数至少要50张才能正常生成yaml文件                    。

3. 编译ORB-SLAM2_RGBD_DENSE_MAP-master时出现很多与eigen3有关的warnings                    ,且忽视warnings运行后出现段错误。

ubuntu18下对应的ros版本为melodic,默认是3.3以上                      ,而运行ORB-SLAM2_RGBD_DENSE_MAP-master最高是3.2的版本                      。

查看eigen3的版本

pkg-config--modversion eigen3

删除和安装eigen可以参考以下链接:ubuntu16.04卸载                  、安装eigen_TB81266的博客-CSDN博客_ubuntu卸载eigen3

4. 编译ORB-SLAM2_RGBD_DENSE_MAP-master时缺失ORBvoc.txt.tar.gz                        ,并有与pcl1.7相关的warnings

原始的ORB-SLAM2_RGBD_DENSE_MAP-master中的Vocabulary中没有ORBvoc.txt.tar.gz    ,需要从其他地方拷贝过来                  ,与pcl1.7有关的warnings可以忽略                        。需要注意的是当一次编译没通过时最好删除所有产生的build文件                         ,以免影响第二次编译    。

5. 成功编译了ORB-SLAM2_RGBD_DENSE_MAP-master        ,但最后运行时不显示点云地图

查阅了大量资料             ,都说是pcl库的问题                          ,实际上不是            ,将pointcloudmapping.h 文件中bool loopbusy;改为bool loopbusy=false即可                  。

参考博客:ORBSLAM2_稠密地图+回环__YAO阿瑶的博客-CSDN博客_orbslam 稠密地图

6. 运行ORB-SLAM2+kinect后可以显示画面        ,但地图画面很窄                          ,看上去有些奇怪

kinect2分辨率设置不合理                         。Kinect2的topic一共有三种                ,对应不同的分辨率        。其中hd是1920的    ,qhd是四分之一的960的                          ,而sd是最小的             。选择qhd比较合适                    ,对应的Camera.width: 960; Camera.height: 540

视觉SLAM实战(二):ORB-SLAM2 with Kinect2 - 半闲居士 - 博客园

7. 运行ORB-SLAM2+kinect时地图扭曲,

内参和畸变参数设置不对                      ,需要根据标定结果进行设置                        ,值得注意的是在yaml文件中设置的内参是相机标定结果的一半                          。

​​​​​​ORB-SLAM2:(三)仿真实现&kinect2在线定位建图_$南山种豆$的博客-CSDN博客

补充:

build.sh和build_ros.sh是脚本文件    ,运行脚本文件可以使编译过程自动运行                  ,但要注意运行前需要chmod +x build_ros.sh                         ,提高权限        ,否则可能找不到该脚本文件            。

由于个人设置了两个ros工作空间             ,本以为不同工作空间互不影响                          ,但实际上如果出现了相同的节点名            ,会产生很多预料之外的后果        。例如        ,本想运行带稠密建图的节点结果ros一直在执行不带稠密建图的节点                          ,找原因浪费了大量的时间                          。                。    。

创心域SEO版权声明:以上内容作者已申请原创保护,未经允许不得转载,侵权必究!授权事宜、对本内容有异议或投诉,敬请联系网站管理员,我们将尽快回复您,谢谢合作!

展开全文READ MORE
typecho关于页面(如何实现Typecho首页不显示某个分类文章) 医院门诊管理系统课程设计(基于Java+MySQL实现(Web)医院门诊信息管理系统【100010554】)