TTC.go 1.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455
  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. for _, obj := range data.Objs {
  33. if math.Abs(float64(obj.Y)) <= 2 && obj.X >= 6 && param.VelocityXOfCicvLocation > 0.5 {
  34. ttc := -((float64(obj.X) - 4) / (float64(obj.Vxrel) + 0.001))
  35. fmt.Println("TTC值为:", ttc)
  36. if ttc >= 0 && ttc <= 3 {
  37. return "TTC"
  38. }
  39. }
  40. }
  41. return ""
  42. }
  43. // DegreesToRadians 计算角度转弧度
  44. func DegreesToRadians(degrees float64) float64 {
  45. return degrees * math.Pi / 180.0
  46. }