俯仰,滚转和偏航角转换为方向向量

 
俯仰,滚转和偏航角。我如何将这些转换为方向向量?

 

这将是特别酷,如果你能告诉我一个四元数和/或矩阵表示这个!

 
不幸的是,有关如何定义这些东西有不同的约定(和滚动,俯仰,偏航不是完全相同的欧拉角),所以你必须要小心。

 

如果我们将pitch = 0定义为水平(z = 0)并且偏离从x轴逆时针,则方向矢量将是

 

x = cos(yaw)*cos(pitch)
y = sin(yaw)*cos(pitch)
z = sin(pitch)

注意我没有使用roll;这是方向单位向量,它不指定态度。它很容易写一个旋转矩阵,将物体携带到飞行物体的框架(如果你想知道,例如,左翼尖指向),但它是一个好主意,首先指定约定。你能告诉我们更多的问题吗?

编辑:
(我已经有意回答这个问题两年半了。)

对于全旋转矩阵,如果我们使用上面的约定,并且我们想要矢量先偏航,然后俯仰,然后滚动,以获得世界坐标系中的最终坐标,我们必须以相反的顺序应用旋转矩阵。

第一卷:

 

| 1    0          0      |
| 0 cos(roll) -sin(roll) |
| 0 sin(roll)  cos(roll) |

然后间距:

 

| cos(pitch) 0 -sin(pitch) |
|     0      1      0      |
| sin(pitch) 0  cos(pitch) |

然后偏航:

 

| cos(yaw) -sin(yaw) 0 |
| sin(yaw)  cos(yaw) 0 |
|    0         0     1 |

组合它们,总旋转矩阵为:

 

| cos(yaw)cos(pitch) -cos(yaw)sin(pitch)sin(roll)-sin(yaw)cos(roll) -cos(yaw)sin(pitch)cos(roll)+sin(yaw)sin(roll)|
| sin(yaw)cos(pitch) -sin(yaw)sin(pitch)sin(roll)+cos(yaw)cos(roll) -sin(yaw)sin(pitch)cos(roll)-cos(yaw)sin(roll)|
| sin(pitch)          cos(pitch)sin(roll)                            cos(pitch)sin(roll)|

因此,对于从x轴开始的单位矢量,最终坐标将是:

 

x = cos(yaw)cos(pitch)
y = sin(yaw)cos(pitch)
z = sin(pitch)

对于从y轴(左翼尖)开始的单位矢量,最终坐标为:

 

x = -cos(yaw)sin(pitch)sin(roll)-sin(yaw)cos(roll)
y = -sin(yaw)sin(pitch)sin(roll)+cos(yaw)cos(roll)
z =  cos(pitch)sin(roll)
posted @ 2020-01-24 12:05  狂奔~  阅读(3967)  评论(0)    收藏  举报