【问题标题】:yaw pitch roll of -Z axis from the android sensors来自 android 传感器的 -Z 轴的偏航俯仰滚动
【发布时间】:2013-04-26 09:10:11
【问题描述】:

我们从 android 的 SensorManager.getOrientation() 得到的偏航俯仰和滚动都是针对手机的 Y 轴的。我的意思是,偏航和俯仰表示 Y 轴指向的位置,而滚动是关于 Y 轴的。 (并且我的屏幕方向固定为横向,因此 Y 轴不会改变)。但我想要的是负 Z 轴的偏航俯仰和滚动(指向进入手机),更像是如果我的手机屏幕是飞机驾驶舱中的横向窗口,偏航会是什么俯仰和横滚是什么?

【问题讨论】:

    标签: android math coordinates android-sensors coordinate-transformation


    【解决方案1】:

    如果我明白你在说什么,你会看到当前的偏航俯仰和滚动正在返回,好像 +y 轴是默认的“前”向量,而 +z 轴是默认的“上”向量。您想要进行坐标变换,以便使用 -z 轴作为默认的“前”向量和 +x 轴作为默认的“上”向量来计算偏航、俯仰和滚动。

    首先,您需要根据当前配置中的偏航、俯仰和滚动计算当前的前向和向上矢量。这可以使用 3D 旋转矩阵来完成: http://en.wikipedia.org/wiki/Rotation_matrix#Rotations_in_three_dimensions

    使用偏航角绕 z 旋转,俯仰作为绕 x 的旋转,滚动作为绕 y 的旋转。将这些矩阵相乘,然后将前向量 (0, 1, 0) 和上向量 (0, 0, 1) 乘以结果,得到新的前向量和上向量。

    接下来,您需要计算新的偏航角、俯仰角和滚动角。 Yaw 是投影到 yz 平面的前向量(将 x 值设置为 0)与 -z 向量(0, 0, -1)之间的角度,pitch 是投影到 xz 平面上的前向量与 - z 向量,roll 是投影到 xy 平面上的向上向量与 +x 向量 (1, 0, 0) 之间的角度。如果我们让 Fx = 前向量的 x 分量,Fy 是 y 分量,以此类推,我们得到:

    yaw   = acos ( -z dot (0,  Fy, Fz) ) / sqrt(Fy*Fy + Fz*Fz)
    pitch = acos ( -z dot (Fx, 0,  Fz) ) / sqrt(Fx*Fx + Fz*Fz)
    roll  = acos ( +x dot (Ux, Uy, 0 ) ) / sqrt(Ux*Ux + Uy*Uy)
    

    如果我选择了错误的向量,你应该可以对其他向量执行此操作。

    【讨论】:

    • 感谢您的回复。但我仍然有点困惑,可能是因为浮动的多个 x、y、z 轴。当您说“将前向量 (0, 1, 0) 和上向量 (0, 0, 1) 乘以结果以获得新的前向量和上向量。”您仍在使用前面和向上的旧定义。不应该是新的前 (0,0,-1) 和上 (0,1,0)(好吧,我的上向量是 +y 轴而不是 +x)。而Fx、Fy等是旋转前旧xyz上的组件吧?
    • 我仍在使用第一部分中的旧定义,因为那是我们需要转换的手机的默认值。如果我们通过手机报告的 yaw-pitch-roll 旋转默认的正面和向上,我们将获得绝对的正面和向上向量。 Fx、Fy 等是旋转后这些向量的组成部分,因为此时我们正在使用新的正面和向上、-z 和 +y 将绝对正面和向上转换为 yaw-pitch-roll。
    • 'Yaw 是投影到 yz 平面的前向量(将 x 值设置为 0)与 -z 向量 (0, 0, -1) 之间的角度旧的 xy 平面而不是 yz?
    • 如果 front 是 -z 并且 up 是 +x,yaw 是你绕 x 轴的旋转,并且可以最容易地计算为 -z 之间的角度(根据定义在 yz 平面内)以及您的前向量在 yz 平面上的投影。
    • 哦!我想我现在已经掌握了窍门!.... 只是为了确认:如果我的向上向量是 +y,那么第二部分更改为:yaw = acos (-z dot (Fx, 0, Fz) ) / sqrt(FxFx + FzFz); pitch = acos ( -z dot (0, Fy, Fz) ) / sqrt(FyFy + FzFz); roll = acos ( +y dot (Ux, 0, Uz ) ) / sqrt(UxUx + UzUz)。对吗?
    【解决方案2】:

    Android 中使用的体轴约定与航空航天中使用的不同(有充分的理由)。 “平面”的 x 轴相当于 Android 设备的“y”轴(同样,x 轴与 y 轴相关,正或负取决于 ENU ro NED conevntions)。可以在这里找到一篇关于 Yaw Pitch 和 Roll 约定的好文章,这可能是回答您问题的开始:http://www.sensorplatforms.com/understanding-orientation-conventions-mobile-platforms/

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-08-02
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多