metric_user_safeTime_CustomTTC.py 1.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869
  1. """自定义TTC指标评测脚本示例
  2. 此脚本实现了一个自定义的TTC(Time To Collision)指标评测逻辑,并包含图表数据生成功能
  3. """
  4. from typing import Dict, Any
  5. import math
  6. from modules.lib.score import Score
  7. import logging
  8. import inspect
  9. from pathlib import Path
  10. def evaluate(data) -> Dict[str, Any]:
  11. """评测自定义TTC指标
  12. Args:
  13. data: 评测数据,包含场景、轨迹等信息
  14. config: 指标配置,包含阈值等参数
  15. Returns:
  16. 评测结果,包含分数、详情等和图表数据
  17. """
  18. try:
  19. # 计算最小TTC值
  20. min_ttc = calculate_min_ttc(data.ego_data)
  21. return min_ttc
  22. except Exception as e:
  23. logging.error(f"评测CustomTTC指标失败: {str(e)}")
  24. # 发生异常时返回错误信息
  25. return {
  26. "details": {
  27. "error": str(e)
  28. }
  29. }
  30. def calculate_min_ttc(data):
  31. """计算最小TTC值
  32. Args:
  33. data: 轨迹数据列表
  34. Returns:
  35. 最小TTC值
  36. """
  37. # 这里是计算TTC的具体逻辑
  38. # 实际应用中,应根据轨迹数据计算车辆之间的TTC
  39. # 以下是一个简化的示例
  40. if data is None:
  41. raise ValueError("输入数据不能为空")
  42. # 初始化为一个较大的值
  43. min_ttc = float('inf')
  44. # 假设trajectories是一个包含多个时间点的列表
  45. # 每个时间点包含ego车辆和其他车辆的位置、速度等信息
  46. # 这里应该实现实际的TTC计算逻辑
  47. # 示例:遍历所有时间点,计算ego车辆与其他车辆的TTC
  48. # 临时使用固定值代替实际计算
  49. min_ttc = 1.0
  50. return {"CustomTTC":min_ttc}