首页 > 解决方案 > 是否可以根据位置随时间的变化计算欧拉/方向角?

问题描述

如果我在时间 t 和时间 t+1 有两个 3D (XYZ) 位置,是否可以计算第二个位置 (t+1) 相对于 t 的欧拉/方向角?

我可以很容易地获得偏航/Z。y 在 x 或 atan2(dx, dy) 上的变化。Pitch/YI 认为 Z 随距离的变化而变化。不,我不知道roll/X。

为了做到这一点,还需要什么其他信息?更多积分?开始方向?

我正在尝试生成/模拟位置、速度和方向数据,其中我所拥有的只是一系列点/航点,以及航点之间的时间。与此 matlab 工具箱类似的 API,用户可以在其中输入航点和航点之间的时间,并生成航点之间的速度和方向。 https://www.mathworks.com/help/nav/ref/waypointtrajectory-system-object.html

标签: matheuler-angles

解决方案


您始终可以利用叉积从轨迹上的 2 个结果点构造3 个基向量和原点确定坐标系。

但是,由于您没有定义锚点,因此此类系统将倾向于沿轨迹轴旋转。为了解决这个问题,通常使用向上向量或您获得的任何固定方向作为叉积的开始。但是,如果您的轨迹与它过于平行,旋转/扭曲奇点仍然会出现。

要从中获得欧拉角,您可以使用Is there a way to calculate 3D rotation on X and Y axis from a 4x4 matrix


推荐阅读