Android:同步传感器和GPS的时间戳

时间:2012-07-12 21:52:09

标签: android synchronization gps sensor

是否有办法同步传感器测量的值(例如加速度)( SensorEvent.timestamp )和GPS( Location.getTime())中的时间戳。<登记/> SensorEvent.timestamp是设备启动后的纳秒数(本地时间)。 Location.getTime()是自1970年(全球时间)以来的毫秒数。

我想到的一个解决方案是计算当地时间和全球(GPS)时间之间的偏差。但问题是,位置中的时间是GPS消息到达设备的时间,但是设备的GPS单元(不知道如何调用)需要一些时间来计算位置和转发它到我的应用程序,所以我无法计算消息到达的当地时间。我已经读过某个地方(不记得在哪里),从消息到达到处理之间的延迟可能是几百毫秒,所以我总是在GPS数据和来自其他传感器的数据之间有很高的偏差,如果我知道应用程序获取位置消息和位置中的时间戳的本地时间 有没有办法弄清楚处理GPS信息需要多长时间?或者是否有其他方法来同步测量?

我想要同步这些值的原因是,我想对数据应用滤波器(例如卡尔曼滤波器)。为此,我想尽可能精确地计算传感器值和gps值之间的偏移量。

1 个答案:

答案 0 :(得分:1)

通常每秒脉冲(PPS)信号用于将测量时间与本地时钟相关联。 GPS接收器在测量时切换脉冲。然后使用本地时钟对该脉冲加时间戳。在Android手机上,这不可用。

除了由处理和传输时间引起的延迟之外,GPS软件中可能存在额外的延迟过滤。这种延迟甚至可能取决于所用卫星的速度或数量。

您可以通过比较两者的信号来“校准”GPS数据和传感器数据之间的延迟。例如:如果您从加速到减速,您将在手机的加速度计和GPS速度中清楚地看到这一点。但是,我怀疑你是否可以获得延迟的准确性。 您甚至可以在卡尔曼滤波器中添加一个估计延迟的状态。