Eigen::Matrix<float, 2, 3> matrix_23 //声明一个2*3的float矩阵
Eigen::Vector3d v_3d //实质上是 Eigen::Matrix<double, 3, 1>
Eigen::Matrix3d::Identity() //单位阵
Eigen::Matrix3d::Zero() //零矩阵
Eigen::Matrix< double, Eigen::Dynamic, Eigen::Dynamic > matrix_dynamic
//动态阵
matrix_23.cast<double>() //矩阵格式转换
Eigen::Matrix3d::Random() //随机数矩阵
matrix_33.transpose() //转置
matrix_33.sum() //各元素和
matrix_33.trace() //迹
10*matrix_33 //数乘
matrix_33.inverse() //逆
matrix_33.determinant() //行列式
matrix_33.eigenvalues() //特征值
matrix_33.eigenvectors() //特征向量
Eigen::AngleAxisd rotation_vector ( M_PI/4, Eigen::Vector3d ( 0,0,1 ) );
//定义一个沿 Z 轴旋转 45 度的AngleAxis
rotation_vector.toRotationMatrix() //AngleAxis(不可直接输出)给普通矩阵赋值
Eigen::Vector3d euler_angles = rotation_matrix.eulerAngles ( 2,1,0 );
// 欧拉角: 可以将旋转矩阵直接转换成欧拉角
// ZYX顺序,即roll pitch yaw顺序
// 欧氏变换矩阵使用 Eigen::Isometry,之后T与需转换向量相乘即可
Eigen::Isometry3d T=Eigen::Isometry3d::Identity();
// 虽然称为3d,实质上是4*4的矩阵
T.rotate ( rotation_vector ); // 按照rotation_vector(旋转矩阵)进行旋转
T.pretranslate ( Eigen::Vector3d ( 1,3,4 ) );
// 把平移向量设成(1,3,4)
// 四元数,之后q与需转换向量相乘即可
Eigen::Quaterniond q = Eigen::Quaterniond ( rotation_vector )
//AngleAxis赋值给四元数
q = Eigen::Quaterniond ( rotation_matrix );
//旋转矩阵赋给四元数
//sophus的SO3使用
Sophus::SO3 SO3_R(R); // Sophus::SO(3)可以直接从旋转矩阵构造
Sophus::SO3 SO3_v( 0, 0, M_PI/2 ); // 亦可从旋转向量构造
Sophus::SO3 SO3_q( q ); // 或者四元数
// 使用对数映射获得它的李代数
Eigen::Vector3d so3 = SO3_R.log();
// hat 为向量到反对称矩阵
Sophus::SO3::hat(so3)
// 相对的,vee为反对称到向量
Sophus::SO3::vee( Sophus::SO3::hat(so3) ).transpose()
//sophus的SE3使用
Eigen::Vector3d t(1,0,0); // 沿X轴平移1
Sophus::SE3 SE3_Rt(R, t); // 从旋转矩阵和平移向量构造SE(3)
Sophus::SE3 SE3_qt(q,t); // 从四元数和平移向量构造SE(3)
Vector6d update_se3; //更新量
update_se3.setZero();
update_se3(0,0) = 1e-4d;
(Sophus::SE3::exp(update_se3)*SE3_Rt).matrix()
//增量后SE3矩阵显示
const //是一个C语言(ANSI C)的关键字,具有着举足轻重的地位。
//它限定一个变量不允许被改变,产生静态作用。