Skip to main content

Timestamps in Aria VRS Files

Writing Sample

This page is an archive of technical writing I did for Project Aria. For the most up to date documentation go to Project Aria Docs.

This page provides information about how Project Aria timestamp data is formatted in VRS.

The sensors in Project Aria glasses are temporally aligned to a shared, device-time domain. Multiple devices (either multiple Aria glasses or Aria glasses plus other devices) can also be temporally aligned using a shared clock.

Open datasets that contain temporally aligned data from multiple devices that use TimeDomain.TIME_CODE​ are:

Aria research partners can use TICSync to make time synchronized recordings between multiple devices.

Further resources:

VRS Timestamps (Single Device)

Device timestamps

We strongly recommend always working with device timestamp when working with single-device Aria data.

  • TimeDomain.DEVICE_TIME
    • Each piece of data captured by Project Aria glasses is associated with a device timestamp.
      • Also called capture timestamp in the VRS file format
    • All sensors on the same pair of Aria glasses share the same device time domain issued from a single clock.

Record and Host(Arrival) timestamps

When working with Aria data you might encounter timestamps for different time events:

  • TimeDomain.RECORD_TIME
    • Record timestamps
    • Timestamps stored in the index of VRS files.
    • For Project Aria glasses, these are equal to the device timestamp converted to a double-precision floating point representation.
  • TimeDomain.HOST_TIME
    • Host or arrival timestamps
    • Timestamps when the sensor data is saved to the device
      • Note: this timestamp does not represent the timestamp when the sensor data is captured. Please use TimeDomain.DEVICE_TIME to access the capture timestamp
    • Should not be needed for any purpose

Audio timestamp

For audio data, each record contains 2048 samples that ranges 42ms (or 4096 samples that ranges 84ms). Given a record (a chunk) of audio data, the record timestamp is the first timestamp in the record and the device timestamp is the last timestamp in the record. Therefore, device timestamp - record timestamp for the same record is 42ms for 2048 samples (and 84ms for 4096 samples).

VRS Timestamps (Multiple Devices)

Accurate time synchronization is essential when co-ordinating data collection or analyzing data between multiple devices (real world or synthetic). Without synchronization, any device’s built-in recording of time will naturally drift and go out of sync (like how your microwave slowly loses time over a year).

TimeDomain.TIME_CODE

Multiple devices (either multiple Aria glasses or Aria glasses plus other devices) that are temporally aligned using an external shared clock will include the TimeDomain.TIME_CODE datastream in the VRS file.

We use time sync servers to record pairs of timestamps between the server’s local timestamp and the Aria glasses’ device timestamp. This generates a mapping between the Aria’s device time and the server’s local time. The server’s local time serves as a unified time domain shared by the multiple devices.

Timecode time refers to the same “capture” event as device time, but differs by the clock assigning the timestamps. Thus we can convert between timecode time and device time by looking up values in the time mapping table.

TimeDomain.TICSync

TICSync is an extremely efficient algorithm for learning the mapping between distributed clocks, which typically achieves better than millisecond accuracy within just a few seconds. It works by estimating clock offset and skew between itself (the host/client) and a device (Aria leader or server).

In a TICSync recording, all devices mark video frames with a timestamp in a conceptual TICSync time domain. During the recording, the TICSync algorithm constructs, on-the-fly, the mapping between the conceptual TICSync time domain and the concrete DEVICE_TIME time domains of the glasses. Under the current implementation, the unique server device uses its DEVICE_TIME as the conceptual TICSync time, while all clients use their concrete TIC_SYNC time domains.