ACC_Trigger_0920.py 2.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657
  1. import numpy as np
  2. import pandas as pd
  3. import warnings
  4. warnings.filterwarnings("ignore", category=FutureWarning, module='pandas')
  5. pd.set_option('future.no_silent_downcasting', True)
  6. SHUT_ACC_STATUS = 0
  7. ACC_STATUS = 3
  8. EGO_ID = 1
  9. OBJ_ID = 2
  10. class ACC_Trigger():
  11. def __init__(self, df_vehState):
  12. self.df_vehState = df_vehState
  13. def find_start_end_time(self, change_speed_time_list):
  14. start_end_time_list = []
  15. # 初始化一个变量来跟踪当前序列的开始值
  16. # 和一个变量来跟踪当前序列的长度
  17. start_of_sequence = None
  18. sequence_length = 0
  19. # 遍历sim_times列表(从第二个元素开始比较)
  20. for i in range(1, len(change_speed_time_list)):
  21. # 检查当前元素与上一个元素的差是否接近0.04(考虑浮点数精度)
  22. if abs(change_speed_time_list[i] - change_speed_time_list[i - 1] - 0.01) < 0.04:
  23. # 如果这是序列的开始,则记录开始值
  24. if start_of_sequence is None:
  25. start_of_sequence = change_speed_time_list[i - 1]
  26. # 增加序列长度
  27. sequence_length += 1
  28. else:
  29. # 如果序列中断且长度足够(例如,至少为2),则添加序列到结果列表中
  30. if start_of_sequence is not None and sequence_length >= 0:
  31. start_end_time_list.append([start_of_sequence, change_speed_time_list[i - 1]])
  32. # 重置开始值和序列长度
  33. start_of_sequence = None
  34. sequence_length = 0
  35. # 处理最后一个序列(如果存在且长度足够)
  36. if start_of_sequence is not None and sequence_length >= 2:
  37. start_end_time_list.append([start_of_sequence, change_speed_time_list[-1]])
  38. return start_end_time_list
  39. def ACC_active_time_statistics(self):
  40. start_end_time_dict = {}
  41. ACC_time = self.df_vehState[self.df_vehState['ACC_status'] == ACC_STATUS]['simTime'].tolist()
  42. ACC_start_end_time_list = self.find_start_end_time(ACC_time)
  43. start_end_time_dict['ACC_status_active_time'] = ACC_start_end_time_list
  44. return start_end_time_dict
  45. if __name__ == "__main__":
  46. df_vehState = pd.read_csv(r"D:\Cicv\Lantu\数据\ACC_04_Straight_Front_vehicle_biased_driving\data\VehState.csv")
  47. ACC = ACC_Trigger(df_vehState)
  48. start_end_time_dict = ACC.ACC_active_time_statistics()
  49. print(start_end_time_dict)