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()
							 |