【读书笔记】《视觉SLAM十四讲(高翔著)》 第12讲

文章目录

  • 12.3.2 实践:创建字典
  • 12.4.2 实践:相似度的计算
  • 12.5.1 增加字典规模
  • 本讲常见报错

本博客的内容是本章程序编译运行方法,记录调通本章程序的过程、处理遇到报错的解决方法。
本章程序的详细解析可参考robinhjwy的CSDN博客: https://blog.csdn.net/robinhjwy/article/details/78632978

12.3.2 实践:创建字典

本程序的功能:根据data文件夹中的10张.png图片,创建字典vocabulary.yml.gz。
在/home/yuanchang/slambook-master/ch12文件夹下打开终端,

mkdir build
cd build
cmake ..
make
cd ..
./build/feature_training

说明:程序中有读取图像数据的语句:

string path = "./data/"+to_string(i+1)+".png";

其中,./的意思是当前文件夹,故需要在运行feature_training时,使终端的当前路径包含data文件夹。不然程序运行有误。

12.4.2 实践:相似度的计算

本程序的功能:根据字典vocabulary.yml.gz进行回环检测,查找最相似的图片。
程序运行:

./build/loop_closure

说明:程序中有语句:

DBoW3::Vocabulary vocab("./vocabulary.yml.gz");

其中,./的意思是当前文件夹,故需要在运行loop_closure时,使终端的当前文件夹中有字典vocabulary.yml.gz。
程序执行后输出各图片的相似度对比,最相似的2张图片形成回环。

12.5.1 增加字典规模

本程序的功能:根据图像/视频数据,生成更大字典vocab_larger.yml.gz
程序运行:

./build/gen_vocab /home/yuanchang/slambook-master/project/0.2/data/rgbd_dataset_freiburg1_xyz

说明:程序中有:

string dataset_dir = argv[1];
ifstream fin ( dataset_dir+"/associate.txt" );

意思是选取一处测试数据用于生成字典vocab_larger.yml.gz。该字典的生成不再是使用本章自带的数据(10张.png图片),而是使用了其他数据。此处本人所选数据的路径为:/home/yuanchang/slambook-master/project/0.2/data/rgbd_dataset_freiburg1_xyz,是第9讲的测试数据。
程序运行结果为生成更大字典。此时,可再运行loop_closure对新生成的更大字典进行回环检测:对loop_closure.cpp进行修改,在读取字典的时候使用以下语句(其余读取字典语句注释掉):

DBoW3::Vocabulary vocab("./vocab_larger.yml.gz"); 

修改完之后保存,重新编译程序,运行loop_closure:

./build/loop_closure

本讲常见报错

本讲常见报错:

terminate called after throwing an instance of 'std::__cxx11::basic_string, std::allocator >'

该报错在以下网址中有所说明:
https://blog.csdn.net/qq_20526733/article/details/93468299

你可能感兴趣的:(SLAM学习笔记)