一、Sophus库简介: Eigen库是一个开源的C++线性代数库,它提供了快速的有关矩阵的线性代数运算,还包括解方程等功能。但是Eigen库提供了集合模块,但没有提供李代数的支持。一个较好的李群和李代数的库是Sophus库,它很好的支持了SO(3),so(3),SE(3)和se(3)。Sophus库是基于Eigen基础上开发的,继承了Eigen库中的定义的各个类。因此在使用Eigen库中的类时,既可以使用Eigen命名空间,也可以使用Sophus命名空间。比如

Eigen::Matrix3d和Sophus::Matrix3d
Eigen::Vector3d和Sophus::Vector3d

此外,为了方便说明SE(4)和se(4),Sophus库还typedef了Vector4d、Matrix4d、Vector6d和Matrix6d等,即:

Sophus::Vector4d
Sophus::Matrix4d
Sophus::Vector6d
Sophus::Matrix6d

二、Sophus安装方式:

现如今sophus需要依赖fmt库、eigen库,因此优先安装fmt、eigen(3.3以上)

git clone <https://github.com/strasdat/Sophus.git>
cd Sophus
git checkout a621ff
mkdir build 
cd build
cmake ..
make

三、make报错

解决方法:打开 Sophus/sophus/so2.cpp文件修改报错内容

//将
SO2::SO2() 
{ 
 unit_complex_.real() = 1.; 
 unit_complex_.imag() = 0.; 
 }
//改为
SO2::SO2() 
{ 
   unit_complex_.real(1.); 
   unit_complex_.imag(0.); 
 }