SLAM总览【自学备忘】

SLAM

  • 一、VSLAM
    • 1、库
      • 1.1 Sophus库
        • 1.1.1 Sophus库安装
        • 1.1.2 Sophus库函数

一、VSLAM

1、库

1.1 Sophus库

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

1.1.1 Sophus库安装

1、因为sophus的使用必须依赖eigen库,因此先下载eigen,但是如果你有 3.3 以下的版本的eigen,那么请先卸载
注意,千万不要使用 sudo apt-get install libeigen3-dev ,因为这个命令下载的是3.2版本的eigen,从而无法与模板类的sophus相匹配。
2、现如今sophus需要依赖fmt库,因此优先安装fmt:

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

3、安装sophus库:

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

在这里强调!不要回滚git checkout a621ff,否则会装成老版本的非模板sophus(网上大多教程都有回滚)
CMakeLists.txt为:

FIND_PACKAGE(Sophus REQUIRED)
INCLUDE_DIRECTORIES(${Sophus_INCLUDE_DIRS})
1.1.2 Sophus库函数
函数 函数释义
Sophus::SO3d 李群李代数最直接的用法就是表达为位姿,如何对特征点进行变换,值得注意的是,此时的特征点必须是Eigen的Vector类型。
Sophus::SE3d 李群李代数最直接的用法就是表达为位姿,如何对特征点进行变换,值得注意的是,此时的特征点必须是Eigen的Vector类型。

你可能感兴趣的:(矩阵)