当前位置: 首页 > article >正文

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文件夹,就可以打断点调试,自己做二次开发了。

以上。


http://www.kler.cn/news/11958.html

相关文章:

  • 图文在线翻译-文本翻译
  • 流程管理中间件BPS二期项目立项准备工作经验分享
  • 测试包的更新
  • 二、JS02 BOM操作
  • 用了这几个方法,Facebook广告转化真上去了!
  • 优思学院|质量大师的那些名言(一)【质量是免费的】
  • 《算法竞赛进阶指南》0x51 线性DP
  • 计及氢能的综合能源优化调度研究(Matlab代码实现)
  • Yolov5一些知识
  • JUC并发编程之读写锁原理
  • 01 |「ChatGPT」简介
  • 机器学习算法系列(三)
  • 命令设计模式(Command Pattern)[论点:概念、组成角色、相关图示、示例代码、框架中的运用、适用场景]
  • 【计算机图形学】扫描转换算法(Bresenham1/4圆法 椭圆两头逼近法 方形刷子)
  • 密度聚类算法(DBSCAN)实验案例
  • LeetCode每日一题 1023. 驼峰式匹配 --双指针
  • 零零信安-DD数据泄露报警日报 【第144期】
  • MySQL创建数据表(CREATE TABLE语句)
  • [STM32F103C8T6]DMA
  • 4.17日报
  • 代码随想录算法训练营第三十九天-动态规划2|62.不同路径 , 63. 不同路径 II
  • 原生JS + HTML + CSS 实现快递物流信息 API 的数据链式展示
  • RabbitMQ之介绍
  • 2023TYUT移动应用软件开发程序修改题
  • C/C++程序设计——static关键字
  • NumPy 秘籍中文第二版:四、将 NumPy 与世界的其他地方连接
  • 「数字信号处理」MATLAB设计 双音多频拨号系统
  • ESP32设备驱动-MAX30102脉搏血氧饱和度和心率监测传感器驱动
  • 【GB28181】PJSIP库(七)C++接口PJSUA2类详解:Call、Buddy
  • 发令枪音效芯片,语音提示ic