LingxinMeng 1 year ago
parent
commit
69db6a185e

+ 4 - 0
aarch64/pjisuv/master/config/master_trigger_config.go

@@ -160,6 +160,10 @@ var (
 	TopicOfDataRead = "/data_read"
 	RuleOfDataRead  []func(data *pjisuv_msgs.Retrieval) string
 
+	//37
+	TopicOfPjiGps = "/pji_gps"
+	RuleOfPjiGps  []func(data *pjisuv_msgs.PerceptionLocalization) string
+
 	LabelMapTriggerId sync.Map
 )
 

+ 26 - 0
aarch64/pjisuv/master/service/produce_window.go

@@ -1012,6 +1012,32 @@ func PrepareTimeWindowProducerQueue() {
 				},
 			})
 		}
+		// 37
+		if topic == masterConfig.TopicOfPjiGps && len(masterConfig.RuleOfPjiGps) > 0 {
+			subscribers[i], err = goroslib.NewSubscriber(goroslib.SubscriberConf{
+				Node:  commonConfig.RosNode,
+				Topic: topic,
+				Callback: func(data *pjisuv_msgs.PerceptionLocalization) {
+					subscribersTimeMutexes[i].Lock()
+					if time.Since(subscribersTimes[i]).Seconds() > 1 {
+						subscribersMutexes[i].Lock()
+						faultHappenTime := util.GetNowTimeCustom()   // 获取当前故障发生时间
+						lastTimeWindow := entity.GetLastTimeWindow() // 获取最后一个时间窗口
+						var faultLabel string
+						for _, f := range masterConfig.RuleOfPjiGps {
+							faultLabel = f(data)
+							if faultLabel != "" {
+								saveTimeWindow(faultLabel, faultHappenTime, lastTimeWindow)
+								subscribersTimes[i] = time.Now()
+								break
+							}
+						}
+						subscribersMutexes[i].Unlock()
+					}
+					subscribersTimeMutexes[i].Unlock()
+				},
+			})
+		}
 
 		if err != nil {
 			c_log.GlobalLogger.Info("创建订阅者报错:", err)

+ 9 - 0
aarch64/topic-echo/main/main.go

@@ -418,6 +418,15 @@ func main() {
 					fmt.Println("收到话题", topic, "的数据", data)
 				}})
 		}
+		//37
+		if topic == pjisuvConfig.TopicOfPjiGps {
+			_, _ = goroslib.NewSubscriber(goroslib.SubscriberConf{
+				Node:  rosNode,
+				Topic: topic,
+				Callback: func(data *pjisuv_msgs.PerceptionLocalization) {
+					fmt.Println("收到话题", topic, "的数据", data)
+				}})
+		}
 	}
 
 	TopicOfNodeFaultInfo := "/nodefault_info"