首先展示一下我的CMakelist
cmake_minimum_required(VERSION 3.0)
project(useSophus)
add_compile_options(-std=c++11)
set(CMAKE_BUILD_TYPE "Release")
set(Sophus_LIBRARIES "/usr/local/lib/libSophus.so")
# 为使用 sophus,需要使用find_package命令找到它
# include_directories("/usr/local/include/sophus")
find_package(Sophus REQUIRED)
include_directories( ${Sophus_INCLUDE_DIRS} )
# Eigen
# include_directories("/usr/include/eigen3")
add_executable(useSophus useSophus.cpp)
# target_link_libraries(useSophus Sophus::Sophus)
target_link_libraries(useSophus ${Sophus_LIBRARIES})
# add_subdirectory(example)
然后是我遇到的问题:
关于Sophus下载的问题,首先需要知道的事是在书第87页有写着“本书的配套代码中使用的是带模板的Sophus库,所以说下载不用,编译即可”,但是下载也无妨,下面是步骤:
git clone https://github.com/strasdat/Sophus.git
cd Sophus/
git checkout a621ff
mkdir build
cd build
cmake ..
make
然后是很重要的一步,一般来说是可以解决一些路径问题的,就是安装这个库:
sudo make install
这样的话是可以顺利安装的
如果遇到了关于fmt的问题也不用慌,本身这个库和我们的CMakelist里面是需要fmt这个库的
所以下面是展示安装fmt库的方法,方法同安装Sophus,其实这些库的安装都是大同小异,只不过有些带模板的可以不选择安装,但是为了方便起见我个人选择安装:
git clone https://github.com/fmtlib/fmt.git
cmake .
make && make install
当然你也可以选择像我一样新建一个build文件单独make
git clone https://github.com/fmtlib/fmt.git
cd fmt
mkdir build&&cd build
cmake ..
make
make install
到此为止可以解决关于库的几乎所有问题,然后就是对代码做调整:
首先来看usesophus.cpp这个文件
对于#include的部分来说,需要对引用的头文件分别包含so3和se3的两个文件,对于是后缀为.h还是.hpp需要自行验证,这个可以在/usr/local/lib/sophus文件里面看到是否含有。
然后就是对所有的SO3d和SE3d做出修改,因为最新的sophus的类里面只有SO3和SE3:
修改完之后再进行make就没有什么问题了,最后在build文件里面生成useSophus文件运行结果如下:
hbt@hbt:~/文档/slambook2/ch4/build$ ./useSophus
SO(3) from matrix:
2.22045e-16 -1 0
1 2.22045e-16 0
0 0 1
SO(3) from quaternion:
2.22045e-16 -1 0
1 2.22045e-16 0
0 0 1
they are equal
so3 = 0 0 1.5708
so3 hat=
0 -1.5708 0
1.5708 0 -0
-0 0 0
so3 hat vee= 0 0 1.5708
SO3 updated =
0 -1 0
1 0 -0.0001
0.0001 2.03288e-20 1
*******************************
SE3 from R,t=
2.22045e-16 -1 0 1
1 2.22045e-16 0 0
0 0 1 0
0 0 0 1
SE3 from q,t=
2.22045e-16 -1 0 1
1 2.22045e-16 0 0
0 0 1 0
0 0 0 1
se3 = 0.785398 -0.785398 0 0 0 1.5708
se3 hat =
0 -1.5708 0 0.785398
1.5708 0 -0 -0.785398
-0 0 0 0
0 0 0 0
se3 hat vee = 0.785398 -0.785398 0 0 0 1.5708
SE3 updated =
2.22045e-16 -1 0 1.0001
1 2.22045e-16 0 0
0 0 1 0
0 0 0 1
参考文章:
SLAM十四讲第二版ch4 useSophus报错
ubuntu下安装Sophus库出现问题及解决办法
视觉slam14讲 Ubuntu18.04下 Sophus李代数库使用 以及报错处理