文章目录
如何利用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例程
- 鼠标右键点击编译后的可执行二进制文件,选择" Execute As",“Complied Binary”.
- 此时,会提示我们"Usage: ./mono_tum path_to_vocabulary path_to_settings path_to_sequence",这时需要对工程进行配置。
- 选择"Run",“Configure Launches”,依次填入所需参数.
这里采用的是TUM官网上下载的rgbd_dataset_freiburg1_desk数据集,参数设置好之后,点击"ok"。
再右键点击可执行文件,选择" Execute As",“Complied Binary”,即可运行。
在这里插入图片描述
5 对mono_tum进行单步调试
- 打开ORBSLAM2中的CMakeLists.txt文件,加入set(CMAKE_BUILD_TYPE “Debug”),
- 然后重新对mono_tum程序进行"Build"。
- 构建结束之后,鼠标双击行号左边设置断点
- 开始对momo_tum程序进行单步调试,步骤为:右键点击mono_tum,选择"Debug As"、“Complied Binary”(或者直接点击Debug按钮)。
- "Step in"进入函数,"Step out"退出函数, "Step over"跨过函数单部执行
6 坑坑1:KDevelop调试会出现一些问题
按照以下步骤进行检查:
- 检查CMakeLists.txt文件是否添加以下语句:
// 转Debug模式
set( CMAKE_BUILD_TYPE "Debug" )
- 重新编译:点击build即可;
- 重新加载启动项:
依次点击:run> Configure Launches> remove之前加载的> Add >
Executable行处选择上一步骤build产生的build文件夹里的 shared library文件 >点击OK
6 坑坑2:KDevelop 设置断点不显示
-
设置> 配置KDevelop> 外观> 边框> 把能打钩的地方都打上钩> 点击OK>
-
在你的意愿行处右击> 选择ToggleBreakppoint >点击build >点击Debug
-
若程序没有在断点处停下?:点击界面最下方Breakpoint按钮> 删除非你设置的断点> 再次点击Debug即可
6 坑坑3:编译报错‘usleep’ was not declared in this scope
根据路径catkin_orb-slam2/src/ORB_SLAM2/src找到相应的源文件:*.cc,然后在头文件里面添加一句 #include <unistd.h>
以此类推。