SLAM个人常用操作备忘录字典[更新中]

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)的关键字,具有着举足轻重的地位。            
                                    //它限定一个变量不允许被改变,产生静态作用。
    

 

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值