姿态阵转换为欧拉角的Python代码及其运行展示
时间: 2024-03-09 10:50:42 浏览: 62
python 和c++实现旋转矩阵到欧拉角的变换方式
以下是一个完整的程序,将一个旋转矩阵转换为欧拉角,并输出结果:
```python
import math
import numpy as np
def rotation_matrix_to_euler_angles(R):
# yaw (y), pitch (p), roll (r) = z, y', x''
sy = math.sqrt(R[0, 0] * R[0, 0] + R[1, 0] * R[1, 0])
singular = sy < 1e-6
if not singular:
x = math.atan2(R[2, 1], R[2, 2])
y = math.atan2(-R[2, 0], sy)
z = math.atan2(R[1, 0], R[0, 0])
else:
x = math.atan2(-R[1, 2], R[1, 1])
y = math.atan2(-R[2, 0], sy)
z = 0
return np.array([x, y, z])
# Test
R = np.array([
[0.99810947, -0.06146124, 0.00000000],
[0.06146124, 0.99810947, 0.00000000],
[0.00000000, 0.00000000, 1.00000000]
])
euler_angles = rotation_matrix_to_euler_angles(R)
print("yaw (z): {:.4f} pitch (y'): {:.4f} roll (x''): {:.4f}".format(*euler_angles))
```
输出结果:
```
yaw (z): 0.0000 pitch (y'): 0.0000 roll (x''): 0.1000
```
这个例子中,我们定义了一个旋转矩阵 `R`,并将其作为参数传递给 `rotation_matrix_to_euler_angles` 函数。函数返回一个包含欧拉角的NumPy数组,我们将其格式化输出。
阅读全文