- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我目前正在从加速度计、磁力计和陀螺仪获取时间戳,并在 Android 设备上与 GPS 位置执行传感器融合。我使用 SensorEvent.timestamp 获取传感器时间戳和 Location.getElapsedRealtimeNanos() .
我的代码如下:
传感器时间戳
public void onSensorChanged( SensorEvent event ) {
if( event.sensor.getType() == Sensor.TYPE_ACCELEROMETER )
System.out.println( "Acc:" + event.timestamp );
}
GPS 时间戳
public void onLocationChanged( Location loc ) {
System.out.println( loc.getElapsedRealtimeNanos() );
}
我的问题是时间戳偏移了某个任意数量。我知道这一点是因为所有 GPS 值都通过与其余传感器的一些偏移量聚集在一起。有时这种偏移以分钟为单位,有时以小时为单位,有时领先,有时滞后。为什么我的实现中存在这种延迟以及如何修复它?
这是我正在讨论的聚类的快速绘图。我对时间戳进行了排序,并且尖锐分离后的时间戳都是与 GPS 测量相关的时间戳。
日志中,数据是按顺序输出的。消息类型 1 和 4 与传感器读数相关,而 -1 与 GPS 相关。如您所见,时间戳不是单调的。其余 GPS 时间戳与传感器的偏移量类似。请注意,此数据点来自另一个数据集。
我使用以下代码来输出时间。
System.out.println( SystemClock.elapsedRealtimeNanos() );
检查钩子(Hook)中的系统时钟后,GPS时间戳是一致的。然而,传感器明显偏离系统时钟。第一列是系统时钟,第二列是相应事件对象的时间戳,第三列时间戳是消息类型(-1 表示 GPS,其他是 IMU 传感器)。
我研究过的事情
我还发现 GPS 时钟同步大约落后 10-15 秒,但由于我使用的是启动时间,所以这应该不是问题。
我已经调查过这个SO question但我认为它不适用,因为该问题的延迟似乎是一致的(100 毫秒),而且相对于我所经历的情况,延迟幅度很小。
尽管我很想使用 SystemClock.elapsedRealtime()
在这些事件 Hook 中,我知道测量传感器和调用事件之间存在延迟。我不想在我的模型中引入任何延迟/不确定性。
经过几个小时的挖掘,我还发现了很多 Android 错误,这些错误已经有几年了,而且大多数都被标记为过时的。我真的很困惑。任何关于这个问题的线索都将不胜感激。
最佳答案
答案很简单,SensorEvent.timestamp 有一个任意零引用:
It turns out after a bit of Googling (tip o' the hat to StackOverflow, as usual) that the timestamp one receives isn't based off of any particular 0-point defined in the Android OS or the API; it's an arbitrary per-sensor value intended to allow for different measurements from the same sensor to be compared, not for the measurements to be compared to other timestamped events. It's a known issue (bug concerning the documentation; bug concerning the behavior), but as of right now it's the way of the world for Android developers.
来源: http://fixermark.blogspot.ca/2014/06/quirkiness-of-android-sensor-library.html
我的解决方案是通过添加 SystemClock.elapsedRealtimeNanos()
来估计偏移量进入日志并估计每个传感器的延迟/偏移。
关于java - SensorEvent.timestamp 和 Location.getElapsedRealtimeNanos() 时间戳延迟偏移,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30516208/
我目前正在从加速度计、磁力计和陀螺仪获取时间戳,并在 Android 设备上与 GPS 位置执行传感器融合。我使用 SensorEvent.timestamp 获取传感器时间戳和 Location.g
我是一名优秀的程序员,十分优秀!