【问题】由于自己买的书《视觉SLAM十四讲:从理论到实践》,也就是《视觉SLAM十四讲》的第二版,书中Sophus库用的是模板版本,而之前我下载书籍代码是第一版书籍的代码仓库,没办法,只能重新安装Sophus库(其实无论是模板库还是非模板库都是一样,只不过在程序写法上有些变化)。第二版书籍代码仓库中也有第三方的Sophus代码包,但是在编译安装的时候,总是报错。具体每一步报的错误,我忘记截屏了,只记得过程。
【结果】sophus库安装了两个版本:模板库和非模板库。eigen库安装了两个版本,一个是3.2.9的,一个是3.3.7的。
【模板类和非模板类的区别】
至于在使用上的差异,我就不多说了。只讨论下在安装过程中和使用配置上的差异。模板类的Sophus中可以使用不同精度的李群/李代数,而非模板类的Sophus只提供双精度的李群/李代数。
git clone https://github.com/strasdat/Sophus.git // 首先下载代码仓库
cd Sophus
git checkout a621ff // 切换到对应的版本中去
// a621ff是非模板类的版本
// 00f3fd9是2018年的一个模板类的版本 //这是我安装的版本
// git checkout master // 可以切换会最新的版本
// git log // 可以查看提交版本记录
在非模板类中,库是利用.c加.h的方式实现的;而在模板类库中是集合在一个.hpp中实现的
1. 手动安装Eigen-3.3.7库
# 在书籍的第一版中,eigen的安装十分简单:
$ sudo apt-get install libeigen3-dev
# 但是默认安装eigen版本是3.2.9版本的,这不满足模板类的Sophus的安装要求
进入Eigen的下载网址,右侧正中有一个下载链接(Get it),这里选择tar.gz.