赞
踩
为了在orb-slam3的基础上进行二次开发,这几天花了不少精力,终于搞懂怎么在ubuntu系统中像windows里visual studio中一样方便的打断点调试了,在这里把整个过程再重新梳理一下。
因为是从实验室毕业先辈那里继承来的电脑,电脑里装了ubuntu 16的双系统,16太久了,于是决定删掉重装最新的ubuntu。
首先在windows系统中清空ubuntu系统所在的磁盘,在开机程序中删去ubuntu的启动项。然后通过u盘重装ubuntu最新版。网上的教程都是让自己调整分区,我是按照默认与windows boot manager并存,也成功了。
目前最新的是ROS2,这个安装没啥好说的,注意和ROS2版本要和ubuntu版本对应就好。
需要先按照官方说明,安装一系列依赖项,第一个是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
类似的过程,先是依赖项
- 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
sudo apt install libeigen3-dev
测试安装是否成功
dpkg -L libeigen3-dev
DBoW2 and g2o Included in Thirdparty folder,这里不用管,python已经自带在ubuntu 22.04中,注意更新以下pip就好。
以上准备工作完成。
同样的下载,然后解压到用户文件夹下
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中运行就可以了。
只是在终端中运行是不够的,还要调试二次开发,这里选择vscode作为开发工具,vscode本身只是个文本编辑器,需要安装一些插件扩展。安装vscode简单,不说了,然后安装以下扩展包
- C/C++
- C++ Intellisense
- CMake
- CMakeTools
在终端中进入ORB-SLAM3文件夹,用vscode打开
code .
创建c_cpp_properties.json
。ctrl + shift + P
后输入C/C++: Edit configurations
,其中内容可以先保持默认的不做修改。
创建tasks.json
。ctrl + 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_TYPE
为Debug
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文件夹,就可以打断点调试,自己做二次开发了。
以上。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。