Android上的Accelerometer,Gyro和Magnetometer之间的样本数量不均匀

时间:2015-01-25 16:08:08

标签: android sampling inertial-navigation

我正在开发一款Android应用程序,用于记录智能手机上的惯性数据,然后进一步处理它。不同的Android设备具有不同的行为,具体取决于将惯性传感器连接到Android的固件,这一点非常清晰。有一点我无法回答的问题是,为什么只有moto g 2nd gen还表明当应用程序正在录制时我的传感器样本数量明显不同?

例如,几秒钟的录音,我看到了:

  • ~6000陀螺样本

  • 的5200个样本
  • 〜2000个磁力计样品

假设我正在录制的活动一直影响所有传感器,因此我希望能够均匀地调用onSensorChange函数。这种情况发生在我尝试的其他智能手机上(5或6种不同的智能手机)。

为了让onSensorChange记录它们,为什么磁体大多数似乎不像其他传感器那样经常改变值?

显而易见的答案是因为固件,但您是否知道如何减轻我所看到的影响?

谢谢大家!

1 个答案:

答案 0 :(得分:2)

这个问题真的很老了,但我想我会为了社区的缘故回答这个问题:

我是一家专注于智能手机传感器处理的初创公司的应用开发人员。我们有两个第二代Moto G,我们发现他们在为一个传感器和传感器提供统一的采样率方面做得非常糟糕。

为了缓解这些问题,我们每次从加速度计中获取样本时,都会使用最新数据一次写出整行样本。如果自上次加速度计样本以来新样本未进入任何其他传感器,则相同的值将被打印两次。

即)

Accel (3-axis) | Gyro (3-axis)
0,0,0|0,0,0
<new accelerometer sample>
1,1,1|0,0,0
<5 gyro samples and 1 accelerometer>
2,2,2|5,5,5
...

无论如何,希望这有助于某人!

TLDR; 第二代Moto G对于一个传感器和多个传感器的采样率都不一致。