2016-07-26 4 views
1

Ich habe ein Problem mit Timestamps und ich würde mich freuen, wenn mir jemand helfen könnte. Ich versuche das SensorEvent mit den Bildern zu synchronisieren, die ich vom ImageReader erhalte.Was ist die Zeitbasis des Zeitstempels von CameraDevice

Ich bin mir bewusst, dass der Zeitstempel des SensorEvent die Nanosekunden seit dem Start des Betriebssystems (Uptime) ist. Andererseits wird der getTimestamp des Bildes (das vom ImageReader kommt) in Nanosekunden gemessen, aber die Zeitbasis hängt von der Quelle ab, die die Bilder liefert (Kamera, Kamera, usw.). In meinem Fall verwende ich das CameraDevice (camera2), aber ich habe nicht gefunden, was ist die Zeitbasis des CameraDevice.

Ich würde jede Hilfe zu schätzen wissen. Prost

Antwort

3

Dies ist in der SENSOR_INFO_TIMESTAMP_SOURCE Feld dokumentiert, obwohl die beiden Optionen, die erste wird Ihnen wahrscheinlich nicht helfen.

  • UNKNOWN: „Zeitstempel von android.sensor.timestamp ist in Nanosekunden und monotonen, kann aber nicht auf Zeitstempel von anderen Subsystemen (zB Beschleunigungsmesser, Kreisel-usw.) oder anderen Instanzen desselben oder unterschiedlich verglichen werden Kameramodelle im selben System. Zeitstempel zwischen Streams und Ergebnisse für eine einzelne Kamera-Instanz sind vergleichbar, und die Zeitstempel für alle Puffer und die Ergebnis-Metadaten, die von einem einzelnen Capture erzeugt werden, sind identisch. "

  • ECHTZEIT: „Zeitstempel von android.sensor.timestamp ist in der gleichen Zeitbasis wie elapsedRealtimeNanos(), und sie können unter Verwendung dieser Base zu anderen Zeitmarken verglichen werden.“

Leider sind die meisten Geräte heute berichten UNKNOWN, da sie eine genaue Synchronisation nicht von elapsedRealtimeNanos() dem verwendeten Zeitbasis haben (die auf dem Linux-Kernel-Ebene, ist im Allgemeinen die CLOCK_BOOTTIME Zeitquelle).

In der Praxis stammen die Zeitstempel der meisten Geräte jedoch nur von der Quelle CLOCK_MONOTONIC, die im Allgemeinen die gleiche Zeitbasis wie nanoTime() ist.

Aber die Zeitstempelung ist oft nicht sehr genau (Meanining, off um einige Millisekunden), weshalb diese Geräte UNBEKANNT melden, da die Zeitstempelgenauigkeit nicht hoch genug ist, um zuverlässig mit den Zeitstempeln anderer Sensoren zu korrelieren.

+0

Spot auf! Vielen Dank Eddy. –

+0

Also, wenn ich richtig verstehe, ist dies ein Read-Only-Flag und nicht etwas, das gesetzt werden kann, um einen Zeitstempel zu erhalten, dessen Basis korrekt fixiert ist! Ich habe festgestellt, dass der von der IMU und der Kamera angegebene Zeitstempel sehr unterschiedlich ist! z.B. um genau 1 Sekunde! Hat sich etwas verbessert? Wenn ich immer noch eine vernünftige Synchronisation haben möchte, was kann getan werden? –

+0

Wenn das Kameragerät UNBEKANNT meldet und die Sensoren REALTIME verwenden (was meiner Meinung nach der Fall ist), kann der Unterschied sehr groß sein, da man nicht erhöht, während das Gerät schläft. Während die Kamera läuft, ist es unwahrscheinlich, dass der Unterschied zunimmt (da das Gerät nicht schlafen geht), so dass Sie im Prinzip beide Zeiten beim Start messen und diesen Unterschied verwenden können, um die Zeitstempel auf die gleiche Zeitbasis zu korrigieren. –

Verwandte Themen