1. 阅读文献 [1] 和 [14],你能看懂其中的内容吗?
文献[1]主要专注于对基于单目视觉的 SLAM方法的分析和讨论,系统地介绍和分析目前 3类主流单目 V-SLAM方法的优缺点,,并对它们的代表性系统进行性能分析和比较。另外,也介绍和讨论了 V-SLAM技术的最新研究热点和发展趋势(2016年),并进行总结和展望。
文献[14]从帧间配准、环形闭合检测以及图优化技术 3 方面出发,对基于图优化的 SLAM 技术进行综述。
2. * 阅读 SLAM 的综述文献,例如 [9, 15-18] 等。这些文献中关于 SLAM 的看法与本书有何异同?
3. g++ 命令有哪些参数?怎么填写参数可以更改生成的程序文件名?
gcc -E *.c
-E,只执行到预编译,直接输出预编译结果。
gcc -S *.c
-S,只执行到源代码到汇编代码的转换,输出汇编代码。
gcc -c *.c
-c,只执行到编译,输出目标文件。
gcc (-E/S/c/) *.c -o <output_filename>
-o, 指定输出文件名,可以配合以上三种标签使用。参数可以被省略。这种情况下编译器将使用以下默认名称输出:生成名为a.out的可执行文件。
-E:预编译结果将被输出到标准输出端口(通常是显示器)
-S:生成名为source_file.s的汇编代码
-c:生成名为source_file.o的目标文件。
gcc -g *.c
-g,生成供调试用的可执行文件,可以在gdb中运行。
gcc -s *.c
-s, 直接生成与运用strip同样效果的可执行文件(删除了所有符号信息)。
gcc -O *.c
-O(大写的字母O),编译器对代码进行自动优化编译,输出效率更高的可执行文件。
gcc -Wall *.c
-W,在编译中开启一些额外的警告(warning)信息。-Wall,将所有的警告信息全开。
gcc *.c -L/path/to/lib -lxxx -I/path/to/include
-l(小写L),指定所使用到的函数库,本例中链接器会尝试链接名为libxxx.a的函数库。
-L,指定函数库所在的文件夹,本例中链接器会尝试搜索/path/to/lib文件夹。
-I(大写i),指定头文件所在的文件夹,本例中预编译器会尝试搜索/path/to/include文件夹。
4. 使用 build 文件夹来编译你的 cmake 工程,然后在 KDevelop 中试试。
略
5. 刻意在代码中添加一些语法错误,看看编译会生成什么样的信息。你能看懂 g++ 的错误信息吗?
略
6. 如果忘了把库链接到可执行程序上,编译会报错吗?报什么样的错?
略
7. * 阅读《cmake 实践》,了解 cmake 的其他语法。
略
8. * 完善 Hello SLAM 的小程序,把它做成一个小程序库,安装到本地硬盘中。然后,新建一个工程,使用 find_package 找这个库并调用它。
略