此篇博文仅进行运行,具体前期编译请参考我上一篇文章

https://blog.csdn.net/wxr66/article/details/154199263?spm=1011.2415.3001.10575&sharefrom=mp_manage_linkhttps://blog.csdn.net/wxr66/article/details/154199263?spm=1011.2415.3001.10575&sharefrom=mp_manage_link


1. 编译 stereo_inertial_euroc 可执行程序

(1)打开项目
  • 打开 ORB_SLAM3.sln(位于 ORB-SLAM3forWindows/build/ 目录下)

  • 在 Visual Studio 顶部工具栏选择:
    • 配置:Release
    • 平台:x64

(2)配置stereo_inertial_euroc 项目属性

右键 stereo_inertial_euroc 项目 → 属性(Properties

🔧 C/C++ 设置

  • 代码生成 → 运行库:选择 多线程 (/MT)

  • 预处理器 → 预处理器定义:添加 COMPILEDWITHC11

🔗 链接器设置

  • 链接器高级 → 导入库清空内容(删除默认值)

(3)添加 OpenCV 和 Boost 路径

VC++ 目录 → 包含目录:添加

    • OpenCV 的 include 路径(如 D:\opencv341\build\include
    • OpenCV 的 include\opencv路径
    • OpenCV 的 include\opencv2路径
    • Boost 的根目录(如 D:\boost_1_83_0

VC++ 目录 → 库目录:添加

  • OpenCV 的 lib 路径(如 D:\opencv341\build\x64\vc15\lib
  • Boost 的 stage/lib 路径(如 D:\boost_1_83_0\stage\lib

(4)链接依赖库(.lib 文件)

链接器 → 输入 → 附加依赖项:添加boost和opencv的lib静态库

Boost:Thirdparty\boost_1_88_0\stage\lib\下的libboost_serialization-vc143-mt-s-x64-1_88.lib

💡 提示:文件名中的 xxxxx 是编译器和版本标识(如 vc143-mt-x64-1_83),请按实际文件名填写。

Opencv: opencv\build\x64\vc15\lib\下的opencv_world341.lib

(5)添加第三方库头文件路径
  • C/C++ → 常规 → 附加包含目录:添加
    • DBoW2 的 include 路径(如 ..\Thirdparty\DBoW2
    • g2o 的 include 路径(如 ..\Thirdparty\g2o

(6)修改源码 mono_euroc.cc

✏️ 添加 usleep 兼容函数(Windows 不支持 usleep

在文件顶部(#include 区域下方)加入:

#ifdef _WIN32
#include <windows.h>
// 将微秒转换为毫秒,向上取整(至少休眠 1ms 如果 >0)
#define usleep(us) Sleep((us) > 0 ? ((us) + 999) / 1000 : 0)
#endif

(7)生成可执行文件
  • 右键 mono_euroc 项目 → 生成(Build

  • 成功后会在Examples\Stereo-Inertial\Release下生成stereo_inertial_euroc.exe


2. 准备运行环境

(1)下载 EuRoC 数据集
(2)复制 glew.dll

glew-2.1.0/bin/Release/x64/glew32.dll 复制到 项目根目录(即 ORB-SLAM3forWindows/)否则运行时会报“找不到 glew32.dll”

(3)解压词典文件
  • 进入 Vocabulary/ 目录
  • 解压 ORBvoc.txt.tar.gz → 得到 ORBvoc.txt


3. 运行命令

运行 ORB-SLAM3 的 stereo_inertial_euroc.exe 程序的标准命令行格式如下:

✅ 通用格式(适用于所有 EuRoC 序列)

<可执行文件路径> <词袋文件> <配置文件> <数据集根目录> <时间戳文件> <输出前缀>

a、可执行文件路径:即stereo_inertial_euroc.exe路径

"A:\ORB-SLAM3\orbslam3\Examples\Stereo-Inertial\Release\stereo_inertial_euroc.exe"

b、词袋文件:ORBvoc.txt路径

"A:\ORB-SLAM3\orbslam3\Vocabulary\ORBvoc.txt"

c、配置文件:即EuRoc.yaml路径

"A:\ORB-SLAM3\orbslam3\Examples\Stereo-Inertial\EuRoC.yaml"

d、数据集根目录:即MH01目录路径

"A:\MH01"

e、图像时间戳文件:

"C:\orbslam3-win\orbslam3\Examples\Stereo-Inertial\EuRoC_TimeStamps\MH01.txt"

f、输出轨迹文件的前缀名:MH01_output

位置参数作用
argv[0]stereo_inertial_euroc.exe程序本身(由系统自动传入)
argv[1]ORBvoc.txt视觉词袋模型(用于闭环检测)
argv[2]EuRoC.yaml相机与 IMU 的标定参数配置文件
argv[3]A:\MH01EuRoC 数据集根目录
argv[4]MH01.txt图像时间戳文件(用于同步)
argv[5]MH01_output输出轨迹文件的前缀名

打开 CMD,进入项目根目录,执行:(例子,根据电脑路径执行)

A:\ORB-SLAM3\orbslam3\Examples\Stereo-Inertial\Release\stereo_inertial_euroc.exe A:\ORB-SLAM3\orbslam3\Vocabulary\ORBvoc.txt A:\ORB-SLAM3\orbslam3\Examples\Stereo-Inertial\EuRoC.yaml A:\MH01 A:\ORB-SLAM3\orbslam3\Examples\Stereo-Inertial\EuRoC_TimeStamps\MH01.txt MH01_output


✅ 如果一切配置正确,程序将启动并显示 SLAM 实时建图窗口!


如你在操作中遇到具体错误(如链接失败、找不到符号、运行崩溃等),欢迎提供错误信息,我可以帮你逐一定位。

更多推荐