#!/usr/bin/env python3 import time import statistics import cereal.messaging as messaging from typing import Dict camera_states = [ 'roadCameraState', 'wideRoadCameraState', 'driverCameraState' ] def fmt(val): ref = 0.05 return f"{val:.6f} ({100 * val / ref:.2f}%)" if __name__ == "__main__": sm = messaging.SubMaster(camera_states) prev_sof = {state: None for state in camera_states} diffs: Dict[str, list] = {state: [] for state in camera_states} st = time.monotonic() while True: sm.update() for state in camera_states: if sm.updated[state]: if prev_sof[state] is not None: diffs[state].append((sm[state].timestampSof - prev_sof[state]) / 1e9) prev_sof[state] = sm[state].timestampSof if time.monotonic() - st > 10: for state in camera_states: values = diffs[state] ref = 0.05 print(f"{state} \tMean: {fmt(statistics.mean(values))} \t Min: {fmt(min(values))} \t Max: {fmt(max(values))} \t Std: {statistics.stdev(values):.6f} \t Num frames: {len(values)}") diffs[state] = [] print() st = time.monotonic()