package main import ( "cicv-data-closedloop/pjisuv_msgs" "fmt" "math" "sync" ) /* def callback_tpperception(data): global obj_dic obj_list=data.objs for obj in obj_list: if obj.x>=5 and abs(obj.y)<=10: # 根据这个条件过滤一遍目标物 , 用于前车切入切出判别 if obj.id not in obj_dic: obj_dic[obj.id]=[] obj_dic[obj.id].append(obj.y) if abs(obj.y)<=2 and obj.x>=6: # 根据这个条件过滤一遍目标物 , 用于计算TTC TTC=-(obj.x-4)/(obj.vxrel+0.0001) if 0<=TTC<=3: event_label='TTC' print(event_label) break */ func Topic() string { return "/tpperception" } // 禁止存在下划线_ func Label() string { return "TTC" } func Rule(shareVars *sync.Map, data *pjisuv_msgs.PerceptionObjects) string { defer func() { if r := recover(); r != nil { fmt.Println("Recovered from panic:", r) } }() velocityXOfCicvLocation, ok := shareVars.Load("VelocityXOfCicvLocation") OutsideWorkshopFlag, ok1 := shareVars.Load("OutsideWorkshopFlag") OutsideWorkshopFlag = OutsideWorkshopFlag.(bool) if ok && ok1 { value := velocityXOfCicvLocation.(float64) for _, obj := range data.Objs { if math.Abs(float64(obj.Y)) <= 2 && obj.X >= 6 && value > 0.5 { ttc := -((float64(obj.X) - 4) / (float64(obj.Vxrel) + 0.001)) if ttc >= 0 && ttc <= 3 && OutsideWorkshopFlag == true { return Label() } } } } return "" }