LingxinMeng 10 ヶ月 前
コミット
b191410766

+ 10 - 4
aarch64/pjisuv/master/config/trigger_init.go

@@ -159,12 +159,18 @@ func InitTriggerConfig() {
 			}
 			RuleOfCicvAmrTrajectory = append(RuleOfCicvAmrTrajectory, f)
 		} else if TopicOfCicvLocation == topic2 { //12
-			f, ok := rule.(func(data *pjisuv_msgs.PerceptionLocalization, param entity.PjisuvParam) string)
-			if ok != true {
-				c_log.GlobalLogger.Error("插件", triggerLocalPath, "中的Topic方法必须是(func(data *pjisuv_msgs.PerceptionLocalization, param entity.PjisuvParam) string):", err)
+			f1, ok1 := rule.(func(data *pjisuv_msgs.PerceptionLocalization) string)
+			if ok1 {
+				RuleOfCicvLocation1 = append(RuleOfCicvLocation1, f1)
+			} else {
+				f2, ok2 := rule.(func(data *pjisuv_msgs.PerceptionLocalization, param entity.PjisuvParam) string)
+				if ok2 {
+					RuleOfCicvLocation2 = append(RuleOfCicvLocation2, f2)
+				}
+				c_log.GlobalLogger.Error("插件", triggerLocalPath, "中的Rule方法参数格式错误:", err)
 				continue
 			}
-			RuleOfCicvLocation = append(RuleOfCicvLocation, f)
+
 		} else if TopicOfCloudClusters == topic2 { //13
 			f, ok := rule.(func(data *pjisuv_msgs.AutowareCloudClusterArray) string)
 			if ok != true {

+ 2 - 1
aarch64/pjisuv/master/config/trigger_var.go

@@ -63,7 +63,8 @@ var (
 
 	//12
 	TopicOfCicvLocation = "/cicv_location"
-	RuleOfCicvLocation  []func(data *pjisuv_msgs.PerceptionLocalization, param pjisuv_param.PjisuvParam) string
+	RuleOfCicvLocation1 []func(data *pjisuv_msgs.PerceptionLocalization) string
+	RuleOfCicvLocation2 []func(data *pjisuv_msgs.PerceptionLocalization, param pjisuv_param.PjisuvParam) string
 
 	//13
 	TopicOfCloudClusters = "/cloud_clusters"

+ 19 - 7
aarch64/pjisuv/master/service/produce_window.go

@@ -379,7 +379,7 @@ func PrepareTimeWindowProducerQueue() {
 		}
 
 		// 12
-		if topic == masterConfig.TopicOfCicvLocation && len(masterConfig.RuleOfCicvLocation) > 0 {
+		if topic == masterConfig.TopicOfCicvLocation && (len(masterConfig.RuleOfCicvLocation1) > 0 || len(masterConfig.RuleOfCicvLocation2) > 0) {
 			subscribers[i], err = goroslib.NewSubscriber(goroslib.SubscriberConf{
 				Node:  commonConfig.RosNode,
 				Topic: topic,
@@ -402,12 +402,24 @@ func PrepareTimeWindowProducerQueue() {
 						subscribersMutexes[i].Lock()
 						faultHappenTime := util.GetNowTimeCustom()         // 获取当前故障发生时间
 						lastTimeWindow := commonEntity.GetLastTimeWindow() // 获取最后一个时间窗口
-						var faultLabel string
-						for _, f := range masterConfig.RuleOfCicvLocation {
-							faultLabel = f(data, pjisuvParam)
-							if faultLabel != "" {
-								saveTimeWindow(faultLabel, faultHappenTime, lastTimeWindow)
-								break
+						faultLabel := ""
+						if len(masterConfig.RuleOfCicvLocation1) > 0 {
+							for _, f := range masterConfig.RuleOfCicvLocation1 {
+								faultLabel = f(data)
+								if faultLabel != "" {
+									saveTimeWindow(faultLabel, faultHappenTime, lastTimeWindow)
+									break
+								}
+							}
+						}
+
+						if faultLabel == "" && len(masterConfig.RuleOfCicvLocation2) > 0 {
+							for _, f := range masterConfig.RuleOfCicvLocation2 {
+								faultLabel = f(data, pjisuvParam)
+								if faultLabel != "" {
+									saveTimeWindow(faultLabel, faultHappenTime, lastTimeWindow)
+									break
+								}
 							}
 						}
 						subscribersMutexes[i].Unlock()