package main import ( "cicv-data-closedloop/pjisuv_msgs" "fmt" "math" "sync" ) func Topic() string { return "/tpperception" } // Label todo 禁止存在下划线_ func Label() string { return "TrafficCongestion" } func Rule(shareVars *sync.Map, data *pjisuv_msgs.PerceptionObjects) string { NumTargets := 0 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 { if velocityXOfCicvLocation.(float64) < 3.5 && len(data.Objs) > 3 { for _, obj := range data.Objs { if (obj.Type == 2 || obj.Type == 3) && math.Abs(float64(obj.Y)) <= 2.5 && math.Abs(float64(obj.X)) <= 20 && obj.Speed <= 4 { NumTargets++ } } if NumTargets >= 3 && OutsideWorkshopFlag == true { return Label() } } } return "" }