欧拉角与旋转矩阵的互相转化

本文介绍如何使用Eigen库实现欧拉角与旋转矩阵之间的转换,并提供了具体代码实例。详细解释了12种旋转顺序及其对应的转换方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一个新坐标系由旧的坐标系通过旋转欧拉角得到,一共有12种旋转方式:

YXY,  ZXZ,  XYX,  ZYZ,  XZX,  YZY,   

XYZ,  XZY,  YXZ,  YZX,  ZXY,  ZYX


下面利用Eigen库实现欧拉角与旋转矩阵的互相转化

需要包含的头文件如下

#include <Eigen/Core>
#include <Eigen/Dense>
#include <Eigen/Geometry>
#include <Eigen/StdVector>

1.已知欧拉角求旋转矩阵

::Eigen::Vector3f  EulerAngle;

若EulerAngle是XYZ顺序,则旋转矩阵为
::Eigen::Matrix3d RXYZ = ::Eigen::AngleAxisd(EulerAngle[0], ::Eigen::Vector3d::UnitX())
                   * ::Eigen::AngleAxisd(EulerAngle[1], ::Eigen::Vector3d::UnitY())
                   * ::Eigen::AngleAxisd(EulerAngle[2], ::Eigen::Vector3d::UnitZ());

若EulerAngle是ZXZ顺序,则旋转矩阵为

::Eigen::Matrix3d RZXZ = ::Eigen::AngleAxisd(EulerAngle[0], ::Eigen::Vector3d::UnitZ())
                   * ::Eigen::AngleAxisd(EulerAngle[1], ::Eigen::Vector3d::UnitX())
                   * ::Eigen::AngleAxisd(EulerAngle[2], ::Eigen::Vector3d::UnitZ());

2.已知旋转矩阵求欧拉角

由于欧拉角有12种旋转方式,因此一个旋转矩阵理论上可以求出12组欧拉角

::Eigen::Matrix3d R;

求ZYX顺序欧拉角

::Eigen::Vector3f  EulerAngleZYX= R.eulerAngles(2, 1, 0);

求ZXZ顺规欧拉角

::Eigen::Vector3f  EulerAngleZYZ= R.eulerAngles(2, 1, 2);

其中eulerAngles()的三个参数表示旋转顺序。0,1,2分别代表X,Y,Z

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值