eigen 四元数转欧拉角
时间: 2025-01-16 22:11:14 浏览: 81
### 使用Eigen库将四元数转换为欧拉角
为了实现从四元数到欧拉角的转换,可以利用 `Eigen` 库中的 `Matrix3d` 和 `Vector3d` 类型来完成这一过程。具体来说,先通过四元数创建一个旋转矩阵,再由该旋转矩阵计算出对应的欧拉角。
下面是一个完整的代码示例展示如何执行此操作:
```cpp
#include <iostream>
#include <Eigen/Dense>
#include <Eigen/Geometry>
using namespace std;
using namespace Eigen;
int main() {
// 定义一个四元数 q1 (w,x,y,z)
Quaterniond q1(0.707, 0.0, 0.707, 0.0);
// 将四元数转成旋转矩阵
Matrix3d rotation_matrix = q1.toRotationMatrix();
// 计算并打印欧拉角(按照ZYX顺序)
Vector3d euler_angles = rotation_matrix.eulerAngles(2, 1, 0);
cout << "Euler Angles (radians):" << endl;
cout << "Roll: " << euler_angles[2] << ", Pitch: " << euler_angles[1]
<< ", Yaw: " << euler_angles[0] << endl;
return 0;
}
```
这段程序首先定义了一个四元数对象 `q1` 并初始化其分量值;接着调用了成员函数 `.toRotationMatrix()` 来获取相应的旋转矩阵表示形式;最后使用方法 `.eulerAngles()` 提取指定轴序下的三个角度作为输出结果[^1]。
需要注意的是,在这里选择了 ZYX 的序列来进行解算,即绕固定坐标系依次沿Z、Y、X方向转动的角度组合。如果应用场合不同,则可能需要调整这个参数以匹配实际需求。
阅读全文
相关推荐


















