TTC.go 1.3 KB

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