相信大家在学习SLAM时都会参考一些开源的框架,这样就绕不开ORB-SLAM3的基础框架,因为这个框架集成了许多外设,可以很好的运用到实际中。同时,很多的改进很可以在此基础上进行。
阅读源码也是必不可少的一步,结合在线调试的方法。如何正确的调试也是后期改进代码的强大工具。下面将列举我学习遇到的一些常见的基础问题。
问题一:命令行参数的输入问题
源代码是用命令行的形式进行运行的,但如果是在命令行的话,不利于我们阅读源码。特别是追一些变量时,传统的文本编辑器不能很好的提示,且没有高亮显示。
以kitti数据集的方式举例:
Examples/Stereo/stereo_kitti Vocabulary/ORBvoc.txt Examples/Stereo/KITTI04-12.yaml /media/xulei/新加卷/Kitti00-10/04
注意这里是相对项目的路径,如果在Clion运行,我们需要指定参数行:
这里需转为绝对路进,不然系统不能找到数据集与.ymal文件等配置文件,同时不需要给出可执行文件(在编译器中以及指定了),会出现程序报错:
Usage: ./stereo_kitti path_to_vocabulary path_to_settings path_to_sequence
问题二:调试数据过大,导致在调试时不能解析并可视化
报错提示为:
Error occurred in Python: value of type ORB_SLAM3::Tracking' requires 450624 bytes, which is more than max-value-size在clion
要在 CLion 中解决 "value of type ORB_SLAM3::Tracking
requires 450624 bytes, which is more than max-value-size" 的问题,可以通过 修改 GDB 配置 解除 max-value-size
限制。
打开命令行:输入
gdb
输入
set max-value-size unlimited
可以看到项目调试所需的数据缓存大小不足:
sudo vim /etc/gdb/gdbinit
添加
set max-value-size 500000
:wq保存退出
重新查询:
重启编译器,再次编译,并debug就可以显示类的相关信息了: