12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364 |
- package main
- import (
- "cicv-data-closedloop/pjisuv_msgs"
- "fmt"
- "math"
- "sync"
- )
- func Topic() string {
- return "/tpperception"
- }
- // 禁止存在下划线_
- func Label() string {
- return "CloseTargetDisappears"
- }
- func IsDisappears(PreCloseTargetSlice []uint32, perceptionslice []uint32) bool {
- flag := false
- if len(PreCloseTargetSlice) > 0 {
- lable1:
- for i := 0; i <= len(PreCloseTargetSlice)-1; i++ {
- PreID := PreCloseTargetSlice[i]
- for _, perceptionID := range perceptionslice {
- if PreID == perceptionID {
- continue lable1
- }
- }
- //fmt.Println("CloseTargetDisappears")
- return true
- }
- }
- return flag
- }
- func Rule(shareVars *sync.Map, data *pjisuv_msgs.PerceptionObjects) string {
- defer func() {
- if r := recover(); r != nil {
- fmt.Println("Recovered from panic:", r)
- }
- }()
- PreCloseTargetSlice, ok := shareVars.Load("PreCloseTargetSlice")
- OutsideWorkshopFlag, ok3 := shareVars.Load("OutsideWorkshopFlag")
- if ok && ok3 && OutsideWorkshopFlag.(bool) {
- NowCloseTargetSlice := []uint32{}
- perceptionslice := []uint32{}
- for _, obj := range data.Objs {
- perceptionslice = append(perceptionslice, obj.Id)
- if math.Abs(float64(obj.X)) <= 20 && math.Abs(float64(obj.Y)) <= 10 {
- NowCloseTargetSlice = append(NowCloseTargetSlice, obj.Id)
- }
- }
- if IsDisappears(PreCloseTargetSlice.([]uint32), perceptionslice) {
- eventLabel := "CloseTargetDisappears"
- fmt.Println(eventLabel)
- PreCloseTargetSlice = NowCloseTargetSlice
- shareVars.Store("PreCloseTargetSlice", PreCloseTargetSlice)
- return Label()
- }
- PreCloseTargetSlice = NowCloseTargetSlice
- shareVars.Store("PreCloseTargetSlice", PreCloseTargetSlice)
- }
- return ""
- }
|