我一直在尝试为Android开发 Pedestrian Dead Reckoning 应用程序,在处理了步骤检测和步长组件后,我决定解决方向确定问题。
在发现关于coordinate transformation的几篇帖子(甚至经常与answerer聊天)后,我的结果逐渐好转,但仍有一些事情打扰我。
实验:
我向北走去,转过身,然后向南走去。重复向西,然后东方的程序。
的问题:
-
我期待着,在几个方向直行,有
X和Y值的值随着足迹而振荡
在整个中具有相对稳定的Z值。相反, Y.
值的行为方式, Z值具有预期值
行为即可。怎么会?它与我有什么关系没有
使用 remapCoordinates() ? (见图1)
-
我预计角度曲线会在<180>和-180º之间跳跃,但是
为什么他们也这样做35º? (见图2)
醇>
注意:
- 我正在使用重力和磁力计值来计算旋转
矩阵,并使用OpenGL的 multiplyMV();
进行乘法运算
- 我没有使用 remapCoordinates(),因为我认为我不需要:
我的口袋里的手机是直立的(Y点向上/向下,Z通常向前)
并且应该向后和向前移动45º,at
最坏的;
- 方位角值似乎没问题,并且没有问题2中描述的振荡。(见图3)
图表:
世界参考重力加速
(蓝色为X,红色为Y,绿色为Z)
世界参考重力角
(蓝色为atan2(Y / X),红色为atan2(Z / Y),绿色为atan2(Z / X))
方向值
(蓝色是方位角,红色是俯仰,绿色是滚动)