瀏覽代碼

修改keepInLane_LST、warningDelayTimeofReachDecel_LST的代码逻辑

XGJ_zhaoyuan 1 天之前
父節點
當前提交
5974d309a7
共有 1 個文件被更改,包括 10 次插入16 次删除
  1. 10 16
      modules/metric/function.py

+ 10 - 16
modules/metric/function.py

@@ -295,16 +295,17 @@ def warningDelayTimeofReachDecel_LST(data):
     # 将correctwarning保存到data对象中,供图表生成使用
     data.correctwarning = correctwarning
     ego_df = data.ego_data
-    ego_speed_simtime = ego_df[ego_df['accel'] <= -4]['simTime'].tolist()  # 单位m/s^2
+    obj_df = data.obj_data
+    obj_speed_simtime = obj_df[obj_df['accel'] <= -4]['simTime'].tolist()  # 单位m/s^2
     warning_simTime = ego_df[ego_df['ifwarning'] == correctwarning]['simTime'].tolist()
-    if (len(warning_simTime) == 0) and (len(ego_speed_simtime) == 0):
+    if (len(warning_simTime) == 0) and (len(obj_speed_simtime) == 0):
         return {"warningDelayTimeofReachDecel_LST": 0}
-    elif (len(warning_simTime) == 0) and (len(ego_speed_simtime) > 0):
-        return {"warningDelayTimeofReachDecel_LST": ego_speed_simtime[0]}
-    elif (len(warning_simTime) > 0) and (len(ego_speed_simtime) == 0):
+    elif (len(warning_simTime) == 0) and (len(obj_speed_simtime) > 0):
+        return {"warningDelayTimeofReachDecel_LST": obj_speed_simtime[0]}
+    elif (len(warning_simTime) > 0) and (len(obj_speed_simtime) == 0):
         return {"warningDelayTimeofReachDecel_LST": None}
     else:
-        return {"warningDelayTimeofReachDecel_LST": warning_simTime[0] - ego_speed_simtime[0]}
+        return {"warningDelayTimeofReachDecel_LST": warning_simTime[0] - obj_speed_simtime[0]}
 
 
 def rightWarningSignal_LST(data):
@@ -450,17 +451,10 @@ def crossJunctionToTargetLane_LST(data):
 
 def keepInLane_LST(data):
     ego_df = data.ego_data
-    scenario_name = find_nested_name(data.function_config["function"])
-    target_road_type = data.function_config["function"][scenario_name]["keepInLane_LST"]['max']
-    data_in_tunnel = ego_df[ego_df['road_type'] == target_road_type]
-    if data_in_tunnel.empty:
+    notkeepinlane = ego_df[ego_df['laneOffset'] > ego_df['lane_width']/2].tolist()
+    if len(notkeepinlane):
         return {"keepInLane_LST": -1}
-    else:
-        tunnel_lane = data_in_tunnel['lane_id'].tolist()
-        if len(set(tunnel_lane)) >= 2:
-            return {"keepInLane_LST": -1}
-        else:
-            return {"keepInLane_LST": target_road_type}
+    return {"keepInLane_LST": 1}
 
 
 def leastLateralDistance_LST(data):