@ -64,7 +64,7 @@ def match_vision_to_cluster(v_ego, lead, clusters):
return None
return None
def get_lead ( v_ego , ready , clusters , lead_msg , low_speed_override = True ) :
def get_lead ( v_ego , ready , clusters , lead_msg , model_v_ego , low_speed_override = True ) :
# Determine leads, this is where the essential logic happens
# Determine leads, this is where the essential logic happens
if len ( clusters ) > 0 and ready and lead_msg . prob > .5 :
if len ( clusters ) > 0 and ready and lead_msg . prob > .5 :
cluster = match_vision_to_cluster ( v_ego , lead_msg , clusters )
cluster = match_vision_to_cluster ( v_ego , lead_msg , clusters )
@ -75,7 +75,7 @@ def get_lead(v_ego, ready, clusters, lead_msg, low_speed_override=True):
if cluster is not None :
if cluster is not None :
lead_dict = cluster . get_RadarState ( lead_msg . prob )
lead_dict = cluster . get_RadarState ( lead_msg . prob )
elif ( cluster is None ) and ready and ( lead_msg . prob > .5 ) :
elif ( cluster is None ) and ready and ( lead_msg . prob > .5 ) :
lead_dict = Cluster ( ) . get_RadarState_from_vision ( lead_msg , v_ego )
lead_dict = Cluster ( ) . get_RadarState_from_vision ( lead_msg , v_ego , model_v_ego )
if low_speed_override :
if low_speed_override :
low_speed_clusters = [ c for c in clusters if c . potential_low_speed_lead ( v_ego ) ]
low_speed_clusters = [ c for c in clusters if c . potential_low_speed_lead ( v_ego ) ]
@ -168,10 +168,14 @@ class RadarD():
radarState . radarErrors = list ( rr . errors )
radarState . radarErrors = list ( rr . errors )
radarState . carStateMonoTime = sm . logMonoTime [ ' carState ' ]
radarState . carStateMonoTime = sm . logMonoTime [ ' carState ' ]
if len ( sm [ ' modelV2 ' ] . temporalPose . trans ) :
model_v_ego = sm [ ' modelV2 ' ] . temporalPose . trans [ 0 ]
else :
model_v_ego = self . v_ego
leads_v3 = sm [ ' modelV2 ' ] . leadsV3
leads_v3 = sm [ ' modelV2 ' ] . leadsV3
if len ( leads_v3 ) > 1 :
if len ( leads_v3 ) > 1 :
radarState . leadOne = get_lead ( self . v_ego , self . ready , clusters , leads_v3 [ 0 ] , low_speed_override = True )
radarState . leadOne = get_lead ( self . v_ego , self . ready , clusters , leads_v3 [ 0 ] , model_v_ego , low_speed_override = True )
radarState . leadTwo = get_lead ( self . v_ego , self . ready , clusters , leads_v3 [ 1 ] , low_speed_override = False )
radarState . leadTwo = get_lead ( self . v_ego , self . ready , clusters , leads_v3 [ 1 ] , model_v_ego , low_speed_override = False )
return dat
return dat