当俯仰接近90度时,为什么滚动无法预测?

时间:2019-06-12 08:12:46

标签: android android-sensors sensormanager

在玩Sensor Manager时,我注意到传感器数据有一些我无法理解的限制。

通过监听传感器事件,我们可以提取方位角,俯仰和侧倾值。 Here是Google Codelabs的教程。

SensorManager.getRotationMatrix(rotationMatrix, null, mAccelerometerData, mMagnetometerData);
SensorManager.getOrientation(rotationMatrix, orientationValues);

float azimuth = (float) Math.toDegrees(orientationValues[0]);
float pitch = (float) Math.toDegrees(orientationValues[1]);
float roll = (float) Math.toDegrees(orientationValues[2]);

现在的问题是,当俯仰接近90度时,侧倾变得不可预测(通过错误地频繁更改其值)。

我在Beginning Android Wearables书中发现了此问题的确认,但如上所述,解释超出了本书的范围。

  

第三,按照上述约定,方位角,俯仰和横滚   当音高值接近时变得挑剔和不可预测   90或-90度。此问题与硬件传感器无关   但要考虑到方位角,俯仰和横滚背后的数学问题。详细   万向节锁的解释超出了本书的范围,但是   后果直截了当:不要相信方向   间距接近+/- 90度。如果音高的这些值是   对于应用程序不可避免,请考虑使用旋转矩阵或   四元数。

问题

有人可以解释一下吗?气泡级应用(例如Bubble level)如何在Android中解决此问题?

0 个答案:

没有答案