Radard: just get relative speed from model (#27493)

* refactor radard

* Revert "refactor radard"

This reverts commit 4b3507ff58.

* May work

* No radar for test

* check length

* no accel for now

* First accel

* Cleaner way

* Re-enable radar

* update proc replay

* This might cause oscillation

* Update ref commit
pull/28376/head
Harald Schäfer 2 years ago committed by GitHub
parent 96905e52e2
commit a446c1fa56
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
  1. 13
      selfdrive/controls/lib/radar_helpers.py
  2. 12
      selfdrive/controls/radard.py
  3. 2
      selfdrive/test/process_replay/ref_commit

@ -130,15 +130,16 @@ class Cluster():
"aLeadTau": float(self.aLeadTau) "aLeadTau": float(self.aLeadTau)
} }
def get_RadarState_from_vision(self, lead_msg, v_ego): def get_RadarState_from_vision(self, lead_msg, v_ego, model_v_ego):
lead_v_rel_pred = lead_msg.v[0] - model_v_ego
return { return {
"dRel": float(lead_msg.x[0] - RADAR_TO_CAMERA), "dRel": float(lead_msg.x[0] - RADAR_TO_CAMERA),
"yRel": float(-lead_msg.y[0]), "yRel": float(-lead_msg.y[0]),
"vRel": float(lead_msg.v[0] - v_ego), "vRel": float(lead_v_rel_pred),
"vLead": float(lead_msg.v[0]), "vLead": float(v_ego + lead_v_rel_pred),
"vLeadK": float(lead_msg.v[0]), "vLeadK": float(v_ego + lead_v_rel_pred),
"aLeadK": float(0), "aLeadK": 0.0,
"aLeadTau": _LEAD_ACCEL_TAU, "aLeadTau": 0.3,
"fcw": False, "fcw": False,
"modelProb": float(lead_msg.prob), "modelProb": float(lead_msg.prob),
"radar": False, "radar": False,

@ -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

@ -1 +1 @@
29f846f525a4e14f380afd20ae8fa0804011ab6e 73549898edd3d9a428fa6f58e25c2c0300290ef2

Loading…
Cancel
Save