You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
			
				
					44 lines
				
				1.1 KiB
			
		
		
			
		
	
	
					44 lines
				
				1.1 KiB
			| 
											3 years ago
										 | #!/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()
 |