ORB_SLAM2开发环境搭建:VSCode+CMake的高效配置

ORB_SLAM2开发环境搭建:VSCode+CMake的高效配置

【免费下载链接】ORB_SLAM2 Real-Time SLAM for Monocular, Stereo and RGB-D Cameras, with Loop Detection and Relocalization Capabilities 【免费下载链接】ORB_SLAM2 项目地址: https://gitcode.com/gh_mirrors/or/ORB_SLAM2

引言

你是否在配置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的核心模块主要包含在includesrc目录中,主要包括:

  • System:系统主类,协调各个模块的工作
  • Tracking:跟踪线程,负责相机位姿估计
  • LocalMapping:局部建图线程,处理局部地图优化
  • LoopClosing:回环检测线程,负责回环检测和全局优化
  • ORBextractor:ORB特征提取器
  • ORBmatcher:ORB特征匹配器
  • Map:地图类,管理地图点和关键帧
  • MapPoint:地图点类
  • KeyFrame:关键帧类

环境准备

操作系统要求

ORB_SLAM2主要在Linux系统下开发和测试,推荐使用Ubuntu 18.04 LTSUbuntu 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后,安装以下必要插件:

  1. C/C++:提供C/C++语言支持
  2. CMake:CMake语法高亮和代码补全
  3. CMake Tools:CMake项目构建和调试支持
  4. 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工具

  1. 打开VSCode后,按下Ctrl+Shift+P打开命令面板
  2. 输入CMake: Select a Kit,选择适合的编译器(如GCC 9)
  3. 输入CMake: Configure,选择构建类型(如Release)
  4. 等待CMake配置完成

编译ORB_SLAM2

  1. 在VSCode底部状态栏,点击"Build"按钮,或按下F7
  2. 等待编译完成,这可能需要几分钟时间

验证编译结果

编译完成后,会在Examples目录下生成可执行文件,如单目相机示例mono_tum、RGB-D相机示例rgbd_tum等。

调试配置

为了方便开发和调试,我们需要配置VSCode的调试功能。

创建launch.json文件

  1. 在VSCode中,打开调试面板(Ctrl+Shift+D
  2. 点击"创建launch.json文件",选择"C++ (GDB/LLDB)"
  3. 选择"默认配置",将生成一个基本的launch.json文件
  4. 修改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数据集路径。

开始调试

  1. 在代码中设置断点(点击行号左侧)
  2. 选择"mono_tum"配置,点击"开始调试"按钮(或按下F5
  3. 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配置不正确。可以尝试以下方法:

  1. 打开命令面板(Ctrl+Shift+P
  2. 输入C/C++: Edit Configurations (JSON)
  3. 在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开发环境,包括代码编辑、编译和调试等功能。

接下来,你可以:

  1. 运行示例程序,测试不同类型相机的SLAM效果
  2. 阅读ORB_SLAM2的源代码,深入理解其工作原理
  3. 基于ORB_SLAM2进行二次开发,添加新的功能或改进现有算法
  4. 尝试在不同的硬件平台上部署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更新共享库缓存

【免费下载链接】ORB_SLAM2 Real-Time SLAM for Monocular, Stereo and RGB-D Cameras, with Loop Detection and Relocalization Capabilities 【免费下载链接】ORB_SLAM2 项目地址: https://gitcode.com/gh_mirrors/or/ORB_SLAM2

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值