ORB_SLAM2开发环境搭建:VSCode+CMake的高效配置
引言
你是否在配置ORB_SLAM2开发环境时遇到过依赖库版本冲突、编译错误频发、调试工具不兼容等问题?本文将详细介绍如何使用VSCode和CMake构建高效的ORB_SLAM2开发环境,帮助你快速解决环境配置难题,顺利开展SLAM相关研究与开发工作。
读完本文,你将能够:
- 理解ORB_SLAM2的依赖关系和项目结构
- 在Ubuntu系统上正确安装所有必要的依赖库
- 使用VSCode配置ORB_SLAM2项目,实现代码补全和调试功能
- 通过CMake管理ORB_SLAM2的构建过程
- 解决常见的编译错误和环境配置问题
ORB_SLAM2项目结构分析
ORB_SLAM2是一个基于ORB特征的实时SLAM系统,支持单目、立体和RGB-D相机。在开始配置开发环境之前,我们先了解一下ORB_SLAM2的项目结构,这有助于我们更好地理解后续的配置过程。
主要目录结构
ORB_SLAM2/
├── CMakeLists.txt # 主CMake配置文件
├── Examples/ # 示例程序目录
│ ├── Monocular/ # 单目相机示例
│ ├── RGB-D/ # RGB-D相机示例
│ ├── ROS/ # ROS节点示例
│ └── Stereo/ # 立体相机示例
├── Thirdparty/ # 第三方依赖库
│ ├── DBoW2/ # 词袋模型库
│ └── g2o/ # 图优化库
├── Vocabulary/ # ORB字典文件
├── include/ # 头文件目录
├── src/ # 源代码目录
└── docs/ # 文档目录
核心模块
ORB_SLAM2的核心模块主要包含在include和src目录中,主要包括:
- System:系统主类,协调各个模块的工作
- Tracking:跟踪线程,负责相机位姿估计
- LocalMapping:局部建图线程,处理局部地图优化
- LoopClosing:回环检测线程,负责回环检测和全局优化
- ORBextractor:ORB特征提取器
- ORBmatcher:ORB特征匹配器
- Map:地图类,管理地图点和关键帧
- MapPoint:地图点类
- KeyFrame:关键帧类
环境准备
操作系统要求
ORB_SLAM2主要在Linux系统下开发和测试,推荐使用Ubuntu 18.04 LTS或Ubuntu 20.04 LTS版本。本文将以Ubuntu 20.04 LTS为例进行环境配置。
安装必要的系统工具
首先,安装一些必要的系统工具:
sudo apt update
sudo apt install -y build-essential cmake git wget curl
依赖库安装
ORB_SLAM2依赖多个开源库,我们需要先安装这些依赖库。下面详细介绍各个依赖库的安装方法。
1. C++编译器和标准库
ORB_SLAM2使用C++11标准,需要安装支持C++11的编译器:
sudo apt install -y g++ gcc
验证编译器版本:
g++ --version
确保输出的版本号在5.0以上,以支持C++11特性。
2. OpenCV安装
OpenCV是一个开源的计算机视觉库,ORB_SLAM2使用OpenCV进行图像处理和特征提取。
方法一:通过apt安装(推荐)
sudo apt install -y libopencv-dev
方法二:源码编译安装
如果需要特定版本的OpenCV,可以从源码编译安装:
# 安装依赖
sudo apt install -y build-essential libgtk2.0-dev libavcodec-dev libavformat-dev libjpeg-dev libswscale-dev libtiff5-dev
# 下载源码
wget https://github.com/opencv/opencv/archive/4.5.5.zip -O opencv-4.5.5.zip
unzip opencv-4.5.5.zip
cd opencv-4.5.5
# 编译安装
mkdir build && cd build
cmake .. -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=/usr/local
make -j$(nproc)
sudo make install
3. Eigen3安装
Eigen3是一个线性代数库,ORB_SLAM2使用Eigen3进行矩阵运算。
sudo apt install -y libeigen3-dev
4. Pangolin安装
Pangolin是一个轻量级的可视化库,ORB_SLAM2使用Pangolin进行可视化和用户界面。
# 安装依赖
sudo apt install -y libglew-dev libpython2.7-dev
# 下载源码
git clone https://github.com/stevenlovegrove/Pangolin.git
cd Pangolin
# 编译安装
mkdir build && cd build
cmake .. -DCMAKE_BUILD_TYPE=Release
make -j$(nproc)
sudo make install
5. DBoW2和g2o
ORB_SLAM2已经将DBoW2和g2o作为第三方库包含在项目中,位于Thirdparty目录下,后续在编译ORB_SLAM2时会自动编译这两个库,因此不需要单独安装。
VSCode安装与配置
VSCode是一个轻量级但功能强大的代码编辑器,支持多种编程语言和开发工具。下面介绍如何安装VSCode并配置ORB_SLAM2开发环境。
VSCode安装
# 下载VSCode安装包
wget https://az764295.vo.msecnd.net/stable/Universal/VSCode-linux-x64.tar.gz -O vscode.tar.gz
# 解压安装
sudo tar -zxvf vscode.tar.gz -C /opt/
# 创建桌面快捷方式
sudo ln -s /opt/VSCode-linux-x64/code /usr/local/bin/code
# 创建桌面图标
cat > ~/.local/share/applications/code.desktop << EOF
[Desktop Entry]
Name=Visual Studio Code
Comment=Code Editing. Redefined.
Exec=/opt/VSCode-linux-x64/code
Icon=/opt/VSCode-linux-x64/resources/app/resources/linux/code.png
Type=Application
Terminal=false
Categories=Utility;Development;IDE;
EOF
必要插件安装
打开VSCode后,安装以下必要插件:
- C/C++:提供C/C++语言支持
- CMake:CMake语法高亮和代码补全
- CMake Tools:CMake项目构建和调试支持
- GitLens:增强Git功能,显示代码作者和提交历史
安装方法:打开VSCode,按下Ctrl+Shift+X打开扩展面板,搜索上述插件并安装。
ORB_SLAM2源码获取与编译
获取源码
git clone https://gitcode.com/gh_mirrors/or/ORB_SLAM2.git
cd ORB_SLAM2
下载ORB字典
ORB_SLAM2需要一个预训练的ORB字典,可以从项目仓库下载:
cd Vocabulary
tar -zxvf ORBvoc.txt.tar.gz
cd ..
使用VSCode打开项目
code .
配置CMake工具
- 打开VSCode后,按下
Ctrl+Shift+P打开命令面板 - 输入
CMake: Select a Kit,选择适合的编译器(如GCC 9) - 输入
CMake: Configure,选择构建类型(如Release) - 等待CMake配置完成
编译ORB_SLAM2
- 在VSCode底部状态栏,点击"Build"按钮,或按下
F7 - 等待编译完成,这可能需要几分钟时间
验证编译结果
编译完成后,会在Examples目录下生成可执行文件,如单目相机示例mono_tum、RGB-D相机示例rgbd_tum等。
调试配置
为了方便开发和调试,我们需要配置VSCode的调试功能。
创建launch.json文件
- 在VSCode中,打开调试面板(
Ctrl+Shift+D) - 点击"创建launch.json文件",选择"C++ (GDB/LLDB)"
- 选择"默认配置",将生成一个基本的launch.json文件
- 修改launch.json文件如下:
{
"version": "0.2.0",
"configurations": [
{
"name": "mono_tum",
"type": "cppdbg",
"request": "launch",
"program": "${workspaceFolder}/Examples/Monocular/mono_tum",
"args": ["${workspaceFolder}/Vocabulary/ORBvoc.txt", "${workspaceFolder}/Examples/Monocular/TUM1.yaml", "/path/to/TUM/dataset"],
"stopAtEntry": false,
"cwd": "${workspaceFolder}",
"environment": [],
"externalConsole": false,
"MIMode": "gdb",
"setupCommands": [
{
"description": "为gdb启用整齐打印",
"text": "-enable-pretty-printing",
"ignoreFailures": true
}
]
}
]
}
注意:将/path/to/TUM/dataset替换为实际的TUM数据集路径。
开始调试
- 在代码中设置断点(点击行号左侧)
- 选择"mono_tum"配置,点击"开始调试"按钮(或按下
F5) - VSCode将启动ORB_SLAM2单目示例程序,并在断点处暂停
常见问题解决
1. 编译时提示找不到Eigen3
如果编译时出现类似"Could not find Eigen3"的错误,可以通过以下方法解决:
sudo ln -s /usr/include/eigen3/Eigen /usr/include/Eigen
2. 运行时提示缺少共享库
如果运行时出现类似"error while loading shared libraries: libORB_SLAM2.so"的错误,可以将ORB_SLAM2的库目录添加到系统库路径:
echo "export LD_LIBRARY_PATH=\$LD_LIBRARY_PATH:$(pwd)/lib" >> ~/.bashrc
source ~/.bashrc
3. VSCode中代码补全不工作
如果VSCode的代码补全功能不工作,可能是因为IntelliSense配置不正确。可以尝试以下方法:
- 打开命令面板(
Ctrl+Shift+P) - 输入
C/C++: Edit Configurations (JSON) - 在c_cpp_properties.json文件中,确保includePath包含所有必要的头文件路径:
{
"configurations": [
{
"name": "Linux",
"includePath": [
"${workspaceFolder}/**",
"/usr/include",
"/usr/local/include",
"/usr/include/eigen3"
],
"defines": [],
"compilerPath": "/usr/bin/gcc",
"cStandard": "gnu17",
"cppStandard": "gnu++14",
"intelliSenseMode": "linux-gcc-x64"
}
],
"version": 4
}
4. 编译g2o时出现错误
如果编译g2o时出现错误,可以尝试修改g2o的CMakeLists.txt文件:
# 打开g2o的CMakeLists.txt
nano Thirdparty/g2o/CMakeLists.txt
添加以下内容:
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11")
然后重新配置和编译。
总结与展望
本文详细介绍了如何使用VSCode和CMake配置ORB_SLAM2的开发环境。通过本文的步骤,你应该已经成功搭建了一个功能完善的ORB_SLAM2开发环境,包括代码编辑、编译和调试等功能。
接下来,你可以:
- 运行示例程序,测试不同类型相机的SLAM效果
- 阅读ORB_SLAM2的源代码,深入理解其工作原理
- 基于ORB_SLAM2进行二次开发,添加新的功能或改进现有算法
- 尝试在不同的硬件平台上部署ORB_SLAM2,如嵌入式设备
ORB_SLAM2是一个非常优秀的SLAM开源项目,掌握其开发环境配置是进行SLAM研究和应用开发的基础。希望本文能够帮助你顺利开展ORB_SLAM2相关的工作。
附录:常用命令参考
| 命令 | 功能描述 |
|---|---|
cmake .. | 生成Makefile |
make -j$(nproc) | 多线程编译 |
make clean | 清理编译结果 |
code . | 用VSCode打开当前目录 |
gdb ./mono_tum | 使用GDB调试mono_tum程序 |
ldd ./mono_tum | 查看程序依赖的共享库 |
sudo ldconfig | 更新共享库缓存 |
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考



