@@ -254,27 +254,27 @@ def get_frames():
254254 'driverStateV2.modelExecutionTime' ,
255255 'driverStateV2.gpuExecutionTime'
256256 ]
257- if PC :
258- # TODO We ignore whole bunch so we can compare important stuff
259- # like posenet with reasonable tolerance
260- ignore += ['modelV2.acceleration.x' ,
261- 'modelV2.position.x' ,
262- 'modelV2.position.xStd' ,
263- 'modelV2.position.y' ,
264- 'modelV2.position.yStd' ,
265- 'modelV2.position.z' ,
266- 'modelV2.position.zStd' ,
267- 'drivingModelData.path.xCoefficients' ,]
268- for i in range (3 ):
269- for field in ('x' , 'y' , 'v' , 'a' ):
270- ignore .append (f'modelV2.leadsV3.{ i } .{ field } ' )
271- ignore .append (f'modelV2.leadsV3.{ i } .{ field } Std' )
272- for i in range (4 ):
273- for field in ('x' , 'y' , 'z' , 't' ):
274- ignore .append (f'modelV2.laneLines.{ i } .{ field } ' )
275- for i in range (2 ):
276- for field in ('x' , 'y' , 'z' , 't' ):
277- ignore .append (f'modelV2.roadEdges.{ i } .{ field } ' )
257+ # if PC:
258+ # # TODO We ignore whole bunch so we can compare important stuff
259+ # # like posenet with reasonable tolerance
260+ # ignore += ['modelV2.acceleration.x',
261+ # 'modelV2.position.x',
262+ # 'modelV2.position.xStd',
263+ # 'modelV2.position.y',
264+ # 'modelV2.position.yStd',
265+ # 'modelV2.position.z',
266+ # 'modelV2.position.zStd',
267+ # 'drivingModelData.path.xCoefficients',]
268+ # for i in range(3):
269+ # for field in ('x', 'y', 'v', 'a'):
270+ # ignore.append(f'modelV2.leadsV3.{i}.{field}')
271+ # ignore.append(f'modelV2.leadsV3.{i}.{field}Std')
272+ # for i in range(4):
273+ # for field in ('x', 'y', 'z', 't'):
274+ # ignore.append(f'modelV2.laneLines.{i}.{field}')
275+ # for i in range(2):
276+ # for field in ('x', 'y', 'z', 't'):
277+ # ignore.append(f'modelV2.roadEdges.{i}.{field}')
278278 tolerance = .3 if PC else None
279279 results : Any = {TEST_ROUTE : {}}
280280 log_paths : Any = {TEST_ROUTE : {"models" : {'ref' : log_fn , 'new' : log_fn }}}
@@ -285,6 +285,30 @@ def get_frames():
285285 comment_replay_report (log_msgs , cmp_log , log_msgs )
286286 failed = False
287287 print (diff_long )
288+ else :
289+ commit = (get_commit () or 'local' )[:7 ]
290+ all_plots = [* zl ([
291+ (lambda x : get_idx_if_non_empty (x .velocity .x , 0 ), "velocity.x" ),
292+ (lambda x : get_idx_if_non_empty (x .action .desiredCurvature ), "desiredCurvature" ),
293+ (lambda x : get_idx_if_non_empty (x .action .desiredAcceleration ), "desiredAcceleration" ),
294+ (lambda x : get_idx_if_non_empty (x .leadsV3 [0 ].x , 0 ), "leadsV3.x" ),
295+ (lambda x : get_idx_if_non_empty (x .laneLines [1 ].y , 0 ), "laneLines.y" ),
296+ (lambda x : get_idx_if_non_empty (x .meta .disengagePredictions .gasPressProbs , 1 ), "gasPressProbs" ),
297+ ], "modelV2" )]
298+ n = len (all_plots )
299+ fig , axes = plt .subplots (n , 1 , figsize = (10 , 3 * n ))
300+ for ax , (v , event ) in zip (axes , all_plots ):
301+ proposed_vals = list (map (v [0 ], get_event (log_msgs , event )))
302+ master_vals = list (map (v [0 ], get_event (cmp_log , event )))
303+ ax .plot (master_vals , label = 'MASTER' )
304+ ax .plot (proposed_vals , label = 'PROPOSED' )
305+ ax .set_title (v [1 ])
306+ ax .legend (fontsize = 8 )
307+ ax .grid (True , alpha = 0.3 )
308+ fig .tight_layout ()
309+ out = f"model_replay_{ commit } .png"
310+ fig .savefig (out , dpi = 150 )
311+ print (f"Plot saved to { out } " )
288312 print ('-------------\n ' * 5 )
289313 print (diff_short )
290314 with open ("model_diff.txt" , "w" ) as f :
0 commit comments