第三讲-Eigen

1.简介
Eigen是一个C++开源线性代数库。它提供快速的有关矩阵的线性代数运算,还包括解方程等功能。

主页

https://eigen.tuxfamily.org/dox/index.html

2.安装

sudo apt-get install libeigen3-dev

Eigen的头文件默认位置是在‘/usr/inclue/eigen3/’中,如果不确定可以通过下面的指令查找。

sudo updatedb
locate eigen3

编译时在CMakeLists.txt中指定头文件目录。

include_directories("/usr/include/eigen3/")

3.基本类型使用
3.1 声明

Eigen::Matrix<float, 2, 3> matrix_23;

Eigen::Vector3d

Eigen::Matrix<double, 3, 1>

Matrix3d

 Eigen::Matrix<double, 3, 3>

3.2 矩阵运算

matrix_33.transpose()    // 转置
matrix_33.sum()         // 各元素和
matrix_33.trace()       // 迹
10*matrix_33            // 数乘
matrix_33.inverse()     // 逆
matrix_33.determinant() // 行列式

4.几何模块

4.1 旋转矩阵定义

Eigen::Matrix3d rotation_matrix = Eigen::Matrix3d::Identity();

4.2 旋转向量(Eigen::AngleAxisd)

Eigen::AngleAxisd rotation_vector ( M_PI/4, Eigen::Vector3d ( 0,0,1 ) ); //沿 Z 轴旋转 45 度

转换为矩阵

rotation_vector.matrix() 或
ratation_matrix = rotation_vector.toRotationMatrix();

4.3 欧拉角

//旋转矩阵转换为欧拉角
Eigen::Vector3d euler_angles = rotation_matrix.eulerAngles ( 2,1,0 ); // ZYX顺序,即roll pitch yaw顺序

4.5 欧式变换矩阵(Eigen::Isometry)

Eigen:Isometry3d T=Eigen::Isometry3d::Identity();                
T.rotate ( rotation_vector );                                     
T.pretranslate ( Eigen::Vector3d ( 1,3,4 ) );      //平移向量

4.6 四元数

// 可以直接把AngleAxis赋值给四元数,反之亦然
Eigen::Quaterniond q = Eigen::Quaterniond ( rotation_vector );
q = Eigen::Quaterniond ( rotation_matrix );
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值