ubuntu18.04 安装sophus(模板类)

一、问题描述

  自己在跟着《视觉slam14讲》第二版 第四讲学习使用 sophus 库时,make时总是报 fatal error 编译不通过,故记录此安装历程。
在这里插入图片描述

二、安装步骤

1. 安装 eigen 库

  sophus的使用必须依赖eigen库,因此先下载eigen,但是如果你有3.3以下的版本的eigen,那么请先卸载。

1.1 判断有老版本

sudo updatedb  
locate eigen3  

1.2 查看已安装 eigen 版本

 pkg-config --modversion eigen3

1.3 eigen 旧版本卸载

 sudo rm -rf /usr/include/eigen3 /usr/lib/cmake/eigen3 /usr/share/doc/libeigen3-dev /usr/share/pkgconfig/eigen3.pc /var/lib/dpkg/info/libeigen3-dev.list /var/lib/dpkg/info/libeigen3-dev.md5sums  

1.4 eigen 3.3.7版本安装

(1)在 官网 下载安装包:eigen-3.3.7.tar.bz2 ,然后提取到此处
(2)进入文件夹eigen-3.3.7,右键在终端打开。
(3)进行安装

mkdir build
cd build
cmake ..
sudo make install

PS: sudo apt-get install libeigen3-dev该命令可能会安装下载 3.2版本的eigen,从而无法与模板类的sophus相匹配,故不建议此方法安装。

2. 安装 fmt 库

  目前,sophus 需要依赖fmt库,因此优先安装fmt:

git clone  https://github.com/fmtlib/fmt.git
cd fmt
mkdir build
cd build
cmake ..
make
sudo make install

PS: 下载链接

3. 安装 Sophus 库

3.1 安装

git clone https://github.com/strasdat/Sophus.git
cd Sophus/
mkdir build
cd build
cmake ..
make
sudo make install

PS:

  • 网上不少教程多有回滚,即 git checkout a621ff,这样会装成老版本的非模板 sophus,而新版本 sophus 采用的是模板类;
  • sudo make install一定要有。

3.2 测试

  重新make,成功编译:
在这里插入图片描述
  下图为成功运行的截图。
在这里插入图片描述

4. slam_14讲 error

4.1 error 描述

  在 make 《视觉slam14讲》第二版 第四讲 ch4/example/trajectoryError评估估计误差时出现 error : "undefined reference to `fmt::v8::detail::assert_fail(char const*, int, char const*)’ ",编译不通过。
在这里插入图片描述

4.2 问题解决

  修改 CMakeLists.txt 、trajectoryError.cpp 这两个文件,具体修改如下:

  • ch4/example/CMakeLists.txt文本中添加如下:
find_package(Sophus REQUIRED)
target_link_libraries(trajectoryError Sophus::Sophus)
  • ch4/example/trajectoryError.cpp文本中修改如下:
// string groundtruth_file = "./groundtruth.txt";
// string estimated_file = "./estimated.txt";
string groundtruth_file = "../groundtruth.txt";
string estimated_file = "../estimated.txt";

在这里插入图片描述

4.3 测试结果

  重新编译 make ,运行成功:
在这里插入图片描述在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/qq_38429958/article/details/126156763