网站建设花多少钱,西安知名网站开发的公司,做网站的算什么行业,深圳住房网站app01 写在前面
近期在学习SLAM#xff0c;想部署一下ORB-SLAM3#xff0c;但是自己电脑是win11系统#xff0c;因此就想着在win11上部署一下。但是网上看了一些教程#xff0c;有一些博客#xff0c;但是可能不适合我这种情况把#xff0c;就很纠结。先说下结果#xff0…01 写在前面
近期在学习SLAM想部署一下ORB-SLAM3但是自己电脑是win11系统因此就想着在win11上部署一下。但是网上看了一些教程有一些博客但是可能不适合我这种情况把就很纠结。先说下结果配置成功过程极其痛苦。 02 参考工作
所参考的资料如下感谢各位技术大佬的付出。
1、https://github.com/ds-ly/orbslam3-windows
2、ORB-SLAM3在Windows环境下的编译配置 | 北远山村
3、ORB-SLAM3在windows下的编译使用 - 知乎 03 基础环境
CPUi7-12700KGPURTX A4000;操作系统Windows 11 64位专业版Microsoft Visual Studio 2022; 此软件默认大家已经装好在此对vs的安装不赘述CMake GUI不赘述too 04 开始配置
04-1 下载源码
本方案是基于https://github.com/ds-ly/orbslam3-windows
该方案中在Thirdparty中包含了一些博客中提到的DBoW2、eigen、g2o、Pangolin等几个关键的包所以大家也不用额外再去搜直接在此方案下配置配置的时候地址也比较集中很方便。不必担心忘记安装在哪里了。但是在这之前有两个软件需要额外先安装一下opencv和boost。当然了你也可以Thirdparty下安装。但是考虑到我自己的需要我是在其他路径下安装的。都一样记住安装位置就行了。 04-2 安装opencv
因为的自己的opencv之前就安装过所以在此没有同步记录推荐一些博客或者大家搜索自行安装opencv。
Windows下 OpenCV 的下载安装教程详细_opencv下载-CSDN博客
04-3 安装boost
boost安装首先从官网下载相应文件。(Boost C Libraries) 选择下载然后将下载的文件解压到你想要安装的路径下 进入boost_1_83_0文件夹开始安装
1双击bootstrap.bat文件生成b2.exe也可以通过终端命令执行
2接下来应该对b2.exe进行操作操作之前请先看这个 说明 这里通过双击b2.exe进行编译的默认在stage下生成lib文件夹里面只包含着静态库。 如果想要生成dll动态库可./b2 --help查看参数说明然后需要输入相应的编译命令样式如 ./b2.exe toolsetmsvc-14.1 linkstatic runtime-linkshared threadingmulti variantdebug 其中 toolset指定编译器可选的如minGW、msvc等。 vs2017 : msvc-14.1vs2015 : msvc-14.0, linux :gcc link生成动态链接库/静态链接库。生成动态链接库需使用shared方式生成静态链接库需使用static方式。一般boost库可能都是以static方式编译因为最终发布程序带着boost的dll感觉会比较累赘。 runtime-link动态/静态链接运行时库。同样有shared和static两种方式标记如何连接C运行库是包含就用静态使用系统运行库就用动态。 threading单/多线程编译。一般都写多线程程序当然要指定multi方式了如果需要编写单线程程序那么还需要编译单线程库可以使用single方式。 variant编译debug/release版本。一般都是程序的debug版本对应库的debug版本所以两个都编译。 以“lib”开头的是“linkstatic”版本静态链接库版本没有dll而直接以“boost”开头的是“linkshared”版本动态链接库版本包含lib和dll。所有的库都含有boost前缀。紧随其后的是boost库名称比如date_time库。然后是编译器的版本与库名称之间以-而不是下划线_分隔比如 -vc120。有“mt”的为“threadingmulti”版本没有的则是“threadingsingle”版本。有“s”的为“runtime-linkstatic”版本没有的则是“runtime-linkshared”版本。有“gd”的为debug版本没有的则是release版本。所有的库都含有boost库的版本号结尾比如1_56其中的.以下划线_代替 之所以要说这个是因为后面要用到boost里面一个很重要的文件libboost_serialization-vc143-mt-s-x64-1_83.lib。 我第一遍生成的时候是生成“gd”的了反正我是默认直接生成他给我生成这个了后期我死活找不到这个文件编译不成功。后来知道这个问题后重新生成了一些就好了也就是说我们要生成带s的。
所以可以直接
.\b2.exe linkstatic runtime-linkstatic
其他参数没动
3等待编译完成时间不等。结束后会生成bin.v2和stage两个文件夹其中bin.v2下是生成的中间文件大小在2.4G左右可以直接删除看别的博客说的。stage/lib下是要用的文件。
4配置boost环境
通过VS2022创建一个空项目点击“项目”点击“属性”然后
1找到“配置属性/ VC目录”点击“包含目录”。在里面添加boost的根目录。如我的是D:\boost\boost_1_83_0 2找到“配置属性/ VC目录”点击“库目录”。在里面添加boost的链接库目录。如我的是D:\boost\boost_1_83_0\stage\lib 2找到“配置属性/链接器/常规”点击“附加库目录”同上述库目录D:\boost\boost_1_83_0\stage\lib
要熟悉这种包含目录啊库目录的操作后面要频繁用到
操作完以上Boost环境应该就配置好了。可以进行测试一下。
5测试
测试代码如下
#include iostream
#include boost/version.hpp
#include boost/config.hppusing namespace std;
int main()
{coutBOOST_VERSIONendl;coutBOOST_LIB_VERSIONendl;coutBOOST_PLATFORMendl;coutBOOST_COMPILERendl;coutBOOST_STDLIBendl;getchar();return 0;
}
有结果输出说明boost部署成功~因为我这没啥错大家如果有啥错了先自行解决一下-。 04-4 第三方库的配置
eigen
eigen线性算术的C模板库属于g2o的依赖刚开始我没有用这套源码的时候一个个单独安装依靠包是相当啰嗦麻烦有了这个源码的Thirdparty,就方便很多了。这个包放这就行。只要保证后面项目生成的时候有这个路径即可。 DBoW2
用于SLAM回环检测这里需要opencv环境的支持。
1在Thirdparty/DBoW2路径下新建一个build文件夹
2打开Thirdparty/DBoW2/CMakeLists.txt在里面配置自己安装opencv的路径。
原版是这样式儿的 然后我给改了一下把那几行给删除了。 就是根据自己的opencv路径set(OpenCV_DIR D:\opencv\opencv3_4\opencv\build
这个opencv路径设置也可以通过后面的cmake来设置但是我觉得这样方便点。
3打开cmake。把cmake上的俩路径改了根据自己路径来。然后点击“condigure”出现done再点击“Generate”。出现done。则表示配置成功。 如果出现报错大概率就是opencv的路径问题。
如果成功会在build文件中看到DBoW2.sln。
4用vs2022打开build/DBoW2.sln
5
将配置改成release右键项目 属性 常规 配置类型 静态库(.lib)属性 高级 目标文件扩展名 .libC/C 代码生成 运行库 多线程 (/MT)右键项目 生成即可看到生成好的lib文件Thirdparty/DBoW2/lib/Release/DBoW2.lib g2o
g2o用于图优化的框架
然后熟悉的操作来了
1在Thirdparty/g2o路径下新建一个build文件夹
2打开cmake把cmake上的俩路径改了根据自己路径来。然后点击“condigure”出现done再点击“Generate”。出现done。则表示配置成功。 这个不用设置opencv路径
3用vs2022打开build/g2o.sln
4
将配置改成release同时右键项目 属性 常规 配置类型 静态库(.lib)属性 高级 目标文件扩展名 .libC/C 代码生成 运行库 多线程 (/MT)C/C 预处理器 最上面加入WINDOWS右键项目 生成即可看到生成好的lib文件Thirdparty/g2o/build/Release/g2o.lib
Pangolin
用于3D视觉和3D导航的视觉图和用户之间的交互。这里其实和编译ORB_SLAM3没有关系但是我们使用ORB_SLAM3库的时候应用的例子上是需要这个库的。
1在Thirdparty/g2o路径下新建一个build文件夹
2打开cmake把cmake上的俩路径改了根据自己路径来。然后点击“condigure”出现done再点击“Generate”。出现done。则表示配置成功。
3用vs2022打开build/Pangolin.sln
4
将配置改成release右键项目 属性 常规 配置类型 静态库(.lib)属性 高级 目标文件扩展名 .libC/C 代码生成 运行库 多线程 (/MT)右键项目 生成即可看到生成好的lib文件ThirdParty/Pangolin/lib/Release/pangolin.lib 至此所有的准备工作完成开始编译ORB_SLAM3
05 编译ORB_SLAM3
(1) 找到orbslam3-windows/CMakeLists.txt文件配置opencv3.4.11的路径。
同样我时在txt文件中直接给跟上文操作一样 2在orbslam3-windows的路径下新建一个build文件夹
3打开cmake把cmake上的俩路径改了根据自己路径来。然后点击“condigure”出现done.
4用vs2022打开build/ORB_SLAM3.sln
5 将配置改成release同时右键项目 属性 常规 配置类型 静态库(.lib)属性 高级 目标文件扩展名 .libC/C 代码生成 运行库 多线程 (/MT)C/C 预处理器 添加以下预编译器定义WINDOWS COMPILEDWITHC11右键项目 生成即可看到生成好的lib文件ORB_SLAM3/build/Release/ORB-SLAM3.lib
这步可能会有一些报错大多都是相应的boost包、第三方库啥的路径没设置对特别是opencv因为我这个博客中没有提到对opencv的设置默认为大家都设置好了所以在这步相应的包含目录啊、库目录啊都要有相应依赖性的路径。简而言之就是你所编译的这个ORBSLAM3的项目里面设置路径的地方要把上面的依赖包都包含进去。 06 展示案例
我是测试的单目方案大家根据自己的需要来。
在orbslam3-windows\Examples文件中包含单目、双目、RGB项目等。 1、下载数据集
1下载数据集我是用的The EuRoC MAV Dataset数据集地址如下我下载了MH_01_easy。
kmavvisualinertialdatasets – ASL Datasets 下载后我是放到Examples\Monocular文件夹中解压。 2、编译案例Monocular
用vs2019打开build/ORB_SLAM3.sln将配置改成release同时右键项目mono_euroc(如果想编译其他案例就选择自己需要的) 属性 C/C 代码生成 运行库 多线程 (/MT)C/C 预处理器 添加以下预编译器定义COMPILEDWITHC11链接器 高级 导入库改为空链接器 输入 去掉..\Thirdparty\boost_1_67_0\lib64-msvc-14.1\libboost_serialization-vc141-mt-s-x64-1_67.lib改为自己路径下的lib此处我的为D:\boost\boost_1_83_0\stage\lib\libboost_serialization-vc143-mt-s-x64-1_83.lib右键项目 生成即可看到生成好的exe文件orbslam3-windows\Examples\Monocular\Release\mono_euroc.exe
如果有exe文件生成说明案例编译成功了。
3、运行案例Monocular
指令用法
Usage: ./mono_euroc path_to_vocabulary path_to_settings path_to_sequence_folder_1 path_to_times_file_1 (path_to_image_folder_2 path_to_times_file_2 ... path_to_image_folder_N path_to_times_file_N) (trajectory_file_name) 分析一下 ./mono_euroc path_to_vocabulary # 字典文件 path_to_settings # 参数设置文件 path_to_sequence_folder_1 # 影像序列文件夹路径 path_to_times_file_1 # 对应的时间戳文件 trajectory_file_name 我在orbslam3-windows目录下运行 .\Examples\Monocular\Release\mono_euroc.exe Vocabulary\ORBvoc.txt Examples\Monocular\EuRoC.yaml Examples\Monocular\MH_01_easy Examples\Monocular\EuRoC_TimeStamps\MH01.txt dataset-MH01_monocular
不管写绝对路径还是相对路径只要写对了就行。
最后运行成功 哈哈部署成功还是很开心的~
祝大家顺利~~~