2012-07-12 57 views
1

有一種方法,以通過值的傳感器(例如,加速度)meassured的時間戳(SensorEvent.timestamp)和GPS(Location.getTime())同步。
SensorEvent.timestamp是設備引導(本地時間)以來的納秒數。 Location.getTime()是1970年以來的毫秒(全球時間)。的Android:傳感器的同步時間戳和GPS

我想到的一個解決方案是計算當地時間和全球(GPS)時間之間的偏差。但問題在於,地點時間是GPS信息到達設備的時間,但需要一些時間直到設備的GPS單元(不知道它是如何稱呼的)計算位置並且將它轉發給我的應用程序,所以我無法計算消息到達的當地時間。我已經讀過某處(不記得在哪裏)從消息到達的延遲直到它已經被處理了幾百毫秒,所以我將始終在GPS數據和來自其他傳感器的數據之間具有高偏移量,如果當應用程序在位置獲取位置消息和時間戳時,我會保留當地時間。
有沒有辦法找出處理GPS信息需要多長時間?或者有另一種同步測量的方法嗎?

我想同步這些值的原因是,我想對數據應用一個過濾器(例如卡爾曼濾波器)。爲此,我想盡可能精確地計算傳感器值和gps值之間的偏移量。

回答

1

通常每秒脈衝數(PPS)信號用於將測量時間與本地時鐘相關聯。 GPS接收機在測量時切換脈衝。然後使用本地時鐘爲該脈衝加上時間戳。在Android手機上,這是不可用的。

除了由處理和傳輸時間引起的延遲之外,GPS軟件中可能會有額外的延遲導致過濾。這個延遲甚至可能取決於使用的衛星的速度或數量。

通過比較兩者的信號,您可以「校準」GPS數據和傳感器數據之間的延遲。例如:如果你從加速到減速,你會在手機的加速度計和GPS速度中看到這一點。不過,我懷疑你是否能夠很好地準確地推遲延遲。 你甚至可以在你的卡爾曼濾波器中添加一個狀態來估計延遲。

+0

感謝您的回覆。我預計沒有簡單的答案。 我的另一個想法是通過ntp從原子鐘得到準確的時間。然後我將擁有與GPS信號相同的參考時間。 – steckl 2012-07-14 20:58:10