当前位置:   article > 正文

HighD数据集Python处理(车辆变道时本车及当前车道和目标车道前后车数据获取)

highd数据集

        本文通过对Python代码的编写,实现对车辆变道时本车及当前车道和目标车道的前后车数据获取,仅介绍大体逻辑与部分重点代码与结果。使用获取的数据可进行换道决策,模型验证等研究。本文使用数据集为HighD数据集。若使用NGSIM数据集可参见本人发表的文章NGSIM数据集Python处理(车辆变道时本车道和目标车道前后车数据提取)_惜君如常的博客-CSDN博客若需使用其他数据集进行数据提取,可与本人联系。

        HighD数据集由德国亚琛工业大学汽车工程研究所发布的HighD数据集,是德国高速公路的大型自然车辆轨迹数据,搜集自德国科隆附近的六个不同地点, 位置因车道数量和速度限制而异,记录的数据中包括轿车和卡车。数据集包括来自六个地点的11.5小时测量值和110 000车辆,所测量的车辆总行驶里程为45 000 km,还包括了5600条完整的变道记录。通过使用最先进的计算机视觉算法,定位误差通常小于十厘米。适用于驾驶员模型参数化、自动驾驶、交通模式分析等任务。HighD的数据格式和后续推出的InD,RounD有细微的不同,它的坐标系原点起始于左上方,标注车辆位置用的也是包围盒左上方端点而非中心点。如需数据集可点击链接HighD大型自然车辆轨迹数据集-数据集文档类资源-CSDN文库进行下载。

  •  本车变道点获取  

        本文定义的车辆变道点为车道ID改变点,若需获取变道行为起点,可自行添加该部分代码进行计算,不影响后续代码逻辑。

        首先遍历各个文件中的各个车辆车道ID差值列表,将差值不为0的,提取索引,利用iloc进行dataframe切片,获取出车在变道点的数据。

  1. for j in enumerate(list(np.diff(lst_laneId))):
  2. if j[1] != 0:
  3. lst_index.append(j[0])
  4. for index in lst_index:
  5. data_c_c = data_c.iloc[index:index+1].copy()
  6. data_c_c_1 = data_c.iloc[index+1:index+2].copy()

        data_c_c表示在变道前车道的最后时刻数据,data_c_c_1表示在变道后车道的初始时刻数据。可自行选择将上述两个数据中的哪一个定义为换道点,确定换道点后,提取该时刻时间,通过data_c_c获取变道前前后车ID,通过data_c_c_1获取变道后前后车ID。

  •  目标车辆数据获取 

        获取变道时刻,所有车辆数据,编写函数获取速度、加速度、位置信息,在这里需剔除没有前后车以及数据集中数据存在缺失的情况。函数如下:

  1. def func(ID):
  2. num = 0
  3. if ID != 0:
  4. for i_1 in enumerate(list(data_time['id'])):
  5. if i_1[1] == ID:
  6. num += 1
  7. xVelocity = lst_xVelocity[i_1[0]]
  8. yVelocity = lst_yVelocity[i_1[0]]
  9. xAcceleration = lst_xAcceleration[i_1[0]]
  10. yAcceleration = lst_yAcceleration[i_1[0]]
  11. x = lst_x[i_1[0]]
  12. return [xVelocity,yVelocity,xAcceleration,yAcceleration,x]
  13. if num == 0:
  14. return ['#','#','#','#','#']
  15. else:
  16. return ['#','#','#','#','#']

以变道前前车数据获取为例,代码如下:

  1. before_P_data = func(before_P_ID)
  2. data_c_c['before_P_xVelocity'] = [before_P_data[0]]
  3. data_c_c['before_P_yVelocity'] = [before_P_data[1]]
  4. data_c_c['before_P_xAcceleration'] = [before_P_data[2]]
  5. data_c_c['before_P_yAcceleration'] = [before_P_data[3]]
  • 数据储存

每一个小数据集生成一个csv文件,命名为数据集+编号。结果示意如下: 

    

  

#表示车辆数据缺失,或则主车在数据集中对应的前后车ID为0。

若有疑问,需完整代码或有交通数据处理需求欢迎VX探讨:A2528945820

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/花生_TL007/article/detail/700594
推荐阅读
相关标签
  

闽ICP备14008679号