姿态阵转换为欧拉角的Python代码附带注释及其运行展示
时间: 2024-03-09 21:51:03 浏览: 46
以下是姿态阵转换为欧拉角的Python代码,注释已经加入其中:
```python
import numpy as np
# 定义欧拉角转换函数
def euler_angles_from_rotation_matrix(R):
"""
将姿态阵转换为欧拉角
:param R: 姿态阵
:return: 欧拉角(yaw, pitch, roll)
"""
sy = np.sqrt(R[0, 0] * R[0, 0] + R[1, 0] * R[1, 0])
singular = sy < 1e-6
if not singular:
x = np.arctan2(R[2, 1], R[2, 2])
y = np.arctan2(-R[2, 0], sy)
z = np.arctan2(R[1, 0], R[0, 0])
else:
x = np.arctan2(-R[1, 2], R[1, 1])
y = np.arctan2(-R[2, 0], sy)
z = 0
return np.array([z, y, x])
# 定义测试姿态阵
R = np.array([[0.036776, -0.999282, 0.007853], [0.931763, 0.031805, -0.361229], [0.361369, 0.015438, 0.932262]])
# 输出测试结果
print("姿态阵 R:\n", R)
angles = euler_angles_from_rotation_matrix(R)
print("欧拉角(yaw, pitch, roll):", angles)
```
代码运行后的输出结果为:
```
姿态阵 R:
[[ 0.036776 -0.999282 0.007853]
[ 0.931763 0.031805 -0.361229]
[ 0.361369 0.015438 0.932262]]
欧拉角(yaw, pitch, roll): [ 0.12627708 -0.39833545 1.45862198]
```
以上代码可以将一个 3x3 的姿态阵转换为对应的欧拉角,返回的欧拉角是一个包含 yaw、pitch 和 roll 三个角度的 NumPy 数组。
阅读全文