当前位置: 代码迷 >> 综合 >> 控制科学与工程:随手笔记(5)--Eigen、vscode配置
  详细解决方案

控制科学与工程:随手笔记(5)--Eigen、vscode配置

热度:67   发布时间:2023-11-22 12:45:16.0

在这里插入图片描述

Eigen库中的变量类型及函数

变量 功能
Eigen::Matrix3d 旋转矩阵3X3,元素为double类型(此处也可以为:f,i,c)(可以直接输出)
Eigen::Matrix<float,2,3> 定义2X3矩阵,元素为float类型(Eigen中所有的向量和矩阵的底层都是如此定义)
Eigen::Vector3d 定义三维列向量,等价于Eigen::Matrix<double,3,1>
Eigen::SelfAdjointEigenSolver< Eigen::Matrix3d > A(B) 矩阵B的相似对角化
Eigen::Matrix<float,Eigen::Dynamic,Eigen::Dynamic> 定义动态矩阵,运行时确定矩阵大小,相对耗时
Eigen::MatrixXd 定义动态矩阵
Eigen::Isometry3d 欧式变换矩阵4X4
Eigen::AngleAxisd rotation_vector(M_PI/4,Eigen::Vector3d(0,0,1)) 旋转向量3X1,沿Z轴旋转课45°
Eigen::Quaterniond 四元数(4X1)
Eigen::Quaterniond(rotation_vector/rotation_matrix) 四元数的初始化
q*v 利用四元数法旋转一个向量v,实际上数学为qvq^(-1)
Eigen::Affine3d 仿射变换4X4
Eigen::Projective3d 射影变化4X4
函数 功能
Eigen::Matrix3d::Identity() 单位矩阵,其他矩阵类中亦有此操作
Eigen::Matrix3d::Zero() 零矩阵,其他矩阵类中亦有此操作
Eigen::Matrix3d::Random() 随机矩阵,其他矩阵类中亦有此操作
Eigen::MatrixXd::Random(matrix_sizea,matrix_sizeb) 随机矩阵
transpose() 转置
sum() 各元素和
trace()
inverse()
determinant() 行列式
A.eigenvalues() 特征值(SelfAdjointEigenSolver类中成员函数)
A.eigenvectors() 特征向量(SelfAdjointEigenSolver类中成员函数)
eulerAngles(2,1,0) 转换为ZYX欧拉角,0–X,1–Y,2–Z
rotate(rotation_vector) 按照rotation_vector进行旋转
pretranslate(translate_vector) 按照translate_vector进行平移
colPivHouseholderQr() QR分解
solve(右侧向量) 解非齐次方程组
matrix()或者toRotationMatrix() AngleAxisd类中成员函数,将选择向量转换为旋转矩阵
coeffs() 其顺序为(x,y,z,w),w为实部,前3个为虚部

注意:

(1)在Eigen里不能够混合两种不同类型的矩阵进行运算,如float和double类型,需要强制类型转换,eg:.cast(),不可以直接前缀强制转换
(2)Matrix3d、vector3d之类的变量都是类,默认double数据类型,内嵌许多成员
(3)Matrix3d、vector3d之类的大写字母开头的均是类,Matrix、SelfAdjointEigenSolver是模板类

vscode基本配置:https://blog.csdn.net/weixin_43374723/article/details/84064644
Eigen库使用方法:https://www.jianshu.com/p/931dff3b1b21