ubuntu使用Kdevelop对ORB-Slam2进行编译和调试

如何利用KDevelop这款IDE实现对ORBSLAM2源码中mono_tum程序的编译以及简单的单步调试学习。
电脑:ubuntu18.04
KDevelop版本:KDevelop 5.2.1
前置任务1:已安装好KDevelop4
前置任务2:已安装好ORB SLAM2的所有依赖项

1 下载ORBSLAM2

满足前置任务2,在终端输入如下指令

git clone https://github.com/raulmur/ORB_SLAM2.git ORB_SLAM2

此时ORBSLAM2下载到了根目录下

2 KDevelop4下打开ORBSLAM2工程

打开KDevelop4,然后点击“session”、“start new session”;
点击“Project->Open/Import Project”, 选择下载好的ORBSLAM2文件夹,点击右上角"opent"

3 编译

右键点击”构建“,即可进行编译

工程系统结构图如下
其中mono_tum为编译后的二进制文件。

4 运行mono_tum例程

  1. 鼠标右键点击编译后的可执行二进制文件,选择" Execute As",“Complied Binary”.
  2. 此时,会提示我们"Usage: ./mono_tum path_to_vocabulary path_to_settings path_to_sequence",这时需要对工程进行配置。
  3. 选择"Run",“Configure Launches”,依次填入所需参数.
    这里采用的是TUM官网上下载的rgbd_dataset_freiburg1_desk数据集,参数设置好之后,点击"ok"。
    再右键点击可执行文件,选择" Execute As",“Complied Binary”,即可运行。

在这里插入图片描述

5 对mono_tum进行单步调试

  1. 打开ORBSLAM2中的CMakeLists.txt文件,加入set(CMAKE_BUILD_TYPE “Debug”),
  2. 然后重新对mono_tum程序进行"Build"。
  3. 构建结束之后,鼠标双击行号左边设置断点
  4. 开始对momo_tum程序进行单步调试,步骤为:右键点击mono_tum,选择"Debug As"、“Complied Binary”(或者直接点击Debug按钮)。
  5. "Step in"进入函数,"Step out"退出函数, "Step over"跨过函数单部执行

6 坑坑1:KDevelop调试会出现一些问题

按照以下步骤进行检查:

  1. 检查CMakeLists.txt文件是否添加以下语句:

// 转Debug模式

set( CMAKE_BUILD_TYPE "Debug" )
  1. 重新编译:点击build即可;
  2. 重新加载启动项:

依次点击:run> Configure Launches> remove之前加载的> Add >

Executable行处选择上一步骤build产生的build文件夹里的 shared library文件 >点击OK

6 坑坑2:KDevelop 设置断点不显示

  1. 设置> 配置KDevelop> 外观> 边框> 把能打钩的地方都打上钩> 点击OK>

  2. 在你的意愿行处右击> 选择ToggleBreakppoint >点击build >点击Debug

  3. 若程序没有在断点处停下?:点击界面最下方Breakpoint按钮> 删除非你设置的断点> 再次点击Debug即可

6 坑坑3:编译报错‘usleep’ was not declared in this scope

根据路径catkin_orb-slam2/src/ORB_SLAM2/src找到相应的源文件:*.cc,然后在头文件里面添加一句 #include <unistd.h>
以此类推。

猜你喜欢

转载自blog.csdn.net/kuvinxu/article/details/125918531