Eigen库中进行矩阵间的变换

3 篇文章 0 订阅

一、刚体旋转的表示方法有如下四种:

  1. 旋转矩阵(R3x3) ------旋转矩阵R为正交阵(行或列向量都是两两正交的单位向量)。
  2. 四元数(Quaternion)------ 四元数可以只用四个元素就能表示旋转,在使用四元数进行旋转变换之前需要对四元数进行归一化。
  3. 旋转向量V -------也称:轴角,由一个旋转轴向量和旋转角组成。旋转轴向量需要标准化为单位向量。
  4. 欧拉角(Vector3d) -------常用于飞机等人机交互的界面,不常用于SLAM中。在eigen库中,其常用轴角来进行模拟X,Y,Z轴的旋转情况。

二、各种旋转之间的转换关系如下:

         

  1. 四元数---->旋转向量:     v_rotate = AngleAxisd (q)
  2. 旋转向量----->四元数:    q = Quaterniond (v_rotate)
  3. 旋转向量----->旋转矩阵: R = v_rotate.matrix() 或 R = v_rotate.toRotationMatrix()
  4. 旋转矩阵----->旋转向量: v_rotate = AngleAxisd (R)
  5. 四元数------>旋转矩阵:    R = Matrix3d (q)
  6. 旋转矩阵----->四元数:     q = Quaterniond (R)
  7. 四元数----->变换矩阵:     T.rotate(q) , T.pretranslate(t) , T.matrix()
  8. 旋转矩阵----->欧拉角:      euler_angle = R.eulerAngles(0,0,1)
  9. 欧拉角------>旋转矩阵:     R = AngleAxisd(M_PI/4 , Vector3d::UnitX())*AngleAxisd(M_PI/2 ,           Vector3d::UnitY())*AngleAxisd(M_PI/3 , Vector3d::UnitZ())

 

 

 

 

 

参考资料:

[1]     旋转矩阵、旋转向量(轴角)、四元数、欧拉角之间相互转换的代码实现

[2]     Eigen中欧拉角,旋转向量,旋转矩阵,四元数的转换

[3]     Eigen库使用教程之旋转矩阵,旋转向量和四元数的初始化和相互转换的实现

[4]     http://eigen.tuxfamily.org/dox/

[5]     三维旋转:欧拉角、四元数、旋转矩阵、轴角之间的转换

[6]     Eigen实现坐标转换

[7]    旋转矩阵(Rotate Matrix)的性质分析

  • 1
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值