12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455 |
- package main
- import (
- "cicv-data-closedloop/pjisuv_msgs"
- "fmt"
- "math"
- "sync"
- )
- // 该程序存在的意义是为cicv_ticker中的FrontCarSideBySide触发器提供countSideBySide的全局变量
- func Topic() string {
- return "/tpperception"
- }
- func Rule(shareVars *sync.Map, data *pjisuv_msgs.PerceptionObjects) string {
- defer func() {
- if r := recover(); r != nil {
- fmt.Println("Recovered from panic:", r)
- }
- }()
- count1 := 0
- AbsSpeed, ok := shareVars.Load("AbsSpeed")
- OutsideWorkshopFlag, ok1 := shareVars.Load("OutsideWorkshopFlag")
- OutsideWorkshopFlag = OutsideWorkshopFlag.(bool)
- countSideBySide, ok2 := shareVars.Load("CountSideBySide")
- if ok && ok1 && ok2 {
- lable1:
- for _, obj := range data.Objs {
- if !(obj.Type != 2 || obj.Type != 3 || obj.Type != 4 || !(obj.X >= 3 && obj.X <= 17) || math.Abs(float64(obj.Y)) > 10) {
- //fmt.Println("here")
- obj1ID := obj.Id
- obj1x := obj.X
- obj1y := obj.Y
- //fmt.Println(obj1ID, obj1x, obj1y)
- for _, obj1 := range data.Objs {
- if !(obj1.Type != 2 || obj1.Type != 3 || obj1.Type != 4 || !(obj1.X >= 3 && obj1.X <= 17) || math.Abs(float64(obj1.Y)) > 10) {
- obj2ID := obj1.Id
- obj2x := obj1.X
- obj2y := obj1.Y
- if obj2ID != obj1ID && math.Abs(float64(obj2x-obj1x)) <= 2.2 && math.Abs(float64(obj2y-obj1y)) >= 2 && math.Abs(float64(obj2y-obj1y)) <= 4.0 && AbsSpeed.(float64) > 2 {
- count1 = countSideBySide.(int) + 1
- shareVars.Store("countSideBySide", count1)
- break lable1
- }
- }
- }
- }
- }
- }
- return ""
- }
|