Events and Timelines

Timelines timelines

Each piece of logged data is associated with one or more timelines.

The logging SDK always creates two timelines for you:

  • log_tick - a sequence timeline with the sequence number of the log call
  • log_time - a temporal timeline with the time of the log call

You can use the set time functions (Python reference: set_time_sequence, set_time_seconds, set_time_nanos) to associate logs with other timestamps on other timelines. For example:

for frame in read_sensor_frames():
    rr.set_time_sequence("frame_idx", frame.idx)
    rr.set_time_seconds("sensor_time", frame.timestamp)

    rr.log("sensor/points", rr.Points3D(frame.points))

This will add the logged points to the timelines log_time, frame_idx, and sensor_time. You can then choose which timeline you want to organize your data along in the expanded timeline view in the bottom of the Rerun Viewer.

Events events

An event refer to an instance of logging one or more component batches to one or more timelines. In the viewer, the Time panel provide a graphical representation of these events across time and entities.

Static data static-data

The rr.log() function has a static=False default argument. If static=True is used instead, the data logged becomes static. Static data belongs to all timelines (existing ones, and ones not yet created) and shadows any temporal data of the same type on the same entity. This is useful for data that isn't part of normal data capture, but sets the scene for how it should be shown. For instance, if you are logging cars on a street, perhaps you want to always show a street mesh as part of the scenery, and for that it makes sense for that data to be static.

Similarly, coordinate systems or annotation context are typically static.