ubuntu中通过vscode编译调试ORB-SLAM3

为了在orb-slam3的基础上进行二次开发,这几天花了不少精力,终于搞懂怎么在ubuntu系统中像windows里visual studio中一样方便的打断点调试了,在这里把整个过程再重新梳理一下。

1 首先从安装ubuntu 22.04开始

因为是从实验室毕业先辈那里继承来的电脑,电脑里装了ubuntu 16的双系统,16太久了,于是决定删掉重装最新的ubuntu。

首先在windows系统中清空ubuntu系统所在的磁盘,在开机程序中删去ubuntu的启动项。然后通过u盘重装ubuntu最新版。网上的教程都是让自己调整分区,我是按照默认与windows boot manager并存,也成功了。

2 安装ROS2

目前最新的是ROS2,这个安装没啥好说的,注意和ROS2版本要和ubuntu版本对应就好。

3 下载编译ORB-SLAM3

需要先按照官方说明,安装一系列依赖项,第一个是pangolin。

3.1 安装pangolin

首先update和upgraded已有的packages

sudo apt update && sudo apt upgrade

安装依赖项

sudo apt-get install libglew-dev
sudo apt-get install libboost-dev libboost-thread-dev libboost-filesystem-dev
sudo apt-get install libx11-dev libxmu-dev libglu1-mesa-dev libgl2ps-dev libxi-dev g++ libzip-dev libpng12-dev libcurl4-gnutls-dev libfontconfig1-dev libsqlite3-dev libglew*-dev libssl-dev
sudo apt-get install glew-utils

安装cmake

sudo apt-get install cmake

下载pangolin,放在自己的用户文件夹下就可以

git clone https://github.com/stevenlovegrove/Pangolin

用cmake编译安装

# 创建编译文件夹(在Pangolin文件夹下)
mkdir build && cd build
# 配置编译选项
cmake ..
# 开始编译代码
cmake --build .
# 安装
sudo make install

测试是否成功

# 从Pangolin文件夹进入测试文件夹
cd examples/HelloPangolin
# 创建编译文件夹并编译代码
mkdir build && cd build && cmake .. && make
# 运行即可看到显示结果
./HelloPangolin

3.2 OpenCV

类似的过程,先是依赖项

sudo apt-get install build-essential libgtk2.0-dev libavcodec-dev libavformat-dev libjpeg-dev libswscale-dev libtiff5-dev
sudo apt-get install libcanberra-gtk-module
sudo apt-get install pkg-config

下载源码,解压到自己的用户文件夹下,我选择的是3.4几

在源码文件夹中创建build文件夹。打开终端cd到build文件夹使用cmake生成makefile

cmake -D CMAKE_BUILD_TYPE=Release -D OPENCV_GENERATE_PKGCONFIG=ON -D CMAKE_INSTALL_PREFIX=/usr/local .. 

执行make

sudo make 

编译完成之后

sudo make install

3.3 Eigen3

sudo apt install libeigen3-dev

测试安装是否成功

dpkg -L libeigen3-dev

DBoW2 and g2o Included in Thirdparty folder,这里不用管,python已经自带在ubuntu 22.04中,注意更新以下pip就好。

以上准备工作完成。

3.4 编译安装ORL-SLAM3

同样的下载,然后解压到用户文件夹下

git clone https://github.com/UZ-SLAMLab/ORB_SLAM3.git ORB_SLAM3

编译

cd ORB_SLAM3
chmod +x build.sh
./build.sh

下面就可以运行了,但是坑的地方来了,官方文档写着“Open the script "euroc_examples.sh"(GitHub - electech6/ORB_SLAM3_detailed_comments: Detailed comments for ORB-SLAM3)但我就是找不到这个.sh文件。后来在网上查到,有人说是官方自己删掉了,以前的版本是有的,新版本没了。于是在github上找到这个.sh文件。

我要作的是双目相机方面的东西,所以运行的是Stereo里面的example,所以在euroc_examples.sh"中,我选择的是

#------------------------------------
# Stereo Examples
echo "Launching MH01 with Stereo sensor"

下面的那一个命令

./Examples/Stereo/stereo_euroc ./Vocabulary/ORBvoc.txt ./Examples/Stereo/EuRoC.yaml "$pathDatasetEuroc"/MH01 ./Examples/Stereo/EuRoC_TimeStamps/MH01.txt dataset-MH01_stereo

解释一下这条命令,第一部分stereo_euroc是运行stereo_euroc这个可执行文件,第二部分是orb-slam3做回环检测用的,这里不用管。第三部分yaml文件是相机内参。第四部分是euroc数据集的路径,为了运行这个example,需要在euroc官网下载Machine Hall 01这个数据集。官网的数据集解压缩以后,命名是MH_01_easy,所以要把第三部分的改成

/home/username/MH_01_easy

后面是时间戳,为了让多个相机数据,IMU数据对应起来。

把命令改好以后在terminal中运行就可以了。

4 VScode调试ORB-SLAM3

只是在终端中运行是不够的,还要调试二次开发,这里选择vscode作为开发工具,vscode本身只是个文本编辑器,需要安装一些插件扩展。安装vscode简单,不说了,然后安装以下扩展包

C/C++
C++ Intellisense
CMake
CMakeTools

在终端中进入ORB-SLAM3文件夹,用vscode打开

code .

创建c_cpp_properties.jsonctrl + shift + P后输入C/C++: Edit configurations,其中内容可以先保持默认的不做修改。

创建tasks.jsonctrl + shift + P后输入Tasks: Configure Tasks,选择使用模板创建tasks.json,选择Others。这里建议修改为如下内容:

{
    "version": "2.0.0",
    "tasks": [
        {
            "label": "build",
            "type": "shell",
            "command": "./build.sh",
            "group": {
                "kind": "build",
                "isDefault": true
            }
        }
    ]
}

要注意:修改build.sh文件中最下面的DCMAKE_BUILD_TYPEDebug

tasks.json文件的作用就相当于在终端中执行./build

要安装gdb debugger,否则无法生成launch.json

快捷键Ctrl+Shift+D,打开一个launch.json

然后add configuration

里面有两个参数要改

"program": "/home/username/ORB_SLAM3/Examples/Stereo/stereo_euroc",
"args": ["/home/username/ORB_SLAM3/Vocabulary/ORBvoc.txt",
            "/home/username/ORB_SLAM3/Examples/Stereo/EuRoC.yaml",
            "/home/username/MH_01_easy",
            "/home/username/ORB_SLAM3/Examples/Stereo/EuRoC_TimeStamps/MH01.txt"],

这两个参数就对应着终端运行时,输入的命令的4个部分。然后点击RUN AND DEBUG旁边的绿色小三角就可以debug了,打开stereo_euroc.cc文件夹,就可以打断点调试,自己做二次开发了。

以上。

  • 1
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值