「本文介绍了C++中Eigen库的代数运算模块和几何模块,以程序实例演示了常见指令用法。」
Eigen是一个高层次开源C ++库,有效支持线性代数、矩阵和矢量运算、数值分析及其相关算法。
在SLAM或者VIO研究中,对Eigen库的使用可以说非常多,因此掌握该库是非常重要且基础的能力。下面的内容大量参考了高翔博士编著的《SLAM十四讲》中对空间刚体运动部分的讲解,在此也强烈推荐一波这本书,语言很亲近,讲解详略得当,非常值得入门选手学习。
0. Linux系统安装Eigen库
在终端输入:
sudo apt-get install libeigen3-dev
默认安装路径是/usr/include/eigen3,在第一次使用头文件<Eigen/Core>时,由于头文件路径问题,会提示无此头文件:error: Eigen/Core: No such file or directory,只需要在终端执行以下命令更改头文件路径即可:
sudo ln -s /usr/include/eigen3/Eigen /usr/include/Eigen
1. Eigen主要模块
(知乎中无法插入表格,所以讲表格做成截图插入)
2. 矩阵运算命令及实例
使用Eigen库的矩阵(包括向量)运算时,需要声明头文件<Eigen/Core>,矩阵执行常见的运算指令:
同样,对于代码的认识,最好的方式还是通过阅读完整的程序实例,下面给出一个涵盖常见指令的实例,相信看完程序实例,就基本掌握和理解了矩阵运算的方式:
3. 几何模块命令及实例
使用Eigen库的几何模块时,需要声明头文件<Eigen/Geometry>,此模块支持进行四元数、欧拉角和旋转矩阵的运算。各种常见形式的表达方式如下所示:
上述数据类型均为双精度(double)类型,若要改为单精度(float)类型,把最后的d改为f即可。
下面给出程序实例,看完实例应该能基本了解了几何变换的形式,若对相关数学知识不了解,可以相应去学习一下: