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.
		
		
		
		
		
			
		
			
				
					
					
						
							43 lines
						
					
					
						
							1.1 KiB
						
					
					
				
			
		
		
	
	
							43 lines
						
					
					
						
							1.1 KiB
						
					
					
				| #!/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()
 | |
| 
 |