Eigen库中进行矩阵间的变换

本文详细介绍了刚体旋转的四种表示方法:旋转矩阵、四元数、旋转向量(轴角)和欧拉角,并提供了它们之间的转换关系。通过Eigen库的实例,展示了不同旋转表示之间的相互转换。
部署运行你感兴趣的模型镜像

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

  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)的性质分析

您可能感兴趣的与本文相关的镜像

Stable-Diffusion-3.5

Stable-Diffusion-3.5

图片生成
Stable-Diffusion

Stable Diffusion 3.5 (SD 3.5) 是由 Stability AI 推出的新一代文本到图像生成模型,相比 3.0 版本,它提升了图像质量、运行速度和硬件效率

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值