orb-slam2+Windows系统+debug模式运行成功
来源:互联网 发布:linux 新建用户组 编辑:程序博客网 时间:2024/06/08 06:23
将github上的orb-slam2在Ubuntu上运行后,就想要搬到自己喜欢的windows上运行(高博士说,学slam 别想逃避Linux,我很愧疚),照着冯兵老师的指导,将orb-slam2 cmake到vs2013上,花了近一个月(我的天哪,浪费生命),release版本才成功运行,debug版本则是各种错误。大神们忙得很,无心理会这些错误,可是我有强迫症,我要让debug模式跑起来,于是便开始了一周的填坑工作,要知道我可是个有工作的人,还是个女的
第一:
第二:
第三:配置问题
包含目录:
F:\denpendenciesForOrb\eigen3
D:\2-4-9\opencv\myBuild\install\include
D:\2-4-9\opencv\myBuild\install\include\opencv
D:\2-4-9\opencv\myBuild\install\include\opencv2
F:\denpendenciesForOrb\Pangolin\MyBuild\src\include
F:\denpendenciesForOrb\Pangolin\include
F:\denpendenciesForOrb\glew-1.6.0\include
F:\orb-slam2-stereo\Thirdparty\g2o\g2o\core
F:\orb-slam2-stereo\Thirdparty\g2o\g2o\solvers
F:\orb-slam2-stereo\Thirdparty\g2o\g2o\stuff
F:\orb-slam2-stereo\Thirdparty\g2o\g2o\types
F:\orb-slam2-stereo\Thirdparty\g2o\g2o
库目录:
D:\2-4-9\opencv\myBuild\install\lib
F:\orb-slam2-stereo\Thirdparty\DBoW2\bin\Debug
F:\denpendenciesForOrb\Pangolin\MyBuild\src\Debug
F:\denpendenciesForOrb\glew-1.6.0\lib
F:\orb-slam2-stereo\Thirdparty\g2o\bin\Debug
链接库:
kernel32.lib
user32.lib
gdi32.lib
winspool.lib
shell32.lib
ole32.lib
oleaut32.lib
uuid.lib
comdlg32.lib
advapi32.lib
pangolin.lib
glu32.lib
opengl32.lib
F:\denpendenciesForOrb\Pangolin\MyBuild\external\glew\lib\glew.lib
F:\denpendenciesForOrb\Pangolin\MyBuild\external\libpng\lib\libpng16_static.lib
F:\denpendenciesForOrb\Pangolin\MyBuild\external\zlib\lib\zlibstatic.lib
F:\denpendenciesForOrb\Pangolin\MyBuild\external\libjpeg\lib\jpeg.lib
dbow2.lib
g2o.lib
常规设置:全程序优化
预处理器:
WIN32
_WINDOWS
_DEBUG
NOMINMAX
WINDOWS
ORBSLAM_EXPORT
CMAKE_INTDIR="Debug"
第四:debug下生成过程及运行中的问题
在VS中出现fatal error C1128: 节数超过对象文件格式限制:请使用/bigobj 进行编译的错误
这是由于源代码文件太大的原因,需添加选项/bigobj,在项目属性-> C/C++ ->命令行的附加选项中添加/bigobj。
yaml文件加载失败
检查下你添加的lib库是否debug和release的混了,如果都有,那么去掉不用的
指针未初始化问题:KeyFrame.cpp
点云不计算
bm变量未初始化,导致debug下自动赋值为位全1(负数),release下自动赋值为随机值。
下标出界:
1、预测金字塔层数时预测值大于等于8;随机选择3/8/点处,随机值重复
2、FrameDrawer.cpp中
map/set iterator notdereferencable(MapPoint.cpp)
迭代器到头或者迭代器叠加造成
vectoriterators incompatible(void Tracking::UpdateLocalKeyFrames()中)
要略过这个检查,可以用#define _HAS_ITERATOR_DEBUGGING 0不过建议还是检查线程的同步代码。
vector迭代器的几种失效的情况:
1.当插入(push_back)一个元素后,end操作返回的迭代器肯定失效。
2.当插入(push_back)一个元素后,capacity返回值与没有插入元素之前相比有改变,则需要重新加载整个容器,此时first和end操作返回的迭代器都会失效。
3.当进行删除操作(erase,pop_back)后,指向删除点的迭代器全部失效;指向删除点后面的元素的迭代器也将全部失效。
修改完以上错误,debug模型成功运行啦
具体问题具体联系
F:\denpendenciesForOrb\eigen3
D:\2-4-9\opencv\myBuild\install\include
D:\2-4-9\opencv\myBuild\install\include\opencv
D:\2-4-9\opencv\myBuild\install\include\opencv2
F:\denpendenciesForOrb\Pangolin\MyBuild\src\include
F:\denpendenciesForOrb\Pangolin\include
F:\denpendenciesForOrb\glew-1.6.0\include
F:\orb-slam2-stereo\Thirdparty\g2o\g2o\core
F:\orb-slam2-stereo\Thirdparty\g2o\g2o\solvers
F:\orb-slam2-stereo\Thirdparty\g2o\g2o\stuff
F:\orb-slam2-stereo\Thirdparty\g2o\g2o\types
F:\orb-slam2-stereo\Thirdparty\g2o\g2o
库目录:
D:\2-4-9\opencv\myBuild\install\lib
F:\orb-slam2-stereo\Thirdparty\DBoW2\bin\Debug
F:\denpendenciesForOrb\Pangolin\MyBuild\src\Debug
F:\denpendenciesForOrb\glew-1.6.0\lib
F:\orb-slam2-stereo\Thirdparty\g2o\bin\Debug
链接库:
kernel32.lib
user32.lib
gdi32.lib
winspool.lib
shell32.lib
ole32.lib
oleaut32.lib
uuid.lib
comdlg32.lib
advapi32.lib
pangolin.lib
glu32.lib
opengl32.lib
F:\denpendenciesForOrb\Pangolin\MyBuild\external\glew\lib\glew.lib
F:\denpendenciesForOrb\Pangolin\MyBuild\external\libpng\lib\libpng16_static.lib
F:\denpendenciesForOrb\Pangolin\MyBuild\external\zlib\lib\zlibstatic.lib
F:\denpendenciesForOrb\Pangolin\MyBuild\external\libjpeg\lib\jpeg.lib
dbow2.lib
g2o.lib
常规设置:全程序优化
预处理器:
WIN32
_WINDOWS
_DEBUG
NOMINMAX
WINDOWS
ORBSLAM_EXPORT
CMAKE_INTDIR="Debug"
第四:debug下生成过程及运行中的问题
在VS中出现fatal error C1128: 节数超过对象文件格式限制:请使用/bigobj 进行编译的错误
这是由于源代码文件太大的原因,需添加选项/bigobj,在项目属性-> C/C++ ->命令行的附加选项中添加/bigobj。
yaml文件加载失败
检查下你添加的lib库是否debug和release的混了,如果都有,那么去掉不用的
指针未初始化问题:KeyFrame.cpp
点云不计算
bm变量未初始化,导致debug下自动赋值为位全1(负数),release下自动赋值为随机值。
下标出界:
1、预测金字塔层数时预测值大于等于8;随机选择3/8/点处,随机值重复
2、FrameDrawer.cpp中
map/set iterator notdereferencable(MapPoint.cpp)
迭代器到头或者迭代器叠加造成
vectoriterators incompatible(void Tracking::UpdateLocalKeyFrames()中)
要略过这个检查,可以用#define _HAS_ITERATOR_DEBUGGING 0不过建议还是检查线程的同步代码。
vector迭代器的几种失效的情况:
1.当插入(push_back)一个元素后,end操作返回的迭代器肯定失效。
2.当插入(push_back)一个元素后,capacity返回值与没有插入元素之前相比有改变,则需要重新加载整个容器,此时first和end操作返回的迭代器都会失效。
3.当进行删除操作(erase,pop_back)后,指向删除点的迭代器全部失效;指向删除点后面的元素的迭代器也将全部失效。
修改完以上错误,debug模型成功运行啦
具体问题具体联系
- orb-slam2+Windows系统+debug模式运行成功
- ORB-SLAM2运行自己的数据集
- 在ROS indigo下运行ORB-SLAM2
- ORB-SLAM2 环境搭建和运行测试
- ORB-SLAM2运行自己的数据集
- ORB-SLAM2
- ORB-SLAM2
- ORB SLAM2运行步骤/怎样跑通orbslam2
- ubuntu 14.04.5下运行ORB-SLAM2的数据
- ORB SLAM2运行步骤/怎样跑通orbslam2
- ORB-SLAM2安装与运行(非ROS环境下)
- Ubuntu下使用单目相机运行ORB SLAM2
- ORB-SLAM2 跑数据集&&运行自己的摄像头
- ORB-SLAM2应用练习:三维重建系统搭建 (1)
- ORB-SLAM2应用练习:三维重建系统搭建 (2)
- ORB-SLAM2应用练习:三维重建系统搭建 (3)
- ORB-SLAM2应用练习:三维重建系统搭建 (4) [END]
- ORB-SLAM2实现
- linux commands
- 4.Hibernate关系映射
- 第54篇撤销后笔迹的同步解决方案总结(三)
- VS2015常用快捷键
- 撞库介绍及个人信息保护
- orb-slam2+Windows系统+debug模式运行成功
- 常用无类路由协议组播地址
- 不调用free会内存泄露吗?
- 堆排序
- TabLayout加ViewPager的简单使用
- 剑指offer经典编程(二)
- 关于System.gc()解决File的Delete和DeleteOnExit()删除文件无效的问题——已解决
- 时间日历构造方法
- php扩展模块 opcache安装教程