|
@@ -0,0 +1,55 @@
|
|
|
+package main
|
|
|
+
|
|
|
+import (
|
|
|
+ "cicv-data-closedloop/pjisuv_msgs"
|
|
|
+ "cicv-data-closedloop/pjisuv_param"
|
|
|
+ "fmt"
|
|
|
+ "time"
|
|
|
+)
|
|
|
+
|
|
|
+var (
|
|
|
+ StartTime int64
|
|
|
+ IsStopped bool
|
|
|
+)
|
|
|
+
|
|
|
+func Topic() string {
|
|
|
+ return "/cicv_location"
|
|
|
+}
|
|
|
+
|
|
|
+// Label todo 禁止存在下划线_
|
|
|
+func Label() string {
|
|
|
+ return "AbnormalParking"
|
|
|
+}
|
|
|
+
|
|
|
+func Rule(data *pjisuv_msgs.PerceptionLocalization, param *pjisuv_param.PjisuvParam) string {
|
|
|
+ defer func() {
|
|
|
+ if r := recover(); r != nil {
|
|
|
+ fmt.Println("Recovered from panic:", r)
|
|
|
+ }
|
|
|
+ }()
|
|
|
+ if param.AutomodeOfPjVehicleFdbPub == 1 && param.DecisionType != 4 {
|
|
|
+ if data.VelocityX < 0.5 {
|
|
|
+ // 如果之前没有记录开始时间,记录当前时间
|
|
|
+ if StartTime == 0 {
|
|
|
+ StartTime = time.Now().Unix()
|
|
|
+ }
|
|
|
+ // 判断是否持续超过 50s
|
|
|
+ if time.Now().Unix()-StartTime > 5 {
|
|
|
+ if !IsStopped {
|
|
|
+ eventLabel := "AbnormalParking"
|
|
|
+ fmt.Println(eventLabel)
|
|
|
+ IsStopped = true
|
|
|
+ return "AbnormalParking"
|
|
|
+ }
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ // 如果速度大于 0.1,重置开始时间和停止标志
|
|
|
+ StartTime = 0
|
|
|
+ IsStopped = false
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ StartTime = 0
|
|
|
+ IsStopped = false
|
|
|
+ }
|
|
|
+ return ""
|
|
|
+}
|