TTC.go 1.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
  1. package main
  2. import (
  3. "cicv-data-closedloop/common/entity"
  4. "cicv-data-closedloop/pjisuv_msgs"
  5. "math"
  6. )
  7. /*
  8. def callback_tpperception(data):
  9. global obj_dic
  10. obj_list=data.objs
  11. for obj in obj_list:
  12. if obj.x>=5 and abs(obj.y)<=10: # 根据这个条件过滤一遍目标物 , 用于前车切入切出判别
  13. if obj.id not in obj_dic:
  14. obj_dic[obj.id]=[]
  15. obj_dic[obj.id].append(obj.y)
  16. if abs(obj.y)<=2 and obj.x>=6: # 根据这个条件过滤一遍目标物 , 用于计算TTC
  17. TTC=-(obj.x-4)/(obj.vxrel+0.0001)
  18. if 0<=TTC<=3:
  19. event_label='TTC'
  20. print(event_label)
  21. break
  22. */
  23. func Topic() string {
  24. return "/tpperception"
  25. }
  26. // Label todo 禁止存在下划线_
  27. func Label() string {
  28. return "TTC"
  29. }
  30. func Rule(data *pjisuv_msgs.PerceptionObjects, param entity.PjisuvParam) string {
  31. for _, obj := range data.Objs {
  32. if math.Abs(float64(obj.Y)) <= 2 && obj.X >= 6 {
  33. ttc := -((float64(obj.X) - 4) / (float64(obj.Vxrel) + 0.001))
  34. if ttc >= 0 && ttc <= 3 {
  35. return "TTC"
  36. }
  37. }
  38. }
  39. return ""
  40. }
  41. // DegreesToRadians 计算角度转弧度
  42. func DegreesToRadians(degrees float64) float64 {
  43. return degrees * math.Pi / 180.0
  44. }