cicv 2 月之前
父節點
當前提交
9b3a5cc44e

+ 2354 - 0
aarch64/pjibot_clean/master/package/config/bak.txt

@@ -0,0 +1,2354 @@
+func InitTriggerConfig() {
+	config.OssMutex.Lock()
+	defer config.OssMutex.Unlock()
+	triggerLocalPathsMapTriggerId := make(map[string]string)
+	c_log.GlobalLogger.Info("主节点加载触发器插件 - 开始。")
+	// 1 获取数采任务的触发器列表
+	cloudTriggers := &config.PlatformConfig.TaskTriggers
+	// 2 获取本地触发器列表(触发器目录的一级子目录为【触发器ID_触发器Label】)
+	localTriggerIds := util.GetFirstLevelSubdirectories(config.CloudConfig.TriggersDir)
+	// 3 对比触发器列表,本地没有的则下载
+	for _, trigger := range *cloudTriggers {
+		id := util.ToString(trigger.TriggerId)
+		hasIdDir := slices.Contains(localTriggerIds, id) // 改成了 slices 工具库
+		triggerLocalDir := config.CloudConfig.TriggersDir + id + "/"
+		hasLabelSo, soPaths := util.CheckSoFilesInDirectory(triggerLocalDir)
+		var triggerLocalPath string
+		if hasIdDir && hasLabelSo { // 已存在的触发器需要判断是否大小一致
+			triggerLocalPath = soPaths[0]
+			ossSize, _ := util.GetOSSFileSize(config.OssBucket, trigger.TriggerScriptPath)
+			localSize, _ := util.GetFileSize(triggerLocalPath)
+			if ossSize == localSize {
+				c_log.GlobalLogger.Info("触发器插件 ", triggerLocalPath, " 存在且与云端触发器大小一致。")
+				triggerLocalPathsMapTriggerId[triggerLocalPath] = id
+				continue
+			}
+		}
+		label := util.GetFileNameWithoutExtension(config.CloudConfig.TriggersDir + trigger.TriggerScriptPath)
+		triggerLocalPath = config.CloudConfig.TriggersDir + id + "/" + label + ".so"
+		c_log.GlobalLogger.Info("开始下载触发器插件从 ", trigger.TriggerScriptPath, " 到 ", triggerLocalPath)
+		_ = util.CreateParentDir(triggerLocalPath)
+		for {
+			if err := config.OssBucket.GetObjectToFile(trigger.TriggerScriptPath, triggerLocalPath); err != nil {
+				c_log.GlobalLogger.Error("下载触发器插件失败,再次尝试:", err)
+				continue
+			}
+			break
+		}
+		triggerLocalPathsMapTriggerId[triggerLocalPath] = id
+	}
+
+	success := 0
+	// 加载所有触发器的文件
+	for triggerLocalPath, triggerId := range triggerLocalPathsMapTriggerId {
+		// 载入插件到数组
+		open, err := plugin.Open(triggerLocalPath)
+		if err != nil {
+			c_log.GlobalLogger.Error("加载本地插件", triggerLocalPath, "失败。", err)
+			continue
+		}
+		topic0, err := open.Lookup("Topic")
+		if err != nil {
+			c_log.GlobalLogger.Error("加载本地插件", triggerLocalPath, "中的Topic方法失败。", err)
+			continue
+		}
+		topic1, ok := topic0.(func() string)
+		if ok != true {
+			c_log.GlobalLogger.Error("插件", triggerLocalPath, "中的Topic方法必须是(func() string):", err)
+			continue
+		}
+		topic2 := topic1()
+		rule, err := open.Lookup("Rule")
+		if err != nil {
+			c_log.GlobalLogger.Error("加载本地插件", triggerLocalPath, "中的Rule方法失败。", err)
+			continue
+		}
+
+		if Topic1 == topic2 { // 1
+			if f, ok1 := rule.(func(data *std_msgs.Int16MultiArray) string); ok1 {
+				Rule1 = append(Rule1, f)
+				goto JudgeDone
+			}
+			log(triggerLocalPath)
+			continue
+
+		} else if Topic2 == topic2 { // 2
+			if f, ok1 := rule.(func(data *geometry_msgs.PoseStamped) string); ok1 {
+				Rule2 = append(Rule2, f)
+				goto JudgeDone
+			}
+			log(triggerLocalPath)
+			continue
+
+		} else if Topic3 == topic2 { // 3
+			if f, ok1 := rule.(func(data *dynamic_reconfigure.ConfigDescription) string); ok1 {
+				Rule3 = append(Rule3, f)
+				goto JudgeDone
+			}
+			log(triggerLocalPath)
+			continue
+
+		} else if Topic4 == topic2 { // 4
+			if f, ok1 := rule.(func(data *dynamic_reconfigure.Config) string); ok1 {
+				Rule4 = append(Rule4, f)
+				goto JudgeDone
+			}
+			log(triggerLocalPath)
+			continue
+
+		} else if Topic5 == topic2 { // 5
+			if f, ok1 := rule.(func(data *std_msgs.String) string); ok1 {
+				Rule5 = append(Rule5, f)
+				goto JudgeDone
+			}
+			log(triggerLocalPath)
+			continue
+
+		} else if Topic6 == topic2 { // 6
+			if f, ok1 := rule.(func(data *geometry_msgs.PoseWithCovarianceStamped) string); ok1 {
+				Rule6 = append(Rule6, f)
+				goto JudgeDone
+			}
+			log(triggerLocalPath)
+			continue
+
+		} else if Topic7 == topic2 { // 7
+			if f, ok1 := rule.(func(data *std_msgs.String) string); ok1 {
+				Rule7 = append(Rule7, f)
+				goto JudgeDone
+			}
+			log(triggerLocalPath)
+			continue
+
+		} else if Topic8 == topic2 { // 8
+			if f, ok1 := rule.(func(data *std_msgs.String) string); ok1 {
+				Rule8 = append(Rule8, f)
+				goto JudgeDone
+			}
+			log(triggerLocalPath)
+			continue
+
+		} else if Topic9 == topic2 { // 9
+			if f, ok1 := rule.(func(data *std_msgs.Bool) string); ok1 {
+				Rule9 = append(Rule9, f)
+				goto JudgeDone
+			}
+			log(triggerLocalPath)
+			continue
+
+		} else if Topic10 == topic2 { // 10
+			if f, ok1 := rule.(func(data *std_msgs.Int8) string); ok1 {
+				Rule10 = append(Rule10, f)
+				goto JudgeDone
+			}
+			log(triggerLocalPath)
+			continue
+
+		} else if Topic11 == topic2 { // 11
+			if f, ok1 := rule.(func(data *std_msgs.Int8) string); ok1 {
+				Rule11 = append(Rule11, f)
+				goto JudgeDone
+			}
+			log(triggerLocalPath)
+			continue
+
+		} else if Topic12 == topic2 { // 12
+			if f, ok1 := rule.(func(data *sensor_msgs.PointCloud2) string); ok1 {
+				Rule12 = append(Rule12, f)
+				goto JudgeDone
+			}
+			log(triggerLocalPath)
+			continue
+
+		} else if Topic13 == topic2 { // 13
+			if f, ok1 := rule.(func(data *sensor_msgs.BatteryState) string); ok1 {
+				Rule13 = append(Rule13, f)
+				goto JudgeDone
+			}
+			log(triggerLocalPath)
+			continue
+
+		} else if Topic14 == topic2 { // 14
+			if f, ok1 := rule.(func(data *std_msgs.Int16) string); ok1 {
+				Rule14 = append(Rule14, f)
+				goto JudgeDone
+			}
+			log(triggerLocalPath)
+			continue
+
+		} else if Topic15 == topic2 { // 15
+			if f, ok1 := rule.(func(data *visualization_msgs.Marker) string); ok1 {
+				Rule15 = append(Rule15, f)
+				goto JudgeDone
+			}
+			log(triggerLocalPath)
+			continue
+
+		} else if Topic16 == topic2 { // 16
+			if f, ok1 := rule.(func(data *std_msgs.String) string); ok1 {
+				Rule16 = append(Rule16, f)
+				goto JudgeDone
+			}
+			log(triggerLocalPath)
+			continue
+
+		} else if Topic17 == topic2 { // 17
+			if f, ok1 := rule.(func(data *sensor_msgs.CameraInfo) string); ok1 {
+				Rule17 = append(Rule17, f)
+				goto JudgeDone
+			}
+			log(triggerLocalPath)
+			continue
+
+		} else if Topic18 == topic2 { // 18
+			if f, ok1 := rule.(func(data *sensor_msgs.Image) string); ok1 {
+				Rule18 = append(Rule18, f)
+				goto JudgeDone
+			}
+			log(triggerLocalPath)
+			continue
+
+		} else if Topic19 == topic2 { // 19
+			if f, ok1 := rule.(func(data *sensor_msgs.CompressedImage) string); ok1 {
+				Rule19 = append(Rule19, f)
+				goto JudgeDone
+			}
+			log(triggerLocalPath)
+			continue
+
+		} else if Topic20 == topic2 { // 20
+			if f, ok1 := rule.(func(data *dynamic_reconfigure.ConfigDescription) string); ok1 {
+				Rule20 = append(Rule20, f)
+				goto JudgeDone
+			}
+			log(triggerLocalPath)
+			continue
+
+		} else if Topic21 == topic2 { // 21
+			if f, ok1 := rule.(func(data *dynamic_reconfigure.Config) string); ok1 {
+				Rule21 = append(Rule21, f)
+				goto JudgeDone
+			}
+			log(triggerLocalPath)
+			continue
+
+		} else if Topic22 == topic2 { // 22
+			if f, ok1 := rule.(func(data *sensor_msgs.CompressedImage) string); ok1 {
+				Rule22 = append(Rule22, f)
+				goto JudgeDone
+			}
+			log(triggerLocalPath)
+			continue
+
+		} else if Topic23 == topic2 { // 23
+			if f, ok1 := rule.(func(data *dynamic_reconfigure.ConfigDescription) string); ok1 {
+				Rule23 = append(Rule23, f)
+				goto JudgeDone
+			}
+			log(triggerLocalPath)
+			continue
+
+		} else if Topic24 == topic2 { // 24
+			if f, ok1 := rule.(func(data *dynamic_reconfigure.Config) string); ok1 {
+				Rule24 = append(Rule24, f)
+				goto JudgeDone
+			}
+			log(triggerLocalPath)
+			continue
+
+		} else if Topic25 == topic2 { // 25
+			if f, ok1 := rule.(func(data *theora_image_transport.Packet) string); ok1 {
+				Rule25 = append(Rule25, f)
+				goto JudgeDone
+			}
+			log(triggerLocalPath)
+			continue
+
+		} else if Topic26 == topic2 { // 26
+			if f, ok1 := rule.(func(data *dynamic_reconfigure.ConfigDescription) string); ok1 {
+				Rule26 = append(Rule26, f)
+				goto JudgeDone
+			}
+			log(triggerLocalPath)
+			continue
+
+		} else if Topic27 == topic2 { // 27
+			if f, ok1 := rule.(func(data *dynamic_reconfigure.Config) string); ok1 {
+				Rule27 = append(Rule27, f)
+				goto JudgeDone
+			}
+			log(triggerLocalPath)
+			continue
+
+		} else if Topic28 == topic2 { // 28
+			if f, ok1 := rule.(func(data *sensor_msgs.PointCloud2) string); ok1 {
+				Rule28 = append(Rule28, f)
+				goto JudgeDone
+			}
+			log(triggerLocalPath)
+			continue
+
+		} else if Topic29 == topic2 { // 29
+			if f, ok1 := rule.(func(data *sensor_msgs.CameraInfo) string); ok1 {
+				Rule29 = append(Rule29, f)
+				goto JudgeDone
+			}
+			log(triggerLocalPath)
+			continue
+
+		} else if Topic30 == topic2 { // 30
+			if f, ok1 := rule.(func(data *sensor_msgs.Image) string); ok1 {
+				Rule30 = append(Rule30, f)
+				goto JudgeDone
+			}
+			log(triggerLocalPath)
+			continue
+
+		} else if Topic31 == topic2 { // 31
+			if f, ok1 := rule.(func(data *sensor_msgs.CompressedImage) string); ok1 {
+				Rule31 = append(Rule31, f)
+				goto JudgeDone
+			}
+			log(triggerLocalPath)
+			continue
+
+		} else if Topic32 == topic2 { // 32
+			if f, ok1 := rule.(func(data *dynamic_reconfigure.ConfigDescription) string); ok1 {
+				Rule32 = append(Rule32, f)
+				goto JudgeDone
+			}
+			log(triggerLocalPath)
+			continue
+
+		} else if Topic33 == topic2 { // 33
+			if f, ok1 := rule.(func(data *dynamic_reconfigure.Config) string); ok1 {
+				Rule33 = append(Rule33, f)
+				goto JudgeDone
+			}
+			log(triggerLocalPath)
+			continue
+
+		} else if Topic34 == topic2 { // 34
+			if f, ok1 := rule.(func(data *sensor_msgs.CompressedImage) string); ok1 {
+				Rule34 = append(Rule34, f)
+				goto JudgeDone
+			}
+			log(triggerLocalPath)
+			continue
+
+		} else if Topic35 == topic2 { // 35
+			if f, ok1 := rule.(func(data *dynamic_reconfigure.ConfigDescription) string); ok1 {
+				Rule35 = append(Rule35, f)
+				goto JudgeDone
+			}
+			log(triggerLocalPath)
+			continue
+
+		} else if Topic36 == topic2 { // 36
+			if f, ok1 := rule.(func(data *dynamic_reconfigure.Config) string); ok1 {
+				Rule36 = append(Rule36, f)
+				goto JudgeDone
+			}
+			log(triggerLocalPath)
+			continue
+
+		} else if Topic37 == topic2 { // 37
+			if f, ok1 := rule.(func(data *theora_image_transport.Packet) string); ok1 {
+				Rule37 = append(Rule37, f)
+				goto JudgeDone
+			}
+			log(triggerLocalPath)
+			continue
+
+		} else if Topic38 == topic2 { // 38
+			if f, ok1 := rule.(func(data *dynamic_reconfigure.ConfigDescription) string); ok1 {
+				Rule38 = append(Rule38, f)
+				goto JudgeDone
+			}
+			log(triggerLocalPath)
+			continue
+
+		} else if Topic39 == topic2 { // 39
+			if f, ok1 := rule.(func(data *dynamic_reconfigure.Config) string); ok1 {
+				Rule39 = append(Rule39, f)
+				goto JudgeDone
+			}
+			log(triggerLocalPath)
+			continue
+
+		} else if Topic40 == topic2 { // 40
+			if f, ok1 := rule.(func(data *geometry_msgs.PoseStamped) string); ok1 {
+				Rule40 = append(Rule40, f)
+				goto JudgeDone
+			}
+			log(triggerLocalPath)
+			continue
+
+		} else if Topic41 == topic2 { // 41
+			if f, ok1 := rule.(func(data *geometry_msgs.PoseStamped) string); ok1 {
+				Rule41 = append(Rule41, f)
+				goto JudgeDone
+			}
+			log(triggerLocalPath)
+			continue
+
+		} else if Topic42 == topic2 { // 42
+			if f, ok1 := rule.(func(data *nav_msgs.Path) string); ok1 {
+				Rule42 = append(Rule42, f)
+				goto JudgeDone
+			}
+			log(triggerLocalPath)
+			continue
+
+		} else if Topic43 == topic2 { // 43
+			if f, ok1 := rule.(func(data *std_msgs.Int8) string); ok1 {
+				Rule43 = append(Rule43, f)
+				goto JudgeDone
+			}
+			log(triggerLocalPath)
+			continue
+
+		} else if Topic44 == topic2 { // 44
+			if f, ok1 := rule.(func(data *std_msgs.Bool) string); ok1 {
+				Rule44 = append(Rule44, f)
+				goto JudgeDone
+			}
+			log(triggerLocalPath)
+			continue
+
+		} else if Topic45 == topic2 { // 45
+			if f, ok1 := rule.(func(data *nav_msgs.Path) string); ok1 {
+				Rule45 = append(Rule45, f)
+				goto JudgeDone
+			}
+			log(triggerLocalPath)
+			continue
+
+		} else if Topic46 == topic2 { // 46
+			if f, ok1 := rule.(func(data *geometry_msgs.PoseStamped) string); ok1 {
+				Rule46 = append(Rule46, f)
+				goto JudgeDone
+			}
+			log(triggerLocalPath)
+			continue
+
+		} else if Topic47 == topic2 { // 47
+			if f, ok1 := rule.(func(data *geometry_msgs.PoseStamped) string); ok1 {
+				Rule47 = append(Rule47, f)
+				goto JudgeDone
+			}
+			log(triggerLocalPath)
+			continue
+
+		} else if Topic48 == topic2 { // 48
+			if f, ok1 := rule.(func(data *geometry_msgs.PoseStamped) string); ok1 {
+				Rule48 = append(Rule48, f)
+				goto JudgeDone
+			}
+			log(triggerLocalPath)
+			continue
+
+		} else if Topic49 == topic2 { // 49
+			if f, ok1 := rule.(func(data *std_msgs.String) string); ok1 {
+				Rule49 = append(Rule49, f)
+				goto JudgeDone
+			}
+			log(triggerLocalPath)
+			continue
+
+		} else if Topic50 == topic2 { // 50
+			if f, ok1 := rule.(func(data *visualization_msgs.MarkerArray) string); ok1 {
+				Rule50 = append(Rule50, f)
+				goto JudgeDone
+			}
+			log(triggerLocalPath)
+			continue
+
+		} else if Topic51 == topic2 { // 51
+			if f, ok1 := rule.(func(data *geometry_msgs.PolygonStamped) string); ok1 {
+				Rule51 = append(Rule51, f)
+				goto JudgeDone
+			}
+			log(triggerLocalPath)
+			continue
+
+		} else if Topic52 == topic2 { // 52
+			if f, ok1 := rule.(func(data *nav_msgs.OccupancyGrid) string); ok1 {
+				Rule52 = append(Rule52, f)
+				goto JudgeDone
+			}
+			log(triggerLocalPath)
+			continue
+
+		} else if Topic53 == topic2 { // 53
+			if f, ok1 := rule.(func(data *nav_msgs.OccupancyGrid) string); ok1 {
+				Rule53 = append(Rule53, f)
+				goto JudgeDone
+			}
+			log(triggerLocalPath)
+			continue
+
+		} else if Topic54 == topic2 { // 54
+			if f, ok1 := rule.(func(data *nav_msgs.OccupancyGrid) string); ok1 {
+				Rule54 = append(Rule54, f)
+				goto JudgeDone
+			}
+			log(triggerLocalPath)
+			continue
+
+		} else if Topic55 == topic2 { // 55
+			if f, ok1 := rule.(func(data *std_msgs.Float32) string); ok1 {
+				Rule55 = append(Rule55, f)
+				goto JudgeDone
+			}
+			log(triggerLocalPath)
+			continue
+
+		} else if Topic56 == topic2 { // 56
+			if f, ok1 := rule.(func(data *std_msgs.Int32) string); ok1 {
+				Rule56 = append(Rule56, f)
+				goto JudgeDone
+			}
+			log(triggerLocalPath)
+			continue
+
+		} else if Topic57 == topic2 { // 57
+			if f, ok1 := rule.(func(data *nav_msgs.Path) string); ok1 {
+				Rule57 = append(Rule57, f)
+				goto JudgeDone
+			}
+			log(triggerLocalPath)
+			continue
+
+		} else if Topic58 == topic2 { // 58
+			if f, ok1 := rule.(func(data *clean_msg.ErrorInfo) string); ok1 {
+				Rule58 = append(Rule58, f)
+				goto JudgeDone
+			}
+			log(triggerLocalPath)
+			continue
+
+		} else if Topic59 == topic2 { // 59
+			if f, ok1 := rule.(func(data *nav_msgs.OccupancyGrid) string); ok1 {
+				Rule59 = append(Rule59, f)
+				goto JudgeDone
+			}
+			log(triggerLocalPath)
+			continue
+
+		} else if Topic60 == topic2 { // 60
+			if f, ok1 := rule.(func(data *nav_msgs.OccupancyGrid) string); ok1 {
+				Rule60 = append(Rule60, f)
+				goto JudgeDone
+			}
+			log(triggerLocalPath)
+			continue
+
+		} else if Topic61 == topic2 { // 61
+			if f, ok1 := rule.(func(data *nav_msgs.OccupancyGrid) string); ok1 {
+				Rule61 = append(Rule61, f)
+				goto JudgeDone
+			}
+			log(triggerLocalPath)
+			continue
+
+		} else if Topic62 == topic2 { // 62
+			if f, ok1 := rule.(func(data *nav_msgs.OccupancyGrid) string); ok1 {
+				Rule62 = append(Rule62, f)
+				goto JudgeDone
+			}
+			log(triggerLocalPath)
+			continue
+
+		} else if Topic63 == topic2 { // 63
+			if f, ok1 := rule.(func(data *nav_msgs.OccupancyGrid) string); ok1 {
+				Rule63 = append(Rule63, f)
+				goto JudgeDone
+			}
+			log(triggerLocalPath)
+			continue
+
+		} else if Topic64 == topic2 { // 64
+			if f, ok1 := rule.(func(data *nav_msgs.OccupancyGrid) string); ok1 {
+				Rule64 = append(Rule64, f)
+				goto JudgeDone
+			}
+			log(triggerLocalPath)
+			continue
+
+		} else if Topic65 == topic2 { // 65
+			if f, ok1 := rule.(func(data *std_msgs.String) string); ok1 {
+				Rule65 = append(Rule65, f)
+				goto JudgeDone
+			}
+			log(triggerLocalPath)
+			continue
+
+		} else if Topic66 == topic2 { // 66
+			if f, ok1 := rule.(func(data *std_msgs.Bool) string); ok1 {
+				Rule66 = append(Rule66, f)
+				goto JudgeDone
+			}
+			log(triggerLocalPath)
+			continue
+
+		} else if Topic67 == topic2 { // 67
+			if f, ok1 := rule.(func(data *std_msgs.Bool) string); ok1 {
+				Rule67 = append(Rule67, f)
+				goto JudgeDone
+			}
+			log(triggerLocalPath)
+			continue
+
+		} else if Topic68 == topic2 { // 68
+			if f, ok1 := rule.(func(data *geometry_msgs.PolygonStamped) string); ok1 {
+				Rule68 = append(Rule68, f)
+				goto JudgeDone
+			}
+			log(triggerLocalPath)
+			continue
+
+		} else if Topic69 == topic2 { // 69
+			if f, ok1 := rule.(func(data *geometry_msgs.PointStamped) string); ok1 {
+				Rule69 = append(Rule69, f)
+				goto JudgeDone
+			}
+			log(triggerLocalPath)
+			continue
+
+		} else if Topic70 == topic2 { // 70
+			if f, ok1 := rule.(func(data *std_msgs.String) string); ok1 {
+				Rule70 = append(Rule70, f)
+				goto JudgeDone
+			}
+			log(triggerLocalPath)
+			continue
+
+		} else if Topic71 == topic2 { // 71
+			if f, ok1 := rule.(func(data *geometry_msgs.Twist) string); ok1 {
+				Rule71 = append(Rule71, f)
+				goto JudgeDone
+			}
+			log(triggerLocalPath)
+			continue
+
+		} else if Topic72 == topic2 { // 72
+			if f, ok1 := rule.(func(data *geometry_msgs.Twist) string); ok1 {
+				Rule72 = append(Rule72, f)
+				goto JudgeDone
+			}
+			log(triggerLocalPath)
+			continue
+
+		} else if Topic73 == topic2 { // 73
+			if f, ok1 := rule.(func(data *nav_msgs.Path) string); ok1 {
+				Rule73 = append(Rule73, f)
+				goto JudgeDone
+			}
+			log(triggerLocalPath)
+			continue
+
+		} else if Topic74 == topic2 { // 74
+			if f, ok1 := rule.(func(data *common_msgs.CreateMapInfo) string); ok1 {
+				Rule74 = append(Rule74, f)
+				goto JudgeDone
+			}
+			log(triggerLocalPath)
+			continue
+
+		} else if Topic75 == topic2 { // 75
+			if f, ok1 := rule.(func(data *geometry_msgs.Twist) string); ok1 {
+				Rule75 = append(Rule75, f)
+				goto JudgeDone
+			}
+			log(triggerLocalPath)
+			continue
+
+		} else if Topic76 == topic2 { // 76
+			if f, ok1 := rule.(func(data *common_msgs.SensorStatus) string); ok1 {
+				Rule76 = append(Rule76, f)
+				goto JudgeDone
+			}
+			log(triggerLocalPath)
+			continue
+
+		} else if Topic77 == topic2 { // 77
+			if f, ok1 := rule.(func(data *geometry_msgs.PoseArray) string); ok1 {
+				Rule77 = append(Rule77, f)
+				goto JudgeDone
+			}
+			log(triggerLocalPath)
+			continue
+
+		} else if Topic78 == topic2 { // 78
+			if f, ok1 := rule.(func(data *nav_msgs.Path) string); ok1 {
+				Rule78 = append(Rule78, f)
+				goto JudgeDone
+			}
+			log(triggerLocalPath)
+			continue
+
+		} else if Topic79 == topic2 { // 79
+			if f, ok1 := rule.(func(data *common_msgs.IdentifierObjsInfo) string); ok1 {
+				Rule79 = append(Rule79, f)
+				goto JudgeDone
+			}
+			log(triggerLocalPath)
+			continue
+
+		} else if Topic80 == topic2 { // 80
+			if f, ok1 := rule.(func(data *common_msgs.McuDiagnostic) string); ok1 {
+				Rule80 = append(Rule80, f)
+				goto JudgeDone
+			}
+			log(triggerLocalPath)
+			continue
+
+		} else if Topic81 == topic2 { // 81
+			if f, ok1 := rule.(func(data *diagnostic_msgs.DiagnosticArray) string); ok1 {
+				Rule81 = append(Rule81, f)
+				goto JudgeDone
+			}
+			log(triggerLocalPath)
+			continue
+
+		} else if Topic82 == topic2 { // 82
+			if f, ok1 := rule.(func(data *std_msgs.Int8) string); ok1 {
+				Rule82 = append(Rule82, f)
+				goto JudgeDone
+			}
+			log(triggerLocalPath)
+			continue
+
+		} else if Topic83 == topic2 { // 83
+			if f, ok1 := rule.(func(data *std_msgs.Int16) string); ok1 {
+				Rule83 = append(Rule83, f)
+				goto JudgeDone
+			}
+			log(triggerLocalPath)
+			continue
+
+		} else if Topic84 == topic2 { // 84
+			if f, ok1 := rule.(func(data *geometry_msgs.Vector3Stamped) string); ok1 {
+				Rule84 = append(Rule84, f)
+				goto JudgeDone
+			}
+			log(triggerLocalPath)
+			continue
+
+		} else if Topic85 == topic2 { // 85
+			if f, ok1 := rule.(func(data *sensor_msgs.LaserScan) string); ok1 {
+				Rule85 = append(Rule85, f)
+				goto JudgeDone
+			}
+			log(triggerLocalPath)
+			continue
+
+		} else if Topic86 == topic2 { // 86
+			if f, ok1 := rule.(func(data *sensor_msgs.PointCloud2) string); ok1 {
+				Rule86 = append(Rule86, f)
+				goto JudgeDone
+			}
+			log(triggerLocalPath)
+			continue
+
+		} else if Topic87 == topic2 { // 87
+			if f, ok1 := rule.(func(data *std_msgs.String) string); ok1 {
+				Rule87 = append(Rule87, f)
+				goto JudgeDone
+			}
+			log(triggerLocalPath)
+			continue
+
+		} else if Topic88 == topic2 { // 88
+			if f, ok1 := rule.(func(data *std_msgs.String) string); ok1 {
+				Rule88 = append(Rule88, f)
+				goto JudgeDone
+			}
+			log(triggerLocalPath)
+			continue
+
+		} else if Topic89 == topic2 { // 89
+			if f, ok1 := rule.(func(data *std_msgs.String) string); ok1 {
+				Rule89 = append(Rule89, f)
+				goto JudgeDone
+			}
+			log(triggerLocalPath)
+			continue
+
+		} else if Topic90 == topic2 { // 90
+			if f, ok1 := rule.(func(data *std_msgs.Int32) string); ok1 {
+				Rule90 = append(Rule90, f)
+				goto JudgeDone
+			}
+			log(triggerLocalPath)
+			continue
+
+		} else if Topic91 == topic2 { // 91
+			if f, ok1 := rule.(func(data *common_msgs.TaskInfo) string); ok1 {
+				Rule91 = append(Rule91, f)
+				goto JudgeDone
+			}
+			log(triggerLocalPath)
+			continue
+
+		} else if Topic92 == topic2 { // 92
+			if f, ok1 := rule.(func(data *common_msgs.MapInfo) string); ok1 {
+				Rule92 = append(Rule92, f)
+				goto JudgeDone
+			}
+			log(triggerLocalPath)
+			continue
+
+		} else if Topic93 == topic2 { // 93
+			if f, ok1 := rule.(func(data *nav_msgs.Path) string); ok1 {
+				Rule93 = append(Rule93, f)
+				goto JudgeDone
+			}
+			log(triggerLocalPath)
+			continue
+
+		} else if Topic94 == topic2 { // 94
+			if f, ok1 := rule.(func(data *common_msgs.VideoStream) string); ok1 {
+				Rule94 = append(Rule94, f)
+				goto JudgeDone
+			}
+			log(triggerLocalPath)
+			continue
+
+		} else if Topic95 == topic2 { // 95
+			if f, ok1 := rule.(func(data *sensor_msgs.PointCloud2) string); ok1 {
+				Rule95 = append(Rule95, f)
+				goto JudgeDone
+			}
+			log(triggerLocalPath)
+			continue
+
+		} else if Topic96 == topic2 { // 96
+			if f, ok1 := rule.(func(data *nav_msgs.Path) string); ok1 {
+				Rule96 = append(Rule96, f)
+				goto JudgeDone
+			}
+			log(triggerLocalPath)
+			continue
+
+		} else if Topic97 == topic2 { // 97
+			if f, ok1 := rule.(func(data *sensor_msgs.PointCloud2) string); ok1 {
+				Rule97 = append(Rule97, f)
+				goto JudgeDone
+			}
+			log(triggerLocalPath)
+			continue
+
+		} else if Topic98 == topic2 { // 98
+			if f, ok1 := rule.(func(data *sensor_msgs.PointCloud2) string); ok1 {
+				Rule98 = append(Rule98, f)
+				goto JudgeDone
+			}
+			log(triggerLocalPath)
+			continue
+
+		} else if Topic99 == topic2 { // 99
+			if f, ok1 := rule.(func(data *sensor_msgs.PointCloud2) string); ok1 {
+				Rule99 = append(Rule99, f)
+				goto JudgeDone
+			}
+			log(triggerLocalPath)
+			continue
+
+		} else if Topic100 == topic2 { // 100
+			if f, ok1 := rule.(func(data *geometry_msgs.PointStamped) string); ok1 {
+				Rule100 = append(Rule100, f)
+				goto JudgeDone
+			}
+			log(triggerLocalPath)
+			continue
+
+		} else if Topic101 == topic2 { // 101
+			if f, ok1 := rule.(func(data *nav_msgs.Path) string); ok1 {
+				Rule101 = append(Rule101, f)
+				goto JudgeDone
+			}
+			log(triggerLocalPath)
+			continue
+
+		} else if Topic102 == topic2 { // 102
+			if f, ok1 := rule.(func(data *geometry_msgs.PoseStamped) string); ok1 {
+				Rule102 = append(Rule102, f)
+				goto JudgeDone
+			}
+			log(triggerLocalPath)
+			continue
+
+		} else if Topic103 == topic2 { // 103
+			if f, ok1 := rule.(func(data *geometry_msgs.PoseWithCovarianceStamped) string); ok1 {
+				Rule103 = append(Rule103, f)
+				goto JudgeDone
+			}
+			log(triggerLocalPath)
+			continue
+
+		} else if Topic104 == topic2 { // 104
+			if f, ok1 := rule.(func(data *geometry_msgs.Pose) string); ok1 {
+				Rule104 = append(Rule104, f)
+				goto JudgeDone
+			}
+			log(triggerLocalPath)
+			continue
+
+		} else if Topic105 == topic2 { // 105
+			if f, ok1 := rule.(func(data *std_msgs.String) string); ok1 {
+				Rule105 = append(Rule105, f)
+				goto JudgeDone
+			}
+			log(triggerLocalPath)
+			continue
+
+		} else if Topic106 == topic2 { // 106
+			if f, ok1 := rule.(func(data *std_msgs.String) string); ok1 {
+				Rule106 = append(Rule106, f)
+				goto JudgeDone
+			}
+			log(triggerLocalPath)
+			continue
+
+		} else if Topic107 == topic2 { // 107
+			if f, ok1 := rule.(func(data *std_msgs.String) string); ok1 {
+				Rule107 = append(Rule107, f)
+				goto JudgeDone
+			}
+			log(triggerLocalPath)
+			continue
+
+		} else if Topic108 == topic2 { // 108
+			if f, ok1 := rule.(func(data *std_msgs.String) string); ok1 {
+				Rule108 = append(Rule108, f)
+				goto JudgeDone
+			}
+			log(triggerLocalPath)
+			continue
+
+		} else if Topic109 == topic2 { // 109
+			if f, ok1 := rule.(func(data *std_msgs.Float64) string); ok1 {
+				Rule109 = append(Rule109, f)
+				goto JudgeDone
+			}
+			log(triggerLocalPath)
+			continue
+
+		} else if Topic110 == topic2 { // 110
+			if f, ok1 := rule.(func(data *std_msgs.String) string); ok1 {
+				Rule110 = append(Rule110, f)
+				goto JudgeDone
+			}
+			log(triggerLocalPath)
+			continue
+
+		} else if Topic111 == topic2 { // 111
+			if f, ok1 := rule.(func(data *std_msgs.String) string); ok1 {
+				Rule111 = append(Rule111, f)
+				goto JudgeDone
+			}
+			log(triggerLocalPath)
+			continue
+
+		} else if Topic112 == topic2 { // 112
+			if f, ok1 := rule.(func(data *sensor_msgs.Imu) string); ok1 {
+				Rule112 = append(Rule112, f)
+				goto JudgeDone
+			}
+			log(triggerLocalPath)
+			continue
+
+		} else if Topic113 == topic2 { // 113
+			if f, ok1 := rule.(func(data *std_msgs.String) string); ok1 {
+				Rule113 = append(Rule113, f)
+				goto JudgeDone
+			}
+			log(triggerLocalPath)
+			continue
+
+		} else if Topic114 == topic2 { // 114
+			if f, ok1 := rule.(func(data *std_msgs.Int8) string); ok1 {
+				Rule114 = append(Rule114, f)
+				goto JudgeDone
+			}
+			log(triggerLocalPath)
+			continue
+
+		} else if Topic115 == topic2 { // 115
+			if f, ok1 := rule.(func(data *std_msgs.Int16) string); ok1 {
+				Rule115 = append(Rule115, f)
+				goto JudgeDone
+			}
+			log(triggerLocalPath)
+			continue
+
+		} else if Topic116 == topic2 { // 116
+			if f, ok1 := rule.(func(data *std_msgs.String) string); ok1 {
+				Rule116 = append(Rule116, f)
+				goto JudgeDone
+			}
+			log(triggerLocalPath)
+			continue
+
+		} else if Topic117 == topic2 { // 117
+			if f, ok1 := rule.(func(data *std_msgs.String) string); ok1 {
+				Rule117 = append(Rule117, f)
+				goto JudgeDone
+			}
+			log(triggerLocalPath)
+			continue
+
+		} else if Topic118 == topic2 { // 118
+			if f, ok1 := rule.(func(data *geometry_msgs.PoseWithCovarianceStamped) string); ok1 {
+				Rule118 = append(Rule118, f)
+				goto JudgeDone
+			}
+			log(triggerLocalPath)
+			continue
+
+		} else if Topic119 == topic2 { // 119
+			if f, ok1 := rule.(func(data *sensor_msgs.JointState) string); ok1 {
+				Rule119 = append(Rule119, f)
+				goto JudgeDone
+			}
+			log(triggerLocalPath)
+			continue
+
+		} else if Topic120 == topic2 { // 120
+			if f, ok1 := rule.(func(data *std_msgs.String) string); ok1 {
+				Rule120 = append(Rule120, f)
+				goto JudgeDone
+			}
+			log(triggerLocalPath)
+			continue
+
+		} else if Topic121 == topic2 { // 121
+			if f, ok1 := rule.(func(data *cartographer_ros_msgs.LandmarkList) string); ok1 {
+				Rule121 = append(Rule121, f)
+				goto JudgeDone
+			}
+			log(triggerLocalPath)
+			continue
+
+		} else if Topic122 == topic2 { // 122
+			if f, ok1 := rule.(func(data *nav_msgs.Odometry) string); ok1 {
+				Rule122 = append(Rule122, f)
+				goto JudgeDone
+			}
+			log(triggerLocalPath)
+			continue
+
+		} else if Topic123 == topic2 { // 123
+			if f, ok1 := rule.(func(data *sensor_msgs.LaserScan) string); ok1 {
+				Rule123 = append(Rule123, f)
+				goto JudgeDone
+			}
+			log(triggerLocalPath)
+			continue
+
+		} else if Topic124 == topic2 { // 124
+			if f, ok1 := rule.(func(data *std_msgs.String) string); ok1 {
+				Rule124 = append(Rule124, f)
+				goto JudgeDone
+			}
+			log(triggerLocalPath)
+			continue
+
+		} else if Topic125 == topic2 { // 125
+			if f, ok1 := rule.(func(data *nav_msgs.Path) string); ok1 {
+				Rule125 = append(Rule125, f)
+				goto JudgeDone
+			}
+			log(triggerLocalPath)
+			continue
+
+		} else if Topic126 == topic2 { // 126
+			if f, ok1 := rule.(func(data *std_msgs.String) string); ok1 {
+				Rule126 = append(Rule126, f)
+				goto JudgeDone
+			}
+			log(triggerLocalPath)
+			continue
+
+		} else if Topic127 == topic2 { // 127
+			if f, ok1 := rule.(func(data *std_msgs.String) string); ok1 {
+				Rule127 = append(Rule127, f)
+				goto JudgeDone
+			}
+			log(triggerLocalPath)
+			continue
+
+		} else if Topic128 == topic2 { // 128
+			if f, ok1 := rule.(func(data *std_msgs.String) string); ok1 {
+				Rule128 = append(Rule128, f)
+				goto JudgeDone
+			}
+			log(triggerLocalPath)
+			continue
+
+		} else if Topic129 == topic2 { // 129
+			if f, ok1 := rule.(func(data *std_msgs.String) string); ok1 {
+				Rule129 = append(Rule129, f)
+				goto JudgeDone
+			}
+			log(triggerLocalPath)
+			continue
+
+		} else if Topic130 == topic2 { // 130
+			if f, ok1 := rule.(func(data *geometry_msgs.PoseWithCovarianceStamped) string); ok1 {
+				Rule130 = append(Rule130, f)
+				goto JudgeDone
+			}
+			log(triggerLocalPath)
+			continue
+
+		} else if Topic131 == topic2 { // 131
+			if f, ok1 := rule.(func(data *std_msgs.String) string); ok1 {
+				Rule131 = append(Rule131, f)
+				goto JudgeDone
+			}
+			log(triggerLocalPath)
+			continue
+
+		} else if Topic132 == topic2 { // 132
+			if f, ok1 := rule.(func(data *std_msgs.String) string); ok1 {
+				Rule132 = append(Rule132, f)
+				goto JudgeDone
+			}
+			log(triggerLocalPath)
+			continue
+
+		} else if Topic133 == topic2 { // 133
+			if f, ok1 := rule.(func(data *common_msgs.LocateInfo) string); ok1 {
+				Rule133 = append(Rule133, f)
+				goto JudgeDone
+			}
+			log(triggerLocalPath)
+			continue
+
+		} else if Topic134 == topic2 { // 134
+			if f, ok1 := rule.(func(data *std_msgs.Bool) string); ok1 {
+				Rule134 = append(Rule134, f)
+				goto JudgeDone
+			}
+			log(triggerLocalPath)
+			continue
+
+		} else if Topic135 == topic2 { // 135
+			if f, ok1 := rule.(func(data *std_msgs.Float64MultiArray) string); ok1 {
+				Rule135 = append(Rule135, f)
+				goto JudgeDone
+			}
+			log(triggerLocalPath)
+			continue
+
+		} else if Topic136 == topic2 { // 136
+			if f, ok1 := rule.(func(data *std_msgs.String) string); ok1 {
+				Rule136 = append(Rule136, f)
+				goto JudgeDone
+			}
+			log(triggerLocalPath)
+			continue
+
+		} else if Topic137 == topic2 { // 137
+			if f, ok1 := rule.(func(data *std_msgs.String) string); ok1 {
+				Rule137 = append(Rule137, f)
+				goto JudgeDone
+			}
+			log(triggerLocalPath)
+			continue
+
+		} else if Topic138 == topic2 { // 138
+			if f, ok1 := rule.(func(data *nav_msgs.OccupancyGrid) string); ok1 {
+				Rule138 = append(Rule138, f)
+				goto JudgeDone
+			}
+			log(triggerLocalPath)
+			continue
+
+		} else if Topic139 == topic2 { // 139
+			if f, ok1 := rule.(func(data *std_msgs.String) string); ok1 {
+				Rule139 = append(Rule139, f)
+				goto JudgeDone
+			}
+			log(triggerLocalPath)
+			continue
+
+		} else if Topic140 == topic2 { // 140
+			if f, ok1 := rule.(func(data *nav_msgs.Path) string); ok1 {
+				Rule140 = append(Rule140, f)
+				goto JudgeDone
+			}
+			log(triggerLocalPath)
+			continue
+
+		} else if Topic141 == topic2 { // 141
+			if f, ok1 := rule.(func(data *std_msgs.String) string); ok1 {
+				Rule141 = append(Rule141, f)
+				goto JudgeDone
+			}
+			log(triggerLocalPath)
+			continue
+
+		} else if Topic142 == topic2 { // 142
+			if f, ok1 := rule.(func(data *std_msgs.String) string); ok1 {
+				Rule142 = append(Rule142, f)
+				goto JudgeDone
+			}
+			log(triggerLocalPath)
+			continue
+
+		} else if Topic143 == topic2 { // 143
+			if f, ok1 := rule.(func(data *nav_msgs.MapMetaData) string); ok1 {
+				Rule143 = append(Rule143, f)
+				goto JudgeDone
+			}
+			log(triggerLocalPath)
+			continue
+
+		} else if Topic144 == topic2 { // 144
+			if f, ok1 := rule.(func(data *nav_msgs.Path) string); ok1 {
+				Rule144 = append(Rule144, f)
+				goto JudgeDone
+			}
+			log(triggerLocalPath)
+			continue
+
+		} else if Topic145 == topic2 { // 145
+			if f, ok1 := rule.(func(data *geometry_msgs.PoseStamped) string); ok1 {
+				Rule145 = append(Rule145, f)
+				goto JudgeDone
+			}
+			log(triggerLocalPath)
+			continue
+
+		} else if Topic146 == topic2 { // 146
+			if f, ok1 := rule.(func(data *nav_msgs.OccupancyGrid) string); ok1 {
+				Rule146 = append(Rule146, f)
+				goto JudgeDone
+			}
+			log(triggerLocalPath)
+			continue
+
+		} else if Topic147 == topic2 { // 147
+			if f, ok1 := rule.(func(data *nav_msgs.OccupancyGrid) string); ok1 {
+				Rule147 = append(Rule147, f)
+				goto JudgeDone
+			}
+			log(triggerLocalPath)
+			continue
+
+		} else if Topic148 == topic2 { // 148
+			if f, ok1 := rule.(func(data *std_msgs.String) string); ok1 {
+				Rule148 = append(Rule148, f)
+				goto JudgeDone
+			}
+			log(triggerLocalPath)
+			continue
+
+		} else if Topic149 == topic2 { // 149
+			if f, ok1 := rule.(func(data *std_msgs.String) string); ok1 {
+				Rule149 = append(Rule149, f)
+				goto JudgeDone
+			}
+			log(triggerLocalPath)
+			continue
+
+		} else if Topic150 == topic2 { // 150
+			if f, ok1 := rule.(func(data *std_msgs.String) string); ok1 {
+				Rule150 = append(Rule150, f)
+				goto JudgeDone
+			}
+			log(triggerLocalPath)
+			continue
+
+		} else if Topic151 == topic2 { // 151
+			if f, ok1 := rule.(func(data *std_msgs.String) string); ok1 {
+				Rule151 = append(Rule151, f)
+				goto JudgeDone
+			}
+			log(triggerLocalPath)
+			continue
+
+		} else if Topic152 == topic2 { // 152
+			if f, ok1 := rule.(func(data *std_msgs.Bool) string); ok1 {
+				Rule152 = append(Rule152, f)
+				goto JudgeDone
+			}
+			log(triggerLocalPath)
+			continue
+
+		} else if Topic153 == topic2 { // 153
+			if f, ok1 := rule.(func(data *sensor_msgs.CameraInfo) string); ok1 {
+				Rule153 = append(Rule153, f)
+				goto JudgeDone
+			}
+			log(triggerLocalPath)
+			continue
+
+		} else if Topic154 == topic2 { // 154
+			if f, ok1 := rule.(func(data *sensor_msgs.Image) string); ok1 {
+				Rule154 = append(Rule154, f)
+				goto JudgeDone
+			}
+			log(triggerLocalPath)
+			continue
+
+		} else if Topic155 == topic2 { // 155
+			if f, ok1 := rule.(func(data *sensor_msgs.CompressedImage) string); ok1 {
+				Rule155 = append(Rule155, f)
+				goto JudgeDone
+			}
+			log(triggerLocalPath)
+			continue
+
+		} else if Topic156 == topic2 { // 156
+			if f, ok1 := rule.(func(data *dynamic_reconfigure.ConfigDescription) string); ok1 {
+				Rule156 = append(Rule156, f)
+				goto JudgeDone
+			}
+			log(triggerLocalPath)
+			continue
+
+		} else if Topic157 == topic2 { // 157
+			if f, ok1 := rule.(func(data *dynamic_reconfigure.Config) string); ok1 {
+				Rule157 = append(Rule157, f)
+				goto JudgeDone
+			}
+			log(triggerLocalPath)
+			continue
+
+		} else if Topic158 == topic2 { // 158
+			if f, ok1 := rule.(func(data *sensor_msgs.CompressedImage) string); ok1 {
+				Rule158 = append(Rule158, f)
+				goto JudgeDone
+			}
+			log(triggerLocalPath)
+			continue
+
+		} else if Topic159 == topic2 { // 159
+			if f, ok1 := rule.(func(data *dynamic_reconfigure.ConfigDescription) string); ok1 {
+				Rule159 = append(Rule159, f)
+				goto JudgeDone
+			}
+			log(triggerLocalPath)
+			continue
+
+		} else if Topic160 == topic2 { // 160
+			if f, ok1 := rule.(func(data *dynamic_reconfigure.Config) string); ok1 {
+				Rule160 = append(Rule160, f)
+				goto JudgeDone
+			}
+			log(triggerLocalPath)
+			continue
+
+		} else if Topic161 == topic2 { // 161
+			if f, ok1 := rule.(func(data *theora_image_transport.Packet) string); ok1 {
+				Rule161 = append(Rule161, f)
+				goto JudgeDone
+			}
+			log(triggerLocalPath)
+			continue
+
+		} else if Topic162 == topic2 { // 162
+			if f, ok1 := rule.(func(data *dynamic_reconfigure.ConfigDescription) string); ok1 {
+				Rule162 = append(Rule162, f)
+				goto JudgeDone
+			}
+			log(triggerLocalPath)
+			continue
+
+		} else if Topic163 == topic2 { // 163
+			if f, ok1 := rule.(func(data *dynamic_reconfigure.Config) string); ok1 {
+				Rule163 = append(Rule163, f)
+				goto JudgeDone
+			}
+			log(triggerLocalPath)
+			continue
+
+		} else if Topic164 == topic2 { // 164
+			if f, ok1 := rule.(func(data *sensor_msgs.CameraInfo) string); ok1 {
+				Rule164 = append(Rule164, f)
+				goto JudgeDone
+			}
+			log(triggerLocalPath)
+			continue
+
+		} else if Topic165 == topic2 { // 165
+			if f, ok1 := rule.(func(data *sensor_msgs.Image) string); ok1 {
+				Rule165 = append(Rule165, f)
+				goto JudgeDone
+			}
+			log(triggerLocalPath)
+			continue
+
+		} else if Topic166 == topic2 { // 166
+			if f, ok1 := rule.(func(data *sensor_msgs.CompressedImage) string); ok1 {
+				Rule166 = append(Rule166, f)
+				goto JudgeDone
+			}
+			log(triggerLocalPath)
+			continue
+
+		} else if Topic167 == topic2 { // 167
+			if f, ok1 := rule.(func(data *dynamic_reconfigure.ConfigDescription) string); ok1 {
+				Rule167 = append(Rule167, f)
+				goto JudgeDone
+			}
+			log(triggerLocalPath)
+			continue
+
+		} else if Topic168 == topic2 { // 168
+			if f, ok1 := rule.(func(data *dynamic_reconfigure.Config) string); ok1 {
+				Rule168 = append(Rule168, f)
+				goto JudgeDone
+			}
+			log(triggerLocalPath)
+			continue
+
+		} else if Topic169 == topic2 { // 169
+			if f, ok1 := rule.(func(data *sensor_msgs.CompressedImage) string); ok1 {
+				Rule169 = append(Rule169, f)
+				goto JudgeDone
+			}
+			log(triggerLocalPath)
+			continue
+
+		} else if Topic170 == topic2 { // 170
+			if f, ok1 := rule.(func(data *dynamic_reconfigure.ConfigDescription) string); ok1 {
+				Rule170 = append(Rule170, f)
+				goto JudgeDone
+			}
+			log(triggerLocalPath)
+			continue
+
+		} else if Topic171 == topic2 { // 171
+			if f, ok1 := rule.(func(data *dynamic_reconfigure.Config) string); ok1 {
+				Rule171 = append(Rule171, f)
+				goto JudgeDone
+			}
+			log(triggerLocalPath)
+			continue
+
+		} else if Topic172 == topic2 { // 172
+			if f, ok1 := rule.(func(data *theora_image_transport.Packet) string); ok1 {
+				Rule172 = append(Rule172, f)
+				goto JudgeDone
+			}
+			log(triggerLocalPath)
+			continue
+
+		} else if Topic173 == topic2 { // 173
+			if f, ok1 := rule.(func(data *dynamic_reconfigure.ConfigDescription) string); ok1 {
+				Rule173 = append(Rule173, f)
+				goto JudgeDone
+			}
+			log(triggerLocalPath)
+			continue
+
+		} else if Topic174 == topic2 { // 174
+			if f, ok1 := rule.(func(data *dynamic_reconfigure.Config) string); ok1 {
+				Rule174 = append(Rule174, f)
+				goto JudgeDone
+			}
+			log(triggerLocalPath)
+			continue
+
+		} else if Topic175 == topic2 { // 175
+			if f, ok1 := rule.(func(data *sensor_msgs.PointCloud2) string); ok1 {
+				Rule175 = append(Rule175, f)
+				goto JudgeDone
+			}
+			log(triggerLocalPath)
+			continue
+
+		} else if Topic176 == topic2 { // 176
+			if f, ok1 := rule.(func(data *sensor_msgs.CameraInfo) string); ok1 {
+				Rule176 = append(Rule176, f)
+				goto JudgeDone
+			}
+			log(triggerLocalPath)
+			continue
+
+		} else if Topic177 == topic2 { // 177
+			if f, ok1 := rule.(func(data *sensor_msgs.Image) string); ok1 {
+				Rule177 = append(Rule177, f)
+				goto JudgeDone
+			}
+			log(triggerLocalPath)
+			continue
+
+		} else if Topic178 == topic2 { // 178
+			if f, ok1 := rule.(func(data *sensor_msgs.CompressedImage) string); ok1 {
+				Rule178 = append(Rule178, f)
+				goto JudgeDone
+			}
+			log(triggerLocalPath)
+			continue
+
+		} else if Topic179 == topic2 { // 179
+			if f, ok1 := rule.(func(data *dynamic_reconfigure.ConfigDescription) string); ok1 {
+				Rule179 = append(Rule179, f)
+				goto JudgeDone
+			}
+			log(triggerLocalPath)
+			continue
+
+		} else if Topic180 == topic2 { // 180
+			if f, ok1 := rule.(func(data *dynamic_reconfigure.Config) string); ok1 {
+				Rule180 = append(Rule180, f)
+				goto JudgeDone
+			}
+			log(triggerLocalPath)
+			continue
+
+		} else if Topic181 == topic2 { // 181
+			if f, ok1 := rule.(func(data *sensor_msgs.CompressedImage) string); ok1 {
+				Rule181 = append(Rule181, f)
+				goto JudgeDone
+			}
+			log(triggerLocalPath)
+			continue
+
+		} else if Topic182 == topic2 { // 182
+			if f, ok1 := rule.(func(data *dynamic_reconfigure.ConfigDescription) string); ok1 {
+				Rule182 = append(Rule182, f)
+				goto JudgeDone
+			}
+			log(triggerLocalPath)
+			continue
+
+		} else if Topic183 == topic2 { // 183
+			if f, ok1 := rule.(func(data *dynamic_reconfigure.Config) string); ok1 {
+				Rule183 = append(Rule183, f)
+				goto JudgeDone
+			}
+			log(triggerLocalPath)
+			continue
+
+		} else if Topic184 == topic2 { // 184
+			if f, ok1 := rule.(func(data *theora_image_transport.Packet) string); ok1 {
+				Rule184 = append(Rule184, f)
+				goto JudgeDone
+			}
+			log(triggerLocalPath)
+			continue
+
+		} else if Topic185 == topic2 { // 185
+			if f, ok1 := rule.(func(data *dynamic_reconfigure.ConfigDescription) string); ok1 {
+				Rule185 = append(Rule185, f)
+				goto JudgeDone
+			}
+			log(triggerLocalPath)
+			continue
+
+		} else if Topic186 == topic2 { // 186
+			if f, ok1 := rule.(func(data *dynamic_reconfigure.Config) string); ok1 {
+				Rule186 = append(Rule186, f)
+				goto JudgeDone
+			}
+			log(triggerLocalPath)
+			continue
+
+		} else if Topic187 == topic2 { // 187
+			if f, ok1 := rule.(func(data *sensor_msgs.CameraInfo) string); ok1 {
+				Rule187 = append(Rule187, f)
+				goto JudgeDone
+			}
+			log(triggerLocalPath)
+			continue
+
+		} else if Topic188 == topic2 { // 188
+			if f, ok1 := rule.(func(data *sensor_msgs.Image) string); ok1 {
+				Rule188 = append(Rule188, f)
+				goto JudgeDone
+			}
+			log(triggerLocalPath)
+			continue
+
+		} else if Topic189 == topic2 { // 189
+			if f, ok1 := rule.(func(data *sensor_msgs.CompressedImage) string); ok1 {
+				Rule189 = append(Rule189, f)
+				goto JudgeDone
+			}
+			log(triggerLocalPath)
+			continue
+
+		} else if Topic190 == topic2 { // 190
+			if f, ok1 := rule.(func(data *dynamic_reconfigure.ConfigDescription) string); ok1 {
+				Rule190 = append(Rule190, f)
+				goto JudgeDone
+			}
+			log(triggerLocalPath)
+			continue
+
+		} else if Topic191 == topic2 { // 191
+			if f, ok1 := rule.(func(data *dynamic_reconfigure.Config) string); ok1 {
+				Rule191 = append(Rule191, f)
+				goto JudgeDone
+			}
+			log(triggerLocalPath)
+			continue
+
+		} else if Topic192 == topic2 { // 192
+			if f, ok1 := rule.(func(data *sensor_msgs.CompressedImage) string); ok1 {
+				Rule192 = append(Rule192, f)
+				goto JudgeDone
+			}
+			log(triggerLocalPath)
+			continue
+
+		} else if Topic193 == topic2 { // 193
+			if f, ok1 := rule.(func(data *dynamic_reconfigure.ConfigDescription) string); ok1 {
+				Rule193 = append(Rule193, f)
+				goto JudgeDone
+			}
+			log(triggerLocalPath)
+			continue
+
+		} else if Topic194 == topic2 { // 194
+			if f, ok1 := rule.(func(data *dynamic_reconfigure.Config) string); ok1 {
+				Rule194 = append(Rule194, f)
+				goto JudgeDone
+			}
+			log(triggerLocalPath)
+			continue
+
+		} else if Topic195 == topic2 { // 195
+			if f, ok1 := rule.(func(data *theora_image_transport.Packet) string); ok1 {
+				Rule195 = append(Rule195, f)
+				goto JudgeDone
+			}
+			log(triggerLocalPath)
+			continue
+
+		} else if Topic196 == topic2 { // 196
+			if f, ok1 := rule.(func(data *dynamic_reconfigure.ConfigDescription) string); ok1 {
+				Rule196 = append(Rule196, f)
+				goto JudgeDone
+			}
+			log(triggerLocalPath)
+			continue
+
+		} else if Topic197 == topic2 { // 197
+			if f, ok1 := rule.(func(data *dynamic_reconfigure.Config) string); ok1 {
+				Rule197 = append(Rule197, f)
+				goto JudgeDone
+			}
+			log(triggerLocalPath)
+			continue
+
+		} else if Topic198 == topic2 { // 198
+			if f, ok1 := rule.(func(data *sensor_msgs.PointCloud2) string); ok1 {
+				Rule198 = append(Rule198, f)
+				goto JudgeDone
+			}
+			log(triggerLocalPath)
+			continue
+
+		} else if Topic199 == topic2 { // 199
+			if f, ok1 := rule.(func(data *geometry_msgs.PoseStamped) string); ok1 {
+				Rule199 = append(Rule199, f)
+				goto JudgeDone
+			}
+			log(triggerLocalPath)
+			continue
+
+		} else if Topic200 == topic2 { // 200
+			if f, ok1 := rule.(func(data *geometry_msgs.PoseStamped) string); ok1 {
+				Rule200 = append(Rule200, f)
+				goto JudgeDone
+			}
+			log(triggerLocalPath)
+			continue
+
+		} else if Topic201 == topic2 { // 201
+			if f, ok1 := rule.(func(data *std_msgs.UInt8) string); ok1 {
+				Rule201 = append(Rule201, f)
+				goto JudgeDone
+			}
+			log(triggerLocalPath)
+			continue
+
+		} else if Topic202 == topic2 { // 202
+			if f, ok1 := rule.(func(data *nav_msgs.Odometry) string); ok1 {
+				Rule202 = append(Rule202, f)
+				goto JudgeDone
+			}
+			log(triggerLocalPath)
+			continue
+
+		} else if Topic203 == topic2 { // 203
+			if f, ok1 := rule.(func(data *std_msgs.String) string); ok1 {
+				Rule203 = append(Rule203, f)
+				goto JudgeDone
+			}
+			log(triggerLocalPath)
+			continue
+
+		} else if Topic204 == topic2 { // 204
+			if f, ok1 := rule.(func(data *std_msgs.String) string); ok1 {
+				Rule204 = append(Rule204, f)
+				goto JudgeDone
+			}
+			log(triggerLocalPath)
+			continue
+
+		} else if Topic205 == topic2 { // 205
+			if f, ok1 := rule.(func(data *nav_msgs.Odometry) string); ok1 {
+				Rule205 = append(Rule205, f)
+				goto JudgeDone
+			}
+			log(triggerLocalPath)
+			continue
+
+		} else if Topic206 == topic2 { // 206
+			if f, ok1 := rule.(func(data *sensor_msgs.Imu) string); ok1 {
+				Rule206 = append(Rule206, f)
+				goto JudgeDone
+			}
+			log(triggerLocalPath)
+			continue
+
+		} else if Topic207 == topic2 { // 207
+			if f, ok1 := rule.(func(data *sensor_msgs.PointCloud2) string); ok1 {
+				Rule207 = append(Rule207, f)
+				goto JudgeDone
+			}
+			log(triggerLocalPath)
+			continue
+
+		} else if Topic208 == topic2 { // 208
+			if f, ok1 := rule.(func(data *geometry_msgs.PoseArray) string); ok1 {
+				Rule208 = append(Rule208, f)
+				goto JudgeDone
+			}
+			log(triggerLocalPath)
+			continue
+
+		} else if Topic209 == topic2 { // 209
+			if f, ok1 := rule.(func(data *sensor_msgs.PointCloud2) string); ok1 {
+				Rule209 = append(Rule209, f)
+				goto JudgeDone
+			}
+			log(triggerLocalPath)
+			continue
+
+		} else if Topic210 == topic2 { // 210
+			if f, ok1 := rule.(func(data *sensor_msgs.LaserScan) string); ok1 {
+				Rule210 = append(Rule210, f)
+				goto JudgeDone
+			}
+			log(triggerLocalPath)
+			continue
+
+		} else if Topic211 == topic2 { // 211
+			if f, ok1 := rule.(func(data *geometry_msgs.PoseWithCovarianceStamped) string); ok1 {
+				Rule211 = append(Rule211, f)
+				goto JudgeDone
+			}
+			log(triggerLocalPath)
+			continue
+
+		} else if Topic212 == topic2 { // 212
+			if f, ok1 := rule.(func(data *geometry_msgs.Vector3Stamped) string); ok1 {
+				Rule212 = append(Rule212, f)
+				goto JudgeDone
+			}
+			log(triggerLocalPath)
+			continue
+
+		} else if Topic213 == topic2 { // 213
+			if f, ok1 := rule.(func(data *std_msgs.String) string); ok1 {
+				Rule213 = append(Rule213, f)
+				goto JudgeDone
+			}
+			log(triggerLocalPath)
+			continue
+
+		} else if Topic214 == topic2 { // 214
+			if f, ok1 := rule.(func(data *common_msgs.FunctionAreas) string); ok1 {
+				Rule214 = append(Rule214, f)
+				goto JudgeDone
+			}
+			log(triggerLocalPath)
+			continue
+
+		} else if Topic215 == topic2 { // 215
+			if f, ok1 := rule.(func(data *std_msgs.Bool) string); ok1 {
+				Rule215 = append(Rule215, f)
+				goto JudgeDone
+			}
+			log(triggerLocalPath)
+			continue
+
+		} else if Topic216 == topic2 { // 216
+			if f, ok1 := rule.(func(data *nav_msgs.Path) string); ok1 {
+				Rule216 = append(Rule216, f)
+				goto JudgeDone
+			}
+			log(triggerLocalPath)
+			continue
+
+		} else if Topic217 == topic2 { // 217
+			if f, ok1 := rule.(func(data *std_msgs.Float64MultiArray) string); ok1 {
+				Rule217 = append(Rule217, f)
+				goto JudgeDone
+			}
+			log(triggerLocalPath)
+			continue
+
+		} else if Topic218 == topic2 { // 218
+			if f, ok1 := rule.(func(data *std_msgs.String) string); ok1 {
+				Rule218 = append(Rule218, f)
+				goto JudgeDone
+			}
+			log(triggerLocalPath)
+			continue
+
+		} else if Topic219 == topic2 { // 219
+			if f, ok1 := rule.(func(data *std_msgs.String) string); ok1 {
+				Rule219 = append(Rule219, f)
+				goto JudgeDone
+			}
+			log(triggerLocalPath)
+			continue
+
+		} else if Topic220 == topic2 { // 220
+			if f, ok1 := rule.(func(data *std_msgs.String) string); ok1 {
+				Rule220 = append(Rule220, f)
+				goto JudgeDone
+			}
+			log(triggerLocalPath)
+			continue
+
+		} else if Topic221 == topic2 { // 221
+			if f, ok1 := rule.(func(data *geometry_msgs.PoseStamped) string); ok1 {
+				Rule221 = append(Rule221, f)
+				goto JudgeDone
+			}
+			log(triggerLocalPath)
+			continue
+
+		} else if Topic222 == topic2 { // 222
+			if f, ok1 := rule.(func(data *geometry_msgs.PoseWithCovarianceStamped) string); ok1 {
+				Rule222 = append(Rule222, f)
+				goto JudgeDone
+			}
+			log(triggerLocalPath)
+			continue
+
+		} else if Topic223 == topic2 { // 223
+			if f, ok1 := rule.(func(data *std_msgs.String) string); ok1 {
+				Rule223 = append(Rule223, f)
+				goto JudgeDone
+			}
+			log(triggerLocalPath)
+			continue
+
+		} else if Topic224 == topic2 { // 224
+			if f, ok1 := rule.(func(data *std_msgs.String) string); ok1 {
+				Rule224 = append(Rule224, f)
+				goto JudgeDone
+			}
+			log(triggerLocalPath)
+			continue
+
+		} else if Topic225 == topic2 { // 225
+			if f, ok1 := rule.(func(data *localization_monitor.RobotStatus) string); ok1 {
+				Rule225 = append(Rule225, f)
+				goto JudgeDone
+			}
+			log(triggerLocalPath)
+			continue
+
+		} else if Topic226 == topic2 { // 226
+			if f, ok1 := rule.(func(data *std_msgs.Float64MultiArray) string); ok1 {
+				Rule226 = append(Rule226, f)
+				goto JudgeDone
+			}
+			log(triggerLocalPath)
+			continue
+
+		} else if Topic227 == topic2 { // 227
+			if f, ok1 := rule.(func(data *std_msgs.String) string); ok1 {
+				Rule227 = append(Rule227, f)
+				goto JudgeDone
+			}
+			log(triggerLocalPath)
+			continue
+
+		} else if Topic228 == topic2 { // 228
+			if f, ok1 := rule.(func(data *actionlib_msgs.GoalID) string); ok1 {
+				Rule228 = append(Rule228, f)
+				goto JudgeDone
+			}
+			log(triggerLocalPath)
+			continue
+
+		} else if Topic229 == topic2 { // 229
+			if f, ok1 := rule.(func(data *ipa_building_msgs.MapSegmentationActionFeedback) string); ok1 {
+				Rule229 = append(Rule229, f)
+				goto JudgeDone
+			}
+			log(triggerLocalPath)
+			continue
+
+		} else if Topic230 == topic2 { // 230
+			if f, ok1 := rule.(func(data *ipa_building_msgs.MapSegmentationActionGoal) string); ok1 {
+				Rule230 = append(Rule230, f)
+				goto JudgeDone
+			}
+			log(triggerLocalPath)
+			continue
+
+		} else if Topic231 == topic2 { // 231
+			if f, ok1 := rule.(func(data *dynamic_reconfigure.ConfigDescription) string); ok1 {
+				Rule231 = append(Rule231, f)
+				goto JudgeDone
+			}
+			log(triggerLocalPath)
+			continue
+
+		} else if Topic232 == topic2 { // 232
+			if f, ok1 := rule.(func(data *dynamic_reconfigure.Config) string); ok1 {
+				Rule232 = append(Rule232, f)
+				goto JudgeDone
+			}
+			log(triggerLocalPath)
+			continue
+
+		} else if Topic233 == topic2 { // 233
+			if f, ok1 := rule.(func(data *ipa_building_msgs.MapSegmentationActionResult) string); ok1 {
+				Rule233 = append(Rule233, f)
+				goto JudgeDone
+			}
+			log(triggerLocalPath)
+			continue
+
+		} else if Topic234 == topic2 { // 234
+			if f, ok1 := rule.(func(data *nav_msgs.OccupancyGrid) string); ok1 {
+				Rule234 = append(Rule234, f)
+				goto JudgeDone
+			}
+			log(triggerLocalPath)
+			continue
+
+		} else if Topic235 == topic2 { // 235
+			if f, ok1 := rule.(func(data *actionlib_msgs.GoalStatusArray) string); ok1 {
+				Rule235 = append(Rule235, f)
+				goto JudgeDone
+			}
+			log(triggerLocalPath)
+			continue
+
+		} else if Topic236 == topic2 { // 1
+			if f, ok1 := rule.(func(data *rosgraph_msgs.Log) string); ok1 {
+				Rule236 = append(Rule236, f)
+				goto JudgeDone
+			}
+			log(triggerLocalPath)
+			continue
+
+		} else if Topic237 == topic2 { // 2
+			if f, ok1 := rule.(func(data *rosgraph_msgs.Log) string); ok1 {
+				Rule237 = append(Rule237, f)
+				goto JudgeDone
+			}
+			log(triggerLocalPath)
+			continue
+
+		} else if Topic238 == topic2 { // 3
+			if f, ok1 := rule.(func(data *nav_msgs.Path) string); ok1 {
+				Rule238 = append(Rule238, f)
+				goto JudgeDone
+			}
+			log(triggerLocalPath)
+			continue
+
+		} else if Topic239 == topic2 { // 4
+			if f, ok1 := rule.(func(data *geometry_msgs.Vector3Stamped) string); ok1 {
+				Rule239 = append(Rule239, f)
+				goto JudgeDone
+			}
+			log(triggerLocalPath)
+			continue
+
+		} else if Topic240 == topic2 { // 5
+			if f, ok1 := rule.(func(data *sensor_msgs.LaserScan) string); ok1 {
+				Rule240 = append(Rule240, f)
+				goto JudgeDone
+			}
+			log(triggerLocalPath)
+			continue
+
+		} else if Topic241 == topic2 { // 6
+			if f, ok1 := rule.(func(data *sensor_msgs.LaserScan) string); ok1 {
+				Rule241 = append(Rule241, f)
+				goto JudgeDone
+			}
+			log(triggerLocalPath)
+			continue
+
+		} else if Topic242 == topic2 { // 7
+			if f, ok1 := rule.(func(data *sensor_msgs.LaserScan) string); ok1 {
+				Rule242 = append(Rule242, f)
+				goto JudgeDone
+			}
+			log(triggerLocalPath)
+			continue
+
+		} else if Topic243 == topic2 { // 8
+			if f, ok1 := rule.(func(data *sensor_msgs.LaserScan) string); ok1 {
+				Rule243 = append(Rule243, f)
+				goto JudgeDone
+			}
+			log(triggerLocalPath)
+			continue
+
+		} else if Topic244 == topic2 { // 9
+			if f, ok1 := rule.(func(data *sensor_msgs.LaserScan) string); ok1 {
+				Rule244 = append(Rule244, f)
+				goto JudgeDone
+			}
+			log(triggerLocalPath)
+			continue
+
+		} else if Topic245 == topic2 { // 10
+			if f, ok1 := rule.(func(data *sensor_msgs.PointCloud2) string); ok1 {
+				Rule245 = append(Rule245, f)
+				goto JudgeDone
+			}
+		log(triggerLocalPath)
+		continue
+
+	} else if Topic246 == topic2 { // 11
+		if f, ok1 := rule.(func(data *sensor_msgs.PointCloud2) string); ok1 {
+		Rule246 = append(Rule246, f)
+		goto JudgeDone
+		}
+		log(triggerLocalPath)
+		continue
+
+		} else if Topic247 == topic2 { // 12
+		if f, ok1 := rule.(func(data *visualization_msgs.MarkerArray) string); ok1 {
+		Rule247 = append(Rule247, f)
+		goto JudgeDone
+		}
+		log(triggerLocalPath)
+		continue
+
+		} else if Topic248 == topic2 { // 13
+		if f, ok1 := rule.(func(data *common_msgs.SensorTask) string); ok1 {
+		Rule248 = append(Rule248, f)
+		goto JudgeDone
+		}
+		log(triggerLocalPath)
+		continue
+
+		} else if Topic249 == topic2 { // 14
+		if f, ok1 := rule.(func(data *std_msgs.String) string); ok1 {
+		Rule249 = append(Rule249, f)
+		goto JudgeDone
+		}
+		log(triggerLocalPath)
+		continue
+
+		} else if Topic250 == topic2 { // 15
+		if f, ok1 := rule.(func(data *geometry_msgs.Vector3Stamped) string); ok1 {
+		Rule250 = append(Rule250, f)
+		goto JudgeDone
+		}
+		log(triggerLocalPath)
+		continue
+
+		} else if Topic251 == topic2 { // 16
+		if f, ok1 := rule.(func(data *common_msgs.SonarList) string); ok1 {
+		Rule251 = append(Rule251, f)
+		goto JudgeDone
+		}
+		log(triggerLocalPath)
+		continue
+
+		} else if Topic252 == topic2 { // 17
+		if f, ok1 := rule.(func(data *nav_msgs.Odometry) string); ok1 {
+		Rule252 = append(Rule252, f)
+		goto JudgeDone
+		}
+		log(triggerLocalPath)
+		continue
+
+		} else if Topic253 == topic2 { // 18
+		if f, ok1 := rule.(func(data *sensor_msgs.LaserScan) string); ok1 {
+		Rule253 = append(Rule253, f)
+		goto JudgeDone
+		}
+		log(triggerLocalPath)
+		continue
+
+		} else if Topic254 == topic2 { // 19
+		if f, ok1 := rule.(func(data *std_msgs.Bool) string); ok1 {
+		Rule254 = append(Rule254, f)
+		goto JudgeDone
+		}
+		log(triggerLocalPath)
+		continue
+
+		} else if Topic255 == topic2 { // 20
+		if f, ok1 := rule.(func(data *sensor_msgs.LaserScan) string); ok1 {
+		Rule255 = append(Rule255, f)
+		goto JudgeDone
+		}
+		log(triggerLocalPath)
+		continue
+
+		} else if Topic256 == topic2 { // 21
+		if f, ok1 := rule.(func(data *std_msgs.String) string); ok1 {
+		Rule256 = append(Rule256, f)
+		goto JudgeDone
+		}
+		log(triggerLocalPath)
+		continue
+
+		} else if Topic257 == topic2 { // 22
+		if f, ok1 := rule.(func(data *std_msgs.Bool) string); ok1 {
+		Rule257 = append(Rule257, f)
+		goto JudgeDone
+		}
+		log(triggerLocalPath)
+		continue
+
+		} else if Topic258 == topic2 { // 23
+		if f, ok1 := rule.(func(data *sensor_msgs.CameraInfo) string); ok1 {
+		Rule258 = append(Rule258, f)
+		goto JudgeDone
+		}
+		log(triggerLocalPath)
+		continue
+
+		} else if Topic259 == topic2 { // 24
+		if f, ok1 := rule.(func(data *common_msgs.SysInfo) string); ok1 {
+		Rule259 = append(Rule259, f)
+		goto JudgeDone
+		}
+		log(triggerLocalPath)
+		continue
+
+		} else if Topic260 == topic2 { // 25
+		if f, ok1 := rule.(func(data *sensor_msgs.Image) string); ok1 {
+		Rule260 = append(Rule260, f)
+		goto JudgeDone
+		}
+		log(triggerLocalPath)
+		continue
+
+		} else if Topic261 == topic2 { // 26
+		if f, ok1 := rule.(func(data *sensor_msgs.CompressedImage) string); ok1 {
+		Rule261 = append(Rule261, f)
+		goto JudgeDone
+		}
+		log(triggerLocalPath)
+		continue
+
+		} else if Topic262 == topic2 { // 27
+		if f, ok1 := rule.(func(data *dynamic_reconfigure.ConfigDescription) string); ok1 {
+		Rule262 = append(Rule262, f)
+		goto JudgeDone
+		}
+		log(triggerLocalPath)
+		continue
+
+		} else if Topic263 == topic2 { // 28
+		if f, ok1 := rule.(func(data *dynamic_reconfigure.Config) string); ok1 {
+		Rule263 = append(Rule263, f)
+		goto JudgeDone
+		}
+		log(triggerLocalPath)
+		continue
+
+		} else if Topic264 == topic2 { // 29
+		if f, ok1 := rule.(func(data *sensor_msgs.CompressedImage) string); ok1 {
+		Rule264 = append(Rule264, f)
+		goto JudgeDone
+		}
+		log(triggerLocalPath)
+		continue
+
+		} else if Topic265 == topic2 { // 30
+		if f, ok1 := rule.(func(data *dynamic_reconfigure.ConfigDescription) string); ok1 {
+		Rule265 = append(Rule265, f)
+		goto JudgeDone
+		}
+		log(triggerLocalPath)
+		continue
+
+		} else if Topic266 == topic2 { // 31
+		if f, ok1 := rule.(func(data *dynamic_reconfigure.Config) string); ok1 {
+		Rule266 = append(Rule266, f)
+		goto JudgeDone
+		}
+		log(triggerLocalPath)
+		continue
+
+		} else if Topic267 == topic2 { // 32
+		if f, ok1 := rule.(func(data *theora_image_transport.Packet) string); ok1 {
+		Rule267 = append(Rule267, f)
+		goto JudgeDone
+		}
+		log(triggerLocalPath)
+		continue
+
+		} else if Topic268 == topic2 { // 33
+		if f, ok1 := rule.(func(data *dynamic_reconfigure.ConfigDescription) string); ok1 {
+		Rule268 = append(Rule268, f)
+		goto JudgeDone
+		}
+		log(triggerLocalPath)
+		continue
+
+		} else if Topic269 == topic2 { // 34
+		if f, ok1 := rule.(func(data *dynamic_reconfigure.Config) string); ok1 {
+		Rule269 = append(Rule269, f)
+		goto JudgeDone
+		}
+		log(triggerLocalPath)
+		continue
+
+		} else if Topic270 == topic2 { // 35
+		if f, ok1 := rule.(func(data *std_msgs.Bool) string); ok1 {
+		Rule270 = append(Rule270, f)
+		goto JudgeDone
+		}
+		log(triggerLocalPath)
+		continue
+
+		} else if Topic271 == topic2 { // 36
+		if f, ok1 := rule.(func(data *geometry_msgs.PoseStamped) string); ok1 {
+		Rule271 = append(Rule271, f)
+		goto JudgeDone
+		}
+		log(triggerLocalPath)
+		continue
+
+		} else if Topic272 == topic2 { // 37
+		if f, ok1 := rule.(func(data *geometry_msgs.Vector3Stamped) string); ok1 {
+		Rule272 = append(Rule272, f)
+		goto JudgeDone
+		}
+		log(triggerLocalPath)
+		continue
+
+		} else if Topic273 == topic2 { // 38
+		if f, ok1 := rule.(func(data *common_msgs.TaskFeedbackInfo) string); ok1 {
+		Rule273 = append(Rule273, f)
+		goto JudgeDone
+		}
+		log(triggerLocalPath)
+		continue
+
+		} else if Topic274 == topic2 { // 39
+		if f, ok1 := rule.(func(data *common_msgs.Points) string); ok1 {
+		Rule274 = append(Rule274, f)
+		goto JudgeDone
+		}
+		log(triggerLocalPath)
+		continue
+
+		} else if Topic275 == topic2 { // 40
+		if f, ok1 := rule.(func(data *tf2_msgs.TFMessage) string); ok1 {
+		Rule275 = append(Rule275, f)
+		goto JudgeDone
+		}
+		log(triggerLocalPath)
+		continue
+
+		} else if Topic276 == topic2 { // 41
+		if f, ok1 := rule.(func(data *std_msgs.String) string); ok1 {
+		Rule276 = append(Rule276, f)
+		goto JudgeDone
+		}
+		log(triggerLocalPath)
+		continue
+
+		} else if Topic277 == topic2 { // 42
+		if f, ok1 := rule.(func(data *tf2_msgs.TFMessage) string); ok1 {
+		Rule277 = append(Rule277, f)
+		goto JudgeDone
+		}
+		log(triggerLocalPath)
+		continue
+
+		} else if Topic278 == topic2 { // 43
+		if f, ok1 := rule.(func(data *nav_msgs.Path) string); ok1 {
+		Rule278 = append(Rule278, f)
+		goto JudgeDone
+		}
+		log(triggerLocalPath)
+		continue
+
+		} else if Topic279 == topic2 { // 44
+		if f, ok1 := rule.(func(data *common_msgs.UpLoadFileList) string); ok1 {
+		Rule279 = append(Rule279, f)
+		goto JudgeDone
+		}
+		log(triggerLocalPath)
+		continue
+
+		} else if Topic280 == topic2 { // 45
+		if f, ok1 := rule.(func(data *sensor_msgs.Range) string); ok1 {
+		Rule280 = append(Rule280, f)
+		goto JudgeDone
+		}
+		log(triggerLocalPath)
+		continue
+
+		} else if Topic281 == topic2 { // 46
+			if f, ok1 := rule.(func(data *sensor_msgs.LaserScan) string); ok1 {
+				Rule281 = append(Rule281, f)
+				goto JudgeDone
+			}
+			log(triggerLocalPath)
+			continue
+
+		} else if Topic282 == topic2 { // 47
+			if f, ok1 := rule.(func(data *sensor_msgs.LaserScan) string); ok1 {
+				Rule282 = append(Rule282, f)
+				goto JudgeDone
+			}
+			log(triggerLocalPath)
+			continue
+
+		} else if Topic283 == topic2 { // 48
+			if f, ok1 := rule.(func(data *sensor_msgs.LaserScan) string); ok1 {
+				Rule283 = append(Rule283, f)
+				goto JudgeDone
+			}
+			log(triggerLocalPath)
+			continue
+
+		} else if Topic284 == topic2 { // 49
+			if f, ok1 := rule.(func(data *sensor_msgs.LaserScan) string); ok1 {
+				Rule284 = append(Rule284, f)
+				goto JudgeDone
+			}
+			log(triggerLocalPath)
+			continue
+		} else {
+			c_log.GlobalLogger.Error("未知的topic:", topic2)
+			continue
+		}
+	JudgeDone:
+		label, err := open.Lookup("Label")
+		if err != nil {
+			c_log.GlobalLogger.Error("加载本地插件 ", triggerLocalPath, " 中的 Label 方法失败。", err)
+			continue
+		}
+		labelFunc := label.(func() string)
+		labelString := labelFunc()
+		LabelMapTriggerId.Store(labelString, triggerId)
+		success++
+	}
+	c_log.GlobalLogger.Info("一共应加载", len(config.PlatformConfig.TaskTriggers), "个触发器,实际加载 ", success, " 个触发器。")
+}

+ 1180 - 301
aarch64/pjibot_clean/master/package/config/trigger_init.go

@@ -22,6 +22,871 @@ import (
 	"github.com/bluenviron/goroslib/v2/pkg/msgs/visualization_msgs"
 	"plugin"
 	"slices"
+	"sync"
+)
+
+var (
+	LabelMapTriggerId = new(sync.Map)
+	// todo 这里是全量的topic,添加topic则需要同时在下面的数组添加;也需要在produce_window.go中添加新的订阅者
+	AllTopics = []string{
+		Topic1,   // 1
+		Topic2,   // 2
+		Topic3,   // 3
+		Topic4,   // 4
+		Topic5,   // 5
+		Topic6,   // 6
+		Topic7,   // 7
+		Topic8,   // 8
+		Topic9,   // 9
+		Topic10,  // 10
+		Topic11,  // 11
+		Topic12,  // 12
+		Topic13,  // 13
+		Topic14,  // 14
+		Topic15,  // 15
+		Topic16,  // 16
+		Topic17,  // 17
+		Topic18,  // 18
+		Topic19,  // 19
+		Topic20,  // 20
+		Topic21,  // 21
+		Topic22,  // 22
+		Topic23,  // 23
+		Topic24,  // 24
+		Topic25,  // 25
+		Topic26,  // 26
+		Topic27,  // 27
+		Topic28,  // 28
+		Topic29,  // 29
+		Topic30,  // 30
+		Topic31,  // 31
+		Topic32,  // 32
+		Topic33,  // 33
+		Topic34,  // 34
+		Topic35,  // 35
+		Topic36,  // 36
+		Topic37,  // 37
+		Topic38,  // 38
+		Topic39,  // 39
+		Topic40,  // 40
+		Topic41,  // 41
+		Topic42,  // 42
+		Topic43,  // 43
+		Topic44,  // 44
+		Topic45,  // 45
+		Topic46,  // 46
+		Topic47,  // 47
+		Topic48,  // 48
+		Topic49,  // 49
+		Topic50,  // 50
+		Topic51,  // 51
+		Topic52,  // 52
+		Topic53,  // 53
+		Topic54,  // 54
+		Topic55,  // 55
+		Topic56,  // 56
+		Topic57,  // 57
+		Topic58,  // 58
+		Topic59,  // 59
+		Topic60,  // 60
+		Topic61,  // 61
+		Topic62,  // 62
+		Topic63,  // 63
+		Topic64,  // 64
+		Topic65,  // 65
+		Topic66,  // 66
+		Topic67,  // 67
+		Topic68,  // 68
+		Topic69,  // 69
+		Topic70,  // 70
+		Topic71,  // 71
+		Topic72,  // 72
+		Topic73,  // 73
+		Topic74,  // 74
+		Topic75,  // 75
+		Topic76,  // 76
+		Topic77,  // 77
+		Topic78,  // 78
+		Topic79,  // 79
+		Topic80,  // 80
+		Topic81,  // 81
+		Topic82,  // 82
+		Topic83,  // 83
+		Topic84,  // 84
+		Topic85,  // 85
+		Topic86,  // 86
+		Topic87,  // 87
+		Topic88,  // 88
+		Topic89,  // 89
+		Topic90,  // 90
+		Topic91,  // 91
+		Topic92,  // 92
+		Topic93,  // 93
+		Topic94,  // 94
+		Topic95,  // 95
+		Topic96,  // 96
+		Topic97,  // 97
+		Topic98,  // 98
+		Topic99,  // 99
+		Topic100, // 100
+		Topic101, // 101
+		Topic102, // 102
+		Topic103, // 103
+		Topic104, // 104
+		Topic105, // 105
+		Topic106, // 106
+		Topic107, // 107
+		Topic108, // 108
+		Topic109, // 109
+		Topic110, // 110
+		Topic111, // 111
+		Topic112, // 112
+		Topic113, // 113
+		Topic114, // 114
+		Topic115, // 115
+		Topic116, // 116
+		Topic117, // 117
+		Topic118, // 118
+		Topic119, // 119
+		Topic120, // 120
+		Topic121, // 121
+		Topic122, // 122
+		Topic123, // 123
+		Topic124, // 124
+		Topic125, // 125
+		Topic126, // 126
+		Topic127, // 127
+		Topic128, // 128
+		Topic129, // 129
+		Topic130, // 130
+		Topic131, // 131
+		Topic132, // 132
+		Topic133, // 133
+		Topic134, // 134
+		Topic135, // 135
+		Topic136, // 136
+		Topic137, // 137
+		Topic138, // 138
+		Topic139, // 139
+		Topic140, // 140
+		Topic141, // 141
+		Topic142, // 142
+		Topic143, // 143
+		Topic144, // 144
+		Topic145, // 145
+		Topic146, // 146
+		Topic147, // 147
+		Topic148, // 148
+		Topic149, // 149
+		Topic150, // 150
+		Topic151, // 151
+		Topic152, // 152
+		Topic153, // 153
+		Topic154, // 154
+		Topic155, // 155
+		Topic156, // 156
+		Topic157, // 157
+		Topic158, // 158
+		Topic159, // 159
+		Topic160, // 160
+		Topic161, // 161
+		Topic162, // 162
+		Topic163, // 163
+		Topic164, // 164
+		Topic165, // 165
+		Topic166, // 166
+		Topic167, // 167
+		Topic168, // 168
+		Topic169, // 169
+		Topic170, // 170
+		Topic171, // 171
+		Topic172, // 172
+		Topic173, // 173
+		Topic174, // 174
+		Topic175, // 175
+		Topic176, // 176
+		Topic177, // 177
+		Topic178, // 178
+		Topic179, // 179
+		Topic180, // 180
+		Topic181, // 181
+		Topic182, // 182
+		Topic183, // 183
+		Topic184, // 184
+		Topic185, // 185
+		Topic186, // 186
+		Topic187, // 187
+		Topic188, // 188
+		Topic189, // 189
+		Topic190, // 190
+		Topic191, // 191
+		Topic192, // 192
+		Topic193, // 193
+		Topic194, // 194
+		Topic195, // 195
+		Topic196, // 196
+		Topic197, // 197
+		Topic198, // 198
+		Topic199, // 199
+		Topic200, // 200
+		Topic201, // 201
+		Topic202, // 202
+		Topic203, // 203
+		Topic204, // 204
+		Topic205, // 205
+		Topic206, // 206
+		Topic207, // 207
+		Topic208, // 208
+		Topic209, // 209
+		Topic210, // 210
+		Topic211, // 211
+		Topic212, // 212
+		Topic213, // 213
+		Topic214, // 214
+		Topic215, // 215
+		Topic216, // 216
+		Topic217, // 217
+		Topic218, // 218
+		Topic219, // 219
+		Topic220, // 220
+		Topic221, // 221
+		Topic222, // 222
+		Topic223, // 223
+		Topic224, // 224
+		Topic225, // 225
+		Topic226, // 226
+		Topic227, // 227
+		Topic228, // 228
+		Topic229, // 229
+		Topic230, // 230
+		Topic231, // 231
+		Topic232, // 232
+		Topic233, // 233
+		Topic234, // 234
+		Topic235, // 235
+		Topic236, // 236
+		Topic237, // 237
+		Topic238, // 238
+		Topic239, // 239
+		Topic240, // 240
+		Topic241, // 241
+		Topic242, // 242
+		Topic243, // 243
+		Topic244, // 244
+		Topic245, // 245
+		Topic246, // 246
+		Topic247, // 247
+		Topic248, // 248
+		Topic249, // 249
+		Topic250, // 250
+		Topic251, // 251
+		Topic252, // 252
+		Topic253, // 253
+		Topic254, // 254
+		Topic255, // 255
+		Topic256, // 256
+		Topic257, // 257
+		Topic258, // 258
+		Topic259, // 259
+		Topic260, // 260
+		Topic261, // 261
+		Topic262, // 262
+		Topic263, // 263
+		Topic264, // 264
+		Topic265, // 265
+		Topic266, // 266
+		Topic267, // 267
+		Topic268, // 268
+		Topic269, // 269
+		Topic270, // 270
+		Topic271, // 271
+		Topic272, // 272
+		Topic273, // 273
+		Topic274, // 274
+		Topic275, // 275
+		Topic276, // 276
+		Topic277, // 277
+		Topic278, // 278
+		Topic279, // 279
+		Topic280, // 280
+		Topic281, // 281
+		Topic282, // 282
+		Topic283, // 283
+		Topic284, // 284
+	}
+	// topic
+	Topic1   = "/Electrification"
+	Topic2   = "/along_wall_start_point"
+	Topic3   = "/amcl/parameter_descriptions"
+	Topic4   = "/amcl/parameter_updates"
+	Topic5   = "/amcl_enter_mapconvert_topic"
+	Topic6   = "/amcl_pose"
+	Topic7   = "/amcl_relocalization_finish_pub"
+	Topic8   = "/amcl_topic"
+	Topic9   = "/any_eye/run_line_light"
+	Topic10  = "/application_heart_beat"
+	Topic11  = "/auto_dock/heart"
+	Topic12  = "/back_top_points_process"
+	Topic13  = "/batter"
+	Topic14  = "/boot_time"
+	Topic15  = "/boundingboxes_line"
+	Topic16  = "/call_icp"
+	Topic17  = "/camera/depth/camera_info"
+	Topic18  = "/camera/depth/image_raw"
+	Topic19  = "/camera/depth/image_raw/compressed"
+	Topic20  = "/camera/depth/image_raw/compressed/parameter_descriptions"
+	Topic21  = "/camera/depth/image_raw/compressed/parameter_updates"
+	Topic22  = "/camera/depth/image_raw/compressedDepth"
+	Topic23  = "/camera/depth/image_raw/compressedDepth/parameter_descriptions"
+	Topic24  = "/camera/depth/image_raw/compressedDepth/parameter_updates"
+	Topic25  = "/camera/depth/image_raw/theora"
+	Topic26  = "/camera/depth/image_raw/theora/parameter_descriptions"
+	Topic27  = "/camera/depth/image_raw/theora/parameter_updates"
+	Topic28  = "/camera/depth/points"
+	Topic29  = "/camera/ir/camera_info"
+	Topic30  = "/camera/ir/image_raw"
+	Topic31  = "/camera/ir/image_raw/compressed"
+	Topic32  = "/camera/ir/image_raw/compressed/parameter_descriptions"
+	Topic33  = "/camera/ir/image_raw/compressed/parameter_updates"
+	Topic34  = "/camera/ir/image_raw/compressedDepth"
+	Topic35  = "/camera/ir/image_raw/compressedDepth/parameter_descriptions"
+	Topic36  = "/camera/ir/image_raw/compressedDepth/parameter_updates"
+	Topic37  = "/camera/ir/image_raw/theora"
+	Topic38  = "/camera/ir/image_raw/theora/parameter_descriptions"
+	Topic39  = "/camera/ir/image_raw/theora/parameter_updates"
+	Topic40  = "/charge_tag_pos"
+	Topic41  = "/charge_target"
+	Topic42  = "/clean_pnc/astar_path_planner/path"
+	Topic43  = "/clean_pnc/battery_state"
+	Topic44  = "/clean_pnc/bumper"
+	Topic45  = "/clean_pnc/charger/station_line"
+	Topic46  = "/clean_pnc/charging_station/detect_position"
+	Topic47  = "/clean_pnc/charging_station/odom_position"
+	Topic48  = "/clean_pnc/charging_station/position"
+	Topic49  = "/clean_pnc/clean_cmd"
+	Topic50  = "/clean_pnc/cost_map/footprint"
+	Topic51  = "/clean_pnc/cost_map/footprint_spec"
+	Topic52  = "/clean_pnc/cost_map/global_costmap"
+	Topic53  = "/clean_pnc/cost_map/local_costmap"
+	Topic54  = "/clean_pnc/cost_map/task_costmap"
+	Topic55  = "/clean_pnc/cur_clean_area"
+	Topic56  = "/clean_pnc/current_task_list_loop_times"
+	Topic57  = "/clean_pnc/dwa_path_planner/global_path"
+	Topic58  = "/clean_pnc/error_code"
+	Topic59  = "/clean_pnc/function_map/compute_follow_path_map"
+	Topic60  = "/clean_pnc/function_map/forbidden_clean_area"
+	Topic61  = "/clean_pnc/function_map/need_clean_area"
+	Topic62  = "/clean_pnc/function_map/no_need_clean_area"
+	Topic63  = "/clean_pnc/function_map/task_cleaned_map"
+	Topic64  = "/clean_pnc/function_map/task_list_cleaned_map"
+	Topic65  = "/clean_pnc/save_report"
+	Topic66  = "/clean_pnc/scram_button"
+	Topic67  = "/clean_pnc/type/pause"
+	Topic68  = "/clean_polygon"
+	Topic69  = "/clicked_point"
+	Topic70  = "/close_imu_topic_"
+	Topic71  = "/cloud_cmd"
+	Topic72  = "/cmd_vel"
+	Topic73  = "/collisionDetection"
+	Topic74  = "/create_map_info"
+	Topic75  = "/ctrl_speed_deal_before"
+	Topic76  = "/current/sensor_status"
+	Topic77  = "/custom_path"
+	Topic78  = "/data_fusion_path"
+	Topic79  = "/detect/boundingboxes"
+	Topic80  = "/diagnostic/mcu"
+	Topic81  = "/diagnostics"
+	Topic82  = "/disinfection"
+	Topic83  = "/disinfection_info"
+	Topic84  = "/dock_flag"
+	Topic85  = "/dynamic_scan"
+	Topic86  = "/dynamic_wall_line_pub"
+	Topic87  = "/elevate_scence"
+	Topic88  = "/elevate_state_topic"
+	Topic89  = "/elevator_dwa/task_status"
+	Topic90  = "/engine/current_robot_mode"
+	Topic91  = "/engine/current_task_info"
+	Topic92  = "/engine/map_info"
+	Topic93  = "/engine/out_line_path"
+	Topic94  = "/engine/video_stream_push"
+	Topic95  = "/floor_downsample"
+	Topic96  = "/follow_path_path"
+	Topic97  = "/front_down_points_process"
+	Topic98  = "/front_top_points_downsample1"
+	Topic99  = "/front_top_points_process"
+	Topic100 = "/global_goal"
+	Topic101 = "/global_path"
+	Topic102 = "/hst007_camera_pose"
+	Topic103 = "/icp_initial_pose"
+	Topic104 = "/icp_localization_check_topic"
+	Topic105 = "/icp_relocalization_finish_pub_topic"
+	Topic106 = "/icp_relocalization_pub_topic"
+	Topic107 = "/icp_relocalization_sub_topic"
+	Topic108 = "/icp_run_topic"
+	Topic109 = "/icp_score"
+	Topic110 = "/icp_service"
+	Topic111 = "/icp_topic"
+	Topic112 = "/imu"
+	Topic113 = "/imu_cal_state"
+	Topic114 = "/imu_calibration_state"
+	Topic115 = "/imu_calibration_temperature"
+	Topic116 = "/imu_slover_param"
+	Topic117 = "/incline_localization"
+	Topic118 = "/initialpose"
+	Topic119 = "/joint_states"
+	Topic120 = "/kibana_log"
+	Topic121 = "/landmark"
+	Topic122 = "/laser_odom"
+	Topic123 = "/leg_scan"
+	Topic124 = "/lm_imu"
+	Topic125 = "/local_path_update"
+	Topic126 = "/localation_monitor_topic"
+	Topic127 = "/localization_convertMap_topic"
+	Topic128 = "/localization_fail"
+	Topic129 = "/localization_monitor_node/localation_monitor_topic"
+	Topic130 = "/localization_recover_pose"
+	Topic131 = "/localization_rocover_state"
+	Topic132 = "/localization_state_modiy"
+	Topic133 = "/locate_info"
+	Topic134 = "/locate_state"
+	Topic135 = "/lost_localization_state_"
+	Topic136 = "/lost_localization_warning_state"
+	Topic137 = "/manual_close_icp_topic"
+	Topic138 = "/map"
+	Topic139 = "/map_base64"
+	Topic140 = "/map_border"
+	Topic141 = "/map_merge_node/amcl_topic"
+	Topic142 = "/map_merge_node/icp_topic"
+	Topic143 = "/map_metadata"
+	Topic144 = "/move_base/GlobalPlanner/plan"
+	Topic145 = "/move_base_simple/goal"
+	Topic146 = "/mpc_cost_map"
+	Topic147 = "/mpc_cost_map1"
+	Topic148 = "/multi_persion_block"
+	Topic149 = "/mutli_person_block_pub"
+	Topic150 = "/new_imu"
+	Topic151 = "/node_Monitor"
+	Topic152 = "/node_Monitor/clean_pnc/state"
+	Topic153 = "/ob_camera_01/color/camera_info"
+	Topic154 = "/ob_camera_01/color/image_raw"
+	Topic155 = "/ob_camera_01/color/image_raw/compressed"
+	Topic156 = "/ob_camera_01/color/image_raw/compressed/parameter_descriptions"
+	Topic157 = "/ob_camera_01/color/image_raw/compressed/parameter_updates"
+	Topic158 = "/ob_camera_01/color/image_raw/compressedDepth"
+	Topic159 = "/ob_camera_01/color/image_raw/compressedDepth/parameter_descriptions"
+	Topic160 = "/ob_camera_01/color/image_raw/compressedDepth/parameter_updates"
+	Topic161 = "/ob_camera_01/color/image_raw/theora"
+	Topic162 = "/ob_camera_01/color/image_raw/theora/parameter_descriptions"
+	Topic163 = "/ob_camera_01/color/image_raw/theora/parameter_updates"
+	Topic164 = "/ob_camera_01/depth/camera_info"
+	Topic165 = "/ob_camera_01/depth/image_raw"
+	Topic166 = "/ob_camera_01/depth/image_raw/compressed"
+	Topic167 = "/ob_camera_01/depth/image_raw/compressed/parameter_descriptions"
+	Topic168 = "/ob_camera_01/depth/image_raw/compressed/parameter_updates"
+	Topic169 = "/ob_camera_01/depth/image_raw/compressedDepth"
+	Topic170 = "/ob_camera_01/depth/image_raw/compressedDepth/parameter_descriptions"
+	Topic171 = "/ob_camera_01/depth/image_raw/compressedDepth/parameter_updates"
+	Topic172 = "/ob_camera_01/depth/image_raw/theora"
+	Topic173 = "/ob_camera_01/depth/image_raw/theora/parameter_descriptions"
+	Topic174 = "/ob_camera_01/depth/image_raw/theora/parameter_updates"
+	Topic175 = "/ob_camera_01/depth/points"
+	Topic176 = "/ob_camera_02/color/camera_info"
+	Topic177 = "/ob_camera_02/color/image_raw"
+	Topic178 = "/ob_camera_02/color/image_raw/compressed"
+	Topic179 = "/ob_camera_02/color/image_raw/compressed/parameter_descriptions"
+	Topic180 = "/ob_camera_02/color/image_raw/compressed/parameter_updates"
+	Topic181 = "/ob_camera_02/color/image_raw/compressedDepth"
+	Topic182 = "/ob_camera_02/color/image_raw/compressedDepth/parameter_descriptions"
+	Topic183 = "/ob_camera_02/color/image_raw/compressedDepth/parameter_updates"
+	Topic184 = "/ob_camera_02/color/image_raw/theora"
+	Topic185 = "/ob_camera_02/color/image_raw/theora/parameter_descriptions"
+	Topic186 = "/ob_camera_02/color/image_raw/theora/parameter_updates"
+	Topic187 = "/ob_camera_02/depth/camera_info"
+	Topic188 = "/ob_camera_02/depth/image_raw"
+	Topic189 = "/ob_camera_02/depth/image_raw/compressed"
+	Topic190 = "/ob_camera_02/depth/image_raw/compressed/parameter_descriptions"
+	Topic191 = "/ob_camera_02/depth/image_raw/compressed/parameter_updates"
+	Topic192 = "/ob_camera_02/depth/image_raw/compressedDepth"
+	Topic193 = "/ob_camera_02/depth/image_raw/compressedDepth/parameter_descriptions"
+	Topic194 = "/ob_camera_02/depth/image_raw/compressedDepth/parameter_updates"
+	Topic195 = "/ob_camera_02/depth/image_raw/theora"
+	Topic196 = "/ob_camera_02/depth/image_raw/theora/parameter_descriptions"
+	Topic197 = "/ob_camera_02/depth/image_raw/theora/parameter_updates"
+	Topic198 = "/ob_camera_02/depth/points"
+	Topic199 = "/obberc_camera_back_pose"
+	Topic200 = "/obberc_camera_pose"
+	Topic201 = "/obstacle_detection"
+	Topic202 = "/odom"
+	Topic203 = "/odom_jump"
+	Topic204 = "/odom_localization"
+	Topic205 = "/odom_raw"
+	Topic206 = "/old_imu"
+	Topic207 = "/out_wallLine"
+	Topic208 = "/particlecloud"
+	Topic209 = "/pointcloud_topic"
+	Topic210 = "/pole_scan"
+	Topic211 = "/pose_correct_topic"
+	Topic212 = "/preventfalling"
+	Topic213 = "/pro_map_ctrl"
+	Topic214 = "/qs/clean_area"
+	Topic215 = "/qs/start_detectwall_line"
+	Topic216 = "/reference_path"
+	Topic217 = "/robot_add"
+	Topic218 = "/robot_is_slip"
+	Topic219 = "/robot_kidnap_state"
+	Topic220 = "/robot_lost"
+	Topic221 = "/robot_pose"
+	Topic222 = "/robot_pose_tf"
+	Topic223 = "/robot_shock"
+	Topic224 = "/robot_static_state"
+	Topic225 = "/robot_status"
+	Topic226 = "/robot_sub"
+	Topic227 = "/robot_sudden_state"
+	Topic228 = "/room_segmentation_server/cancel"
+	Topic229 = "/room_segmentation_server/feedback"
+	Topic230 = "/room_segmentation_server/goal"
+	Topic231 = "/room_segmentation_server/parameter_descriptions"
+	Topic232 = "/room_segmentation_server/parameter_updates"
+	Topic233 = "/room_segmentation_server/result"
+	Topic234 = "/room_segmentation_server/segmented_map"
+	Topic235 = "/room_segmentation_server/status"
+	Topic236 = "/rosout"
+	Topic237 = "/rosout_agg"
+	Topic238 = "/rviz_task_global_path"
+	Topic239 = "/safety"
+	Topic240 = "/scan"
+	Topic241 = "/scan_back_top"
+	Topic242 = "/scan_cliff"
+	Topic243 = "/scan_front_down"
+	Topic244 = "/scan_front_top"
+	Topic245 = "/scan_map_icp_amcl_node/map_point"
+	Topic246 = "/scan_map_icp_amcl_node/scan_point_transformed"
+	Topic247 = "/segmentation_map_marker"
+	Topic248 = "/sensor_task"
+	Topic249 = "/slip_topic"
+	Topic250 = "/sonar_alarm"
+	Topic251 = "/sonar_list"
+	Topic252 = "/srf_data"
+	Topic253 = "/srf_laser_odometry_node/srf_laser_truncated"
+	Topic254 = "/start_relocate"
+	Topic255 = "/static_scan"
+	Topic256 = "/sudden_stop_state_"
+	Topic257 = "/sunny/run_camera"
+	Topic258 = "/sunny_topic/device_HST007/tof_frame/camera_info"
+	Topic259 = "/sys_info"
+	Topic260 = "/tag_detections_image"
+	Topic261 = "/tag_detections_image/compressed"
+	Topic262 = "/tag_detections_image/compressed/parameter_descriptions"
+	Topic263 = "/tag_detections_image/compressed/parameter_updates"
+	Topic264 = "/tag_detections_image/compressedDepth"
+	Topic265 = "/tag_detections_image/compressedDepth/parameter_descriptions"
+	Topic266 = "/tag_detections_image/compressedDepth/parameter_updates"
+	Topic267 = "/tag_detections_image/theora"
+	Topic268 = "/tag_detections_image/theora/parameter_descriptions"
+	Topic269 = "/tag_detections_image/theora/parameter_updates"
+	Topic270 = "/tag_start"
+	Topic271 = "/target1"
+	Topic272 = "/task"
+	Topic273 = "/task_feedback_info"
+	Topic274 = "/task_global_path"
+	Topic275 = "/tf"
+	Topic276 = "/tf_data_error"
+	Topic277 = "/tf_static"
+	Topic278 = "/udata_fusion_path"
+	Topic279 = "/uploadBag"
+	Topic280 = "/vl_left"
+	Topic281 = "/xd1a_0"
+	Topic282 = "/xd1a_1"
+	Topic283 = "/xd1a_2"
+	Topic284 = "/xd1a_3"
+
+	// 触发器
+	Rule1   []func(data *std_msgs.Int16MultiArray) string
+	Rule2   []func(data *geometry_msgs.PoseStamped) string
+	Rule3   []func(data *dynamic_reconfigure.ConfigDescription) string
+	Rule4   []func(data *dynamic_reconfigure.Config) string
+	Rule5   []func(data *std_msgs.String) string
+	Rule6   []func(data *geometry_msgs.PoseWithCovarianceStamped) string
+	Rule7   []func(data *std_msgs.String) string
+	Rule8   []func(data *std_msgs.String) string
+	Rule9   []func(data *std_msgs.Bool) string
+	Rule10  []func(data *std_msgs.Int8) string
+	Rule11  []func(data *std_msgs.Int8) string
+	Rule12  []func(data *sensor_msgs.PointCloud2) string
+	Rule13  []func(data *sensor_msgs.BatteryState) string
+	Rule14  []func(data *std_msgs.Int16) string
+	Rule15  []func(data *visualization_msgs.Marker) string
+	Rule16  []func(data *std_msgs.String) string
+	Rule17  []func(data *sensor_msgs.CameraInfo) string
+	Rule18  []func(data *sensor_msgs.Image) string
+	Rule19  []func(data *sensor_msgs.CompressedImage) string
+	Rule20  []func(data *dynamic_reconfigure.ConfigDescription) string
+	Rule21  []func(data *dynamic_reconfigure.Config) string
+	Rule22  []func(data *sensor_msgs.CompressedImage) string
+	Rule23  []func(data *dynamic_reconfigure.ConfigDescription) string
+	Rule24  []func(data *dynamic_reconfigure.Config) string
+	Rule25  []func(data *theora_image_transport.Packet) string
+	Rule26  []func(data *dynamic_reconfigure.ConfigDescription) string
+	Rule27  []func(data *dynamic_reconfigure.Config) string
+	Rule28  []func(data *sensor_msgs.PointCloud2) string
+	Rule29  []func(data *sensor_msgs.CameraInfo) string
+	Rule30  []func(data *sensor_msgs.Image) string
+	Rule31  []func(data *sensor_msgs.CompressedImage) string
+	Rule32  []func(data *dynamic_reconfigure.ConfigDescription) string
+	Rule33  []func(data *dynamic_reconfigure.Config) string
+	Rule34  []func(data *sensor_msgs.CompressedImage) string
+	Rule35  []func(data *dynamic_reconfigure.ConfigDescription) string
+	Rule36  []func(data *dynamic_reconfigure.Config) string
+	Rule37  []func(data *theora_image_transport.Packet) string
+	Rule38  []func(data *dynamic_reconfigure.ConfigDescription) string
+	Rule39  []func(data *dynamic_reconfigure.Config) string
+	Rule40  []func(data *geometry_msgs.PoseStamped) string
+	Rule41  []func(data *geometry_msgs.PoseStamped) string
+	Rule42  []func(data *nav_msgs.Path) string
+	Rule43  []func(data *std_msgs.Int8) string
+	Rule44  []func(data *std_msgs.Bool) string
+	Rule45  []func(data *nav_msgs.Path) string
+	Rule46  []func(data *geometry_msgs.PoseStamped) string
+	Rule47  []func(data *geometry_msgs.PoseStamped) string
+	Rule48  []func(data *geometry_msgs.PoseStamped) string
+	Rule49  []func(data *std_msgs.String) string
+	Rule50  []func(data *visualization_msgs.MarkerArray) string
+	Rule51  []func(data *geometry_msgs.PolygonStamped) string
+	Rule52  []func(data *nav_msgs.OccupancyGrid) string
+	Rule53  []func(data *nav_msgs.OccupancyGrid) string
+	Rule54  []func(data *nav_msgs.OccupancyGrid) string
+	Rule55  []func(data *std_msgs.Float32) string
+	Rule56  []func(data *std_msgs.Int32) string
+	Rule57  []func(data *nav_msgs.Path) string
+	Rule58  []func(data *clean_msg.ErrorInfo) string
+	Rule59  []func(data *nav_msgs.OccupancyGrid) string
+	Rule60  []func(data *nav_msgs.OccupancyGrid) string
+	Rule61  []func(data *nav_msgs.OccupancyGrid) string
+	Rule62  []func(data *nav_msgs.OccupancyGrid) string
+	Rule63  []func(data *nav_msgs.OccupancyGrid) string
+	Rule64  []func(data *nav_msgs.OccupancyGrid) string
+	Rule65  []func(data *std_msgs.String) string
+	Rule66  []func(data *std_msgs.Bool) string
+	Rule67  []func(data *std_msgs.Bool) string
+	Rule68  []func(data *geometry_msgs.PolygonStamped) string
+	Rule69  []func(data *geometry_msgs.PointStamped) string
+	Rule70  []func(data *std_msgs.String) string
+	Rule71  []func(data *geometry_msgs.Twist) string
+	Rule72  []func(data *geometry_msgs.Twist) string
+	Rule73  []func(data *nav_msgs.Path) string
+	Rule74  []func(data *common_msgs.CreateMapInfo) string
+	Rule75  []func(data *geometry_msgs.Twist) string
+	Rule76  []func(data *common_msgs.SensorStatus) string
+	Rule77  []func(data *geometry_msgs.PoseArray) string
+	Rule78  []func(data *nav_msgs.Path) string
+	Rule79  []func(data *common_msgs.IdentifierObjsInfo) string
+	Rule80  []func(data *common_msgs.McuDiagnostic) string
+	Rule81  []func(data *diagnostic_msgs.DiagnosticArray) string
+	Rule82  []func(data *std_msgs.Int8) string
+	Rule83  []func(data *std_msgs.Int16) string
+	Rule84  []func(data *geometry_msgs.Vector3Stamped) string
+	Rule85  []func(data *sensor_msgs.LaserScan) string
+	Rule86  []func(data *sensor_msgs.PointCloud2) string
+	Rule87  []func(data *std_msgs.String) string
+	Rule88  []func(data *std_msgs.String) string
+	Rule89  []func(data *std_msgs.String) string
+	Rule90  []func(data *std_msgs.Int32) string
+	Rule91  []func(data *common_msgs.TaskInfo) string
+	Rule92  []func(data *common_msgs.MapInfo) string
+	Rule93  []func(data *nav_msgs.Path) string
+	Rule94  []func(data *common_msgs.VideoStream) string
+	Rule95  []func(data *sensor_msgs.PointCloud2) string
+	Rule96  []func(data *nav_msgs.Path) string
+	Rule97  []func(data *sensor_msgs.PointCloud2) string
+	Rule98  []func(data *sensor_msgs.PointCloud2) string
+	Rule99  []func(data *sensor_msgs.PointCloud2) string
+	Rule100 []func(data *geometry_msgs.PointStamped) string
+	Rule101 []func(data *nav_msgs.Path) string
+	Rule102 []func(data *geometry_msgs.PoseStamped) string
+	Rule103 []func(data *geometry_msgs.PoseWithCovarianceStamped) string
+	Rule104 []func(data *geometry_msgs.Pose) string
+	Rule105 []func(data *std_msgs.String) string
+	Rule106 []func(data *std_msgs.String) string
+	Rule107 []func(data *std_msgs.String) string
+	Rule108 []func(data *std_msgs.String) string
+	Rule109 []func(data *std_msgs.Float64) string
+	Rule110 []func(data *std_msgs.String) string
+	Rule111 []func(data *std_msgs.String) string
+	Rule112 []func(data *sensor_msgs.Imu) string
+	Rule113 []func(data *std_msgs.String) string
+	Rule114 []func(data *std_msgs.Int8) string
+	Rule115 []func(data *std_msgs.Int16) string
+	Rule116 []func(data *std_msgs.String) string
+	Rule117 []func(data *std_msgs.String) string
+	Rule118 []func(data *geometry_msgs.PoseWithCovarianceStamped) string
+	Rule119 []func(data *sensor_msgs.JointState) string
+	Rule120 []func(data *std_msgs.String) string
+	Rule121 []func(data *cartographer_ros_msgs.LandmarkList) string
+	Rule122 []func(data *nav_msgs.Odometry) string
+	Rule123 []func(data *sensor_msgs.LaserScan) string
+	Rule124 []func(data *std_msgs.String) string
+	Rule125 []func(data *nav_msgs.Path) string
+	Rule126 []func(data *std_msgs.String) string
+	Rule127 []func(data *std_msgs.String) string
+	Rule128 []func(data *std_msgs.String) string
+	Rule129 []func(data *std_msgs.String) string
+	Rule130 []func(data *geometry_msgs.PoseWithCovarianceStamped) string
+	Rule131 []func(data *std_msgs.String) string
+	Rule132 []func(data *std_msgs.String) string
+	Rule133 []func(data *common_msgs.LocateInfo) string
+	Rule134 []func(data *std_msgs.Bool) string
+	Rule135 []func(data *std_msgs.Float64MultiArray) string
+	Rule136 []func(data *std_msgs.String) string
+	Rule137 []func(data *std_msgs.String) string
+	Rule138 []func(data *nav_msgs.OccupancyGrid) string
+	Rule139 []func(data *std_msgs.String) string
+	Rule140 []func(data *nav_msgs.Path) string
+	Rule141 []func(data *std_msgs.String) string
+	Rule142 []func(data *std_msgs.String) string
+	Rule143 []func(data *nav_msgs.MapMetaData) string
+	Rule144 []func(data *nav_msgs.Path) string
+	Rule145 []func(data *geometry_msgs.PoseStamped) string
+	Rule146 []func(data *nav_msgs.OccupancyGrid) string
+	Rule147 []func(data *nav_msgs.OccupancyGrid) string
+	Rule148 []func(data *std_msgs.String) string
+	Rule149 []func(data *std_msgs.String) string
+	Rule150 []func(data *std_msgs.String) string
+	Rule151 []func(data *std_msgs.String) string
+	Rule152 []func(data *std_msgs.Bool) string
+	Rule153 []func(data *sensor_msgs.CameraInfo) string
+	Rule154 []func(data *sensor_msgs.Image) string
+	Rule155 []func(data *sensor_msgs.CompressedImage) string
+	Rule156 []func(data *dynamic_reconfigure.ConfigDescription) string
+	Rule157 []func(data *dynamic_reconfigure.Config) string
+	Rule158 []func(data *sensor_msgs.CompressedImage) string
+	Rule159 []func(data *dynamic_reconfigure.ConfigDescription) string
+	Rule160 []func(data *dynamic_reconfigure.Config) string
+	Rule161 []func(data *theora_image_transport.Packet) string
+	Rule162 []func(data *dynamic_reconfigure.ConfigDescription) string
+	Rule163 []func(data *dynamic_reconfigure.Config) string
+	Rule164 []func(data *sensor_msgs.CameraInfo) string
+	Rule165 []func(data *sensor_msgs.Image) string
+	Rule166 []func(data *sensor_msgs.CompressedImage) string
+	Rule167 []func(data *dynamic_reconfigure.ConfigDescription) string
+	Rule168 []func(data *dynamic_reconfigure.Config) string
+	Rule169 []func(data *sensor_msgs.CompressedImage) string
+	Rule170 []func(data *dynamic_reconfigure.ConfigDescription) string
+	Rule171 []func(data *dynamic_reconfigure.Config) string
+	Rule172 []func(data *theora_image_transport.Packet) string
+	Rule173 []func(data *dynamic_reconfigure.ConfigDescription) string
+	Rule174 []func(data *dynamic_reconfigure.Config) string
+	Rule175 []func(data *sensor_msgs.PointCloud2) string
+	Rule176 []func(data *sensor_msgs.CameraInfo) string
+	Rule177 []func(data *sensor_msgs.Image) string
+	Rule178 []func(data *sensor_msgs.CompressedImage) string
+	Rule179 []func(data *dynamic_reconfigure.ConfigDescription) string
+	Rule180 []func(data *dynamic_reconfigure.Config) string
+	Rule181 []func(data *sensor_msgs.CompressedImage) string
+	Rule182 []func(data *dynamic_reconfigure.ConfigDescription) string
+	Rule183 []func(data *dynamic_reconfigure.Config) string
+	Rule184 []func(data *theora_image_transport.Packet) string
+	Rule185 []func(data *dynamic_reconfigure.ConfigDescription) string
+	Rule186 []func(data *dynamic_reconfigure.Config) string
+	Rule187 []func(data *sensor_msgs.CameraInfo) string
+	Rule188 []func(data *sensor_msgs.Image) string
+	Rule189 []func(data *sensor_msgs.CompressedImage) string
+	Rule190 []func(data *dynamic_reconfigure.ConfigDescription) string
+	Rule191 []func(data *dynamic_reconfigure.Config) string
+	Rule192 []func(data *sensor_msgs.CompressedImage) string
+	Rule193 []func(data *dynamic_reconfigure.ConfigDescription) string
+	Rule194 []func(data *dynamic_reconfigure.Config) string
+	Rule195 []func(data *theora_image_transport.Packet) string
+	Rule196 []func(data *dynamic_reconfigure.ConfigDescription) string
+	Rule197 []func(data *dynamic_reconfigure.Config) string
+	Rule198 []func(data *sensor_msgs.PointCloud2) string
+	Rule199 []func(data *geometry_msgs.PoseStamped) string
+	Rule200 []func(data *geometry_msgs.PoseStamped) string
+	Rule201 []func(data *std_msgs.UInt8) string
+	Rule202 []func(data *nav_msgs.Odometry) string
+	Rule203 []func(data *std_msgs.String) string
+	Rule204 []func(data *std_msgs.String) string
+	Rule205 []func(data *nav_msgs.Odometry) string
+	Rule206 []func(data *sensor_msgs.Imu) string
+	Rule207 []func(data *sensor_msgs.PointCloud2) string
+	Rule208 []func(data *geometry_msgs.PoseArray) string
+	Rule209 []func(data *sensor_msgs.PointCloud2) string
+	Rule210 []func(data *sensor_msgs.LaserScan) string
+	Rule211 []func(data *geometry_msgs.PoseWithCovarianceStamped) string
+	Rule212 []func(data *geometry_msgs.Vector3Stamped) string
+	Rule213 []func(data *std_msgs.String) string
+	Rule214 []func(data *common_msgs.FunctionAreas) string
+	Rule215 []func(data *std_msgs.Bool) string
+	Rule216 []func(data *nav_msgs.Path) string
+	Rule217 []func(data *std_msgs.Float64MultiArray) string
+	Rule218 []func(data *std_msgs.String) string
+	Rule219 []func(data *std_msgs.String) string
+	Rule220 []func(data *std_msgs.String) string
+	Rule221 []func(data *geometry_msgs.PoseStamped) string
+	Rule222 []func(data *geometry_msgs.PoseWithCovarianceStamped) string
+	Rule223 []func(data *std_msgs.String) string
+	Rule224 []func(data *std_msgs.String) string
+	Rule225 []func(data *localization_monitor.RobotStatus) string
+	Rule226 []func(data *std_msgs.Float64MultiArray) string
+	Rule227 []func(data *std_msgs.String) string
+	Rule228 []func(data *actionlib_msgs.GoalID) string
+	Rule229 []func(data *ipa_building_msgs.MapSegmentationActionFeedback) string
+	Rule230 []func(data *ipa_building_msgs.MapSegmentationActionGoal) string
+	Rule231 []func(data *dynamic_reconfigure.ConfigDescription) string
+	Rule232 []func(data *dynamic_reconfigure.Config) string
+	Rule233 []func(data *ipa_building_msgs.MapSegmentationActionResult) string
+	Rule234 []func(data *nav_msgs.OccupancyGrid) string
+	Rule235 []func(data *actionlib_msgs.GoalStatusArray) string
+	Rule236 []func(data *rosgraph_msgs.Log) string
+	Rule237 []func(data *rosgraph_msgs.Log) string
+	Rule238 []func(data *nav_msgs.Path) string
+	Rule239 []func(data *geometry_msgs.Vector3Stamped) string
+	Rule240 []func(data *sensor_msgs.LaserScan) string
+	Rule241 []func(data *sensor_msgs.LaserScan) string
+	Rule242 []func(data *sensor_msgs.LaserScan) string
+	Rule243 []func(data *sensor_msgs.LaserScan) string
+	Rule244 []func(data *sensor_msgs.LaserScan) string
+	Rule245 []func(data *sensor_msgs.PointCloud2) string
+	Rule246 []func(data *sensor_msgs.PointCloud2) string
+	Rule247 []func(data *visualization_msgs.MarkerArray) string
+	Rule248 []func(data *common_msgs.SensorTask) string
+	Rule249 []func(data *std_msgs.String) string
+	Rule250 []func(data *geometry_msgs.Vector3Stamped) string
+	Rule251 []func(data *common_msgs.SonarList) string
+	Rule252 []func(data *nav_msgs.Odometry) string
+	Rule253 []func(data *sensor_msgs.LaserScan) string
+	Rule254 []func(data *std_msgs.Bool) string
+	Rule255 []func(data *sensor_msgs.LaserScan) string
+	Rule256 []func(data *std_msgs.String) string
+	Rule257 []func(data *std_msgs.Bool) string
+	Rule258 []func(data *sensor_msgs.CameraInfo) string
+	Rule259 []func(data *common_msgs.SysInfo) string
+	Rule260 []func(data *sensor_msgs.Image) string
+	Rule261 []func(data *sensor_msgs.CompressedImage) string
+	Rule262 []func(data *dynamic_reconfigure.ConfigDescription) string
+	Rule263 []func(data *dynamic_reconfigure.Config) string
+	Rule264 []func(data *sensor_msgs.CompressedImage) string
+	Rule265 []func(data *dynamic_reconfigure.ConfigDescription) string
+	Rule266 []func(data *dynamic_reconfigure.Config) string
+	Rule267 []func(data *theora_image_transport.Packet) string
+	Rule268 []func(data *dynamic_reconfigure.ConfigDescription) string
+	Rule269 []func(data *dynamic_reconfigure.Config) string
+	Rule270 []func(data *std_msgs.Bool) string
+	Rule271 []func(data *geometry_msgs.PoseStamped) string
+	Rule272 []func(data *geometry_msgs.Vector3Stamped) string
+	Rule273 []func(data *common_msgs.TaskFeedbackInfo) string
+	Rule274 []func(data *common_msgs.Points) string
+	Rule275 []func(data *tf2_msgs.TFMessage) string
+	Rule276 []func(data *std_msgs.String) string
+	Rule277 []func(data *tf2_msgs.TFMessage) string
+	Rule278 []func(data *nav_msgs.Path) string
+	Rule279 []func(data *common_msgs.UpLoadFileList) string
+	Rule280 []func(data *sensor_msgs.Range) string
+	Rule281 []func(data *sensor_msgs.LaserScan) string
+	Rule282 []func(data *sensor_msgs.LaserScan) string
+	Rule283 []func(data *sensor_msgs.LaserScan) string
+	Rule284 []func(data *sensor_msgs.LaserScan) string
+
+	AllTopicsNumber = len(AllTopics)
 )
 
 func InitTriggerConfig() {
@@ -89,6 +954,7 @@ func InitTriggerConfig() {
 			c_log.GlobalLogger.Error("加载本地插件", triggerLocalPath, "中的Rule方法失败。", err)
 			continue
 		}
+
 		if Topic1 == topic2 { // 1
 			if f, ok1 := rule.(func(data *std_msgs.Int16MultiArray) string); ok1 {
 				Rule1 = append(Rule1, f)
@@ -1969,7 +2835,7 @@ func InitTriggerConfig() {
 			log(triggerLocalPath)
 			continue
 
-		} else if Topic236 == topic2 { // 236
+		} else if Topic236 == topic2 { // 1
 			if f, ok1 := rule.(func(data *rosgraph_msgs.Log) string); ok1 {
 				Rule236 = append(Rule236, f)
 				goto JudgeDone
@@ -1977,7 +2843,7 @@ func InitTriggerConfig() {
 			log(triggerLocalPath)
 			continue
 
-		} else if Topic237 == topic2 { // 237
+		} else if Topic237 == topic2 { // 2
 			if f, ok1 := rule.(func(data *rosgraph_msgs.Log) string); ok1 {
 				Rule237 = append(Rule237, f)
 				goto JudgeDone
@@ -1985,7 +2851,7 @@ func InitTriggerConfig() {
 			log(triggerLocalPath)
 			continue
 
-		} else if Topic238 == topic2 { // 238
+		} else if Topic238 == topic2 { // 3
 			if f, ok1 := rule.(func(data *nav_msgs.Path) string); ok1 {
 				Rule238 = append(Rule238, f)
 				goto JudgeDone
@@ -1993,7 +2859,7 @@ func InitTriggerConfig() {
 			log(triggerLocalPath)
 			continue
 
-		} else if Topic239 == topic2 { // 239
+		} else if Topic239 == topic2 { // 4
 			if f, ok1 := rule.(func(data *geometry_msgs.Vector3Stamped) string); ok1 {
 				Rule239 = append(Rule239, f)
 				goto JudgeDone
@@ -2001,375 +2867,388 @@ func InitTriggerConfig() {
 			log(triggerLocalPath)
 			continue
 
-		} else if Topic240 == topic2 { // 240
+		} else if Topic240 == topic2 { // 5
 			if f, ok1 := rule.(func(data *sensor_msgs.LaserScan) string); ok1 {
-				Rule240 = append(Rule240, f)
+				Rule240 = append(
+				Rule240, f)
 				goto JudgeDone
 			}
 			log(triggerLocalPath)
 			continue
 
-		} else if Topic241 == topic2 { // 241
-			if f, ok1 := rule.(func(data *sensor_msgs.LaserScan) string); ok1 {
+		} else if Topic241 == topic2 { // 6
+			if f, ok1 := rule.(func( data * sensor_msgs.LaserScan) string)
+			ok1{
 				Rule241 = append(Rule241, f)
 				goto JudgeDone
 			}
 			log(triggerLocalPath)
 			continue
 
-		} else if Topic242 == topic2 { // 242
-			if f, ok1 := rule.(func(data *sensor_msgs.LaserScan) string); ok1 {
+		} else if Topic242 == topic2 { // 7
+			if f, ok1 := rule.(func(data * sensor_msgs.LaserScan) string)
+			ok1{
 				Rule242 = append(Rule242, f)
 				goto JudgeDone
 			}
 			log(triggerLocalPath)
 			continue
 
-		} else if Topic243 == topic2 { // 243
-			if f, ok1 := rule.(func(data *sensor_msgs.LaserScan) string); ok1 {
+		} else if Topic243 == topic2 { // 8
+			if f, ok1 := rule.(func(data * sensor_msgs.LaserScan) string)
+			ok1{
 				Rule243 = append(Rule243, f)
 				goto JudgeDone
 			}
 			log(triggerLocalPath)
 			continue
 
-		} else if Topic244 == topic2 { // 244
-			if f, ok1 := rule.(func(data *sensor_msgs.LaserScan) string); ok1 {
+		} else if Topic244 == topic2 { // 9
+			if f, ok1 := rule.(func(
+			data * sensor_msgs.LaserScan) string)
+			ok1{
 				Rule244 = append(Rule244, f)
 				goto JudgeDone
 			}
-			log(triggerLocalPath)
+			log(
+			triggerLocalPath)
 			continue
 
-		} else if Topic245 == topic2 { // 245
-			if f, ok1 := rule.(func(data *sensor_msgs.PointCloud2) string); ok1 {
-				Rule245 = append(Rule245, f)
-				goto JudgeDone
-			}
-			log(triggerLocalPath)
-			continue
+		} else if Topic245 == topic2 { // 10
+			if f, ok1 := rule.(
+			func(
+			data * sensor_msgs.PointCloud2) string)
+			ok1
+			{
+			Rule245 = append(
+			Rule245, f)
+			goto JudgeDone
+		}
+		log(triggerLocalPath)
+		continue
 
-		} else if Topic246 == topic2 { // 246
-			if f, ok1 := rule.(func(data *sensor_msgs.PointCloud2) string); ok1 {
-				Rule246 = append(Rule246, f)
-				goto JudgeDone
-			}
-			log(triggerLocalPath)
-			continue
-		} else if Topic247 == topic2 { // 247
-			if f, ok1 := rule.(func(data *visualization_msgs.MarkerArray) string); ok1 {
-				Rule247 = append(Rule247, f)
-				goto JudgeDone
-			}
-			log(triggerLocalPath)
-			continue
+	} else if Topic246 == topic2 { // 11
+		if f, ok1 := rule.(func (data *sensor_msgs.PointCloud2) string); ok1 {
+		Rule246 = append(Rule246, f)
+		goto JudgeDone
+		}
+		log(triggerLocalPath)
+		continue
 
-		} else if Topic248 == topic2 { // 248
-			if f, ok1 := rule.(func(data *common_msgs.SensorTask) string); ok1 {
-				Rule248 = append(Rule248, f)
-				goto JudgeDone
-			}
-			log(triggerLocalPath)
-			continue
+		} else if Topic247 == topic2 { // 12
+		if f, ok1 := rule.(func (data *visualization_msgs.MarkerArray) string); ok1 {
+		Rule247 = append(Rule247, f)
+		goto JudgeDone
+		}
+		log(triggerLocalPath)
+		continue
 
-		} else if Topic249 == topic2 { // 249
-			if f, ok1 := rule.(func(data *std_msgs.String) string); ok1 {
-				Rule249 = append(Rule249, f)
-				goto JudgeDone
-			}
-			log(triggerLocalPath)
-			continue
+		} else if Topic248 == topic2 { // 13
+		if f, ok1 := rule.(func (data *common_msgs.SensorTask) string); ok1 {
+		Rule248 = append(Rule248, f)
+		goto JudgeDone
+		}
+		log(triggerLocalPath)
+		continue
 
-		} else if Topic250 == topic2 { // 250
-			if f, ok1 := rule.(func(data *geometry_msgs.Vector3Stamped) string); ok1 {
-				Rule250 = append(Rule250, f)
-				goto JudgeDone
-			}
-			log(triggerLocalPath)
-			continue
+		} else if Topic249 == topic2 { // 14
+		if f, ok1 := rule.(func (data *std_msgs.String) string); ok1 {
+		Rule249 = append(Rule249, f)
+		goto JudgeDone
+		}
+		log(triggerLocalPath)
+		continue
 
-		} else if Topic251 == topic2 { // 251
-			if f, ok1 := rule.(func(data *common_msgs.SonarList) string); ok1 {
-				Rule251 = append(Rule251, f)
-				goto JudgeDone
-			}
-			log(triggerLocalPath)
-			continue
+		} else if Topic250 == topic2 { // 15
+		if f, ok1 := rule.(func (data *geometry_msgs.Vector3Stamped) string); ok1 {
+		Rule250 = append(Rule250, f)
+		goto JudgeDone
+		}
+		log(triggerLocalPath)
+		continue
 
-		} else if Topic252 == topic2 { // 252
-			if f, ok1 := rule.(func(data *nav_msgs.Odometry) string); ok1 {
-				Rule252 = append(Rule252, f)
-				goto JudgeDone
-			}
-			log(triggerLocalPath)
-			continue
+		} else if Topic251 == topic2 { // 16
+		if f, ok1 := rule.(func (data *common_msgs.SonarList) string); ok1 {
+		Rule251 = append(Rule251, f)
+		goto JudgeDone
+		}
+		log(triggerLocalPath)
+		continue
 
-		} else if Topic253 == topic2 { // 253
-			if f, ok1 := rule.(func(data *sensor_msgs.LaserScan) string); ok1 {
-				Rule253 = append(Rule253, f)
-				goto JudgeDone
-			}
-			log(triggerLocalPath)
-			continue
+		} else if Topic252 == topic2 { // 17
+		if f, ok1 := rule.(func (data *nav_msgs.Odometry) string); ok1 {
+		Rule252 = append(Rule252, f)
+		goto JudgeDone
+		}
+		log(triggerLocalPath)
+		continue
 
-		} else if Topic254 == topic2 { // 254
-			if f, ok1 := rule.(func(data *std_msgs.Bool) string); ok1 {
-				Rule254 = append(Rule254, f)
-				goto JudgeDone
-			}
-			log(triggerLocalPath)
-			continue
+		} else if Topic253 == topic2 { // 18
+		if f, ok1 := rule.(func (data *sensor_msgs.LaserScan) string); ok1 {
+		Rule253 = append(Rule253, f)
+		goto JudgeDone
+		}
+		log(triggerLocalPath)
+		continue
 
-		} else if Topic255 == topic2 { // 255
-			if f, ok1 := rule.(func(data *sensor_msgs.LaserScan) string); ok1 {
-				Rule255 = append(Rule255, f)
-				goto JudgeDone
-			}
-			log(triggerLocalPath)
-			continue
+		} else if Topic254 == topic2 { // 19
+		if f, ok1 := rule.(func (data *std_msgs.Bool) string); ok1 {
+		Rule254 = append(Rule254, f)
+		goto JudgeDone
+		}
+		log(triggerLocalPath)
+		continue
 
-		} else if Topic256 == topic2 { // 256
-			if f, ok1 := rule.(func(data *std_msgs.String) string); ok1 {
-				Rule256 = append(Rule256, f)
-				goto JudgeDone
-			}
-			log(triggerLocalPath)
-			continue
+		} else if Topic255 == topic2 { // 20
+		if f, ok1 := rule.(func (data *sensor_msgs.LaserScan) string); ok1 {
+		Rule255 = append(Rule255, f)
+		goto JudgeDone
+		}
+		log(triggerLocalPath)
+		continue
 
-		} else if Topic257 == topic2 { // 257
-			if f, ok1 := rule.(func(data *std_msgs.Bool) string); ok1 {
-				Rule257 = append(Rule257, f)
-				goto JudgeDone
-			}
-			log(triggerLocalPath)
-			continue
+		} else if Topic256 == topic2 { // 21
+		if f, ok1 := rule.(func (data *std_msgs.String) string); ok1 {
+		Rule256 = append(Rule256, f)
+		goto JudgeDone
+		}
+		log(triggerLocalPath)
+		continue
 
-		} else if Topic258 == topic2 { // 258
-			if f, ok1 := rule.(func(data *sensor_msgs.CameraInfo) string); ok1 {
-				Rule258 = append(Rule258, f)
-				goto JudgeDone
-			}
-			log(triggerLocalPath)
-			continue
+		} else if Topic257 == topic2 { // 22
+		if f, ok1 := rule.(func (data *std_msgs.Bool) string); ok1 {
+		Rule257 = append(Rule257, f)
+		goto JudgeDone
+		}
+		log(triggerLocalPath)
+		continue
 
-		} else if Topic259 == topic2 { // 259
-			if f, ok1 := rule.(func(data *common_msgs.SysInfo) string); ok1 {
-				Rule259 = append(Rule259, f)
-				goto JudgeDone
-			}
-			log(triggerLocalPath)
-			continue
+		} else if Topic258 == topic2 { // 23
+		if f, ok1 := rule.(func (data *sensor_msgs.CameraInfo) string); ok1 {
+		Rule258 = append(Rule258, f)
+		goto JudgeDone
+		}
+		log(triggerLocalPath)
+		continue
 
-		} else if Topic260 == topic2 { // 260
-			if f, ok1 := rule.(func(data *sensor_msgs.Image) string); ok1 {
-				Rule260 = append(Rule260, f)
-				goto JudgeDone
-			}
-			log(triggerLocalPath)
-			continue
+		} else if Topic259 == topic2 { // 24
+		if f, ok1 := rule.(func (data *common_msgs.SysInfo) string); ok1 {
+		Rule259 = append(Rule259, f)
+		goto JudgeDone
+		}
+		log(triggerLocalPath)
+		continue
 
-		} else if Topic261 == topic2 { // 261
-			if f, ok1 := rule.(func(data *sensor_msgs.CompressedImage) string); ok1 {
-				Rule261 = append(Rule261, f)
-				goto JudgeDone
-			}
-			log(triggerLocalPath)
-			continue
+		} else if Topic260 == topic2 { // 25
+		if f, ok1 := rule.(func (data *sensor_msgs.Image) string); ok1 {
+		Rule260 = append(Rule260, f)
+		goto JudgeDone
+		}
+		log(triggerLocalPath)
+		continue
 
-		} else if Topic262 == topic2 { // 262
-			if f, ok1 := rule.(func(data *dynamic_reconfigure.ConfigDescription) string); ok1 {
-				Rule262 = append(Rule262, f)
-				goto JudgeDone
-			}
-			log(triggerLocalPath)
-			continue
+		} else if Topic261 == topic2 { // 26
+		if f, ok1 := rule.(func (data *sensor_msgs.CompressedImage) string); ok1 {
+		Rule261 = append(Rule261, f)
+		goto JudgeDone
+		}
+		log(triggerLocalPath)
+		continue
 
-		} else if Topic263 == topic2 { // 263
-			if f, ok1 := rule.(func(data *dynamic_reconfigure.Config) string); ok1 {
-				Rule263 = append(Rule263, f)
-				goto JudgeDone
-			}
-			log(triggerLocalPath)
-			continue
+		} else if Topic262 == topic2 { // 27
+		if f, ok1 := rule.(func (data *dynamic_reconfigure.ConfigDescription) string); ok1 {
+		Rule262 = append(Rule262, f)
+		goto JudgeDone
+		}
+		log(triggerLocalPath)
+		continue
 
-		} else if Topic264 == topic2 { // 264
-			if f, ok1 := rule.(func(data *sensor_msgs.CompressedImage) string); ok1 {
-				Rule264 = append(Rule264, f)
-				goto JudgeDone
-			}
-			log(triggerLocalPath)
-			continue
+		} else if Topic263 == topic2 { // 28
+		if f, ok1 := rule.(func (data *dynamic_reconfigure.Config) string); ok1 {
+		Rule263 = append(Rule263, f)
+		goto JudgeDone
+		}
+		log(triggerLocalPath)
+		continue
 
-		} else if Topic265 == topic2 { // 265
-			if f, ok1 := rule.(func(data *dynamic_reconfigure.ConfigDescription) string); ok1 {
-				Rule265 = append(Rule265, f)
-				goto JudgeDone
-			}
-			log(triggerLocalPath)
-			continue
+		} else if Topic264 == topic2 { // 29
+		if f, ok1 := rule.(func (data *sensor_msgs.CompressedImage) string); ok1 {
+		Rule264 = append(Rule264, f)
+		goto JudgeDone
+		}
+		log(triggerLocalPath)
+		continue
 
-		} else if Topic266 == topic2 { // 266
-			if f, ok1 := rule.(func(data *dynamic_reconfigure.Config) string); ok1 {
-				Rule266 = append(Rule266, f)
-				goto JudgeDone
-			}
-			log(triggerLocalPath)
-			continue
+		} else if Topic265 == topic2 { // 30
+		if f, ok1 := rule.(func (data *dynamic_reconfigure.ConfigDescription) string); ok1 {
+		Rule265 = append(Rule265, f)
+		goto JudgeDone
+		}
+		log(triggerLocalPath)
+		continue
 
-		} else if Topic267 == topic2 { // 267
-			if f, ok1 := rule.(func(data *theora_image_transport.Packet) string); ok1 {
-				Rule267 = append(Rule267, f)
-				goto JudgeDone
-			}
-			log(triggerLocalPath)
-			continue
+		} else if Topic266 == topic2 { // 31
+		if f, ok1 := rule.(func (data *dynamic_reconfigure.Config) string); ok1 {
+		Rule266 = append(Rule266, f)
+		goto JudgeDone
+		}
+		log(triggerLocalPath)
+		continue
 
-		} else if Topic268 == topic2 { // 268
-			if f, ok1 := rule.(func(data *dynamic_reconfigure.ConfigDescription) string); ok1 {
-				Rule268 = append(Rule268, f)
-				goto JudgeDone
-			}
-			log(triggerLocalPath)
-			continue
+		} else if Topic267 == topic2 { // 32
+		if f, ok1 := rule.(func (data *theora_image_transport.Packet) string); ok1 {
+		Rule267 = append(Rule267, f)
+		goto JudgeDone
+		}
+		log(triggerLocalPath)
+		continue
 
-		} else if Topic269 == topic2 { // 269
-			if f, ok1 := rule.(func(data *dynamic_reconfigure.Config) string); ok1 {
-				Rule269 = append(Rule269, f)
-				goto JudgeDone
-			}
-			log(triggerLocalPath)
-			continue
+		} else if Topic268 == topic2 { // 33
+		if f, ok1 := rule.(func (data *dynamic_reconfigure.ConfigDescription) string); ok1 {
+		Rule268 = append(Rule268, f)
+		goto JudgeDone
+		}
+		log(triggerLocalPath)
+		continue
 
-		} else if Topic270 == topic2 { // 270
-			if f, ok1 := rule.(func(data *std_msgs.Bool) string); ok1 {
-				Rule270 = append(Rule270, f)
-				goto JudgeDone
-			}
-			log(triggerLocalPath)
-			continue
+		} else if Topic269 == topic2 { // 34
+		if f, ok1 := rule.(func (data *dynamic_reconfigure.Config) string); ok1 {
+		Rule269 = append(Rule269, f)
+		goto JudgeDone
+		}
+		log(triggerLocalPath)
+		continue
 
-		} else if Topic271 == topic2 { // 271
-			if f, ok1 := rule.(func(data *geometry_msgs.PoseStamped) string); ok1 {
-				Rule271 = append(Rule271, f)
-				goto JudgeDone
-			}
-			log(triggerLocalPath)
-			continue
+		} else if Topic270 == topic2 { // 35
+		if f, ok1 := rule.(func (data *std_msgs.Bool) string); ok1 {
+		Rule270 = append(Rule270, f)
+		goto JudgeDone
+		}
+		log(triggerLocalPath)
+		continue
 
-		} else if Topic272 == topic2 { // 272
-			if f, ok1 := rule.(func(data *geometry_msgs.Vector3Stamped) string); ok1 {
-				Rule272 = append(Rule272, f)
-				goto JudgeDone
-			}
-			log(triggerLocalPath)
-			continue
+		} else if Topic271 == topic2 { // 36
+		if f, ok1 := rule.(func (data *geometry_msgs.PoseStamped) string); ok1 {
+		Rule271 = append(Rule271, f)
+		goto JudgeDone
+		}
+		log(triggerLocalPath)
+		continue
 
-		} else if Topic273 == topic2 { // 273
-			if f, ok1 := rule.(func(data *common_msgs.TaskFeedbackInfo) string); ok1 {
-				Rule273 = append(Rule273, f)
-				goto JudgeDone
-			}
-			log(triggerLocalPath)
-			continue
+		} else if Topic272 == topic2 { // 37
+		if f, ok1 := rule.(func (data *geometry_msgs.Vector3Stamped) string); ok1 {
+		Rule272 = append(Rule272, f)
+		goto JudgeDone
+		}
+		log(triggerLocalPath)
+		continue
 
-		} else if Topic274 == topic2 { // 274
-			if f, ok1 := rule.(func(data *common_msgs.Points) string); ok1 {
-				Rule274 = append(Rule274, f)
-				goto JudgeDone
-			}
-			log(triggerLocalPath)
-			continue
+		} else if Topic273 == topic2 { // 38
+		if f, ok1 := rule.(func (data *common_msgs.TaskFeedbackInfo) string); ok1 {
+		Rule273 = append(Rule273, f)
+		goto JudgeDone
+		}
+		log(triggerLocalPath)
+		continue
 
-		} else if Topic275 == topic2 { // 275
-			if f, ok1 := rule.(func(data *tf2_msgs.TFMessage) string); ok1 {
-				Rule275 = append(Rule275, f)
-				goto JudgeDone
-			}
-			log(triggerLocalPath)
-			continue
+		} else if Topic274 == topic2 { // 39
+		if f, ok1 := rule.(func (data *common_msgs.Points) string); ok1 {
+		Rule274 = append(Rule274, f)
+		goto JudgeDone
+		}
+		log(triggerLocalPath)
+		continue
 
-		} else if Topic276 == topic2 { // 276
-			if f, ok1 := rule.(func(data *std_msgs.String) string); ok1 {
-				Rule276 = append(Rule276, f)
-				goto JudgeDone
-			}
-			log(triggerLocalPath)
-			continue
+		} else if Topic275 == topic2 { // 40
+		if f, ok1 := rule.(func (data *tf2_msgs.TFMessage) string); ok1 {
+		Rule275 = append(Rule275, f)
+		goto JudgeDone
+		}
+		log(triggerLocalPath)
+		continue
 
-		} else if Topic277 == topic2 { // 277
-			if f, ok1 := rule.(func(data *tf2_msgs.TFMessage) string); ok1 {
-				Rule277 = append(Rule277, f)
-				goto JudgeDone
-			}
-			log(triggerLocalPath)
-			continue
+		} else if Topic276 == topic2 { // 41
+		if f, ok1 := rule.(func (data *std_msgs.String) string); ok1 {
+		Rule276 = append(Rule276, f)
+		goto JudgeDone
+		}
+		log(triggerLocalPath)
+		continue
 
-		} else if Topic278 == topic2 { // 278
-			if f, ok1 := rule.(func(data *nav_msgs.Path) string); ok1 {
-				Rule278 = append(Rule278, f)
-				goto JudgeDone
-			}
-			log(triggerLocalPath)
-			continue
+		} else if Topic277 == topic2 { // 42
+		if f, ok1 := rule.(func (data *tf2_msgs.TFMessage) string); ok1 {
+		Rule277 = append(Rule277, f)
+		goto JudgeDone
+		}
+		log(triggerLocalPath)
+		continue
 
-		} else if Topic279 == topic2 { // 279
-			if f, ok1 := rule.(func(data *common_msgs.UpLoadFileList) string); ok1 {
-				Rule279 = append(Rule279, f)
-				goto JudgeDone
-			}
-			log(triggerLocalPath)
-			continue
+		} else if Topic278 == topic2 { // 43
+		if f, ok1 := rule.(func (data *nav_msgs.Path) string); ok1 {
+		Rule278 = append(Rule278, f)
+		goto JudgeDone
+		}
+		log(triggerLocalPath)
+		continue
 
-		} else if Topic280 == topic2 { // 280
-			if f, ok1 := rule.(func(data *sensor_msgs.Range) string); ok1 {
-				Rule280 = append(Rule280, f)
-				goto JudgeDone
-			}
-			log(triggerLocalPath)
-			continue
+		} else if Topic279 == topic2 { // 44
+		if f, ok1 := rule.(func (data *common_msgs.UpLoadFileList) string); ok1 {
+		Rule279 = append(Rule279, f)
+		goto JudgeDone
+		}
+		log(triggerLocalPath)
+		continue
 
-		} else if Topic281 == topic2 { // 281
-			if f, ok1 := rule.(func(data *sensor_msgs.LaserScan) string); ok1 {
-				Rule281 = append(Rule281, f)
-				goto JudgeDone
-			}
-			log(triggerLocalPath)
-			continue
+		} else if Topic280 == topic2 { // 45
+		if f, ok1 := rule.(func (data *sensor_msgs.Range) string); ok1 {
+		Rule280 = append(Rule280, f)
+		goto JudgeDone
+		}
+		log(triggerLocalPath)
+		continue
 
-		} else if Topic282 == topic2 { // 282
-			if f, ok1 := rule.(func(data *sensor_msgs.LaserScan) string); ok1 {
-				Rule282 = append(Rule282, f)
-				goto JudgeDone
-			}
-			log(triggerLocalPath)
-			continue
+		} else if Topic281 == topic2 { // 46
+		if f, ok1 := rule.(func (data *sensor_msgs.LaserScan) string); ok1 {
+		Rule281 = append(Rule281, f)
+		goto JudgeDone
+		}
+		log(triggerLocalPath)
+		continue
 
-		} else if Topic283 == topic2 { // 283
-			if f, ok1 := rule.(func(data *sensor_msgs.LaserScan) string); ok1 {
-				Rule283 = append(Rule283, f)
-				goto JudgeDone
-			}
-			log(triggerLocalPath)
-			continue
+		} else if Topic282 == topic2 { // 47
+		if f, ok1 := rule.(func (data *sensor_msgs.LaserScan) string); ok1 {
+		Rule282 = append(Rule282, f)
+		goto JudgeDone
+		}
+		log(triggerLocalPath)
+		continue
 
-		} else if Topic284 == topic2 { // 284
-			if f, ok1 := rule.(func(data *sensor_msgs.LaserScan) string); ok1 {
-				Rule284 = append(Rule284, f)
-				goto JudgeDone
-			}
-			log(triggerLocalPath)
-			continue
+		} else if Topic283 == topic2 { // 48
+		if f, ok1 := rule.(func (data *sensor_msgs.LaserScan) string); ok1 {
+		Rule283 = append(Rule283, f)
+		goto JudgeDone
+		}
+		log(triggerLocalPath)
+		continue
+
+		} else if Topic284 == topic2 { // 49
+		if f, ok1 := rule.(func (data *sensor_msgs.LaserScan) string); ok1 {
+		Rule284 = append(Rule284, f)
+		goto JudgeDone
+		}
+		log(triggerLocalPath)
+		continue
 		} else {
-			c_log.GlobalLogger.Error("未知的topic:", topic2)
-			continue
+		c_log.GlobalLogger.Error("未知的topic:", topic2)
+		continue
 		}
-	JudgeDone:
+		JudgeDone:
 		label, err := open.Lookup("Label")
 		if err != nil {
-			c_log.GlobalLogger.Error("加载本地插件 ", triggerLocalPath, " 中的 Label 方法失败。", err)
-			continue
+		c_log.GlobalLogger.Error("加载本地插件 ", triggerLocalPath, " 中的 Label 方法失败。", err)
+		continue
 		}
-		labelFunc := label.(func() string)
+		labelFunc := label.(func () string)
 		labelString := labelFunc()
 		LabelMapTriggerId.Store(labelString, triggerId)
 		success++

+ 0 - 885
aarch64/pjibot_clean/master/package/config/trigger_var.go

@@ -1,885 +0,0 @@
-package config
-
-import (
-	"cicv-data-closedloop/pjibot_clean_msgs/cartographer_ros_msgs"
-	"cicv-data-closedloop/pjibot_clean_msgs/clean_msg"
-	"cicv-data-closedloop/pjibot_clean_msgs/common_msgs"
-	"cicv-data-closedloop/pjibot_clean_msgs/dynamic_reconfigure"
-	"cicv-data-closedloop/pjibot_clean_msgs/ipa_building_msgs"
-	"cicv-data-closedloop/pjibot_clean_msgs/localization_monitor"
-	"cicv-data-closedloop/pjibot_clean_msgs/theora_image_transport"
-	"github.com/bluenviron/goroslib/v2/pkg/msgs/actionlib_msgs"
-	"github.com/bluenviron/goroslib/v2/pkg/msgs/diagnostic_msgs"
-	"github.com/bluenviron/goroslib/v2/pkg/msgs/geometry_msgs"
-	"github.com/bluenviron/goroslib/v2/pkg/msgs/nav_msgs"
-	"github.com/bluenviron/goroslib/v2/pkg/msgs/rosgraph_msgs"
-	"github.com/bluenviron/goroslib/v2/pkg/msgs/sensor_msgs"
-	"github.com/bluenviron/goroslib/v2/pkg/msgs/std_msgs"
-	"github.com/bluenviron/goroslib/v2/pkg/msgs/tf2_msgs"
-	"github.com/bluenviron/goroslib/v2/pkg/msgs/visualization_msgs"
-	"sync"
-)
-
-var (
-	LabelMapTriggerId = new(sync.Map)
-	// todo 这里是全量的topic,添加topic则需要同时在下面的数组添加;也需要在produce_window.go中添加新的订阅者
-	AllTopics = []string{
-		Topic1,   // 1
-		Topic2,   // 2
-		Topic3,   // 3
-		Topic4,   // 4
-		Topic5,   // 5
-		Topic6,   // 6
-		Topic7,   // 7
-		Topic8,   // 8
-		Topic9,   // 9
-		Topic10,  // 10
-		Topic11,  // 11
-		Topic12,  // 12
-		Topic13,  // 13
-		Topic14,  // 14
-		Topic15,  // 15
-		Topic16,  // 16
-		Topic17,  // 17
-		Topic18,  // 18
-		Topic19,  // 19
-		Topic20,  // 20
-		Topic21,  // 21
-		Topic22,  // 22
-		Topic23,  // 23
-		Topic24,  // 24
-		Topic25,  // 25
-		Topic26,  // 26
-		Topic27,  // 27
-		Topic28,  // 28
-		Topic29,  // 29
-		Topic30,  // 30
-		Topic31,  // 31
-		Topic32,  // 32
-		Topic33,  // 33
-		Topic34,  // 34
-		Topic35,  // 35
-		Topic36,  // 36
-		Topic37,  // 37
-		Topic38,  // 38
-		Topic39,  // 39
-		Topic40,  // 40
-		Topic41,  // 41
-		Topic42,  // 42
-		Topic43,  // 43
-		Topic44,  // 44
-		Topic45,  // 45
-		Topic46,  // 46
-		Topic47,  // 47
-		Topic48,  // 48
-		Topic49,  // 49
-		Topic50,  // 50
-		Topic51,  // 51
-		Topic52,  // 52
-		Topic53,  // 53
-		Topic54,  // 54
-		Topic55,  // 55
-		Topic56,  // 56
-		Topic57,  // 57
-		Topic58,  // 58
-		Topic59,  // 59
-		Topic60,  // 60
-		Topic61,  // 61
-		Topic62,  // 62
-		Topic63,  // 63
-		Topic64,  // 64
-		Topic65,  // 65
-		Topic66,  // 66
-		Topic67,  // 67
-		Topic68,  // 68
-		Topic69,  // 69
-		Topic70,  // 70
-		Topic71,  // 71
-		Topic72,  // 72
-		Topic73,  // 73
-		Topic74,  // 74
-		Topic75,  // 75
-		Topic76,  // 76
-		Topic77,  // 77
-		Topic78,  // 78
-		Topic79,  // 79
-		Topic80,  // 80
-		Topic81,  // 81
-		Topic82,  // 82
-		Topic83,  // 83
-		Topic84,  // 84
-		Topic85,  // 85
-		Topic86,  // 86
-		Topic87,  // 87
-		Topic88,  // 88
-		Topic89,  // 89
-		Topic90,  // 90
-		Topic91,  // 91
-		Topic92,  // 92
-		Topic93,  // 93
-		Topic94,  // 94
-		Topic95,  // 95
-		Topic96,  // 96
-		Topic97,  // 97
-		Topic98,  // 98
-		Topic99,  // 99
-		Topic100, // 100
-		Topic101, // 101
-		Topic102, // 102
-		Topic103, // 103
-		Topic104, // 104
-		Topic105, // 105
-		Topic106, // 106
-		Topic107, // 107
-		Topic108, // 108
-		Topic109, // 109
-		Topic110, // 110
-		Topic111, // 111
-		Topic112, // 112
-		Topic113, // 113
-		Topic114, // 114
-		Topic115, // 115
-		Topic116, // 116
-		Topic117, // 117
-		Topic118, // 118
-		Topic119, // 119
-		Topic120, // 120
-		Topic121, // 121
-		Topic122, // 122
-		Topic123, // 123
-		Topic124, // 124
-		Topic125, // 125
-		Topic126, // 126
-		Topic127, // 127
-		Topic128, // 128
-		Topic129, // 129
-		Topic130, // 130
-		Topic131, // 131
-		Topic132, // 132
-		Topic133, // 133
-		Topic134, // 134
-		Topic135, // 135
-		Topic136, // 136
-		Topic137, // 137
-		Topic138, // 138
-		Topic139, // 139
-		Topic140, // 140
-		Topic141, // 141
-		Topic142, // 142
-		Topic143, // 143
-		Topic144, // 144
-		Topic145, // 145
-		Topic146, // 146
-		Topic147, // 147
-		Topic148, // 148
-		Topic149, // 149
-		Topic150, // 150
-		Topic151, // 151
-		Topic152, // 152
-		Topic153, // 153
-		Topic154, // 154
-		Topic155, // 155
-		Topic156, // 156
-		Topic157, // 157
-		Topic158, // 158
-		Topic159, // 159
-		Topic160, // 160
-		Topic161, // 161
-		Topic162, // 162
-		Topic163, // 163
-		Topic164, // 164
-		Topic165, // 165
-		Topic166, // 166
-		Topic167, // 167
-		Topic168, // 168
-		Topic169, // 169
-		Topic170, // 170
-		Topic171, // 171
-		Topic172, // 172
-		Topic173, // 173
-		Topic174, // 174
-		Topic175, // 175
-		Topic176, // 176
-		Topic177, // 177
-		Topic178, // 178
-		Topic179, // 179
-		Topic180, // 180
-		Topic181, // 181
-		Topic182, // 182
-		Topic183, // 183
-		Topic184, // 184
-		Topic185, // 185
-		Topic186, // 186
-		Topic187, // 187
-		Topic188, // 188
-		Topic189, // 189
-		Topic190, // 190
-		Topic191, // 191
-		Topic192, // 192
-		Topic193, // 193
-		Topic194, // 194
-		Topic195, // 195
-		Topic196, // 196
-		Topic197, // 197
-		Topic198, // 198
-		Topic199, // 199
-		Topic200, // 200
-		Topic201, // 201
-		Topic202, // 202
-		Topic203, // 203
-		Topic204, // 204
-		Topic205, // 205
-		Topic206, // 206
-		Topic207, // 207
-		Topic208, // 208
-		Topic209, // 209
-		Topic210, // 210
-		Topic211, // 211
-		Topic212, // 212
-		Topic213, // 213
-		Topic214, // 214
-		Topic215, // 215
-		Topic216, // 216
-		Topic217, // 217
-		Topic218, // 218
-		Topic219, // 219
-		Topic220, // 220
-		Topic221, // 221
-		Topic222, // 222
-		Topic223, // 223
-		Topic224, // 224
-		Topic225, // 225
-		Topic226, // 226
-		Topic227, // 227
-		Topic228, // 228
-		Topic229, // 229
-		Topic230, // 230
-		Topic231, // 231
-		Topic232, // 232
-		Topic233, // 233
-		Topic234, // 234
-		Topic235, // 235
-		Topic236, // 236
-		Topic237, // 237
-		Topic238, // 238
-		Topic239, // 239
-		Topic240, // 240
-		Topic241, // 241
-		Topic242, // 242
-		Topic243, // 243
-		Topic244, // 244
-		Topic245, // 245
-		Topic246, // 246
-		Topic247, // 247
-		Topic248, // 248
-		Topic249, // 249
-		Topic250, // 250
-		Topic251, // 251
-		Topic252, // 252
-		Topic253, // 253
-		Topic254, // 254
-		Topic255, // 255
-		Topic256, // 256
-		Topic257, // 257
-		Topic258, // 258
-		Topic259, // 259
-		Topic260, // 260
-		Topic261, // 261
-		Topic262, // 262
-		Topic263, // 263
-		Topic264, // 264
-		Topic265, // 265
-		Topic266, // 266
-		Topic267, // 267
-		Topic268, // 268
-		Topic269, // 269
-		Topic270, // 270
-		Topic271, // 271
-		Topic272, // 272
-		Topic273, // 273
-		Topic274, // 274
-		Topic275, // 275
-		Topic276, // 276
-		Topic277, // 277
-		Topic278, // 278
-		Topic279, // 279
-		Topic280, // 280
-		Topic281, // 281
-		Topic282, // 282
-		Topic283, // 283
-		Topic284, // 284
-	}
-	// topic
-	Topic1   = "/Electrification"
-	Topic2   = "/along_wall_start_point"
-	Topic3   = "/amcl/parameter_descriptions"
-	Topic4   = "/amcl/parameter_updates"
-	Topic5   = "/amcl_enter_mapconvert_topic"
-	Topic6   = "/amcl_pose"
-	Topic7   = "/amcl_relocalization_finish_pub"
-	Topic8   = "/amcl_topic"
-	Topic9   = "/any_eye/run_line_light"
-	Topic10  = "/application_heart_beat"
-	Topic11  = "/auto_dock/heart"
-	Topic12  = "/back_top_points_process"
-	Topic13  = "/batter"
-	Topic14  = "/boot_time"
-	Topic15  = "/boundingboxes_line"
-	Topic16  = "/call_icp"
-	Topic17  = "/camera/depth/camera_info"
-	Topic18  = "/camera/depth/image_raw"
-	Topic19  = "/camera/depth/image_raw/compressed"
-	Topic20  = "/camera/depth/image_raw/compressed/parameter_descriptions"
-	Topic21  = "/camera/depth/image_raw/compressed/parameter_updates"
-	Topic22  = "/camera/depth/image_raw/compressedDepth"
-	Topic23  = "/camera/depth/image_raw/compressedDepth/parameter_descriptions"
-	Topic24  = "/camera/depth/image_raw/compressedDepth/parameter_updates"
-	Topic25  = "/camera/depth/image_raw/theora"
-	Topic26  = "/camera/depth/image_raw/theora/parameter_descriptions"
-	Topic27  = "/camera/depth/image_raw/theora/parameter_updates"
-	Topic28  = "/camera/depth/points"
-	Topic29  = "/camera/ir/camera_info"
-	Topic30  = "/camera/ir/image_raw"
-	Topic31  = "/camera/ir/image_raw/compressed"
-	Topic32  = "/camera/ir/image_raw/compressed/parameter_descriptions"
-	Topic33  = "/camera/ir/image_raw/compressed/parameter_updates"
-	Topic34  = "/camera/ir/image_raw/compressedDepth"
-	Topic35  = "/camera/ir/image_raw/compressedDepth/parameter_descriptions"
-	Topic36  = "/camera/ir/image_raw/compressedDepth/parameter_updates"
-	Topic37  = "/camera/ir/image_raw/theora"
-	Topic38  = "/camera/ir/image_raw/theora/parameter_descriptions"
-	Topic39  = "/camera/ir/image_raw/theora/parameter_updates"
-	Topic40  = "/charge_tag_pos"
-	Topic41  = "/charge_target"
-	Topic42  = "/clean_pnc/astar_path_planner/path"
-	Topic43  = "/clean_pnc/battery_state"
-	Topic44  = "/clean_pnc/bumper"
-	Topic45  = "/clean_pnc/charger/station_line"
-	Topic46  = "/clean_pnc/charging_station/detect_position"
-	Topic47  = "/clean_pnc/charging_station/odom_position"
-	Topic48  = "/clean_pnc/charging_station/position"
-	Topic49  = "/clean_pnc/clean_cmd"
-	Topic50  = "/clean_pnc/cost_map/footprint"
-	Topic51  = "/clean_pnc/cost_map/footprint_spec"
-	Topic52  = "/clean_pnc/cost_map/global_costmap"
-	Topic53  = "/clean_pnc/cost_map/local_costmap"
-	Topic54  = "/clean_pnc/cost_map/task_costmap"
-	Topic55  = "/clean_pnc/cur_clean_area"
-	Topic56  = "/clean_pnc/current_task_list_loop_times"
-	Topic57  = "/clean_pnc/dwa_path_planner/global_path"
-	Topic58  = "/clean_pnc/error_code"
-	Topic59  = "/clean_pnc/function_map/compute_follow_path_map"
-	Topic60  = "/clean_pnc/function_map/forbidden_clean_area"
-	Topic61  = "/clean_pnc/function_map/need_clean_area"
-	Topic62  = "/clean_pnc/function_map/no_need_clean_area"
-	Topic63  = "/clean_pnc/function_map/task_cleaned_map"
-	Topic64  = "/clean_pnc/function_map/task_list_cleaned_map"
-	Topic65  = "/clean_pnc/save_report"
-	Topic66  = "/clean_pnc/scram_button"
-	Topic67  = "/clean_pnc/type/pause"
-	Topic68  = "/clean_polygon"
-	Topic69  = "/clicked_point"
-	Topic70  = "/close_imu_topic_"
-	Topic71  = "/cloud_cmd"
-	Topic72  = "/cmd_vel"
-	Topic73  = "/collisionDetection"
-	Topic74  = "/create_map_info"
-	Topic75  = "/ctrl_speed_deal_before"
-	Topic76  = "/current/sensor_status"
-	Topic77  = "/custom_path"
-	Topic78  = "/data_fusion_path"
-	Topic79  = "/detect/boundingboxes"
-	Topic80  = "/diagnostic/mcu"
-	Topic81  = "/diagnostics"
-	Topic82  = "/disinfection"
-	Topic83  = "/disinfection_info"
-	Topic84  = "/dock_flag"
-	Topic85  = "/dynamic_scan"
-	Topic86  = "/dynamic_wall_line_pub"
-	Topic87  = "/elevate_scence"
-	Topic88  = "/elevate_state_topic"
-	Topic89  = "/elevator_dwa/task_status"
-	Topic90  = "/engine/current_robot_mode"
-	Topic91  = "/engine/current_task_info"
-	Topic92  = "/engine/map_info"
-	Topic93  = "/engine/out_line_path"
-	Topic94  = "/engine/video_stream_push"
-	Topic95  = "/floor_downsample"
-	Topic96  = "/follow_path_path"
-	Topic97  = "/front_down_points_process"
-	Topic98  = "/front_top_points_downsample1"
-	Topic99  = "/front_top_points_process"
-	Topic100 = "/global_goal"
-	Topic101 = "/global_path"
-	Topic102 = "/hst007_camera_pose"
-	Topic103 = "/icp_initial_pose"
-	Topic104 = "/icp_localization_check_topic"
-	Topic105 = "/icp_relocalization_finish_pub_topic"
-	Topic106 = "/icp_relocalization_pub_topic"
-	Topic107 = "/icp_relocalization_sub_topic"
-	Topic108 = "/icp_run_topic"
-	Topic109 = "/icp_score"
-	Topic110 = "/icp_service"
-	Topic111 = "/icp_topic"
-	Topic112 = "/imu"
-	Topic113 = "/imu_cal_state"
-	Topic114 = "/imu_calibration_state"
-	Topic115 = "/imu_calibration_temperature"
-	Topic116 = "/imu_slover_param"
-	Topic117 = "/incline_localization"
-	Topic118 = "/initialpose"
-	Topic119 = "/joint_states"
-	Topic120 = "/kibana_log"
-	Topic121 = "/landmark"
-	Topic122 = "/laser_odom"
-	Topic123 = "/leg_scan"
-	Topic124 = "/lm_imu"
-	Topic125 = "/local_path_update"
-	Topic126 = "/localation_monitor_topic"
-	Topic127 = "/localization_convertMap_topic"
-	Topic128 = "/localization_fail"
-	Topic129 = "/localization_monitor_node/localation_monitor_topic"
-	Topic130 = "/localization_recover_pose"
-	Topic131 = "/localization_rocover_state"
-	Topic132 = "/localization_state_modiy"
-	Topic133 = "/locate_info"
-	Topic134 = "/locate_state"
-	Topic135 = "/lost_localization_state_"
-	Topic136 = "/lost_localization_warning_state"
-	Topic137 = "/manual_close_icp_topic"
-	Topic138 = "/map"
-	Topic139 = "/map_base64"
-	Topic140 = "/map_border"
-	Topic141 = "/map_merge_node/amcl_topic"
-	Topic142 = "/map_merge_node/icp_topic"
-	Topic143 = "/map_metadata"
-	Topic144 = "/move_base/GlobalPlanner/plan"
-	Topic145 = "/move_base_simple/goal"
-	Topic146 = "/mpc_cost_map"
-	Topic147 = "/mpc_cost_map1"
-	Topic148 = "/multi_persion_block"
-	Topic149 = "/mutli_person_block_pub"
-	Topic150 = "/new_imu"
-	Topic151 = "/node_Monitor"
-	Topic152 = "/node_Monitor/clean_pnc/state"
-	Topic153 = "/ob_camera_01/color/camera_info"
-	Topic154 = "/ob_camera_01/color/image_raw"
-	Topic155 = "/ob_camera_01/color/image_raw/compressed"
-	Topic156 = "/ob_camera_01/color/image_raw/compressed/parameter_descriptions"
-	Topic157 = "/ob_camera_01/color/image_raw/compressed/parameter_updates"
-	Topic158 = "/ob_camera_01/color/image_raw/compressedDepth"
-	Topic159 = "/ob_camera_01/color/image_raw/compressedDepth/parameter_descriptions"
-	Topic160 = "/ob_camera_01/color/image_raw/compressedDepth/parameter_updates"
-	Topic161 = "/ob_camera_01/color/image_raw/theora"
-	Topic162 = "/ob_camera_01/color/image_raw/theora/parameter_descriptions"
-	Topic163 = "/ob_camera_01/color/image_raw/theora/parameter_updates"
-	Topic164 = "/ob_camera_01/depth/camera_info"
-	Topic165 = "/ob_camera_01/depth/image_raw"
-	Topic166 = "/ob_camera_01/depth/image_raw/compressed"
-	Topic167 = "/ob_camera_01/depth/image_raw/compressed/parameter_descriptions"
-	Topic168 = "/ob_camera_01/depth/image_raw/compressed/parameter_updates"
-	Topic169 = "/ob_camera_01/depth/image_raw/compressedDepth"
-	Topic170 = "/ob_camera_01/depth/image_raw/compressedDepth/parameter_descriptions"
-	Topic171 = "/ob_camera_01/depth/image_raw/compressedDepth/parameter_updates"
-	Topic172 = "/ob_camera_01/depth/image_raw/theora"
-	Topic173 = "/ob_camera_01/depth/image_raw/theora/parameter_descriptions"
-	Topic174 = "/ob_camera_01/depth/image_raw/theora/parameter_updates"
-	Topic175 = "/ob_camera_01/depth/points"
-	Topic176 = "/ob_camera_02/color/camera_info"
-	Topic177 = "/ob_camera_02/color/image_raw"
-	Topic178 = "/ob_camera_02/color/image_raw/compressed"
-	Topic179 = "/ob_camera_02/color/image_raw/compressed/parameter_descriptions"
-	Topic180 = "/ob_camera_02/color/image_raw/compressed/parameter_updates"
-	Topic181 = "/ob_camera_02/color/image_raw/compressedDepth"
-	Topic182 = "/ob_camera_02/color/image_raw/compressedDepth/parameter_descriptions"
-	Topic183 = "/ob_camera_02/color/image_raw/compressedDepth/parameter_updates"
-	Topic184 = "/ob_camera_02/color/image_raw/theora"
-	Topic185 = "/ob_camera_02/color/image_raw/theora/parameter_descriptions"
-	Topic186 = "/ob_camera_02/color/image_raw/theora/parameter_updates"
-	Topic187 = "/ob_camera_02/depth/camera_info"
-	Topic188 = "/ob_camera_02/depth/image_raw"
-	Topic189 = "/ob_camera_02/depth/image_raw/compressed"
-	Topic190 = "/ob_camera_02/depth/image_raw/compressed/parameter_descriptions"
-	Topic191 = "/ob_camera_02/depth/image_raw/compressed/parameter_updates"
-	Topic192 = "/ob_camera_02/depth/image_raw/compressedDepth"
-	Topic193 = "/ob_camera_02/depth/image_raw/compressedDepth/parameter_descriptions"
-	Topic194 = "/ob_camera_02/depth/image_raw/compressedDepth/parameter_updates"
-	Topic195 = "/ob_camera_02/depth/image_raw/theora"
-	Topic196 = "/ob_camera_02/depth/image_raw/theora/parameter_descriptions"
-	Topic197 = "/ob_camera_02/depth/image_raw/theora/parameter_updates"
-	Topic198 = "/ob_camera_02/depth/points"
-	Topic199 = "/obberc_camera_back_pose"
-	Topic200 = "/obberc_camera_pose"
-	Topic201 = "/obstacle_detection"
-	Topic202 = "/odom"
-	Topic203 = "/odom_jump"
-	Topic204 = "/odom_localization"
-	Topic205 = "/odom_raw"
-	Topic206 = "/old_imu"
-	Topic207 = "/out_wallLine"
-	Topic208 = "/particlecloud"
-	Topic209 = "/pointcloud_topic"
-	Topic210 = "/pole_scan"
-	Topic211 = "/pose_correct_topic"
-	Topic212 = "/preventfalling"
-	Topic213 = "/pro_map_ctrl"
-	Topic214 = "/qs/clean_area"
-	Topic215 = "/qs/start_detectwall_line"
-	Topic216 = "/reference_path"
-	Topic217 = "/robot_add"
-	Topic218 = "/robot_is_slip"
-	Topic219 = "/robot_kidnap_state"
-	Topic220 = "/robot_lost"
-	Topic221 = "/robot_pose"
-	Topic222 = "/robot_pose_tf"
-	Topic223 = "/robot_shock"
-	Topic224 = "/robot_static_state"
-	Topic225 = "/robot_status"
-	Topic226 = "/robot_sub"
-	Topic227 = "/robot_sudden_state"
-	Topic228 = "/room_segmentation_server/cancel"
-	Topic229 = "/room_segmentation_server/feedback"
-	Topic230 = "/room_segmentation_server/goal"
-	Topic231 = "/room_segmentation_server/parameter_descriptions"
-	Topic232 = "/room_segmentation_server/parameter_updates"
-	Topic233 = "/room_segmentation_server/result"
-	Topic234 = "/room_segmentation_server/segmented_map"
-	Topic235 = "/room_segmentation_server/status"
-	Topic236 = "/rosout"
-	Topic237 = "/rosout_agg"
-	Topic238 = "/rviz_task_global_path"
-	Topic239 = "/safety"
-	Topic240 = "/scan"
-	Topic241 = "/scan_back_top"
-	Topic242 = "/scan_cliff"
-	Topic243 = "/scan_front_down"
-	Topic244 = "/scan_front_top"
-	Topic245 = "/scan_map_icp_amcl_node/map_point"
-	Topic246 = "/scan_map_icp_amcl_node/scan_point_transformed"
-	Topic247 = "/segmentation_map_marker"
-	Topic248 = "/sensor_task"
-	Topic249 = "/slip_topic"
-	Topic250 = "/sonar_alarm"
-	Topic251 = "/sonar_list"
-	Topic252 = "/srf_data"
-	Topic253 = "/srf_laser_odometry_node/srf_laser_truncated"
-	Topic254 = "/start_relocate"
-	Topic255 = "/static_scan"
-	Topic256 = "/sudden_stop_state_"
-	Topic257 = "/sunny/run_camera"
-	Topic258 = "/sunny_topic/device_HST007/tof_frame/camera_info"
-	Topic259 = "/sys_info"
-	Topic260 = "/tag_detections_image"
-	Topic261 = "/tag_detections_image/compressed"
-	Topic262 = "/tag_detections_image/compressed/parameter_descriptions"
-	Topic263 = "/tag_detections_image/compressed/parameter_updates"
-	Topic264 = "/tag_detections_image/compressedDepth"
-	Topic265 = "/tag_detections_image/compressedDepth/parameter_descriptions"
-	Topic266 = "/tag_detections_image/compressedDepth/parameter_updates"
-	Topic267 = "/tag_detections_image/theora"
-	Topic268 = "/tag_detections_image/theora/parameter_descriptions"
-	Topic269 = "/tag_detections_image/theora/parameter_updates"
-	Topic270 = "/tag_start"
-	Topic271 = "/target1"
-	Topic272 = "/task"
-	Topic273 = "/task_feedback_info"
-	Topic274 = "/task_global_path"
-	Topic275 = "/tf"
-	Topic276 = "/tf_data_error"
-	Topic277 = "/tf_static"
-	Topic278 = "/udata_fusion_path"
-	Topic279 = "/uploadBag"
-	Topic280 = "/vl_left"
-	Topic281 = "/xd1a_0"
-	Topic282 = "/xd1a_1"
-	Topic283 = "/xd1a_2"
-	Topic284 = "/xd1a_3"
-
-	// 触发器
-	Rule1   []func(data *std_msgs.Int16MultiArray) string
-	Rule2   []func(data *geometry_msgs.PoseStamped) string
-	Rule3   []func(data *dynamic_reconfigure.ConfigDescription) string
-	Rule4   []func(data *dynamic_reconfigure.Config) string
-	Rule5   []func(data *std_msgs.String) string
-	Rule6   []func(data *geometry_msgs.PoseWithCovarianceStamped) string
-	Rule7   []func(data *std_msgs.String) string
-	Rule8   []func(data *std_msgs.String) string
-	Rule9   []func(data *std_msgs.Bool) string
-	Rule10  []func(data *std_msgs.Int8) string
-	Rule11  []func(data *std_msgs.Int8) string
-	Rule12  []func(data *sensor_msgs.PointCloud2) string
-	Rule13  []func(data *sensor_msgs.BatteryState) string
-	Rule14  []func(data *std_msgs.Int16) string
-	Rule15  []func(data *visualization_msgs.Marker) string
-	Rule16  []func(data *std_msgs.String) string
-	Rule17  []func(data *sensor_msgs.CameraInfo) string
-	Rule18  []func(data *sensor_msgs.Image) string
-	Rule19  []func(data *sensor_msgs.CompressedImage) string
-	Rule20  []func(data *dynamic_reconfigure.ConfigDescription) string
-	Rule21  []func(data *dynamic_reconfigure.Config) string
-	Rule22  []func(data *sensor_msgs.CompressedImage) string
-	Rule23  []func(data *dynamic_reconfigure.ConfigDescription) string
-	Rule24  []func(data *dynamic_reconfigure.Config) string
-	Rule25  []func(data *theora_image_transport.Packet) string
-	Rule26  []func(data *dynamic_reconfigure.ConfigDescription) string
-	Rule27  []func(data *dynamic_reconfigure.Config) string
-	Rule28  []func(data *sensor_msgs.PointCloud2) string
-	Rule29  []func(data *sensor_msgs.CameraInfo) string
-	Rule30  []func(data *sensor_msgs.Image) string
-	Rule31  []func(data *sensor_msgs.CompressedImage) string
-	Rule32  []func(data *dynamic_reconfigure.ConfigDescription) string
-	Rule33  []func(data *dynamic_reconfigure.Config) string
-	Rule34  []func(data *sensor_msgs.CompressedImage) string
-	Rule35  []func(data *dynamic_reconfigure.ConfigDescription) string
-	Rule36  []func(data *dynamic_reconfigure.Config) string
-	Rule37  []func(data *theora_image_transport.Packet) string
-	Rule38  []func(data *dynamic_reconfigure.ConfigDescription) string
-	Rule39  []func(data *dynamic_reconfigure.Config) string
-	Rule40  []func(data *geometry_msgs.PoseStamped) string
-	Rule41  []func(data *geometry_msgs.PoseStamped) string
-	Rule42  []func(data *nav_msgs.Path) string
-	Rule43  []func(data *std_msgs.Int8) string
-	Rule44  []func(data *std_msgs.Bool) string
-	Rule45  []func(data *nav_msgs.Path) string
-	Rule46  []func(data *geometry_msgs.PoseStamped) string
-	Rule47  []func(data *geometry_msgs.PoseStamped) string
-	Rule48  []func(data *geometry_msgs.PoseStamped) string
-	Rule49  []func(data *std_msgs.String) string
-	Rule50  []func(data *visualization_msgs.MarkerArray) string
-	Rule51  []func(data *geometry_msgs.PolygonStamped) string
-	Rule52  []func(data *nav_msgs.OccupancyGrid) string
-	Rule53  []func(data *nav_msgs.OccupancyGrid) string
-	Rule54  []func(data *nav_msgs.OccupancyGrid) string
-	Rule55  []func(data *std_msgs.Float32) string
-	Rule56  []func(data *std_msgs.Int32) string
-	Rule57  []func(data *nav_msgs.Path) string
-	Rule58  []func(data *clean_msg.ErrorInfo) string
-	Rule59  []func(data *nav_msgs.OccupancyGrid) string
-	Rule60  []func(data *nav_msgs.OccupancyGrid) string
-	Rule61  []func(data *nav_msgs.OccupancyGrid) string
-	Rule62  []func(data *nav_msgs.OccupancyGrid) string
-	Rule63  []func(data *nav_msgs.OccupancyGrid) string
-	Rule64  []func(data *nav_msgs.OccupancyGrid) string
-	Rule65  []func(data *std_msgs.String) string
-	Rule66  []func(data *std_msgs.Bool) string
-	Rule67  []func(data *std_msgs.Bool) string
-	Rule68  []func(data *geometry_msgs.PolygonStamped) string
-	Rule69  []func(data *geometry_msgs.PointStamped) string
-	Rule70  []func(data *std_msgs.String) string
-	Rule71  []func(data *geometry_msgs.Twist) string
-	Rule72  []func(data *geometry_msgs.Twist) string
-	Rule73  []func(data *nav_msgs.Path) string
-	Rule74  []func(data *common_msgs.CreateMapInfo) string
-	Rule75  []func(data *geometry_msgs.Twist) string
-	Rule76  []func(data *common_msgs.SensorStatus) string
-	Rule77  []func(data *geometry_msgs.PoseArray) string
-	Rule78  []func(data *nav_msgs.Path) string
-	Rule79  []func(data *common_msgs.IdentifierObjsInfo) string
-	Rule80  []func(data *common_msgs.McuDiagnostic) string
-	Rule81  []func(data *diagnostic_msgs.DiagnosticArray) string
-	Rule82  []func(data *std_msgs.Int8) string
-	Rule83  []func(data *std_msgs.Int16) string
-	Rule84  []func(data *geometry_msgs.Vector3Stamped) string
-	Rule85  []func(data *sensor_msgs.LaserScan) string
-	Rule86  []func(data *sensor_msgs.PointCloud2) string
-	Rule87  []func(data *std_msgs.String) string
-	Rule88  []func(data *std_msgs.String) string
-	Rule89  []func(data *std_msgs.String) string
-	Rule90  []func(data *std_msgs.Int32) string
-	Rule91  []func(data *common_msgs.TaskInfo) string
-	Rule92  []func(data *common_msgs.MapInfo) string
-	Rule93  []func(data *nav_msgs.Path) string
-	Rule94  []func(data *common_msgs.VideoStream) string
-	Rule95  []func(data *sensor_msgs.PointCloud2) string
-	Rule96  []func(data *nav_msgs.Path) string
-	Rule97  []func(data *sensor_msgs.PointCloud2) string
-	Rule98  []func(data *sensor_msgs.PointCloud2) string
-	Rule99  []func(data *sensor_msgs.PointCloud2) string
-	Rule100 []func(data *geometry_msgs.PointStamped) string
-	Rule101 []func(data *nav_msgs.Path) string
-	Rule102 []func(data *geometry_msgs.PoseStamped) string
-	Rule103 []func(data *geometry_msgs.PoseWithCovarianceStamped) string
-	Rule104 []func(data *geometry_msgs.Pose) string
-	Rule105 []func(data *std_msgs.String) string
-	Rule106 []func(data *std_msgs.String) string
-	Rule107 []func(data *std_msgs.String) string
-	Rule108 []func(data *std_msgs.String) string
-	Rule109 []func(data *std_msgs.Float64) string
-	Rule110 []func(data *std_msgs.String) string
-	Rule111 []func(data *std_msgs.String) string
-	Rule112 []func(data *sensor_msgs.Imu) string
-	Rule113 []func(data *std_msgs.String) string
-	Rule114 []func(data *std_msgs.Int8) string
-	Rule115 []func(data *std_msgs.Int16) string
-	Rule116 []func(data *std_msgs.String) string
-	Rule117 []func(data *std_msgs.String) string
-	Rule118 []func(data *geometry_msgs.PoseWithCovarianceStamped) string
-	Rule119 []func(data *sensor_msgs.JointState) string
-	Rule120 []func(data *std_msgs.String) string
-	Rule121 []func(data *cartographer_ros_msgs.LandmarkList) string
-	Rule122 []func(data *nav_msgs.Odometry) string
-	Rule123 []func(data *sensor_msgs.LaserScan) string
-	Rule124 []func(data *std_msgs.String) string
-	Rule125 []func(data *nav_msgs.Path) string
-	Rule126 []func(data *std_msgs.String) string
-	Rule127 []func(data *std_msgs.String) string
-	Rule128 []func(data *std_msgs.String) string
-	Rule129 []func(data *std_msgs.String) string
-	Rule130 []func(data *geometry_msgs.PoseWithCovarianceStamped) string
-	Rule131 []func(data *std_msgs.String) string
-	Rule132 []func(data *std_msgs.String) string
-	Rule133 []func(data *common_msgs.LocateInfo) string
-	Rule134 []func(data *std_msgs.Bool) string
-	Rule135 []func(data *std_msgs.Float64MultiArray) string
-	Rule136 []func(data *std_msgs.String) string
-	Rule137 []func(data *std_msgs.String) string
-	Rule138 []func(data *nav_msgs.OccupancyGrid) string
-	Rule139 []func(data *std_msgs.String) string
-	Rule140 []func(data *nav_msgs.Path) string
-	Rule141 []func(data *std_msgs.String) string
-	Rule142 []func(data *std_msgs.String) string
-	Rule143 []func(data *nav_msgs.MapMetaData) string
-	Rule144 []func(data *nav_msgs.Path) string
-	Rule145 []func(data *geometry_msgs.PoseStamped) string
-	Rule146 []func(data *nav_msgs.OccupancyGrid) string
-	Rule147 []func(data *nav_msgs.OccupancyGrid) string
-	Rule148 []func(data *std_msgs.String) string
-	Rule149 []func(data *std_msgs.String) string
-	Rule150 []func(data *std_msgs.String) string
-	Rule151 []func(data *std_msgs.String) string
-	Rule152 []func(data *std_msgs.Bool) string
-	Rule153 []func(data *sensor_msgs.CameraInfo) string
-	Rule154 []func(data *sensor_msgs.Image) string
-	Rule155 []func(data *sensor_msgs.CompressedImage) string
-	Rule156 []func(data *dynamic_reconfigure.ConfigDescription) string
-	Rule157 []func(data *dynamic_reconfigure.Config) string
-	Rule158 []func(data *sensor_msgs.CompressedImage) string
-	Rule159 []func(data *dynamic_reconfigure.ConfigDescription) string
-	Rule160 []func(data *dynamic_reconfigure.Config) string
-	Rule161 []func(data *theora_image_transport.Packet) string
-	Rule162 []func(data *dynamic_reconfigure.ConfigDescription) string
-	Rule163 []func(data *dynamic_reconfigure.Config) string
-	Rule164 []func(data *sensor_msgs.CameraInfo) string
-	Rule165 []func(data *sensor_msgs.Image) string
-	Rule166 []func(data *sensor_msgs.CompressedImage) string
-	Rule167 []func(data *dynamic_reconfigure.ConfigDescription) string
-	Rule168 []func(data *dynamic_reconfigure.Config) string
-	Rule169 []func(data *sensor_msgs.CompressedImage) string
-	Rule170 []func(data *dynamic_reconfigure.ConfigDescription) string
-	Rule171 []func(data *dynamic_reconfigure.Config) string
-	Rule172 []func(data *theora_image_transport.Packet) string
-	Rule173 []func(data *dynamic_reconfigure.ConfigDescription) string
-	Rule174 []func(data *dynamic_reconfigure.Config) string
-	Rule175 []func(data *sensor_msgs.PointCloud2) string
-	Rule176 []func(data *sensor_msgs.CameraInfo) string
-	Rule177 []func(data *sensor_msgs.Image) string
-	Rule178 []func(data *sensor_msgs.CompressedImage) string
-	Rule179 []func(data *dynamic_reconfigure.ConfigDescription) string
-	Rule180 []func(data *dynamic_reconfigure.Config) string
-	Rule181 []func(data *sensor_msgs.CompressedImage) string
-	Rule182 []func(data *dynamic_reconfigure.ConfigDescription) string
-	Rule183 []func(data *dynamic_reconfigure.Config) string
-	Rule184 []func(data *theora_image_transport.Packet) string
-	Rule185 []func(data *dynamic_reconfigure.ConfigDescription) string
-	Rule186 []func(data *dynamic_reconfigure.Config) string
-	Rule187 []func(data *sensor_msgs.CameraInfo) string
-	Rule188 []func(data *sensor_msgs.Image) string
-	Rule189 []func(data *sensor_msgs.CompressedImage) string
-	Rule190 []func(data *dynamic_reconfigure.ConfigDescription) string
-	Rule191 []func(data *dynamic_reconfigure.Config) string
-	Rule192 []func(data *sensor_msgs.CompressedImage) string
-	Rule193 []func(data *dynamic_reconfigure.ConfigDescription) string
-	Rule194 []func(data *dynamic_reconfigure.Config) string
-	Rule195 []func(data *theora_image_transport.Packet) string
-	Rule196 []func(data *dynamic_reconfigure.ConfigDescription) string
-	Rule197 []func(data *dynamic_reconfigure.Config) string
-	Rule198 []func(data *sensor_msgs.PointCloud2) string
-	Rule199 []func(data *geometry_msgs.PoseStamped) string
-	Rule200 []func(data *geometry_msgs.PoseStamped) string
-	Rule201 []func(data *std_msgs.UInt8) string
-	Rule202 []func(data *nav_msgs.Odometry) string
-	Rule203 []func(data *std_msgs.String) string
-	Rule204 []func(data *std_msgs.String) string
-	Rule205 []func(data *nav_msgs.Odometry) string
-	Rule206 []func(data *sensor_msgs.Imu) string
-	Rule207 []func(data *sensor_msgs.PointCloud2) string
-	Rule208 []func(data *geometry_msgs.PoseArray) string
-	Rule209 []func(data *sensor_msgs.PointCloud2) string
-	Rule210 []func(data *sensor_msgs.LaserScan) string
-	Rule211 []func(data *geometry_msgs.PoseWithCovarianceStamped) string
-	Rule212 []func(data *geometry_msgs.Vector3Stamped) string
-	Rule213 []func(data *std_msgs.String) string
-	Rule214 []func(data *common_msgs.FunctionAreas) string
-	Rule215 []func(data *std_msgs.Bool) string
-	Rule216 []func(data *nav_msgs.Path) string
-	Rule217 []func(data *std_msgs.Float64MultiArray) string
-	Rule218 []func(data *std_msgs.String) string
-	Rule219 []func(data *std_msgs.String) string
-	Rule220 []func(data *std_msgs.String) string
-	Rule221 []func(data *geometry_msgs.PoseStamped) string
-	Rule222 []func(data *geometry_msgs.PoseWithCovarianceStamped) string
-	Rule223 []func(data *std_msgs.String) string
-	Rule224 []func(data *std_msgs.String) string
-	Rule225 []func(data *localization_monitor.RobotStatus) string
-	Rule226 []func(data *std_msgs.Float64MultiArray) string
-	Rule227 []func(data *std_msgs.String) string
-	Rule228 []func(data *actionlib_msgs.GoalID) string
-	Rule229 []func(data *ipa_building_msgs.MapSegmentationActionFeedback) string
-	Rule230 []func(data *ipa_building_msgs.MapSegmentationActionGoal) string
-	Rule231 []func(data *dynamic_reconfigure.ConfigDescription) string
-	Rule232 []func(data *dynamic_reconfigure.Config) string
-	Rule233 []func(data *ipa_building_msgs.MapSegmentationActionResult) string
-	Rule234 []func(data *nav_msgs.OccupancyGrid) string
-	Rule235 []func(data *actionlib_msgs.GoalStatusArray) string
-	Rule236 []func(data *rosgraph_msgs.Log) string
-	Rule237 []func(data *rosgraph_msgs.Log) string
-	Rule238 []func(data *nav_msgs.Path) string
-	Rule239 []func(data *geometry_msgs.Vector3Stamped) string
-	Rule240 []func(data *sensor_msgs.LaserScan) string
-	Rule241 []func(data *sensor_msgs.LaserScan) string
-	Rule242 []func(data *sensor_msgs.LaserScan) string
-	Rule243 []func(data *sensor_msgs.LaserScan) string
-	Rule244 []func(data *sensor_msgs.LaserScan) string
-	Rule245 []func(data *sensor_msgs.PointCloud2) string
-	Rule246 []func(data *sensor_msgs.PointCloud2) string
-	Rule247 []func(data *visualization_msgs.MarkerArray) string
-	Rule248 []func(data *common_msgs.SensorTask) string
-	Rule249 []func(data *std_msgs.String) string
-	Rule250 []func(data *geometry_msgs.Vector3Stamped) string
-	Rule251 []func(data *common_msgs.SonarList) string
-	Rule252 []func(data *nav_msgs.Odometry) string
-	Rule253 []func(data *sensor_msgs.LaserScan) string
-	Rule254 []func(data *std_msgs.Bool) string
-	Rule255 []func(data *sensor_msgs.LaserScan) string
-	Rule256 []func(data *std_msgs.String) string
-	Rule257 []func(data *std_msgs.Bool) string
-	Rule258 []func(data *sensor_msgs.CameraInfo) string
-	Rule259 []func(data *common_msgs.SysInfo) string
-	Rule260 []func(data *sensor_msgs.Image) string
-	Rule261 []func(data *sensor_msgs.CompressedImage) string
-	Rule262 []func(data *dynamic_reconfigure.ConfigDescription) string
-	Rule263 []func(data *dynamic_reconfigure.Config) string
-	Rule264 []func(data *sensor_msgs.CompressedImage) string
-	Rule265 []func(data *dynamic_reconfigure.ConfigDescription) string
-	Rule266 []func(data *dynamic_reconfigure.Config) string
-	Rule267 []func(data *theora_image_transport.Packet) string
-	Rule268 []func(data *dynamic_reconfigure.ConfigDescription) string
-	Rule269 []func(data *dynamic_reconfigure.Config) string
-	Rule270 []func(data *std_msgs.Bool) string
-	Rule271 []func(data *geometry_msgs.PoseStamped) string
-	Rule272 []func(data *geometry_msgs.Vector3Stamped) string
-	Rule273 []func(data *common_msgs.TaskFeedbackInfo) string
-	Rule274 []func(data *common_msgs.Points) string
-	Rule275 []func(data *tf2_msgs.TFMessage) string
-	Rule276 []func(data *std_msgs.String) string
-	Rule277 []func(data *tf2_msgs.TFMessage) string
-	Rule278 []func(data *nav_msgs.Path) string
-	Rule279 []func(data *common_msgs.UpLoadFileList) string
-	Rule280 []func(data *sensor_msgs.Range) string
-	Rule281 []func(data *sensor_msgs.LaserScan) string
-	Rule282 []func(data *sensor_msgs.LaserScan) string
-	Rule283 []func(data *sensor_msgs.LaserScan) string
-	Rule284 []func(data *sensor_msgs.LaserScan) string
-
-	AllTopicsNumber = len(AllTopics)
-)

+ 9139 - 62
aarch64/pjibot_clean/master/package/service/produce_window.go

@@ -2,11 +2,31 @@ package service
 
 import (
 	commonConfig "cicv-data-closedloop/aarch64/pjibot_clean/common/config"
+	commonService "cicv-data-closedloop/aarch64/pjibot_clean/common/service"
+	masterConfig "cicv-data-closedloop/aarch64/pjibot_clean/master/package/config"
 	"cicv-data-closedloop/common/config/c_log"
 	"cicv-data-closedloop/common/entity"
 	"cicv-data-closedloop/common/util"
 	commonUtil "cicv-data-closedloop/common/util"
+	"cicv-data-closedloop/pjibot_clean_msgs/cartographer_ros_msgs"
+	"cicv-data-closedloop/pjibot_clean_msgs/clean_msg"
+	"cicv-data-closedloop/pjibot_clean_msgs/common_msgs"
+	"cicv-data-closedloop/pjibot_clean_msgs/dynamic_reconfigure"
+	"cicv-data-closedloop/pjibot_clean_msgs/ipa_building_msgs"
+	"cicv-data-closedloop/pjibot_clean_msgs/localization_monitor"
+	"cicv-data-closedloop/pjibot_clean_msgs/theora_image_transport"
 	"encoding/json"
+	"github.com/bluenviron/goroslib/v2"
+	"github.com/bluenviron/goroslib/v2/pkg/msgs/actionlib_msgs"
+	"github.com/bluenviron/goroslib/v2/pkg/msgs/diagnostic_msgs"
+	"github.com/bluenviron/goroslib/v2/pkg/msgs/geometry_msgs"
+	"github.com/bluenviron/goroslib/v2/pkg/msgs/nav_msgs"
+	"github.com/bluenviron/goroslib/v2/pkg/msgs/rosgraph_msgs"
+	"github.com/bluenviron/goroslib/v2/pkg/msgs/sensor_msgs"
+	"github.com/bluenviron/goroslib/v2/pkg/msgs/std_msgs"
+	"github.com/bluenviron/goroslib/v2/pkg/msgs/tf2_msgs"
+	"github.com/bluenviron/goroslib/v2/pkg/msgs/visualization_msgs"
+	"sync"
 	"time"
 )
 
@@ -18,68 +38,9125 @@ var (
 
 // 负责监听所有主题并修改时间窗口
 func PrepareTimeWindowProducerQueue() {
-	//
-	//var err error
-	//subscribers := make([]*goroslib.Subscriber, masterConfig.AllTopicsNumber)
-	//subscribersTimes := make([]time.Time, masterConfig.AllTopicsNumber)
-	//subscribersTimeMutexes := make([]sync.Mutex, masterConfig.AllTopicsNumber)
-	//subscribersMutexes := make([]sync.Mutex, masterConfig.AllTopicsNumber)
-	//for i, topic := range masterConfig.AllTopics {
-	//	for {
-	//		create := false // 判断是否创建成功,用于打印日志
-	//		if topic == masterConfig.TopicOfObstacleDetection && len(masterConfig.RuleOfObstacleDetection) > 0 {
-	//			subscribers[i], err = goroslib.NewSubscriber(goroslib.SubscriberConf{
-	//				Node:  commonConfig.RosNode,
-	//				Topic: topic,
-	//				Callback: func(data *std_msgs.UInt8) {
-	//					subscribersTimeMutexes[i].Lock()
-	//					if time.Since(subscribersTimes[i]).Seconds() > triggerInterval {
-	//						subscribersMutexes[i].Lock()
-	//						faultHappenTime := commonUtil.GetNowTimeCustom() // 获取当前故障发生时间
-	//						lastTimeWindow := entity.GetLastTimeWindow()     // 获取最后一个时间窗口
-	//						var faultLabel string
-	//						for _, f := range masterConfig.RuleOfObstacleDetection {
-	//							faultLabel = f(data)
-	//							if faultLabel != "" {
-	//								if !canCollect() {
-	//									break
-	//								}
-	//								subscribersTimes[i] = time.Now()
-	//								c_log.GlobalLogger.Errorf("触发事件【%v】,开始采集。", faultLabel)
-	//								saveTimeWindow(faultLabel, faultHappenTime, lastTimeWindow)
-	//								break
-	//							}
-	//						}
-	//						subscribersMutexes[i].Unlock()
-	//					}
-	//					subscribersTimeMutexes[i].Unlock()
-	//				},
-	//			})
-	//			if err == nil {
-	//				create = true
-	//			}
-	//		}
-	//		if err != nil {
-	//			c_log.GlobalLogger.Infof("创建订阅者报错,可能由于节点未启动,再次尝试【%v】", err)
-	//			time.Sleep(time.Duration(2) * time.Second)
-	//			continue
-	//		} else {
-	//			if create {
-	//				c_log.GlobalLogger.Infof("创建订阅者订阅话题【%v】", topic)
-	//			}
-	//			break
-	//		}
-	//	}
-	//}
-	//c_log.GlobalLogger.Infof("全部订阅者创建完成。")
-	//select {
-	//case signal := <-commonService.ChannelKillSubscriber:
-	//	if signal == 1 {
-	//		commonConfig.RosNode.Close()
-	//		commonService.AddKillTimes("3")
-	//		return
-	//	}
-	//}
+
+	var err error
+	subscribers := make([]*goroslib.Subscriber, masterConfig.AllTopicsNumber)
+	subscribersTimes := make([]time.Time, masterConfig.AllTopicsNumber)
+	subscribersTimeMutexes := make([]sync.Mutex, masterConfig.AllTopicsNumber)
+	subscribersMutexes := make([]sync.Mutex, masterConfig.AllTopicsNumber)
+	for i, topic := range masterConfig.AllTopics {
+		for {
+			create := false // 判断是否创建成功,用于打印日志
+			if topic == masterConfig.Topic1 && len(masterConfig.Rule1) > 0 {
+				subscribers[i], err = goroslib.NewSubscriber(goroslib.SubscriberConf{
+					Node:  commonConfig.RosNode,
+					Topic: topic,
+					Callback: func(data *std_msgs.Int16MultiArray) {
+						subscribersTimeMutexes[i].Lock()
+						if time.Since(subscribersTimes[i]).Seconds() > triggerInterval {
+							subscribersMutexes[i].Lock()
+							faultHappenTime := commonUtil.GetNowTimeCustom() // 获取当前故障发生时间
+							lastTimeWindow := entity.GetLastTimeWindow()     // 获取最后一个时间窗口
+							var faultLabel string
+							for _, f := range masterConfig.Rule1 {
+								faultLabel = f(data)
+								if faultLabel != "" {
+									if !canCollect() {
+										break
+									}
+									subscribersTimes[i] = time.Now()
+									c_log.GlobalLogger.Errorf("触发事件【xxx】,开始采集。", faultLabel)
+									saveTimeWindow(faultLabel, faultHappenTime, lastTimeWindow)
+									break
+								}
+							}
+							subscribersMutexes[i].Unlock()
+						}
+						subscribersTimeMutexes[i].Unlock()
+					},
+				})
+				if err == nil {
+					create = true
+				}
+			}
+			if topic == masterConfig.Topic2 && len(masterConfig.Rule2) > 0 {
+				subscribers[i], err = goroslib.NewSubscriber(goroslib.SubscriberConf{
+					Node:  commonConfig.RosNode,
+					Topic: topic,
+					Callback: func(data *geometry_msgs.PoseStamped) {
+						subscribersTimeMutexes[i].Lock()
+						if time.Since(subscribersTimes[i]).Seconds() > triggerInterval {
+							subscribersMutexes[i].Lock()
+							faultHappenTime := commonUtil.GetNowTimeCustom() // 获取当前故障发生时间
+							lastTimeWindow := entity.GetLastTimeWindow()     // 获取最后一个时间窗口
+							var faultLabel string
+							for _, f := range masterConfig.Rule2 {
+								faultLabel = f(data)
+								if faultLabel != "" {
+									if !canCollect() {
+										break
+									}
+									subscribersTimes[i] = time.Now()
+									c_log.GlobalLogger.Errorf("触发事件【xxx】,开始采集。", faultLabel)
+									saveTimeWindow(faultLabel, faultHappenTime, lastTimeWindow)
+									break
+								}
+							}
+							subscribersMutexes[i].Unlock()
+						}
+						subscribersTimeMutexes[i].Unlock()
+					},
+				})
+				if err == nil {
+					create = true
+				}
+			}
+			if topic == masterConfig.Topic3 && len(masterConfig.Rule3) > 0 {
+				subscribers[i], err = goroslib.NewSubscriber(goroslib.SubscriberConf{
+					Node:  commonConfig.RosNode,
+					Topic: topic,
+					Callback: func(data *dynamic_reconfigure.ConfigDescription) {
+						subscribersTimeMutexes[i].Lock()
+						if time.Since(subscribersTimes[i]).Seconds() > triggerInterval {
+							subscribersMutexes[i].Lock()
+							faultHappenTime := commonUtil.GetNowTimeCustom() // 获取当前故障发生时间
+							lastTimeWindow := entity.GetLastTimeWindow()     // 获取最后一个时间窗口
+							var faultLabel string
+							for _, f := range masterConfig.Rule3 {
+								faultLabel = f(data)
+								if faultLabel != "" {
+									if !canCollect() {
+										break
+									}
+									subscribersTimes[i] = time.Now()
+									c_log.GlobalLogger.Errorf("触发事件【xxx】,开始采集。", faultLabel)
+									saveTimeWindow(faultLabel, faultHappenTime, lastTimeWindow)
+									break
+								}
+							}
+							subscribersMutexes[i].Unlock()
+						}
+						subscribersTimeMutexes[i].Unlock()
+					},
+				})
+				if err == nil {
+					create = true
+				}
+			}
+			if topic == masterConfig.Topic4 && len(masterConfig.Rule4) > 0 {
+				subscribers[i], err = goroslib.NewSubscriber(goroslib.SubscriberConf{
+					Node:  commonConfig.RosNode,
+					Topic: topic,
+					Callback: func(data *dynamic_reconfigure.Config) {
+						subscribersTimeMutexes[i].Lock()
+						if time.Since(subscribersTimes[i]).Seconds() > triggerInterval {
+							subscribersMutexes[i].Lock()
+							faultHappenTime := commonUtil.GetNowTimeCustom() // 获取当前故障发生时间
+							lastTimeWindow := entity.GetLastTimeWindow()     // 获取最后一个时间窗口
+							var faultLabel string
+							for _, f := range masterConfig.Rule4 {
+								faultLabel = f(data)
+								if faultLabel != "" {
+									if !canCollect() {
+										break
+									}
+									subscribersTimes[i] = time.Now()
+									c_log.GlobalLogger.Errorf("触发事件【xxx】,开始采集。", faultLabel)
+									saveTimeWindow(faultLabel, faultHappenTime, lastTimeWindow)
+									break
+								}
+							}
+							subscribersMutexes[i].Unlock()
+						}
+						subscribersTimeMutexes[i].Unlock()
+					},
+				})
+				if err == nil {
+					create = true
+				}
+			}
+			if topic == masterConfig.Topic5 && len(masterConfig.Rule5) > 0 {
+				subscribers[i], err = goroslib.NewSubscriber(goroslib.SubscriberConf{
+					Node:  commonConfig.RosNode,
+					Topic: topic,
+					Callback: func(data *std_msgs.String) {
+						subscribersTimeMutexes[i].Lock()
+						if time.Since(subscribersTimes[i]).Seconds() > triggerInterval {
+							subscribersMutexes[i].Lock()
+							faultHappenTime := commonUtil.GetNowTimeCustom() // 获取当前故障发生时间
+							lastTimeWindow := entity.GetLastTimeWindow()     // 获取最后一个时间窗口
+							var faultLabel string
+							for _, f := range masterConfig.Rule5 {
+								faultLabel = f(data)
+								if faultLabel != "" {
+									if !canCollect() {
+										break
+									}
+									subscribersTimes[i] = time.Now()
+									c_log.GlobalLogger.Errorf("触发事件【xxx】,开始采集。", faultLabel)
+									saveTimeWindow(faultLabel, faultHappenTime, lastTimeWindow)
+									break
+								}
+							}
+							subscribersMutexes[i].Unlock()
+						}
+						subscribersTimeMutexes[i].Unlock()
+					},
+				})
+				if err == nil {
+					create = true
+				}
+			}
+			if topic == masterConfig.Topic6 && len(masterConfig.Rule6) > 0 {
+				subscribers[i], err = goroslib.NewSubscriber(goroslib.SubscriberConf{
+					Node:  commonConfig.RosNode,
+					Topic: topic,
+					Callback: func(data *geometry_msgs.PoseWithCovarianceStamped) {
+						subscribersTimeMutexes[i].Lock()
+						if time.Since(subscribersTimes[i]).Seconds() > triggerInterval {
+							subscribersMutexes[i].Lock()
+							faultHappenTime := commonUtil.GetNowTimeCustom() // 获取当前故障发生时间
+							lastTimeWindow := entity.GetLastTimeWindow()     // 获取最后一个时间窗口
+							var faultLabel string
+							for _, f := range masterConfig.Rule6 {
+								faultLabel = f(data)
+								if faultLabel != "" {
+									if !canCollect() {
+										break
+									}
+									subscribersTimes[i] = time.Now()
+									c_log.GlobalLogger.Errorf("触发事件【xxx】,开始采集。", faultLabel)
+									saveTimeWindow(faultLabel, faultHappenTime, lastTimeWindow)
+									break
+								}
+							}
+							subscribersMutexes[i].Unlock()
+						}
+						subscribersTimeMutexes[i].Unlock()
+					},
+				})
+				if err == nil {
+					create = true
+				}
+			}
+			if topic == masterConfig.Topic7 && len(masterConfig.Rule7) > 0 {
+				subscribers[i], err = goroslib.NewSubscriber(goroslib.SubscriberConf{
+					Node:  commonConfig.RosNode,
+					Topic: topic,
+					Callback: func(data *std_msgs.String) {
+						subscribersTimeMutexes[i].Lock()
+						if time.Since(subscribersTimes[i]).Seconds() > triggerInterval {
+							subscribersMutexes[i].Lock()
+							faultHappenTime := commonUtil.GetNowTimeCustom() // 获取当前故障发生时间
+							lastTimeWindow := entity.GetLastTimeWindow()     // 获取最后一个时间窗口
+							var faultLabel string
+							for _, f := range masterConfig.Rule7 {
+								faultLabel = f(data)
+								if faultLabel != "" {
+									if !canCollect() {
+										break
+									}
+									subscribersTimes[i] = time.Now()
+									c_log.GlobalLogger.Errorf("触发事件【xxx】,开始采集。", faultLabel)
+									saveTimeWindow(faultLabel, faultHappenTime, lastTimeWindow)
+									break
+								}
+							}
+							subscribersMutexes[i].Unlock()
+						}
+						subscribersTimeMutexes[i].Unlock()
+					},
+				})
+				if err == nil {
+					create = true
+				}
+			}
+			if topic == masterConfig.Topic8 && len(masterConfig.Rule8) > 0 {
+				subscribers[i], err = goroslib.NewSubscriber(goroslib.SubscriberConf{
+					Node:  commonConfig.RosNode,
+					Topic: topic,
+					Callback: func(data *std_msgs.String) {
+						subscribersTimeMutexes[i].Lock()
+						if time.Since(subscribersTimes[i]).Seconds() > triggerInterval {
+							subscribersMutexes[i].Lock()
+							faultHappenTime := commonUtil.GetNowTimeCustom() // 获取当前故障发生时间
+							lastTimeWindow := entity.GetLastTimeWindow()     // 获取最后一个时间窗口
+							var faultLabel string
+							for _, f := range masterConfig.Rule8 {
+								faultLabel = f(data)
+								if faultLabel != "" {
+									if !canCollect() {
+										break
+									}
+									subscribersTimes[i] = time.Now()
+									c_log.GlobalLogger.Errorf("触发事件【xxx】,开始采集。", faultLabel)
+									saveTimeWindow(faultLabel, faultHappenTime, lastTimeWindow)
+									break
+								}
+							}
+							subscribersMutexes[i].Unlock()
+						}
+						subscribersTimeMutexes[i].Unlock()
+					},
+				})
+				if err == nil {
+					create = true
+				}
+			}
+			if topic == masterConfig.Topic9 && len(masterConfig.Rule9) > 0 {
+				subscribers[i], err = goroslib.NewSubscriber(goroslib.SubscriberConf{
+					Node:  commonConfig.RosNode,
+					Topic: topic,
+					Callback: func(data *std_msgs.Bool) {
+						subscribersTimeMutexes[i].Lock()
+						if time.Since(subscribersTimes[i]).Seconds() > triggerInterval {
+							subscribersMutexes[i].Lock()
+							faultHappenTime := commonUtil.GetNowTimeCustom() // 获取当前故障发生时间
+							lastTimeWindow := entity.GetLastTimeWindow()     // 获取最后一个时间窗口
+							var faultLabel string
+							for _, f := range masterConfig.Rule9 {
+								faultLabel = f(data)
+								if faultLabel != "" {
+									if !canCollect() {
+										break
+									}
+									subscribersTimes[i] = time.Now()
+									c_log.GlobalLogger.Errorf("触发事件【xxx】,开始采集。", faultLabel)
+									saveTimeWindow(faultLabel, faultHappenTime, lastTimeWindow)
+									break
+								}
+							}
+							subscribersMutexes[i].Unlock()
+						}
+						subscribersTimeMutexes[i].Unlock()
+					},
+				})
+				if err == nil {
+					create = true
+				}
+			}
+			if topic == masterConfig.Topic10 && len(masterConfig.Rule10) > 0 {
+				subscribers[i], err = goroslib.NewSubscriber(goroslib.SubscriberConf{
+					Node:  commonConfig.RosNode,
+					Topic: topic,
+					Callback: func(data *std_msgs.Int8) {
+						subscribersTimeMutexes[i].Lock()
+						if time.Since(subscribersTimes[i]).Seconds() > triggerInterval {
+							subscribersMutexes[i].Lock()
+							faultHappenTime := commonUtil.GetNowTimeCustom() // 获取当前故障发生时间
+							lastTimeWindow := entity.GetLastTimeWindow()     // 获取最后一个时间窗口
+							var faultLabel string
+							for _, f := range masterConfig.Rule10 {
+								faultLabel = f(data)
+								if faultLabel != "" {
+									if !canCollect() {
+										break
+									}
+									subscribersTimes[i] = time.Now()
+									c_log.GlobalLogger.Errorf("触发事件【xxx】,开始采集。", faultLabel)
+									saveTimeWindow(faultLabel, faultHappenTime, lastTimeWindow)
+									break
+								}
+							}
+							subscribersMutexes[i].Unlock()
+						}
+						subscribersTimeMutexes[i].Unlock()
+					},
+				})
+				if err == nil {
+					create = true
+				}
+			}
+			if topic == masterConfig.Topic11 && len(masterConfig.Rule11) > 0 {
+				subscribers[i], err = goroslib.NewSubscriber(goroslib.SubscriberConf{
+					Node:  commonConfig.RosNode,
+					Topic: topic,
+					Callback: func(data *std_msgs.Int8) {
+						subscribersTimeMutexes[i].Lock()
+						if time.Since(subscribersTimes[i]).Seconds() > triggerInterval {
+							subscribersMutexes[i].Lock()
+							faultHappenTime := commonUtil.GetNowTimeCustom() // 获取当前故障发生时间
+							lastTimeWindow := entity.GetLastTimeWindow()     // 获取最后一个时间窗口
+							var faultLabel string
+							for _, f := range masterConfig.Rule11 {
+								faultLabel = f(data)
+								if faultLabel != "" {
+									if !canCollect() {
+										break
+									}
+									subscribersTimes[i] = time.Now()
+									c_log.GlobalLogger.Errorf("触发事件【xxx】,开始采集。", faultLabel)
+									saveTimeWindow(faultLabel, faultHappenTime, lastTimeWindow)
+									break
+								}
+							}
+							subscribersMutexes[i].Unlock()
+						}
+						subscribersTimeMutexes[i].Unlock()
+					},
+				})
+				if err == nil {
+					create = true
+				}
+			}
+			if topic == masterConfig.Topic12 && len(masterConfig.Rule12) > 0 {
+				subscribers[i], err = goroslib.NewSubscriber(goroslib.SubscriberConf{
+					Node:  commonConfig.RosNode,
+					Topic: topic,
+					Callback: func(data *sensor_msgs.PointCloud2) {
+						subscribersTimeMutexes[i].Lock()
+						if time.Since(subscribersTimes[i]).Seconds() > triggerInterval {
+							subscribersMutexes[i].Lock()
+							faultHappenTime := commonUtil.GetNowTimeCustom() // 获取当前故障发生时间
+							lastTimeWindow := entity.GetLastTimeWindow()     // 获取最后一个时间窗口
+							var faultLabel string
+							for _, f := range masterConfig.Rule12 {
+								faultLabel = f(data)
+								if faultLabel != "" {
+									if !canCollect() {
+										break
+									}
+									subscribersTimes[i] = time.Now()
+									c_log.GlobalLogger.Errorf("触发事件【xxx】,开始采集。", faultLabel)
+									saveTimeWindow(faultLabel, faultHappenTime, lastTimeWindow)
+									break
+								}
+							}
+							subscribersMutexes[i].Unlock()
+						}
+						subscribersTimeMutexes[i].Unlock()
+					},
+				})
+				if err == nil {
+					create = true
+				}
+			}
+			if topic == masterConfig.Topic13 && len(masterConfig.Rule13) > 0 {
+				subscribers[i], err = goroslib.NewSubscriber(goroslib.SubscriberConf{
+					Node:  commonConfig.RosNode,
+					Topic: topic,
+					Callback: func(data *sensor_msgs.BatteryState) {
+						subscribersTimeMutexes[i].Lock()
+						if time.Since(subscribersTimes[i]).Seconds() > triggerInterval {
+							subscribersMutexes[i].Lock()
+							faultHappenTime := commonUtil.GetNowTimeCustom() // 获取当前故障发生时间
+							lastTimeWindow := entity.GetLastTimeWindow()     // 获取最后一个时间窗口
+							var faultLabel string
+							for _, f := range masterConfig.Rule13 {
+								faultLabel = f(data)
+								if faultLabel != "" {
+									if !canCollect() {
+										break
+									}
+									subscribersTimes[i] = time.Now()
+									c_log.GlobalLogger.Errorf("触发事件【xxx】,开始采集。", faultLabel)
+									saveTimeWindow(faultLabel, faultHappenTime, lastTimeWindow)
+									break
+								}
+							}
+							subscribersMutexes[i].Unlock()
+						}
+						subscribersTimeMutexes[i].Unlock()
+					},
+				})
+				if err == nil {
+					create = true
+				}
+			}
+			if topic == masterConfig.Topic14 && len(masterConfig.Rule14) > 0 {
+				subscribers[i], err = goroslib.NewSubscriber(goroslib.SubscriberConf{
+					Node:  commonConfig.RosNode,
+					Topic: topic,
+					Callback: func(data *std_msgs.Int16) {
+						subscribersTimeMutexes[i].Lock()
+						if time.Since(subscribersTimes[i]).Seconds() > triggerInterval {
+							subscribersMutexes[i].Lock()
+							faultHappenTime := commonUtil.GetNowTimeCustom() // 获取当前故障发生时间
+							lastTimeWindow := entity.GetLastTimeWindow()     // 获取最后一个时间窗口
+							var faultLabel string
+							for _, f := range masterConfig.Rule14 {
+								faultLabel = f(data)
+								if faultLabel != "" {
+									if !canCollect() {
+										break
+									}
+									subscribersTimes[i] = time.Now()
+									c_log.GlobalLogger.Errorf("触发事件【xxx】,开始采集。", faultLabel)
+									saveTimeWindow(faultLabel, faultHappenTime, lastTimeWindow)
+									break
+								}
+							}
+							subscribersMutexes[i].Unlock()
+						}
+						subscribersTimeMutexes[i].Unlock()
+					},
+				})
+				if err == nil {
+					create = true
+				}
+			}
+			if topic == masterConfig.Topic15 && len(masterConfig.Rule15) > 0 {
+				subscribers[i], err = goroslib.NewSubscriber(goroslib.SubscriberConf{
+					Node:  commonConfig.RosNode,
+					Topic: topic,
+					Callback: func(data *visualization_msgs.Marker) {
+						subscribersTimeMutexes[i].Lock()
+						if time.Since(subscribersTimes[i]).Seconds() > triggerInterval {
+							subscribersMutexes[i].Lock()
+							faultHappenTime := commonUtil.GetNowTimeCustom() // 获取当前故障发生时间
+							lastTimeWindow := entity.GetLastTimeWindow()     // 获取最后一个时间窗口
+							var faultLabel string
+							for _, f := range masterConfig.Rule15 {
+								faultLabel = f(data)
+								if faultLabel != "" {
+									if !canCollect() {
+										break
+									}
+									subscribersTimes[i] = time.Now()
+									c_log.GlobalLogger.Errorf("触发事件【xxx】,开始采集。", faultLabel)
+									saveTimeWindow(faultLabel, faultHappenTime, lastTimeWindow)
+									break
+								}
+							}
+							subscribersMutexes[i].Unlock()
+						}
+						subscribersTimeMutexes[i].Unlock()
+					},
+				})
+				if err == nil {
+					create = true
+				}
+			}
+			if topic == masterConfig.Topic16 && len(masterConfig.Rule16) > 0 {
+				subscribers[i], err = goroslib.NewSubscriber(goroslib.SubscriberConf{
+					Node:  commonConfig.RosNode,
+					Topic: topic,
+					Callback: func(data *std_msgs.String) {
+						subscribersTimeMutexes[i].Lock()
+						if time.Since(subscribersTimes[i]).Seconds() > triggerInterval {
+							subscribersMutexes[i].Lock()
+							faultHappenTime := commonUtil.GetNowTimeCustom() // 获取当前故障发生时间
+							lastTimeWindow := entity.GetLastTimeWindow()     // 获取最后一个时间窗口
+							var faultLabel string
+							for _, f := range masterConfig.Rule16 {
+								faultLabel = f(data)
+								if faultLabel != "" {
+									if !canCollect() {
+										break
+									}
+									subscribersTimes[i] = time.Now()
+									c_log.GlobalLogger.Errorf("触发事件【xxx】,开始采集。", faultLabel)
+									saveTimeWindow(faultLabel, faultHappenTime, lastTimeWindow)
+									break
+								}
+							}
+							subscribersMutexes[i].Unlock()
+						}
+						subscribersTimeMutexes[i].Unlock()
+					},
+				})
+				if err == nil {
+					create = true
+				}
+			}
+			if topic == masterConfig.Topic17 && len(masterConfig.Rule17) > 0 {
+				subscribers[i], err = goroslib.NewSubscriber(goroslib.SubscriberConf{
+					Node:  commonConfig.RosNode,
+					Topic: topic,
+					Callback: func(data *sensor_msgs.CameraInfo) {
+						subscribersTimeMutexes[i].Lock()
+						if time.Since(subscribersTimes[i]).Seconds() > triggerInterval {
+							subscribersMutexes[i].Lock()
+							faultHappenTime := commonUtil.GetNowTimeCustom() // 获取当前故障发生时间
+							lastTimeWindow := entity.GetLastTimeWindow()     // 获取最后一个时间窗口
+							var faultLabel string
+							for _, f := range masterConfig.Rule17 {
+								faultLabel = f(data)
+								if faultLabel != "" {
+									if !canCollect() {
+										break
+									}
+									subscribersTimes[i] = time.Now()
+									c_log.GlobalLogger.Errorf("触发事件【xxx】,开始采集。", faultLabel)
+									saveTimeWindow(faultLabel, faultHappenTime, lastTimeWindow)
+									break
+								}
+							}
+							subscribersMutexes[i].Unlock()
+						}
+						subscribersTimeMutexes[i].Unlock()
+					},
+				})
+				if err == nil {
+					create = true
+				}
+			}
+			if topic == masterConfig.Topic18 && len(masterConfig.Rule18) > 0 {
+				subscribers[i], err = goroslib.NewSubscriber(goroslib.SubscriberConf{
+					Node:  commonConfig.RosNode,
+					Topic: topic,
+					Callback: func(data *sensor_msgs.Image) {
+						subscribersTimeMutexes[i].Lock()
+						if time.Since(subscribersTimes[i]).Seconds() > triggerInterval {
+							subscribersMutexes[i].Lock()
+							faultHappenTime := commonUtil.GetNowTimeCustom() // 获取当前故障发生时间
+							lastTimeWindow := entity.GetLastTimeWindow()     // 获取最后一个时间窗口
+							var faultLabel string
+							for _, f := range masterConfig.Rule18 {
+								faultLabel = f(data)
+								if faultLabel != "" {
+									if !canCollect() {
+										break
+									}
+									subscribersTimes[i] = time.Now()
+									c_log.GlobalLogger.Errorf("触发事件【xxx】,开始采集。", faultLabel)
+									saveTimeWindow(faultLabel, faultHappenTime, lastTimeWindow)
+									break
+								}
+							}
+							subscribersMutexes[i].Unlock()
+						}
+						subscribersTimeMutexes[i].Unlock()
+					},
+				})
+				if err == nil {
+					create = true
+				}
+			}
+			if topic == masterConfig.Topic19 && len(masterConfig.Rule19) > 0 {
+				subscribers[i], err = goroslib.NewSubscriber(goroslib.SubscriberConf{
+					Node:  commonConfig.RosNode,
+					Topic: topic,
+					Callback: func(data *sensor_msgs.CompressedImage) {
+						subscribersTimeMutexes[i].Lock()
+						if time.Since(subscribersTimes[i]).Seconds() > triggerInterval {
+							subscribersMutexes[i].Lock()
+							faultHappenTime := commonUtil.GetNowTimeCustom() // 获取当前故障发生时间
+							lastTimeWindow := entity.GetLastTimeWindow()     // 获取最后一个时间窗口
+							var faultLabel string
+							for _, f := range masterConfig.Rule19 {
+								faultLabel = f(data)
+								if faultLabel != "" {
+									if !canCollect() {
+										break
+									}
+									subscribersTimes[i] = time.Now()
+									c_log.GlobalLogger.Errorf("触发事件【xxx】,开始采集。", faultLabel)
+									saveTimeWindow(faultLabel, faultHappenTime, lastTimeWindow)
+									break
+								}
+							}
+							subscribersMutexes[i].Unlock()
+						}
+						subscribersTimeMutexes[i].Unlock()
+					},
+				})
+				if err == nil {
+					create = true
+				}
+			}
+			if topic == masterConfig.Topic20 && len(masterConfig.Rule20) > 0 {
+				subscribers[i], err = goroslib.NewSubscriber(goroslib.SubscriberConf{
+					Node:  commonConfig.RosNode,
+					Topic: topic,
+					Callback: func(data *dynamic_reconfigure.ConfigDescription) {
+						subscribersTimeMutexes[i].Lock()
+						if time.Since(subscribersTimes[i]).Seconds() > triggerInterval {
+							subscribersMutexes[i].Lock()
+							faultHappenTime := commonUtil.GetNowTimeCustom() // 获取当前故障发生时间
+							lastTimeWindow := entity.GetLastTimeWindow()     // 获取最后一个时间窗口
+							var faultLabel string
+							for _, f := range masterConfig.Rule20 {
+								faultLabel = f(data)
+								if faultLabel != "" {
+									if !canCollect() {
+										break
+									}
+									subscribersTimes[i] = time.Now()
+									c_log.GlobalLogger.Errorf("触发事件【xxx】,开始采集。", faultLabel)
+									saveTimeWindow(faultLabel, faultHappenTime, lastTimeWindow)
+									break
+								}
+							}
+							subscribersMutexes[i].Unlock()
+						}
+						subscribersTimeMutexes[i].Unlock()
+					},
+				})
+				if err == nil {
+					create = true
+				}
+			}
+			if topic == masterConfig.Topic21 && len(masterConfig.Rule21) > 0 {
+				subscribers[i], err = goroslib.NewSubscriber(goroslib.SubscriberConf{
+					Node:  commonConfig.RosNode,
+					Topic: topic,
+					Callback: func(data *dynamic_reconfigure.Config) {
+						subscribersTimeMutexes[i].Lock()
+						if time.Since(subscribersTimes[i]).Seconds() > triggerInterval {
+							subscribersMutexes[i].Lock()
+							faultHappenTime := commonUtil.GetNowTimeCustom() // 获取当前故障发生时间
+							lastTimeWindow := entity.GetLastTimeWindow()     // 获取最后一个时间窗口
+							var faultLabel string
+							for _, f := range masterConfig.Rule21 {
+								faultLabel = f(data)
+								if faultLabel != "" {
+									if !canCollect() {
+										break
+									}
+									subscribersTimes[i] = time.Now()
+									c_log.GlobalLogger.Errorf("触发事件【xxx】,开始采集。", faultLabel)
+									saveTimeWindow(faultLabel, faultHappenTime, lastTimeWindow)
+									break
+								}
+							}
+							subscribersMutexes[i].Unlock()
+						}
+						subscribersTimeMutexes[i].Unlock()
+					},
+				})
+				if err == nil {
+					create = true
+				}
+			}
+			if topic == masterConfig.Topic22 && len(masterConfig.Rule22) > 0 {
+				subscribers[i], err = goroslib.NewSubscriber(goroslib.SubscriberConf{
+					Node:  commonConfig.RosNode,
+					Topic: topic,
+					Callback: func(data *sensor_msgs.CompressedImage) {
+						subscribersTimeMutexes[i].Lock()
+						if time.Since(subscribersTimes[i]).Seconds() > triggerInterval {
+							subscribersMutexes[i].Lock()
+							faultHappenTime := commonUtil.GetNowTimeCustom() // 获取当前故障发生时间
+							lastTimeWindow := entity.GetLastTimeWindow()     // 获取最后一个时间窗口
+							var faultLabel string
+							for _, f := range masterConfig.Rule22 {
+								faultLabel = f(data)
+								if faultLabel != "" {
+									if !canCollect() {
+										break
+									}
+									subscribersTimes[i] = time.Now()
+									c_log.GlobalLogger.Errorf("触发事件【xxx】,开始采集。", faultLabel)
+									saveTimeWindow(faultLabel, faultHappenTime, lastTimeWindow)
+									break
+								}
+							}
+							subscribersMutexes[i].Unlock()
+						}
+						subscribersTimeMutexes[i].Unlock()
+					},
+				})
+				if err == nil {
+					create = true
+				}
+			}
+			if topic == masterConfig.Topic23 && len(masterConfig.Rule23) > 0 {
+				subscribers[i], err = goroslib.NewSubscriber(goroslib.SubscriberConf{
+					Node:  commonConfig.RosNode,
+					Topic: topic,
+					Callback: func(data *dynamic_reconfigure.ConfigDescription) {
+						subscribersTimeMutexes[i].Lock()
+						if time.Since(subscribersTimes[i]).Seconds() > triggerInterval {
+							subscribersMutexes[i].Lock()
+							faultHappenTime := commonUtil.GetNowTimeCustom() // 获取当前故障发生时间
+							lastTimeWindow := entity.GetLastTimeWindow()     // 获取最后一个时间窗口
+							var faultLabel string
+							for _, f := range masterConfig.Rule23 {
+								faultLabel = f(data)
+								if faultLabel != "" {
+									if !canCollect() {
+										break
+									}
+									subscribersTimes[i] = time.Now()
+									c_log.GlobalLogger.Errorf("触发事件【xxx】,开始采集。", faultLabel)
+									saveTimeWindow(faultLabel, faultHappenTime, lastTimeWindow)
+									break
+								}
+							}
+							subscribersMutexes[i].Unlock()
+						}
+						subscribersTimeMutexes[i].Unlock()
+					},
+				})
+				if err == nil {
+					create = true
+				}
+			}
+			if topic == masterConfig.Topic24 && len(masterConfig.Rule24) > 0 {
+				subscribers[i], err = goroslib.NewSubscriber(goroslib.SubscriberConf{
+					Node:  commonConfig.RosNode,
+					Topic: topic,
+					Callback: func(data *dynamic_reconfigure.Config) {
+						subscribersTimeMutexes[i].Lock()
+						if time.Since(subscribersTimes[i]).Seconds() > triggerInterval {
+							subscribersMutexes[i].Lock()
+							faultHappenTime := commonUtil.GetNowTimeCustom() // 获取当前故障发生时间
+							lastTimeWindow := entity.GetLastTimeWindow()     // 获取最后一个时间窗口
+							var faultLabel string
+							for _, f := range masterConfig.Rule24 {
+								faultLabel = f(data)
+								if faultLabel != "" {
+									if !canCollect() {
+										break
+									}
+									subscribersTimes[i] = time.Now()
+									c_log.GlobalLogger.Errorf("触发事件【xxx】,开始采集。", faultLabel)
+									saveTimeWindow(faultLabel, faultHappenTime, lastTimeWindow)
+									break
+								}
+							}
+							subscribersMutexes[i].Unlock()
+						}
+						subscribersTimeMutexes[i].Unlock()
+					},
+				})
+				if err == nil {
+					create = true
+				}
+			}
+			if topic == masterConfig.Topic25 && len(masterConfig.Rule25) > 0 {
+				subscribers[i], err = goroslib.NewSubscriber(goroslib.SubscriberConf{
+					Node:  commonConfig.RosNode,
+					Topic: topic,
+					Callback: func(data *theora_image_transport.Packet) {
+						subscribersTimeMutexes[i].Lock()
+						if time.Since(subscribersTimes[i]).Seconds() > triggerInterval {
+							subscribersMutexes[i].Lock()
+							faultHappenTime := commonUtil.GetNowTimeCustom() // 获取当前故障发生时间
+							lastTimeWindow := entity.GetLastTimeWindow()     // 获取最后一个时间窗口
+							var faultLabel string
+							for _, f := range masterConfig.Rule25 {
+								faultLabel = f(data)
+								if faultLabel != "" {
+									if !canCollect() {
+										break
+									}
+									subscribersTimes[i] = time.Now()
+									c_log.GlobalLogger.Errorf("触发事件【xxx】,开始采集。", faultLabel)
+									saveTimeWindow(faultLabel, faultHappenTime, lastTimeWindow)
+									break
+								}
+							}
+							subscribersMutexes[i].Unlock()
+						}
+						subscribersTimeMutexes[i].Unlock()
+					},
+				})
+				if err == nil {
+					create = true
+				}
+			}
+			if topic == masterConfig.Topic26 && len(masterConfig.Rule26) > 0 {
+				subscribers[i], err = goroslib.NewSubscriber(goroslib.SubscriberConf{
+					Node:  commonConfig.RosNode,
+					Topic: topic,
+					Callback: func(data *dynamic_reconfigure.ConfigDescription) {
+						subscribersTimeMutexes[i].Lock()
+						if time.Since(subscribersTimes[i]).Seconds() > triggerInterval {
+							subscribersMutexes[i].Lock()
+							faultHappenTime := commonUtil.GetNowTimeCustom() // 获取当前故障发生时间
+							lastTimeWindow := entity.GetLastTimeWindow()     // 获取最后一个时间窗口
+							var faultLabel string
+							for _, f := range masterConfig.Rule26 {
+								faultLabel = f(data)
+								if faultLabel != "" {
+									if !canCollect() {
+										break
+									}
+									subscribersTimes[i] = time.Now()
+									c_log.GlobalLogger.Errorf("触发事件【xxx】,开始采集。", faultLabel)
+									saveTimeWindow(faultLabel, faultHappenTime, lastTimeWindow)
+									break
+								}
+							}
+							subscribersMutexes[i].Unlock()
+						}
+						subscribersTimeMutexes[i].Unlock()
+					},
+				})
+				if err == nil {
+					create = true
+				}
+			}
+			if topic == masterConfig.Topic27 && len(masterConfig.Rule27) > 0 {
+				subscribers[i], err = goroslib.NewSubscriber(goroslib.SubscriberConf{
+					Node:  commonConfig.RosNode,
+					Topic: topic,
+					Callback: func(data *dynamic_reconfigure.Config) {
+						subscribersTimeMutexes[i].Lock()
+						if time.Since(subscribersTimes[i]).Seconds() > triggerInterval {
+							subscribersMutexes[i].Lock()
+							faultHappenTime := commonUtil.GetNowTimeCustom() // 获取当前故障发生时间
+							lastTimeWindow := entity.GetLastTimeWindow()     // 获取最后一个时间窗口
+							var faultLabel string
+							for _, f := range masterConfig.Rule27 {
+								faultLabel = f(data)
+								if faultLabel != "" {
+									if !canCollect() {
+										break
+									}
+									subscribersTimes[i] = time.Now()
+									c_log.GlobalLogger.Errorf("触发事件【xxx】,开始采集。", faultLabel)
+									saveTimeWindow(faultLabel, faultHappenTime, lastTimeWindow)
+									break
+								}
+							}
+							subscribersMutexes[i].Unlock()
+						}
+						subscribersTimeMutexes[i].Unlock()
+					},
+				})
+				if err == nil {
+					create = true
+				}
+			}
+			if topic == masterConfig.Topic28 && len(masterConfig.Rule28) > 0 {
+				subscribers[i], err = goroslib.NewSubscriber(goroslib.SubscriberConf{
+					Node:  commonConfig.RosNode,
+					Topic: topic,
+					Callback: func(data *sensor_msgs.PointCloud2) {
+						subscribersTimeMutexes[i].Lock()
+						if time.Since(subscribersTimes[i]).Seconds() > triggerInterval {
+							subscribersMutexes[i].Lock()
+							faultHappenTime := commonUtil.GetNowTimeCustom() // 获取当前故障发生时间
+							lastTimeWindow := entity.GetLastTimeWindow()     // 获取最后一个时间窗口
+							var faultLabel string
+							for _, f := range masterConfig.Rule28 {
+								faultLabel = f(data)
+								if faultLabel != "" {
+									if !canCollect() {
+										break
+									}
+									subscribersTimes[i] = time.Now()
+									c_log.GlobalLogger.Errorf("触发事件【xxx】,开始采集。", faultLabel)
+									saveTimeWindow(faultLabel, faultHappenTime, lastTimeWindow)
+									break
+								}
+							}
+							subscribersMutexes[i].Unlock()
+						}
+						subscribersTimeMutexes[i].Unlock()
+					},
+				})
+				if err == nil {
+					create = true
+				}
+			}
+			if topic == masterConfig.Topic29 && len(masterConfig.Rule29) > 0 {
+				subscribers[i], err = goroslib.NewSubscriber(goroslib.SubscriberConf{
+					Node:  commonConfig.RosNode,
+					Topic: topic,
+					Callback: func(data *sensor_msgs.CameraInfo) {
+						subscribersTimeMutexes[i].Lock()
+						if time.Since(subscribersTimes[i]).Seconds() > triggerInterval {
+							subscribersMutexes[i].Lock()
+							faultHappenTime := commonUtil.GetNowTimeCustom() // 获取当前故障发生时间
+							lastTimeWindow := entity.GetLastTimeWindow()     // 获取最后一个时间窗口
+							var faultLabel string
+							for _, f := range masterConfig.Rule29 {
+								faultLabel = f(data)
+								if faultLabel != "" {
+									if !canCollect() {
+										break
+									}
+									subscribersTimes[i] = time.Now()
+									c_log.GlobalLogger.Errorf("触发事件【xxx】,开始采集。", faultLabel)
+									saveTimeWindow(faultLabel, faultHappenTime, lastTimeWindow)
+									break
+								}
+							}
+							subscribersMutexes[i].Unlock()
+						}
+						subscribersTimeMutexes[i].Unlock()
+					},
+				})
+				if err == nil {
+					create = true
+				}
+			}
+			if topic == masterConfig.Topic30 && len(masterConfig.Rule30) > 0 {
+				subscribers[i], err = goroslib.NewSubscriber(goroslib.SubscriberConf{
+					Node:  commonConfig.RosNode,
+					Topic: topic,
+					Callback: func(data *sensor_msgs.Image) {
+						subscribersTimeMutexes[i].Lock()
+						if time.Since(subscribersTimes[i]).Seconds() > triggerInterval {
+							subscribersMutexes[i].Lock()
+							faultHappenTime := commonUtil.GetNowTimeCustom() // 获取当前故障发生时间
+							lastTimeWindow := entity.GetLastTimeWindow()     // 获取最后一个时间窗口
+							var faultLabel string
+							for _, f := range masterConfig.Rule30 {
+								faultLabel = f(data)
+								if faultLabel != "" {
+									if !canCollect() {
+										break
+									}
+									subscribersTimes[i] = time.Now()
+									c_log.GlobalLogger.Errorf("触发事件【xxx】,开始采集。", faultLabel)
+									saveTimeWindow(faultLabel, faultHappenTime, lastTimeWindow)
+									break
+								}
+							}
+							subscribersMutexes[i].Unlock()
+						}
+						subscribersTimeMutexes[i].Unlock()
+					},
+				})
+				if err == nil {
+					create = true
+				}
+			}
+			if topic == masterConfig.Topic31 && len(masterConfig.Rule31) > 0 {
+				subscribers[i], err = goroslib.NewSubscriber(goroslib.SubscriberConf{
+					Node:  commonConfig.RosNode,
+					Topic: topic,
+					Callback: func(data *sensor_msgs.CompressedImage) {
+						subscribersTimeMutexes[i].Lock()
+						if time.Since(subscribersTimes[i]).Seconds() > triggerInterval {
+							subscribersMutexes[i].Lock()
+							faultHappenTime := commonUtil.GetNowTimeCustom() // 获取当前故障发生时间
+							lastTimeWindow := entity.GetLastTimeWindow()     // 获取最后一个时间窗口
+							var faultLabel string
+							for _, f := range masterConfig.Rule31 {
+								faultLabel = f(data)
+								if faultLabel != "" {
+									if !canCollect() {
+										break
+									}
+									subscribersTimes[i] = time.Now()
+									c_log.GlobalLogger.Errorf("触发事件【xxx】,开始采集。", faultLabel)
+									saveTimeWindow(faultLabel, faultHappenTime, lastTimeWindow)
+									break
+								}
+							}
+							subscribersMutexes[i].Unlock()
+						}
+						subscribersTimeMutexes[i].Unlock()
+					},
+				})
+				if err == nil {
+					create = true
+				}
+			}
+			if topic == masterConfig.Topic32 && len(masterConfig.Rule32) > 0 {
+				subscribers[i], err = goroslib.NewSubscriber(goroslib.SubscriberConf{
+					Node:  commonConfig.RosNode,
+					Topic: topic,
+					Callback: func(data *dynamic_reconfigure.ConfigDescription) {
+						subscribersTimeMutexes[i].Lock()
+						if time.Since(subscribersTimes[i]).Seconds() > triggerInterval {
+							subscribersMutexes[i].Lock()
+							faultHappenTime := commonUtil.GetNowTimeCustom() // 获取当前故障发生时间
+							lastTimeWindow := entity.GetLastTimeWindow()     // 获取最后一个时间窗口
+							var faultLabel string
+							for _, f := range masterConfig.Rule32 {
+								faultLabel = f(data)
+								if faultLabel != "" {
+									if !canCollect() {
+										break
+									}
+									subscribersTimes[i] = time.Now()
+									c_log.GlobalLogger.Errorf("触发事件【xxx】,开始采集。", faultLabel)
+									saveTimeWindow(faultLabel, faultHappenTime, lastTimeWindow)
+									break
+								}
+							}
+							subscribersMutexes[i].Unlock()
+						}
+						subscribersTimeMutexes[i].Unlock()
+					},
+				})
+				if err == nil {
+					create = true
+				}
+			}
+			if topic == masterConfig.Topic33 && len(masterConfig.Rule33) > 0 {
+				subscribers[i], err = goroslib.NewSubscriber(goroslib.SubscriberConf{
+					Node:  commonConfig.RosNode,
+					Topic: topic,
+					Callback: func(data *dynamic_reconfigure.Config) {
+						subscribersTimeMutexes[i].Lock()
+						if time.Since(subscribersTimes[i]).Seconds() > triggerInterval {
+							subscribersMutexes[i].Lock()
+							faultHappenTime := commonUtil.GetNowTimeCustom() // 获取当前故障发生时间
+							lastTimeWindow := entity.GetLastTimeWindow()     // 获取最后一个时间窗口
+							var faultLabel string
+							for _, f := range masterConfig.Rule33 {
+								faultLabel = f(data)
+								if faultLabel != "" {
+									if !canCollect() {
+										break
+									}
+									subscribersTimes[i] = time.Now()
+									c_log.GlobalLogger.Errorf("触发事件【xxx】,开始采集。", faultLabel)
+									saveTimeWindow(faultLabel, faultHappenTime, lastTimeWindow)
+									break
+								}
+							}
+							subscribersMutexes[i].Unlock()
+						}
+						subscribersTimeMutexes[i].Unlock()
+					},
+				})
+				if err == nil {
+					create = true
+				}
+			}
+			if topic == masterConfig.Topic34 && len(masterConfig.Rule34) > 0 {
+				subscribers[i], err = goroslib.NewSubscriber(goroslib.SubscriberConf{
+					Node:  commonConfig.RosNode,
+					Topic: topic,
+					Callback: func(data *sensor_msgs.CompressedImage) {
+						subscribersTimeMutexes[i].Lock()
+						if time.Since(subscribersTimes[i]).Seconds() > triggerInterval {
+							subscribersMutexes[i].Lock()
+							faultHappenTime := commonUtil.GetNowTimeCustom() // 获取当前故障发生时间
+							lastTimeWindow := entity.GetLastTimeWindow()     // 获取最后一个时间窗口
+							var faultLabel string
+							for _, f := range masterConfig.Rule34 {
+								faultLabel = f(data)
+								if faultLabel != "" {
+									if !canCollect() {
+										break
+									}
+									subscribersTimes[i] = time.Now()
+									c_log.GlobalLogger.Errorf("触发事件【xxx】,开始采集。", faultLabel)
+									saveTimeWindow(faultLabel, faultHappenTime, lastTimeWindow)
+									break
+								}
+							}
+							subscribersMutexes[i].Unlock()
+						}
+						subscribersTimeMutexes[i].Unlock()
+					},
+				})
+				if err == nil {
+					create = true
+				}
+			}
+			if topic == masterConfig.Topic35 && len(masterConfig.Rule35) > 0 {
+				subscribers[i], err = goroslib.NewSubscriber(goroslib.SubscriberConf{
+					Node:  commonConfig.RosNode,
+					Topic: topic,
+					Callback: func(data *dynamic_reconfigure.ConfigDescription) {
+						subscribersTimeMutexes[i].Lock()
+						if time.Since(subscribersTimes[i]).Seconds() > triggerInterval {
+							subscribersMutexes[i].Lock()
+							faultHappenTime := commonUtil.GetNowTimeCustom() // 获取当前故障发生时间
+							lastTimeWindow := entity.GetLastTimeWindow()     // 获取最后一个时间窗口
+							var faultLabel string
+							for _, f := range masterConfig.Rule35 {
+								faultLabel = f(data)
+								if faultLabel != "" {
+									if !canCollect() {
+										break
+									}
+									subscribersTimes[i] = time.Now()
+									c_log.GlobalLogger.Errorf("触发事件【xxx】,开始采集。", faultLabel)
+									saveTimeWindow(faultLabel, faultHappenTime, lastTimeWindow)
+									break
+								}
+							}
+							subscribersMutexes[i].Unlock()
+						}
+						subscribersTimeMutexes[i].Unlock()
+					},
+				})
+				if err == nil {
+					create = true
+				}
+			}
+			if topic == masterConfig.Topic36 && len(masterConfig.Rule36) > 0 {
+				subscribers[i], err = goroslib.NewSubscriber(goroslib.SubscriberConf{
+					Node:  commonConfig.RosNode,
+					Topic: topic,
+					Callback: func(data *dynamic_reconfigure.Config) {
+						subscribersTimeMutexes[i].Lock()
+						if time.Since(subscribersTimes[i]).Seconds() > triggerInterval {
+							subscribersMutexes[i].Lock()
+							faultHappenTime := commonUtil.GetNowTimeCustom() // 获取当前故障发生时间
+							lastTimeWindow := entity.GetLastTimeWindow()     // 获取最后一个时间窗口
+							var faultLabel string
+							for _, f := range masterConfig.Rule36 {
+								faultLabel = f(data)
+								if faultLabel != "" {
+									if !canCollect() {
+										break
+									}
+									subscribersTimes[i] = time.Now()
+									c_log.GlobalLogger.Errorf("触发事件【xxx】,开始采集。", faultLabel)
+									saveTimeWindow(faultLabel, faultHappenTime, lastTimeWindow)
+									break
+								}
+							}
+							subscribersMutexes[i].Unlock()
+						}
+						subscribersTimeMutexes[i].Unlock()
+					},
+				})
+				if err == nil {
+					create = true
+				}
+			}
+			if topic == masterConfig.Topic37 && len(masterConfig.Rule37) > 0 {
+				subscribers[i], err = goroslib.NewSubscriber(goroslib.SubscriberConf{
+					Node:  commonConfig.RosNode,
+					Topic: topic,
+					Callback: func(data *theora_image_transport.Packet) {
+						subscribersTimeMutexes[i].Lock()
+						if time.Since(subscribersTimes[i]).Seconds() > triggerInterval {
+							subscribersMutexes[i].Lock()
+							faultHappenTime := commonUtil.GetNowTimeCustom() // 获取当前故障发生时间
+							lastTimeWindow := entity.GetLastTimeWindow()     // 获取最后一个时间窗口
+							var faultLabel string
+							for _, f := range masterConfig.Rule37 {
+								faultLabel = f(data)
+								if faultLabel != "" {
+									if !canCollect() {
+										break
+									}
+									subscribersTimes[i] = time.Now()
+									c_log.GlobalLogger.Errorf("触发事件【xxx】,开始采集。", faultLabel)
+									saveTimeWindow(faultLabel, faultHappenTime, lastTimeWindow)
+									break
+								}
+							}
+							subscribersMutexes[i].Unlock()
+						}
+						subscribersTimeMutexes[i].Unlock()
+					},
+				})
+				if err == nil {
+					create = true
+				}
+			}
+			if topic == masterConfig.Topic38 && len(masterConfig.Rule38) > 0 {
+				subscribers[i], err = goroslib.NewSubscriber(goroslib.SubscriberConf{
+					Node:  commonConfig.RosNode,
+					Topic: topic,
+					Callback: func(data *dynamic_reconfigure.ConfigDescription) {
+						subscribersTimeMutexes[i].Lock()
+						if time.Since(subscribersTimes[i]).Seconds() > triggerInterval {
+							subscribersMutexes[i].Lock()
+							faultHappenTime := commonUtil.GetNowTimeCustom() // 获取当前故障发生时间
+							lastTimeWindow := entity.GetLastTimeWindow()     // 获取最后一个时间窗口
+							var faultLabel string
+							for _, f := range masterConfig.Rule38 {
+								faultLabel = f(data)
+								if faultLabel != "" {
+									if !canCollect() {
+										break
+									}
+									subscribersTimes[i] = time.Now()
+									c_log.GlobalLogger.Errorf("触发事件【xxx】,开始采集。", faultLabel)
+									saveTimeWindow(faultLabel, faultHappenTime, lastTimeWindow)
+									break
+								}
+							}
+							subscribersMutexes[i].Unlock()
+						}
+						subscribersTimeMutexes[i].Unlock()
+					},
+				})
+				if err == nil {
+					create = true
+				}
+			}
+			if topic == masterConfig.Topic39 && len(masterConfig.Rule39) > 0 {
+				subscribers[i], err = goroslib.NewSubscriber(goroslib.SubscriberConf{
+					Node:  commonConfig.RosNode,
+					Topic: topic,
+					Callback: func(data *dynamic_reconfigure.Config) {
+						subscribersTimeMutexes[i].Lock()
+						if time.Since(subscribersTimes[i]).Seconds() > triggerInterval {
+							subscribersMutexes[i].Lock()
+							faultHappenTime := commonUtil.GetNowTimeCustom() // 获取当前故障发生时间
+							lastTimeWindow := entity.GetLastTimeWindow()     // 获取最后一个时间窗口
+							var faultLabel string
+							for _, f := range masterConfig.Rule39 {
+								faultLabel = f(data)
+								if faultLabel != "" {
+									if !canCollect() {
+										break
+									}
+									subscribersTimes[i] = time.Now()
+									c_log.GlobalLogger.Errorf("触发事件【xxx】,开始采集。", faultLabel)
+									saveTimeWindow(faultLabel, faultHappenTime, lastTimeWindow)
+									break
+								}
+							}
+							subscribersMutexes[i].Unlock()
+						}
+						subscribersTimeMutexes[i].Unlock()
+					},
+				})
+				if err == nil {
+					create = true
+				}
+			}
+			if topic == masterConfig.Topic40 && len(masterConfig.Rule40) > 0 {
+				subscribers[i], err = goroslib.NewSubscriber(goroslib.SubscriberConf{
+					Node:  commonConfig.RosNode,
+					Topic: topic,
+					Callback: func(data *geometry_msgs.PoseStamped) {
+						subscribersTimeMutexes[i].Lock()
+						if time.Since(subscribersTimes[i]).Seconds() > triggerInterval {
+							subscribersMutexes[i].Lock()
+							faultHappenTime := commonUtil.GetNowTimeCustom() // 获取当前故障发生时间
+							lastTimeWindow := entity.GetLastTimeWindow()     // 获取最后一个时间窗口
+							var faultLabel string
+							for _, f := range masterConfig.Rule40 {
+								faultLabel = f(data)
+								if faultLabel != "" {
+									if !canCollect() {
+										break
+									}
+									subscribersTimes[i] = time.Now()
+									c_log.GlobalLogger.Errorf("触发事件【xxx】,开始采集。", faultLabel)
+									saveTimeWindow(faultLabel, faultHappenTime, lastTimeWindow)
+									break
+								}
+							}
+							subscribersMutexes[i].Unlock()
+						}
+						subscribersTimeMutexes[i].Unlock()
+					},
+				})
+				if err == nil {
+					create = true
+				}
+			}
+			if topic == masterConfig.Topic41 && len(masterConfig.Rule41) > 0 {
+				subscribers[i], err = goroslib.NewSubscriber(goroslib.SubscriberConf{
+					Node:  commonConfig.RosNode,
+					Topic: topic,
+					Callback: func(data *geometry_msgs.PoseStamped) {
+						subscribersTimeMutexes[i].Lock()
+						if time.Since(subscribersTimes[i]).Seconds() > triggerInterval {
+							subscribersMutexes[i].Lock()
+							faultHappenTime := commonUtil.GetNowTimeCustom() // 获取当前故障发生时间
+							lastTimeWindow := entity.GetLastTimeWindow()     // 获取最后一个时间窗口
+							var faultLabel string
+							for _, f := range masterConfig.Rule41 {
+								faultLabel = f(data)
+								if faultLabel != "" {
+									if !canCollect() {
+										break
+									}
+									subscribersTimes[i] = time.Now()
+									c_log.GlobalLogger.Errorf("触发事件【xxx】,开始采集。", faultLabel)
+									saveTimeWindow(faultLabel, faultHappenTime, lastTimeWindow)
+									break
+								}
+							}
+							subscribersMutexes[i].Unlock()
+						}
+						subscribersTimeMutexes[i].Unlock()
+					},
+				})
+				if err == nil {
+					create = true
+				}
+			}
+			if topic == masterConfig.Topic42 && len(masterConfig.Rule42) > 0 {
+				subscribers[i], err = goroslib.NewSubscriber(goroslib.SubscriberConf{
+					Node:  commonConfig.RosNode,
+					Topic: topic,
+					Callback: func(data *nav_msgs.Path) {
+						subscribersTimeMutexes[i].Lock()
+						if time.Since(subscribersTimes[i]).Seconds() > triggerInterval {
+							subscribersMutexes[i].Lock()
+							faultHappenTime := commonUtil.GetNowTimeCustom() // 获取当前故障发生时间
+							lastTimeWindow := entity.GetLastTimeWindow()     // 获取最后一个时间窗口
+							var faultLabel string
+							for _, f := range masterConfig.Rule42 {
+								faultLabel = f(data)
+								if faultLabel != "" {
+									if !canCollect() {
+										break
+									}
+									subscribersTimes[i] = time.Now()
+									c_log.GlobalLogger.Errorf("触发事件【xxx】,开始采集。", faultLabel)
+									saveTimeWindow(faultLabel, faultHappenTime, lastTimeWindow)
+									break
+								}
+							}
+							subscribersMutexes[i].Unlock()
+						}
+						subscribersTimeMutexes[i].Unlock()
+					},
+				})
+				if err == nil {
+					create = true
+				}
+			}
+			if topic == masterConfig.Topic43 && len(masterConfig.Rule43) > 0 {
+				subscribers[i], err = goroslib.NewSubscriber(goroslib.SubscriberConf{
+					Node:  commonConfig.RosNode,
+					Topic: topic,
+					Callback: func(data *std_msgs.Int8) {
+						subscribersTimeMutexes[i].Lock()
+						if time.Since(subscribersTimes[i]).Seconds() > triggerInterval {
+							subscribersMutexes[i].Lock()
+							faultHappenTime := commonUtil.GetNowTimeCustom() // 获取当前故障发生时间
+							lastTimeWindow := entity.GetLastTimeWindow()     // 获取最后一个时间窗口
+							var faultLabel string
+							for _, f := range masterConfig.Rule43 {
+								faultLabel = f(data)
+								if faultLabel != "" {
+									if !canCollect() {
+										break
+									}
+									subscribersTimes[i] = time.Now()
+									c_log.GlobalLogger.Errorf("触发事件【xxx】,开始采集。", faultLabel)
+									saveTimeWindow(faultLabel, faultHappenTime, lastTimeWindow)
+									break
+								}
+							}
+							subscribersMutexes[i].Unlock()
+						}
+						subscribersTimeMutexes[i].Unlock()
+					},
+				})
+				if err == nil {
+					create = true
+				}
+			}
+			if topic == masterConfig.Topic44 && len(masterConfig.Rule44) > 0 {
+				subscribers[i], err = goroslib.NewSubscriber(goroslib.SubscriberConf{
+					Node:  commonConfig.RosNode,
+					Topic: topic,
+					Callback: func(data *std_msgs.Bool) {
+						subscribersTimeMutexes[i].Lock()
+						if time.Since(subscribersTimes[i]).Seconds() > triggerInterval {
+							subscribersMutexes[i].Lock()
+							faultHappenTime := commonUtil.GetNowTimeCustom() // 获取当前故障发生时间
+							lastTimeWindow := entity.GetLastTimeWindow()     // 获取最后一个时间窗口
+							var faultLabel string
+							for _, f := range masterConfig.Rule44 {
+								faultLabel = f(data)
+								if faultLabel != "" {
+									if !canCollect() {
+										break
+									}
+									subscribersTimes[i] = time.Now()
+									c_log.GlobalLogger.Errorf("触发事件【xxx】,开始采集。", faultLabel)
+									saveTimeWindow(faultLabel, faultHappenTime, lastTimeWindow)
+									break
+								}
+							}
+							subscribersMutexes[i].Unlock()
+						}
+						subscribersTimeMutexes[i].Unlock()
+					},
+				})
+				if err == nil {
+					create = true
+				}
+			}
+			if topic == masterConfig.Topic45 && len(masterConfig.Rule45) > 0 {
+				subscribers[i], err = goroslib.NewSubscriber(goroslib.SubscriberConf{
+					Node:  commonConfig.RosNode,
+					Topic: topic,
+					Callback: func(data *nav_msgs.Path) {
+						subscribersTimeMutexes[i].Lock()
+						if time.Since(subscribersTimes[i]).Seconds() > triggerInterval {
+							subscribersMutexes[i].Lock()
+							faultHappenTime := commonUtil.GetNowTimeCustom() // 获取当前故障发生时间
+							lastTimeWindow := entity.GetLastTimeWindow()     // 获取最后一个时间窗口
+							var faultLabel string
+							for _, f := range masterConfig.Rule45 {
+								faultLabel = f(data)
+								if faultLabel != "" {
+									if !canCollect() {
+										break
+									}
+									subscribersTimes[i] = time.Now()
+									c_log.GlobalLogger.Errorf("触发事件【xxx】,开始采集。", faultLabel)
+									saveTimeWindow(faultLabel, faultHappenTime, lastTimeWindow)
+									break
+								}
+							}
+							subscribersMutexes[i].Unlock()
+						}
+						subscribersTimeMutexes[i].Unlock()
+					},
+				})
+				if err == nil {
+					create = true
+				}
+			}
+			if topic == masterConfig.Topic46 && len(masterConfig.Rule46) > 0 {
+				subscribers[i], err = goroslib.NewSubscriber(goroslib.SubscriberConf{
+					Node:  commonConfig.RosNode,
+					Topic: topic,
+					Callback: func(data *geometry_msgs.PoseStamped) {
+						subscribersTimeMutexes[i].Lock()
+						if time.Since(subscribersTimes[i]).Seconds() > triggerInterval {
+							subscribersMutexes[i].Lock()
+							faultHappenTime := commonUtil.GetNowTimeCustom() // 获取当前故障发生时间
+							lastTimeWindow := entity.GetLastTimeWindow()     // 获取最后一个时间窗口
+							var faultLabel string
+							for _, f := range masterConfig.Rule46 {
+								faultLabel = f(data)
+								if faultLabel != "" {
+									if !canCollect() {
+										break
+									}
+									subscribersTimes[i] = time.Now()
+									c_log.GlobalLogger.Errorf("触发事件【xxx】,开始采集。", faultLabel)
+									saveTimeWindow(faultLabel, faultHappenTime, lastTimeWindow)
+									break
+								}
+							}
+							subscribersMutexes[i].Unlock()
+						}
+						subscribersTimeMutexes[i].Unlock()
+					},
+				})
+				if err == nil {
+					create = true
+				}
+			}
+			if topic == masterConfig.Topic47 && len(masterConfig.Rule47) > 0 {
+				subscribers[i], err = goroslib.NewSubscriber(goroslib.SubscriberConf{
+					Node:  commonConfig.RosNode,
+					Topic: topic,
+					Callback: func(data *geometry_msgs.PoseStamped) {
+						subscribersTimeMutexes[i].Lock()
+						if time.Since(subscribersTimes[i]).Seconds() > triggerInterval {
+							subscribersMutexes[i].Lock()
+							faultHappenTime := commonUtil.GetNowTimeCustom() // 获取当前故障发生时间
+							lastTimeWindow := entity.GetLastTimeWindow()     // 获取最后一个时间窗口
+							var faultLabel string
+							for _, f := range masterConfig.Rule47 {
+								faultLabel = f(data)
+								if faultLabel != "" {
+									if !canCollect() {
+										break
+									}
+									subscribersTimes[i] = time.Now()
+									c_log.GlobalLogger.Errorf("触发事件【xxx】,开始采集。", faultLabel)
+									saveTimeWindow(faultLabel, faultHappenTime, lastTimeWindow)
+									break
+								}
+							}
+							subscribersMutexes[i].Unlock()
+						}
+						subscribersTimeMutexes[i].Unlock()
+					},
+				})
+				if err == nil {
+					create = true
+				}
+			}
+			if topic == masterConfig.Topic48 && len(masterConfig.Rule48) > 0 {
+				subscribers[i], err = goroslib.NewSubscriber(goroslib.SubscriberConf{
+					Node:  commonConfig.RosNode,
+					Topic: topic,
+					Callback: func(data *geometry_msgs.PoseStamped) {
+						subscribersTimeMutexes[i].Lock()
+						if time.Since(subscribersTimes[i]).Seconds() > triggerInterval {
+							subscribersMutexes[i].Lock()
+							faultHappenTime := commonUtil.GetNowTimeCustom() // 获取当前故障发生时间
+							lastTimeWindow := entity.GetLastTimeWindow()     // 获取最后一个时间窗口
+							var faultLabel string
+							for _, f := range masterConfig.Rule48 {
+								faultLabel = f(data)
+								if faultLabel != "" {
+									if !canCollect() {
+										break
+									}
+									subscribersTimes[i] = time.Now()
+									c_log.GlobalLogger.Errorf("触发事件【xxx】,开始采集。", faultLabel)
+									saveTimeWindow(faultLabel, faultHappenTime, lastTimeWindow)
+									break
+								}
+							}
+							subscribersMutexes[i].Unlock()
+						}
+						subscribersTimeMutexes[i].Unlock()
+					},
+				})
+				if err == nil {
+					create = true
+				}
+			}
+			if topic == masterConfig.Topic49 && len(masterConfig.Rule49) > 0 {
+				subscribers[i], err = goroslib.NewSubscriber(goroslib.SubscriberConf{
+					Node:  commonConfig.RosNode,
+					Topic: topic,
+					Callback: func(data *std_msgs.String) {
+						subscribersTimeMutexes[i].Lock()
+						if time.Since(subscribersTimes[i]).Seconds() > triggerInterval {
+							subscribersMutexes[i].Lock()
+							faultHappenTime := commonUtil.GetNowTimeCustom() // 获取当前故障发生时间
+							lastTimeWindow := entity.GetLastTimeWindow()     // 获取最后一个时间窗口
+							var faultLabel string
+							for _, f := range masterConfig.Rule49 {
+								faultLabel = f(data)
+								if faultLabel != "" {
+									if !canCollect() {
+										break
+									}
+									subscribersTimes[i] = time.Now()
+									c_log.GlobalLogger.Errorf("触发事件【xxx】,开始采集。", faultLabel)
+									saveTimeWindow(faultLabel, faultHappenTime, lastTimeWindow)
+									break
+								}
+							}
+							subscribersMutexes[i].Unlock()
+						}
+						subscribersTimeMutexes[i].Unlock()
+					},
+				})
+				if err == nil {
+					create = true
+				}
+			}
+			if topic == masterConfig.Topic50 && len(masterConfig.Rule50) > 0 {
+				subscribers[i], err = goroslib.NewSubscriber(goroslib.SubscriberConf{
+					Node:  commonConfig.RosNode,
+					Topic: topic,
+					Callback: func(data *visualization_msgs.MarkerArray) {
+						subscribersTimeMutexes[i].Lock()
+						if time.Since(subscribersTimes[i]).Seconds() > triggerInterval {
+							subscribersMutexes[i].Lock()
+							faultHappenTime := commonUtil.GetNowTimeCustom() // 获取当前故障发生时间
+							lastTimeWindow := entity.GetLastTimeWindow()     // 获取最后一个时间窗口
+							var faultLabel string
+							for _, f := range masterConfig.Rule50 {
+								faultLabel = f(data)
+								if faultLabel != "" {
+									if !canCollect() {
+										break
+									}
+									subscribersTimes[i] = time.Now()
+									c_log.GlobalLogger.Errorf("触发事件【xxx】,开始采集。", faultLabel)
+									saveTimeWindow(faultLabel, faultHappenTime, lastTimeWindow)
+									break
+								}
+							}
+							subscribersMutexes[i].Unlock()
+						}
+						subscribersTimeMutexes[i].Unlock()
+					},
+				})
+				if err == nil {
+					create = true
+				}
+			}
+			if topic == masterConfig.Topic51 && len(masterConfig.Rule51) > 0 {
+				subscribers[i], err = goroslib.NewSubscriber(goroslib.SubscriberConf{
+					Node:  commonConfig.RosNode,
+					Topic: topic,
+					Callback: func(data *geometry_msgs.PolygonStamped) {
+						subscribersTimeMutexes[i].Lock()
+						if time.Since(subscribersTimes[i]).Seconds() > triggerInterval {
+							subscribersMutexes[i].Lock()
+							faultHappenTime := commonUtil.GetNowTimeCustom() // 获取当前故障发生时间
+							lastTimeWindow := entity.GetLastTimeWindow()     // 获取最后一个时间窗口
+							var faultLabel string
+							for _, f := range masterConfig.Rule51 {
+								faultLabel = f(data)
+								if faultLabel != "" {
+									if !canCollect() {
+										break
+									}
+									subscribersTimes[i] = time.Now()
+									c_log.GlobalLogger.Errorf("触发事件【xxx】,开始采集。", faultLabel)
+									saveTimeWindow(faultLabel, faultHappenTime, lastTimeWindow)
+									break
+								}
+							}
+							subscribersMutexes[i].Unlock()
+						}
+						subscribersTimeMutexes[i].Unlock()
+					},
+				})
+				if err == nil {
+					create = true
+				}
+			}
+			if topic == masterConfig.Topic52 && len(masterConfig.Rule52) > 0 {
+				subscribers[i], err = goroslib.NewSubscriber(goroslib.SubscriberConf{
+					Node:  commonConfig.RosNode,
+					Topic: topic,
+					Callback: func(data *nav_msgs.OccupancyGrid) {
+						subscribersTimeMutexes[i].Lock()
+						if time.Since(subscribersTimes[i]).Seconds() > triggerInterval {
+							subscribersMutexes[i].Lock()
+							faultHappenTime := commonUtil.GetNowTimeCustom() // 获取当前故障发生时间
+							lastTimeWindow := entity.GetLastTimeWindow()     // 获取最后一个时间窗口
+							var faultLabel string
+							for _, f := range masterConfig.Rule52 {
+								faultLabel = f(data)
+								if faultLabel != "" {
+									if !canCollect() {
+										break
+									}
+									subscribersTimes[i] = time.Now()
+									c_log.GlobalLogger.Errorf("触发事件【xxx】,开始采集。", faultLabel)
+									saveTimeWindow(faultLabel, faultHappenTime, lastTimeWindow)
+									break
+								}
+							}
+							subscribersMutexes[i].Unlock()
+						}
+						subscribersTimeMutexes[i].Unlock()
+					},
+				})
+				if err == nil {
+					create = true
+				}
+			}
+			if topic == masterConfig.Topic53 && len(masterConfig.Rule53) > 0 {
+				subscribers[i], err = goroslib.NewSubscriber(goroslib.SubscriberConf{
+					Node:  commonConfig.RosNode,
+					Topic: topic,
+					Callback: func(data *nav_msgs.OccupancyGrid) {
+						subscribersTimeMutexes[i].Lock()
+						if time.Since(subscribersTimes[i]).Seconds() > triggerInterval {
+							subscribersMutexes[i].Lock()
+							faultHappenTime := commonUtil.GetNowTimeCustom() // 获取当前故障发生时间
+							lastTimeWindow := entity.GetLastTimeWindow()     // 获取最后一个时间窗口
+							var faultLabel string
+							for _, f := range masterConfig.Rule53 {
+								faultLabel = f(data)
+								if faultLabel != "" {
+									if !canCollect() {
+										break
+									}
+									subscribersTimes[i] = time.Now()
+									c_log.GlobalLogger.Errorf("触发事件【xxx】,开始采集。", faultLabel)
+									saveTimeWindow(faultLabel, faultHappenTime, lastTimeWindow)
+									break
+								}
+							}
+							subscribersMutexes[i].Unlock()
+						}
+						subscribersTimeMutexes[i].Unlock()
+					},
+				})
+				if err == nil {
+					create = true
+				}
+			}
+			if topic == masterConfig.Topic54 && len(masterConfig.Rule54) > 0 {
+				subscribers[i], err = goroslib.NewSubscriber(goroslib.SubscriberConf{
+					Node:  commonConfig.RosNode,
+					Topic: topic,
+					Callback: func(data *nav_msgs.OccupancyGrid) {
+						subscribersTimeMutexes[i].Lock()
+						if time.Since(subscribersTimes[i]).Seconds() > triggerInterval {
+							subscribersMutexes[i].Lock()
+							faultHappenTime := commonUtil.GetNowTimeCustom() // 获取当前故障发生时间
+							lastTimeWindow := entity.GetLastTimeWindow()     // 获取最后一个时间窗口
+							var faultLabel string
+							for _, f := range masterConfig.Rule54 {
+								faultLabel = f(data)
+								if faultLabel != "" {
+									if !canCollect() {
+										break
+									}
+									subscribersTimes[i] = time.Now()
+									c_log.GlobalLogger.Errorf("触发事件【xxx】,开始采集。", faultLabel)
+									saveTimeWindow(faultLabel, faultHappenTime, lastTimeWindow)
+									break
+								}
+							}
+							subscribersMutexes[i].Unlock()
+						}
+						subscribersTimeMutexes[i].Unlock()
+					},
+				})
+				if err == nil {
+					create = true
+				}
+			}
+			if topic == masterConfig.Topic55 && len(masterConfig.Rule55) > 0 {
+				subscribers[i], err = goroslib.NewSubscriber(goroslib.SubscriberConf{
+					Node:  commonConfig.RosNode,
+					Topic: topic,
+					Callback: func(data *std_msgs.Float32) {
+						subscribersTimeMutexes[i].Lock()
+						if time.Since(subscribersTimes[i]).Seconds() > triggerInterval {
+							subscribersMutexes[i].Lock()
+							faultHappenTime := commonUtil.GetNowTimeCustom() // 获取当前故障发生时间
+							lastTimeWindow := entity.GetLastTimeWindow()     // 获取最后一个时间窗口
+							var faultLabel string
+							for _, f := range masterConfig.Rule55 {
+								faultLabel = f(data)
+								if faultLabel != "" {
+									if !canCollect() {
+										break
+									}
+									subscribersTimes[i] = time.Now()
+									c_log.GlobalLogger.Errorf("触发事件【xxx】,开始采集。", faultLabel)
+									saveTimeWindow(faultLabel, faultHappenTime, lastTimeWindow)
+									break
+								}
+							}
+							subscribersMutexes[i].Unlock()
+						}
+						subscribersTimeMutexes[i].Unlock()
+					},
+				})
+				if err == nil {
+					create = true
+				}
+			}
+			if topic == masterConfig.Topic56 && len(masterConfig.Rule56) > 0 {
+				subscribers[i], err = goroslib.NewSubscriber(goroslib.SubscriberConf{
+					Node:  commonConfig.RosNode,
+					Topic: topic,
+					Callback: func(data *std_msgs.Int32) {
+						subscribersTimeMutexes[i].Lock()
+						if time.Since(subscribersTimes[i]).Seconds() > triggerInterval {
+							subscribersMutexes[i].Lock()
+							faultHappenTime := commonUtil.GetNowTimeCustom() // 获取当前故障发生时间
+							lastTimeWindow := entity.GetLastTimeWindow()     // 获取最后一个时间窗口
+							var faultLabel string
+							for _, f := range masterConfig.Rule56 {
+								faultLabel = f(data)
+								if faultLabel != "" {
+									if !canCollect() {
+										break
+									}
+									subscribersTimes[i] = time.Now()
+									c_log.GlobalLogger.Errorf("触发事件【xxx】,开始采集。", faultLabel)
+									saveTimeWindow(faultLabel, faultHappenTime, lastTimeWindow)
+									break
+								}
+							}
+							subscribersMutexes[i].Unlock()
+						}
+						subscribersTimeMutexes[i].Unlock()
+					},
+				})
+				if err == nil {
+					create = true
+				}
+			}
+			if topic == masterConfig.Topic57 && len(masterConfig.Rule57) > 0 {
+				subscribers[i], err = goroslib.NewSubscriber(goroslib.SubscriberConf{
+					Node:  commonConfig.RosNode,
+					Topic: topic,
+					Callback: func(data *nav_msgs.Path) {
+						subscribersTimeMutexes[i].Lock()
+						if time.Since(subscribersTimes[i]).Seconds() > triggerInterval {
+							subscribersMutexes[i].Lock()
+							faultHappenTime := commonUtil.GetNowTimeCustom() // 获取当前故障发生时间
+							lastTimeWindow := entity.GetLastTimeWindow()     // 获取最后一个时间窗口
+							var faultLabel string
+							for _, f := range masterConfig.Rule57 {
+								faultLabel = f(data)
+								if faultLabel != "" {
+									if !canCollect() {
+										break
+									}
+									subscribersTimes[i] = time.Now()
+									c_log.GlobalLogger.Errorf("触发事件【xxx】,开始采集。", faultLabel)
+									saveTimeWindow(faultLabel, faultHappenTime, lastTimeWindow)
+									break
+								}
+							}
+							subscribersMutexes[i].Unlock()
+						}
+						subscribersTimeMutexes[i].Unlock()
+					},
+				})
+				if err == nil {
+					create = true
+				}
+			}
+			if topic == masterConfig.Topic58 && len(masterConfig.Rule58) > 0 {
+				subscribers[i], err = goroslib.NewSubscriber(goroslib.SubscriberConf{
+					Node:  commonConfig.RosNode,
+					Topic: topic,
+					Callback: func(data *clean_msg.ErrorInfo) {
+						subscribersTimeMutexes[i].Lock()
+						if time.Since(subscribersTimes[i]).Seconds() > triggerInterval {
+							subscribersMutexes[i].Lock()
+							faultHappenTime := commonUtil.GetNowTimeCustom() // 获取当前故障发生时间
+							lastTimeWindow := entity.GetLastTimeWindow()     // 获取最后一个时间窗口
+							var faultLabel string
+							for _, f := range masterConfig.Rule58 {
+								faultLabel = f(data)
+								if faultLabel != "" {
+									if !canCollect() {
+										break
+									}
+									subscribersTimes[i] = time.Now()
+									c_log.GlobalLogger.Errorf("触发事件【xxx】,开始采集。", faultLabel)
+									saveTimeWindow(faultLabel, faultHappenTime, lastTimeWindow)
+									break
+								}
+							}
+							subscribersMutexes[i].Unlock()
+						}
+						subscribersTimeMutexes[i].Unlock()
+					},
+				})
+				if err == nil {
+					create = true
+				}
+			}
+			if topic == masterConfig.Topic59 && len(masterConfig.Rule59) > 0 {
+				subscribers[i], err = goroslib.NewSubscriber(goroslib.SubscriberConf{
+					Node:  commonConfig.RosNode,
+					Topic: topic,
+					Callback: func(data *nav_msgs.OccupancyGrid) {
+						subscribersTimeMutexes[i].Lock()
+						if time.Since(subscribersTimes[i]).Seconds() > triggerInterval {
+							subscribersMutexes[i].Lock()
+							faultHappenTime := commonUtil.GetNowTimeCustom() // 获取当前故障发生时间
+							lastTimeWindow := entity.GetLastTimeWindow()     // 获取最后一个时间窗口
+							var faultLabel string
+							for _, f := range masterConfig.Rule59 {
+								faultLabel = f(data)
+								if faultLabel != "" {
+									if !canCollect() {
+										break
+									}
+									subscribersTimes[i] = time.Now()
+									c_log.GlobalLogger.Errorf("触发事件【xxx】,开始采集。", faultLabel)
+									saveTimeWindow(faultLabel, faultHappenTime, lastTimeWindow)
+									break
+								}
+							}
+							subscribersMutexes[i].Unlock()
+						}
+						subscribersTimeMutexes[i].Unlock()
+					},
+				})
+				if err == nil {
+					create = true
+				}
+			}
+			if topic == masterConfig.Topic60 && len(masterConfig.Rule60) > 0 {
+				subscribers[i], err = goroslib.NewSubscriber(goroslib.SubscriberConf{
+					Node:  commonConfig.RosNode,
+					Topic: topic,
+					Callback: func(data *nav_msgs.OccupancyGrid) {
+						subscribersTimeMutexes[i].Lock()
+						if time.Since(subscribersTimes[i]).Seconds() > triggerInterval {
+							subscribersMutexes[i].Lock()
+							faultHappenTime := commonUtil.GetNowTimeCustom() // 获取当前故障发生时间
+							lastTimeWindow := entity.GetLastTimeWindow()     // 获取最后一个时间窗口
+							var faultLabel string
+							for _, f := range masterConfig.Rule60 {
+								faultLabel = f(data)
+								if faultLabel != "" {
+									if !canCollect() {
+										break
+									}
+									subscribersTimes[i] = time.Now()
+									c_log.GlobalLogger.Errorf("触发事件【xxx】,开始采集。", faultLabel)
+									saveTimeWindow(faultLabel, faultHappenTime, lastTimeWindow)
+									break
+								}
+							}
+							subscribersMutexes[i].Unlock()
+						}
+						subscribersTimeMutexes[i].Unlock()
+					},
+				})
+				if err == nil {
+					create = true
+				}
+			}
+			if topic == masterConfig.Topic61 && len(masterConfig.Rule61) > 0 {
+				subscribers[i], err = goroslib.NewSubscriber(goroslib.SubscriberConf{
+					Node:  commonConfig.RosNode,
+					Topic: topic,
+					Callback: func(data *nav_msgs.OccupancyGrid) {
+						subscribersTimeMutexes[i].Lock()
+						if time.Since(subscribersTimes[i]).Seconds() > triggerInterval {
+							subscribersMutexes[i].Lock()
+							faultHappenTime := commonUtil.GetNowTimeCustom() // 获取当前故障发生时间
+							lastTimeWindow := entity.GetLastTimeWindow()     // 获取最后一个时间窗口
+							var faultLabel string
+							for _, f := range masterConfig.Rule61 {
+								faultLabel = f(data)
+								if faultLabel != "" {
+									if !canCollect() {
+										break
+									}
+									subscribersTimes[i] = time.Now()
+									c_log.GlobalLogger.Errorf("触发事件【xxx】,开始采集。", faultLabel)
+									saveTimeWindow(faultLabel, faultHappenTime, lastTimeWindow)
+									break
+								}
+							}
+							subscribersMutexes[i].Unlock()
+						}
+						subscribersTimeMutexes[i].Unlock()
+					},
+				})
+				if err == nil {
+					create = true
+				}
+			}
+			if topic == masterConfig.Topic62 && len(masterConfig.Rule62) > 0 {
+				subscribers[i], err = goroslib.NewSubscriber(goroslib.SubscriberConf{
+					Node:  commonConfig.RosNode,
+					Topic: topic,
+					Callback: func(data *nav_msgs.OccupancyGrid) {
+						subscribersTimeMutexes[i].Lock()
+						if time.Since(subscribersTimes[i]).Seconds() > triggerInterval {
+							subscribersMutexes[i].Lock()
+							faultHappenTime := commonUtil.GetNowTimeCustom() // 获取当前故障发生时间
+							lastTimeWindow := entity.GetLastTimeWindow()     // 获取最后一个时间窗口
+							var faultLabel string
+							for _, f := range masterConfig.Rule62 {
+								faultLabel = f(data)
+								if faultLabel != "" {
+									if !canCollect() {
+										break
+									}
+									subscribersTimes[i] = time.Now()
+									c_log.GlobalLogger.Errorf("触发事件【xxx】,开始采集。", faultLabel)
+									saveTimeWindow(faultLabel, faultHappenTime, lastTimeWindow)
+									break
+								}
+							}
+							subscribersMutexes[i].Unlock()
+						}
+						subscribersTimeMutexes[i].Unlock()
+					},
+				})
+				if err == nil {
+					create = true
+				}
+			}
+			if topic == masterConfig.Topic63 && len(masterConfig.Rule63) > 0 {
+				subscribers[i], err = goroslib.NewSubscriber(goroslib.SubscriberConf{
+					Node:  commonConfig.RosNode,
+					Topic: topic,
+					Callback: func(data *nav_msgs.OccupancyGrid) {
+						subscribersTimeMutexes[i].Lock()
+						if time.Since(subscribersTimes[i]).Seconds() > triggerInterval {
+							subscribersMutexes[i].Lock()
+							faultHappenTime := commonUtil.GetNowTimeCustom() // 获取当前故障发生时间
+							lastTimeWindow := entity.GetLastTimeWindow()     // 获取最后一个时间窗口
+							var faultLabel string
+							for _, f := range masterConfig.Rule63 {
+								faultLabel = f(data)
+								if faultLabel != "" {
+									if !canCollect() {
+										break
+									}
+									subscribersTimes[i] = time.Now()
+									c_log.GlobalLogger.Errorf("触发事件【xxx】,开始采集。", faultLabel)
+									saveTimeWindow(faultLabel, faultHappenTime, lastTimeWindow)
+									break
+								}
+							}
+							subscribersMutexes[i].Unlock()
+						}
+						subscribersTimeMutexes[i].Unlock()
+					},
+				})
+				if err == nil {
+					create = true
+				}
+			}
+			if topic == masterConfig.Topic64 && len(masterConfig.Rule64) > 0 {
+				subscribers[i], err = goroslib.NewSubscriber(goroslib.SubscriberConf{
+					Node:  commonConfig.RosNode,
+					Topic: topic,
+					Callback: func(data *nav_msgs.OccupancyGrid) {
+						subscribersTimeMutexes[i].Lock()
+						if time.Since(subscribersTimes[i]).Seconds() > triggerInterval {
+							subscribersMutexes[i].Lock()
+							faultHappenTime := commonUtil.GetNowTimeCustom() // 获取当前故障发生时间
+							lastTimeWindow := entity.GetLastTimeWindow()     // 获取最后一个时间窗口
+							var faultLabel string
+							for _, f := range masterConfig.Rule64 {
+								faultLabel = f(data)
+								if faultLabel != "" {
+									if !canCollect() {
+										break
+									}
+									subscribersTimes[i] = time.Now()
+									c_log.GlobalLogger.Errorf("触发事件【xxx】,开始采集。", faultLabel)
+									saveTimeWindow(faultLabel, faultHappenTime, lastTimeWindow)
+									break
+								}
+							}
+							subscribersMutexes[i].Unlock()
+						}
+						subscribersTimeMutexes[i].Unlock()
+					},
+				})
+				if err == nil {
+					create = true
+				}
+			}
+			if topic == masterConfig.Topic65 && len(masterConfig.Rule65) > 0 {
+				subscribers[i], err = goroslib.NewSubscriber(goroslib.SubscriberConf{
+					Node:  commonConfig.RosNode,
+					Topic: topic,
+					Callback: func(data *std_msgs.String) {
+						subscribersTimeMutexes[i].Lock()
+						if time.Since(subscribersTimes[i]).Seconds() > triggerInterval {
+							subscribersMutexes[i].Lock()
+							faultHappenTime := commonUtil.GetNowTimeCustom() // 获取当前故障发生时间
+							lastTimeWindow := entity.GetLastTimeWindow()     // 获取最后一个时间窗口
+							var faultLabel string
+							for _, f := range masterConfig.Rule65 {
+								faultLabel = f(data)
+								if faultLabel != "" {
+									if !canCollect() {
+										break
+									}
+									subscribersTimes[i] = time.Now()
+									c_log.GlobalLogger.Errorf("触发事件【xxx】,开始采集。", faultLabel)
+									saveTimeWindow(faultLabel, faultHappenTime, lastTimeWindow)
+									break
+								}
+							}
+							subscribersMutexes[i].Unlock()
+						}
+						subscribersTimeMutexes[i].Unlock()
+					},
+				})
+				if err == nil {
+					create = true
+				}
+			}
+			if topic == masterConfig.Topic66 && len(masterConfig.Rule66) > 0 {
+				subscribers[i], err = goroslib.NewSubscriber(goroslib.SubscriberConf{
+					Node:  commonConfig.RosNode,
+					Topic: topic,
+					Callback: func(data *std_msgs.Bool) {
+						subscribersTimeMutexes[i].Lock()
+						if time.Since(subscribersTimes[i]).Seconds() > triggerInterval {
+							subscribersMutexes[i].Lock()
+							faultHappenTime := commonUtil.GetNowTimeCustom() // 获取当前故障发生时间
+							lastTimeWindow := entity.GetLastTimeWindow()     // 获取最后一个时间窗口
+							var faultLabel string
+							for _, f := range masterConfig.Rule66 {
+								faultLabel = f(data)
+								if faultLabel != "" {
+									if !canCollect() {
+										break
+									}
+									subscribersTimes[i] = time.Now()
+									c_log.GlobalLogger.Errorf("触发事件【xxx】,开始采集。", faultLabel)
+									saveTimeWindow(faultLabel, faultHappenTime, lastTimeWindow)
+									break
+								}
+							}
+							subscribersMutexes[i].Unlock()
+						}
+						subscribersTimeMutexes[i].Unlock()
+					},
+				})
+				if err == nil {
+					create = true
+				}
+			}
+			if topic == masterConfig.Topic67 && len(masterConfig.Rule67) > 0 {
+				subscribers[i], err = goroslib.NewSubscriber(goroslib.SubscriberConf{
+					Node:  commonConfig.RosNode,
+					Topic: topic,
+					Callback: func(data *std_msgs.Bool) {
+						subscribersTimeMutexes[i].Lock()
+						if time.Since(subscribersTimes[i]).Seconds() > triggerInterval {
+							subscribersMutexes[i].Lock()
+							faultHappenTime := commonUtil.GetNowTimeCustom() // 获取当前故障发生时间
+							lastTimeWindow := entity.GetLastTimeWindow()     // 获取最后一个时间窗口
+							var faultLabel string
+							for _, f := range masterConfig.Rule67 {
+								faultLabel = f(data)
+								if faultLabel != "" {
+									if !canCollect() {
+										break
+									}
+									subscribersTimes[i] = time.Now()
+									c_log.GlobalLogger.Errorf("触发事件【xxx】,开始采集。", faultLabel)
+									saveTimeWindow(faultLabel, faultHappenTime, lastTimeWindow)
+									break
+								}
+							}
+							subscribersMutexes[i].Unlock()
+						}
+						subscribersTimeMutexes[i].Unlock()
+					},
+				})
+				if err == nil {
+					create = true
+				}
+			}
+			if topic == masterConfig.Topic68 && len(masterConfig.Rule68) > 0 {
+				subscribers[i], err = goroslib.NewSubscriber(goroslib.SubscriberConf{
+					Node:  commonConfig.RosNode,
+					Topic: topic,
+					Callback: func(data *geometry_msgs.PolygonStamped) {
+						subscribersTimeMutexes[i].Lock()
+						if time.Since(subscribersTimes[i]).Seconds() > triggerInterval {
+							subscribersMutexes[i].Lock()
+							faultHappenTime := commonUtil.GetNowTimeCustom() // 获取当前故障发生时间
+							lastTimeWindow := entity.GetLastTimeWindow()     // 获取最后一个时间窗口
+							var faultLabel string
+							for _, f := range masterConfig.Rule68 {
+								faultLabel = f(data)
+								if faultLabel != "" {
+									if !canCollect() {
+										break
+									}
+									subscribersTimes[i] = time.Now()
+									c_log.GlobalLogger.Errorf("触发事件【xxx】,开始采集。", faultLabel)
+									saveTimeWindow(faultLabel, faultHappenTime, lastTimeWindow)
+									break
+								}
+							}
+							subscribersMutexes[i].Unlock()
+						}
+						subscribersTimeMutexes[i].Unlock()
+					},
+				})
+				if err == nil {
+					create = true
+				}
+			}
+			if topic == masterConfig.Topic69 && len(masterConfig.Rule69) > 0 {
+				subscribers[i], err = goroslib.NewSubscriber(goroslib.SubscriberConf{
+					Node:  commonConfig.RosNode,
+					Topic: topic,
+					Callback: func(data *geometry_msgs.PointStamped) {
+						subscribersTimeMutexes[i].Lock()
+						if time.Since(subscribersTimes[i]).Seconds() > triggerInterval {
+							subscribersMutexes[i].Lock()
+							faultHappenTime := commonUtil.GetNowTimeCustom() // 获取当前故障发生时间
+							lastTimeWindow := entity.GetLastTimeWindow()     // 获取最后一个时间窗口
+							var faultLabel string
+							for _, f := range masterConfig.Rule69 {
+								faultLabel = f(data)
+								if faultLabel != "" {
+									if !canCollect() {
+										break
+									}
+									subscribersTimes[i] = time.Now()
+									c_log.GlobalLogger.Errorf("触发事件【xxx】,开始采集。", faultLabel)
+									saveTimeWindow(faultLabel, faultHappenTime, lastTimeWindow)
+									break
+								}
+							}
+							subscribersMutexes[i].Unlock()
+						}
+						subscribersTimeMutexes[i].Unlock()
+					},
+				})
+				if err == nil {
+					create = true
+				}
+			}
+			if topic == masterConfig.Topic70 && len(masterConfig.Rule70) > 0 {
+				subscribers[i], err = goroslib.NewSubscriber(goroslib.SubscriberConf{
+					Node:  commonConfig.RosNode,
+					Topic: topic,
+					Callback: func(data *std_msgs.String) {
+						subscribersTimeMutexes[i].Lock()
+						if time.Since(subscribersTimes[i]).Seconds() > triggerInterval {
+							subscribersMutexes[i].Lock()
+							faultHappenTime := commonUtil.GetNowTimeCustom() // 获取当前故障发生时间
+							lastTimeWindow := entity.GetLastTimeWindow()     // 获取最后一个时间窗口
+							var faultLabel string
+							for _, f := range masterConfig.Rule70 {
+								faultLabel = f(data)
+								if faultLabel != "" {
+									if !canCollect() {
+										break
+									}
+									subscribersTimes[i] = time.Now()
+									c_log.GlobalLogger.Errorf("触发事件【xxx】,开始采集。", faultLabel)
+									saveTimeWindow(faultLabel, faultHappenTime, lastTimeWindow)
+									break
+								}
+							}
+							subscribersMutexes[i].Unlock()
+						}
+						subscribersTimeMutexes[i].Unlock()
+					},
+				})
+				if err == nil {
+					create = true
+				}
+			}
+			if topic == masterConfig.Topic71 && len(masterConfig.Rule71) > 0 {
+				subscribers[i], err = goroslib.NewSubscriber(goroslib.SubscriberConf{
+					Node:  commonConfig.RosNode,
+					Topic: topic,
+					Callback: func(data *geometry_msgs.Twist) {
+						subscribersTimeMutexes[i].Lock()
+						if time.Since(subscribersTimes[i]).Seconds() > triggerInterval {
+							subscribersMutexes[i].Lock()
+							faultHappenTime := commonUtil.GetNowTimeCustom() // 获取当前故障发生时间
+							lastTimeWindow := entity.GetLastTimeWindow()     // 获取最后一个时间窗口
+							var faultLabel string
+							for _, f := range masterConfig.Rule71 {
+								faultLabel = f(data)
+								if faultLabel != "" {
+									if !canCollect() {
+										break
+									}
+									subscribersTimes[i] = time.Now()
+									c_log.GlobalLogger.Errorf("触发事件【xxx】,开始采集。", faultLabel)
+									saveTimeWindow(faultLabel, faultHappenTime, lastTimeWindow)
+									break
+								}
+							}
+							subscribersMutexes[i].Unlock()
+						}
+						subscribersTimeMutexes[i].Unlock()
+					},
+				})
+				if err == nil {
+					create = true
+				}
+			}
+			if topic == masterConfig.Topic72 && len(masterConfig.Rule72) > 0 {
+				subscribers[i], err = goroslib.NewSubscriber(goroslib.SubscriberConf{
+					Node:  commonConfig.RosNode,
+					Topic: topic,
+					Callback: func(data *geometry_msgs.Twist) {
+						subscribersTimeMutexes[i].Lock()
+						if time.Since(subscribersTimes[i]).Seconds() > triggerInterval {
+							subscribersMutexes[i].Lock()
+							faultHappenTime := commonUtil.GetNowTimeCustom() // 获取当前故障发生时间
+							lastTimeWindow := entity.GetLastTimeWindow()     // 获取最后一个时间窗口
+							var faultLabel string
+							for _, f := range masterConfig.Rule72 {
+								faultLabel = f(data)
+								if faultLabel != "" {
+									if !canCollect() {
+										break
+									}
+									subscribersTimes[i] = time.Now()
+									c_log.GlobalLogger.Errorf("触发事件【xxx】,开始采集。", faultLabel)
+									saveTimeWindow(faultLabel, faultHappenTime, lastTimeWindow)
+									break
+								}
+							}
+							subscribersMutexes[i].Unlock()
+						}
+						subscribersTimeMutexes[i].Unlock()
+					},
+				})
+				if err == nil {
+					create = true
+				}
+			}
+			if topic == masterConfig.Topic73 && len(masterConfig.Rule73) > 0 {
+				subscribers[i], err = goroslib.NewSubscriber(goroslib.SubscriberConf{
+					Node:  commonConfig.RosNode,
+					Topic: topic,
+					Callback: func(data *nav_msgs.Path) {
+						subscribersTimeMutexes[i].Lock()
+						if time.Since(subscribersTimes[i]).Seconds() > triggerInterval {
+							subscribersMutexes[i].Lock()
+							faultHappenTime := commonUtil.GetNowTimeCustom() // 获取当前故障发生时间
+							lastTimeWindow := entity.GetLastTimeWindow()     // 获取最后一个时间窗口
+							var faultLabel string
+							for _, f := range masterConfig.Rule73 {
+								faultLabel = f(data)
+								if faultLabel != "" {
+									if !canCollect() {
+										break
+									}
+									subscribersTimes[i] = time.Now()
+									c_log.GlobalLogger.Errorf("触发事件【xxx】,开始采集。", faultLabel)
+									saveTimeWindow(faultLabel, faultHappenTime, lastTimeWindow)
+									break
+								}
+							}
+							subscribersMutexes[i].Unlock()
+						}
+						subscribersTimeMutexes[i].Unlock()
+					},
+				})
+				if err == nil {
+					create = true
+				}
+			}
+			if topic == masterConfig.Topic74 && len(masterConfig.Rule74) > 0 {
+				subscribers[i], err = goroslib.NewSubscriber(goroslib.SubscriberConf{
+					Node:  commonConfig.RosNode,
+					Topic: topic,
+					Callback: func(data *common_msgs.CreateMapInfo) {
+						subscribersTimeMutexes[i].Lock()
+						if time.Since(subscribersTimes[i]).Seconds() > triggerInterval {
+							subscribersMutexes[i].Lock()
+							faultHappenTime := commonUtil.GetNowTimeCustom() // 获取当前故障发生时间
+							lastTimeWindow := entity.GetLastTimeWindow()     // 获取最后一个时间窗口
+							var faultLabel string
+							for _, f := range masterConfig.Rule74 {
+								faultLabel = f(data)
+								if faultLabel != "" {
+									if !canCollect() {
+										break
+									}
+									subscribersTimes[i] = time.Now()
+									c_log.GlobalLogger.Errorf("触发事件【xxx】,开始采集。", faultLabel)
+									saveTimeWindow(faultLabel, faultHappenTime, lastTimeWindow)
+									break
+								}
+							}
+							subscribersMutexes[i].Unlock()
+						}
+						subscribersTimeMutexes[i].Unlock()
+					},
+				})
+				if err == nil {
+					create = true
+				}
+			}
+			if topic == masterConfig.Topic75 && len(masterConfig.Rule75) > 0 {
+				subscribers[i], err = goroslib.NewSubscriber(goroslib.SubscriberConf{
+					Node:  commonConfig.RosNode,
+					Topic: topic,
+					Callback: func(data *geometry_msgs.Twist) {
+						subscribersTimeMutexes[i].Lock()
+						if time.Since(subscribersTimes[i]).Seconds() > triggerInterval {
+							subscribersMutexes[i].Lock()
+							faultHappenTime := commonUtil.GetNowTimeCustom() // 获取当前故障发生时间
+							lastTimeWindow := entity.GetLastTimeWindow()     // 获取最后一个时间窗口
+							var faultLabel string
+							for _, f := range masterConfig.Rule75 {
+								faultLabel = f(data)
+								if faultLabel != "" {
+									if !canCollect() {
+										break
+									}
+									subscribersTimes[i] = time.Now()
+									c_log.GlobalLogger.Errorf("触发事件【xxx】,开始采集。", faultLabel)
+									saveTimeWindow(faultLabel, faultHappenTime, lastTimeWindow)
+									break
+								}
+							}
+							subscribersMutexes[i].Unlock()
+						}
+						subscribersTimeMutexes[i].Unlock()
+					},
+				})
+				if err == nil {
+					create = true
+				}
+			}
+			if topic == masterConfig.Topic76 && len(masterConfig.Rule76) > 0 {
+				subscribers[i], err = goroslib.NewSubscriber(goroslib.SubscriberConf{
+					Node:  commonConfig.RosNode,
+					Topic: topic,
+					Callback: func(data *common_msgs.SensorStatus) {
+						subscribersTimeMutexes[i].Lock()
+						if time.Since(subscribersTimes[i]).Seconds() > triggerInterval {
+							subscribersMutexes[i].Lock()
+							faultHappenTime := commonUtil.GetNowTimeCustom() // 获取当前故障发生时间
+							lastTimeWindow := entity.GetLastTimeWindow()     // 获取最后一个时间窗口
+							var faultLabel string
+							for _, f := range masterConfig.Rule76 {
+								faultLabel = f(data)
+								if faultLabel != "" {
+									if !canCollect() {
+										break
+									}
+									subscribersTimes[i] = time.Now()
+									c_log.GlobalLogger.Errorf("触发事件【xxx】,开始采集。", faultLabel)
+									saveTimeWindow(faultLabel, faultHappenTime, lastTimeWindow)
+									break
+								}
+							}
+							subscribersMutexes[i].Unlock()
+						}
+						subscribersTimeMutexes[i].Unlock()
+					},
+				})
+				if err == nil {
+					create = true
+				}
+			}
+			if topic == masterConfig.Topic77 && len(masterConfig.Rule77) > 0 {
+				subscribers[i], err = goroslib.NewSubscriber(goroslib.SubscriberConf{
+					Node:  commonConfig.RosNode,
+					Topic: topic,
+					Callback: func(data *geometry_msgs.PoseArray) {
+						subscribersTimeMutexes[i].Lock()
+						if time.Since(subscribersTimes[i]).Seconds() > triggerInterval {
+							subscribersMutexes[i].Lock()
+							faultHappenTime := commonUtil.GetNowTimeCustom() // 获取当前故障发生时间
+							lastTimeWindow := entity.GetLastTimeWindow()     // 获取最后一个时间窗口
+							var faultLabel string
+							for _, f := range masterConfig.Rule77 {
+								faultLabel = f(data)
+								if faultLabel != "" {
+									if !canCollect() {
+										break
+									}
+									subscribersTimes[i] = time.Now()
+									c_log.GlobalLogger.Errorf("触发事件【xxx】,开始采集。", faultLabel)
+									saveTimeWindow(faultLabel, faultHappenTime, lastTimeWindow)
+									break
+								}
+							}
+							subscribersMutexes[i].Unlock()
+						}
+						subscribersTimeMutexes[i].Unlock()
+					},
+				})
+				if err == nil {
+					create = true
+				}
+			}
+			if topic == masterConfig.Topic78 && len(masterConfig.Rule78) > 0 {
+				subscribers[i], err = goroslib.NewSubscriber(goroslib.SubscriberConf{
+					Node:  commonConfig.RosNode,
+					Topic: topic,
+					Callback: func(data *nav_msgs.Path) {
+						subscribersTimeMutexes[i].Lock()
+						if time.Since(subscribersTimes[i]).Seconds() > triggerInterval {
+							subscribersMutexes[i].Lock()
+							faultHappenTime := commonUtil.GetNowTimeCustom() // 获取当前故障发生时间
+							lastTimeWindow := entity.GetLastTimeWindow()     // 获取最后一个时间窗口
+							var faultLabel string
+							for _, f := range masterConfig.Rule78 {
+								faultLabel = f(data)
+								if faultLabel != "" {
+									if !canCollect() {
+										break
+									}
+									subscribersTimes[i] = time.Now()
+									c_log.GlobalLogger.Errorf("触发事件【xxx】,开始采集。", faultLabel)
+									saveTimeWindow(faultLabel, faultHappenTime, lastTimeWindow)
+									break
+								}
+							}
+							subscribersMutexes[i].Unlock()
+						}
+						subscribersTimeMutexes[i].Unlock()
+					},
+				})
+				if err == nil {
+					create = true
+				}
+			}
+			if topic == masterConfig.Topic79 && len(masterConfig.Rule79) > 0 {
+				subscribers[i], err = goroslib.NewSubscriber(goroslib.SubscriberConf{
+					Node:  commonConfig.RosNode,
+					Topic: topic,
+					Callback: func(data *common_msgs.IdentifierObjsInfo) {
+						subscribersTimeMutexes[i].Lock()
+						if time.Since(subscribersTimes[i]).Seconds() > triggerInterval {
+							subscribersMutexes[i].Lock()
+							faultHappenTime := commonUtil.GetNowTimeCustom() // 获取当前故障发生时间
+							lastTimeWindow := entity.GetLastTimeWindow()     // 获取最后一个时间窗口
+							var faultLabel string
+							for _, f := range masterConfig.Rule79 {
+								faultLabel = f(data)
+								if faultLabel != "" {
+									if !canCollect() {
+										break
+									}
+									subscribersTimes[i] = time.Now()
+									c_log.GlobalLogger.Errorf("触发事件【xxx】,开始采集。", faultLabel)
+									saveTimeWindow(faultLabel, faultHappenTime, lastTimeWindow)
+									break
+								}
+							}
+							subscribersMutexes[i].Unlock()
+						}
+						subscribersTimeMutexes[i].Unlock()
+					},
+				})
+				if err == nil {
+					create = true
+				}
+			}
+			if topic == masterConfig.Topic80 && len(masterConfig.Rule80) > 0 {
+				subscribers[i], err = goroslib.NewSubscriber(goroslib.SubscriberConf{
+					Node:  commonConfig.RosNode,
+					Topic: topic,
+					Callback: func(data *common_msgs.McuDiagnostic) {
+						subscribersTimeMutexes[i].Lock()
+						if time.Since(subscribersTimes[i]).Seconds() > triggerInterval {
+							subscribersMutexes[i].Lock()
+							faultHappenTime := commonUtil.GetNowTimeCustom() // 获取当前故障发生时间
+							lastTimeWindow := entity.GetLastTimeWindow()     // 获取最后一个时间窗口
+							var faultLabel string
+							for _, f := range masterConfig.Rule80 {
+								faultLabel = f(data)
+								if faultLabel != "" {
+									if !canCollect() {
+										break
+									}
+									subscribersTimes[i] = time.Now()
+									c_log.GlobalLogger.Errorf("触发事件【xxx】,开始采集。", faultLabel)
+									saveTimeWindow(faultLabel, faultHappenTime, lastTimeWindow)
+									break
+								}
+							}
+							subscribersMutexes[i].Unlock()
+						}
+						subscribersTimeMutexes[i].Unlock()
+					},
+				})
+				if err == nil {
+					create = true
+				}
+			}
+			if topic == masterConfig.Topic81 && len(masterConfig.Rule81) > 0 {
+				subscribers[i], err = goroslib.NewSubscriber(goroslib.SubscriberConf{
+					Node:  commonConfig.RosNode,
+					Topic: topic,
+					Callback: func(data *diagnostic_msgs.DiagnosticArray) {
+						subscribersTimeMutexes[i].Lock()
+						if time.Since(subscribersTimes[i]).Seconds() > triggerInterval {
+							subscribersMutexes[i].Lock()
+							faultHappenTime := commonUtil.GetNowTimeCustom() // 获取当前故障发生时间
+							lastTimeWindow := entity.GetLastTimeWindow()     // 获取最后一个时间窗口
+							var faultLabel string
+							for _, f := range masterConfig.Rule81 {
+								faultLabel = f(data)
+								if faultLabel != "" {
+									if !canCollect() {
+										break
+									}
+									subscribersTimes[i] = time.Now()
+									c_log.GlobalLogger.Errorf("触发事件【xxx】,开始采集。", faultLabel)
+									saveTimeWindow(faultLabel, faultHappenTime, lastTimeWindow)
+									break
+								}
+							}
+							subscribersMutexes[i].Unlock()
+						}
+						subscribersTimeMutexes[i].Unlock()
+					},
+				})
+				if err == nil {
+					create = true
+				}
+			}
+			if topic == masterConfig.Topic82 && len(masterConfig.Rule82) > 0 {
+				subscribers[i], err = goroslib.NewSubscriber(goroslib.SubscriberConf{
+					Node:  commonConfig.RosNode,
+					Topic: topic,
+					Callback: func(data *std_msgs.Int8) {
+						subscribersTimeMutexes[i].Lock()
+						if time.Since(subscribersTimes[i]).Seconds() > triggerInterval {
+							subscribersMutexes[i].Lock()
+							faultHappenTime := commonUtil.GetNowTimeCustom() // 获取当前故障发生时间
+							lastTimeWindow := entity.GetLastTimeWindow()     // 获取最后一个时间窗口
+							var faultLabel string
+							for _, f := range masterConfig.Rule82 {
+								faultLabel = f(data)
+								if faultLabel != "" {
+									if !canCollect() {
+										break
+									}
+									subscribersTimes[i] = time.Now()
+									c_log.GlobalLogger.Errorf("触发事件【xxx】,开始采集。", faultLabel)
+									saveTimeWindow(faultLabel, faultHappenTime, lastTimeWindow)
+									break
+								}
+							}
+							subscribersMutexes[i].Unlock()
+						}
+						subscribersTimeMutexes[i].Unlock()
+					},
+				})
+				if err == nil {
+					create = true
+				}
+			}
+			if topic == masterConfig.Topic83 && len(masterConfig.Rule83) > 0 {
+				subscribers[i], err = goroslib.NewSubscriber(goroslib.SubscriberConf{
+					Node:  commonConfig.RosNode,
+					Topic: topic,
+					Callback: func(data *std_msgs.Int16) {
+						subscribersTimeMutexes[i].Lock()
+						if time.Since(subscribersTimes[i]).Seconds() > triggerInterval {
+							subscribersMutexes[i].Lock()
+							faultHappenTime := commonUtil.GetNowTimeCustom() // 获取当前故障发生时间
+							lastTimeWindow := entity.GetLastTimeWindow()     // 获取最后一个时间窗口
+							var faultLabel string
+							for _, f := range masterConfig.Rule83 {
+								faultLabel = f(data)
+								if faultLabel != "" {
+									if !canCollect() {
+										break
+									}
+									subscribersTimes[i] = time.Now()
+									c_log.GlobalLogger.Errorf("触发事件【xxx】,开始采集。", faultLabel)
+									saveTimeWindow(faultLabel, faultHappenTime, lastTimeWindow)
+									break
+								}
+							}
+							subscribersMutexes[i].Unlock()
+						}
+						subscribersTimeMutexes[i].Unlock()
+					},
+				})
+				if err == nil {
+					create = true
+				}
+			}
+			if topic == masterConfig.Topic84 && len(masterConfig.Rule84) > 0 {
+				subscribers[i], err = goroslib.NewSubscriber(goroslib.SubscriberConf{
+					Node:  commonConfig.RosNode,
+					Topic: topic,
+					Callback: func(data *geometry_msgs.Vector3Stamped) {
+						subscribersTimeMutexes[i].Lock()
+						if time.Since(subscribersTimes[i]).Seconds() > triggerInterval {
+							subscribersMutexes[i].Lock()
+							faultHappenTime := commonUtil.GetNowTimeCustom() // 获取当前故障发生时间
+							lastTimeWindow := entity.GetLastTimeWindow()     // 获取最后一个时间窗口
+							var faultLabel string
+							for _, f := range masterConfig.Rule84 {
+								faultLabel = f(data)
+								if faultLabel != "" {
+									if !canCollect() {
+										break
+									}
+									subscribersTimes[i] = time.Now()
+									c_log.GlobalLogger.Errorf("触发事件【xxx】,开始采集。", faultLabel)
+									saveTimeWindow(faultLabel, faultHappenTime, lastTimeWindow)
+									break
+								}
+							}
+							subscribersMutexes[i].Unlock()
+						}
+						subscribersTimeMutexes[i].Unlock()
+					},
+				})
+				if err == nil {
+					create = true
+				}
+			}
+			if topic == masterConfig.Topic85 && len(masterConfig.Rule85) > 0 {
+				subscribers[i], err = goroslib.NewSubscriber(goroslib.SubscriberConf{
+					Node:  commonConfig.RosNode,
+					Topic: topic,
+					Callback: func(data *sensor_msgs.LaserScan) {
+						subscribersTimeMutexes[i].Lock()
+						if time.Since(subscribersTimes[i]).Seconds() > triggerInterval {
+							subscribersMutexes[i].Lock()
+							faultHappenTime := commonUtil.GetNowTimeCustom() // 获取当前故障发生时间
+							lastTimeWindow := entity.GetLastTimeWindow()     // 获取最后一个时间窗口
+							var faultLabel string
+							for _, f := range masterConfig.Rule85 {
+								faultLabel = f(data)
+								if faultLabel != "" {
+									if !canCollect() {
+										break
+									}
+									subscribersTimes[i] = time.Now()
+									c_log.GlobalLogger.Errorf("触发事件【xxx】,开始采集。", faultLabel)
+									saveTimeWindow(faultLabel, faultHappenTime, lastTimeWindow)
+									break
+								}
+							}
+							subscribersMutexes[i].Unlock()
+						}
+						subscribersTimeMutexes[i].Unlock()
+					},
+				})
+				if err == nil {
+					create = true
+				}
+			}
+			if topic == masterConfig.Topic86 && len(masterConfig.Rule86) > 0 {
+				subscribers[i], err = goroslib.NewSubscriber(goroslib.SubscriberConf{
+					Node:  commonConfig.RosNode,
+					Topic: topic,
+					Callback: func(data *sensor_msgs.PointCloud2) {
+						subscribersTimeMutexes[i].Lock()
+						if time.Since(subscribersTimes[i]).Seconds() > triggerInterval {
+							subscribersMutexes[i].Lock()
+							faultHappenTime := commonUtil.GetNowTimeCustom() // 获取当前故障发生时间
+							lastTimeWindow := entity.GetLastTimeWindow()     // 获取最后一个时间窗口
+							var faultLabel string
+							for _, f := range masterConfig.Rule86 {
+								faultLabel = f(data)
+								if faultLabel != "" {
+									if !canCollect() {
+										break
+									}
+									subscribersTimes[i] = time.Now()
+									c_log.GlobalLogger.Errorf("触发事件【xxx】,开始采集。", faultLabel)
+									saveTimeWindow(faultLabel, faultHappenTime, lastTimeWindow)
+									break
+								}
+							}
+							subscribersMutexes[i].Unlock()
+						}
+						subscribersTimeMutexes[i].Unlock()
+					},
+				})
+				if err == nil {
+					create = true
+				}
+			}
+			if topic == masterConfig.Topic87 && len(masterConfig.Rule87) > 0 {
+				subscribers[i], err = goroslib.NewSubscriber(goroslib.SubscriberConf{
+					Node:  commonConfig.RosNode,
+					Topic: topic,
+					Callback: func(data *std_msgs.String) {
+						subscribersTimeMutexes[i].Lock()
+						if time.Since(subscribersTimes[i]).Seconds() > triggerInterval {
+							subscribersMutexes[i].Lock()
+							faultHappenTime := commonUtil.GetNowTimeCustom() // 获取当前故障发生时间
+							lastTimeWindow := entity.GetLastTimeWindow()     // 获取最后一个时间窗口
+							var faultLabel string
+							for _, f := range masterConfig.Rule87 {
+								faultLabel = f(data)
+								if faultLabel != "" {
+									if !canCollect() {
+										break
+									}
+									subscribersTimes[i] = time.Now()
+									c_log.GlobalLogger.Errorf("触发事件【xxx】,开始采集。", faultLabel)
+									saveTimeWindow(faultLabel, faultHappenTime, lastTimeWindow)
+									break
+								}
+							}
+							subscribersMutexes[i].Unlock()
+						}
+						subscribersTimeMutexes[i].Unlock()
+					},
+				})
+				if err == nil {
+					create = true
+				}
+			}
+			if topic == masterConfig.Topic88 && len(masterConfig.Rule88) > 0 {
+				subscribers[i], err = goroslib.NewSubscriber(goroslib.SubscriberConf{
+					Node:  commonConfig.RosNode,
+					Topic: topic,
+					Callback: func(data *std_msgs.String) {
+						subscribersTimeMutexes[i].Lock()
+						if time.Since(subscribersTimes[i]).Seconds() > triggerInterval {
+							subscribersMutexes[i].Lock()
+							faultHappenTime := commonUtil.GetNowTimeCustom() // 获取当前故障发生时间
+							lastTimeWindow := entity.GetLastTimeWindow()     // 获取最后一个时间窗口
+							var faultLabel string
+							for _, f := range masterConfig.Rule88 {
+								faultLabel = f(data)
+								if faultLabel != "" {
+									if !canCollect() {
+										break
+									}
+									subscribersTimes[i] = time.Now()
+									c_log.GlobalLogger.Errorf("触发事件【xxx】,开始采集。", faultLabel)
+									saveTimeWindow(faultLabel, faultHappenTime, lastTimeWindow)
+									break
+								}
+							}
+							subscribersMutexes[i].Unlock()
+						}
+						subscribersTimeMutexes[i].Unlock()
+					},
+				})
+				if err == nil {
+					create = true
+				}
+			}
+			if topic == masterConfig.Topic89 && len(masterConfig.Rule89) > 0 {
+				subscribers[i], err = goroslib.NewSubscriber(goroslib.SubscriberConf{
+					Node:  commonConfig.RosNode,
+					Topic: topic,
+					Callback: func(data *std_msgs.String) {
+						subscribersTimeMutexes[i].Lock()
+						if time.Since(subscribersTimes[i]).Seconds() > triggerInterval {
+							subscribersMutexes[i].Lock()
+							faultHappenTime := commonUtil.GetNowTimeCustom() // 获取当前故障发生时间
+							lastTimeWindow := entity.GetLastTimeWindow()     // 获取最后一个时间窗口
+							var faultLabel string
+							for _, f := range masterConfig.Rule89 {
+								faultLabel = f(data)
+								if faultLabel != "" {
+									if !canCollect() {
+										break
+									}
+									subscribersTimes[i] = time.Now()
+									c_log.GlobalLogger.Errorf("触发事件【xxx】,开始采集。", faultLabel)
+									saveTimeWindow(faultLabel, faultHappenTime, lastTimeWindow)
+									break
+								}
+							}
+							subscribersMutexes[i].Unlock()
+						}
+						subscribersTimeMutexes[i].Unlock()
+					},
+				})
+				if err == nil {
+					create = true
+				}
+			}
+			if topic == masterConfig.Topic90 && len(masterConfig.Rule90) > 0 {
+				subscribers[i], err = goroslib.NewSubscriber(goroslib.SubscriberConf{
+					Node:  commonConfig.RosNode,
+					Topic: topic,
+					Callback: func(data *std_msgs.Int32) {
+						subscribersTimeMutexes[i].Lock()
+						if time.Since(subscribersTimes[i]).Seconds() > triggerInterval {
+							subscribersMutexes[i].Lock()
+							faultHappenTime := commonUtil.GetNowTimeCustom() // 获取当前故障发生时间
+							lastTimeWindow := entity.GetLastTimeWindow()     // 获取最后一个时间窗口
+							var faultLabel string
+							for _, f := range masterConfig.Rule90 {
+								faultLabel = f(data)
+								if faultLabel != "" {
+									if !canCollect() {
+										break
+									}
+									subscribersTimes[i] = time.Now()
+									c_log.GlobalLogger.Errorf("触发事件【xxx】,开始采集。", faultLabel)
+									saveTimeWindow(faultLabel, faultHappenTime, lastTimeWindow)
+									break
+								}
+							}
+							subscribersMutexes[i].Unlock()
+						}
+						subscribersTimeMutexes[i].Unlock()
+					},
+				})
+				if err == nil {
+					create = true
+				}
+			}
+			if topic == masterConfig.Topic91 && len(masterConfig.Rule91) > 0 {
+				subscribers[i], err = goroslib.NewSubscriber(goroslib.SubscriberConf{
+					Node:  commonConfig.RosNode,
+					Topic: topic,
+					Callback: func(data *common_msgs.TaskInfo) {
+						subscribersTimeMutexes[i].Lock()
+						if time.Since(subscribersTimes[i]).Seconds() > triggerInterval {
+							subscribersMutexes[i].Lock()
+							faultHappenTime := commonUtil.GetNowTimeCustom() // 获取当前故障发生时间
+							lastTimeWindow := entity.GetLastTimeWindow()     // 获取最后一个时间窗口
+							var faultLabel string
+							for _, f := range masterConfig.Rule91 {
+								faultLabel = f(data)
+								if faultLabel != "" {
+									if !canCollect() {
+										break
+									}
+									subscribersTimes[i] = time.Now()
+									c_log.GlobalLogger.Errorf("触发事件【xxx】,开始采集。", faultLabel)
+									saveTimeWindow(faultLabel, faultHappenTime, lastTimeWindow)
+									break
+								}
+							}
+							subscribersMutexes[i].Unlock()
+						}
+						subscribersTimeMutexes[i].Unlock()
+					},
+				})
+				if err == nil {
+					create = true
+				}
+			}
+			if topic == masterConfig.Topic92 && len(masterConfig.Rule92) > 0 {
+				subscribers[i], err = goroslib.NewSubscriber(goroslib.SubscriberConf{
+					Node:  commonConfig.RosNode,
+					Topic: topic,
+					Callback: func(data *common_msgs.MapInfo) {
+						subscribersTimeMutexes[i].Lock()
+						if time.Since(subscribersTimes[i]).Seconds() > triggerInterval {
+							subscribersMutexes[i].Lock()
+							faultHappenTime := commonUtil.GetNowTimeCustom() // 获取当前故障发生时间
+							lastTimeWindow := entity.GetLastTimeWindow()     // 获取最后一个时间窗口
+							var faultLabel string
+							for _, f := range masterConfig.Rule92 {
+								faultLabel = f(data)
+								if faultLabel != "" {
+									if !canCollect() {
+										break
+									}
+									subscribersTimes[i] = time.Now()
+									c_log.GlobalLogger.Errorf("触发事件【xxx】,开始采集。", faultLabel)
+									saveTimeWindow(faultLabel, faultHappenTime, lastTimeWindow)
+									break
+								}
+							}
+							subscribersMutexes[i].Unlock()
+						}
+						subscribersTimeMutexes[i].Unlock()
+					},
+				})
+				if err == nil {
+					create = true
+				}
+			}
+			if topic == masterConfig.Topic93 && len(masterConfig.Rule93) > 0 {
+				subscribers[i], err = goroslib.NewSubscriber(goroslib.SubscriberConf{
+					Node:  commonConfig.RosNode,
+					Topic: topic,
+					Callback: func(data *nav_msgs.Path) {
+						subscribersTimeMutexes[i].Lock()
+						if time.Since(subscribersTimes[i]).Seconds() > triggerInterval {
+							subscribersMutexes[i].Lock()
+							faultHappenTime := commonUtil.GetNowTimeCustom() // 获取当前故障发生时间
+							lastTimeWindow := entity.GetLastTimeWindow()     // 获取最后一个时间窗口
+							var faultLabel string
+							for _, f := range masterConfig.Rule93 {
+								faultLabel = f(data)
+								if faultLabel != "" {
+									if !canCollect() {
+										break
+									}
+									subscribersTimes[i] = time.Now()
+									c_log.GlobalLogger.Errorf("触发事件【xxx】,开始采集。", faultLabel)
+									saveTimeWindow(faultLabel, faultHappenTime, lastTimeWindow)
+									break
+								}
+							}
+							subscribersMutexes[i].Unlock()
+						}
+						subscribersTimeMutexes[i].Unlock()
+					},
+				})
+				if err == nil {
+					create = true
+				}
+			}
+			if topic == masterConfig.Topic94 && len(masterConfig.Rule94) > 0 {
+				subscribers[i], err = goroslib.NewSubscriber(goroslib.SubscriberConf{
+					Node:  commonConfig.RosNode,
+					Topic: topic,
+					Callback: func(data *common_msgs.VideoStream) {
+						subscribersTimeMutexes[i].Lock()
+						if time.Since(subscribersTimes[i]).Seconds() > triggerInterval {
+							subscribersMutexes[i].Lock()
+							faultHappenTime := commonUtil.GetNowTimeCustom() // 获取当前故障发生时间
+							lastTimeWindow := entity.GetLastTimeWindow()     // 获取最后一个时间窗口
+							var faultLabel string
+							for _, f := range masterConfig.Rule94 {
+								faultLabel = f(data)
+								if faultLabel != "" {
+									if !canCollect() {
+										break
+									}
+									subscribersTimes[i] = time.Now()
+									c_log.GlobalLogger.Errorf("触发事件【xxx】,开始采集。", faultLabel)
+									saveTimeWindow(faultLabel, faultHappenTime, lastTimeWindow)
+									break
+								}
+							}
+							subscribersMutexes[i].Unlock()
+						}
+						subscribersTimeMutexes[i].Unlock()
+					},
+				})
+				if err == nil {
+					create = true
+				}
+			}
+			if topic == masterConfig.Topic95 && len(masterConfig.Rule95) > 0 {
+				subscribers[i], err = goroslib.NewSubscriber(goroslib.SubscriberConf{
+					Node:  commonConfig.RosNode,
+					Topic: topic,
+					Callback: func(data *sensor_msgs.PointCloud2) {
+						subscribersTimeMutexes[i].Lock()
+						if time.Since(subscribersTimes[i]).Seconds() > triggerInterval {
+							subscribersMutexes[i].Lock()
+							faultHappenTime := commonUtil.GetNowTimeCustom() // 获取当前故障发生时间
+							lastTimeWindow := entity.GetLastTimeWindow()     // 获取最后一个时间窗口
+							var faultLabel string
+							for _, f := range masterConfig.Rule95 {
+								faultLabel = f(data)
+								if faultLabel != "" {
+									if !canCollect() {
+										break
+									}
+									subscribersTimes[i] = time.Now()
+									c_log.GlobalLogger.Errorf("触发事件【xxx】,开始采集。", faultLabel)
+									saveTimeWindow(faultLabel, faultHappenTime, lastTimeWindow)
+									break
+								}
+							}
+							subscribersMutexes[i].Unlock()
+						}
+						subscribersTimeMutexes[i].Unlock()
+					},
+				})
+				if err == nil {
+					create = true
+				}
+			}
+			if topic == masterConfig.Topic96 && len(masterConfig.Rule96) > 0 {
+				subscribers[i], err = goroslib.NewSubscriber(goroslib.SubscriberConf{
+					Node:  commonConfig.RosNode,
+					Topic: topic,
+					Callback: func(data *nav_msgs.Path) {
+						subscribersTimeMutexes[i].Lock()
+						if time.Since(subscribersTimes[i]).Seconds() > triggerInterval {
+							subscribersMutexes[i].Lock()
+							faultHappenTime := commonUtil.GetNowTimeCustom() // 获取当前故障发生时间
+							lastTimeWindow := entity.GetLastTimeWindow()     // 获取最后一个时间窗口
+							var faultLabel string
+							for _, f := range masterConfig.Rule96 {
+								faultLabel = f(data)
+								if faultLabel != "" {
+									if !canCollect() {
+										break
+									}
+									subscribersTimes[i] = time.Now()
+									c_log.GlobalLogger.Errorf("触发事件【xxx】,开始采集。", faultLabel)
+									saveTimeWindow(faultLabel, faultHappenTime, lastTimeWindow)
+									break
+								}
+							}
+							subscribersMutexes[i].Unlock()
+						}
+						subscribersTimeMutexes[i].Unlock()
+					},
+				})
+				if err == nil {
+					create = true
+				}
+			}
+			if topic == masterConfig.Topic97 && len(masterConfig.Rule97) > 0 {
+				subscribers[i], err = goroslib.NewSubscriber(goroslib.SubscriberConf{
+					Node:  commonConfig.RosNode,
+					Topic: topic,
+					Callback: func(data *sensor_msgs.PointCloud2) {
+						subscribersTimeMutexes[i].Lock()
+						if time.Since(subscribersTimes[i]).Seconds() > triggerInterval {
+							subscribersMutexes[i].Lock()
+							faultHappenTime := commonUtil.GetNowTimeCustom() // 获取当前故障发生时间
+							lastTimeWindow := entity.GetLastTimeWindow()     // 获取最后一个时间窗口
+							var faultLabel string
+							for _, f := range masterConfig.Rule97 {
+								faultLabel = f(data)
+								if faultLabel != "" {
+									if !canCollect() {
+										break
+									}
+									subscribersTimes[i] = time.Now()
+									c_log.GlobalLogger.Errorf("触发事件【xxx】,开始采集。", faultLabel)
+									saveTimeWindow(faultLabel, faultHappenTime, lastTimeWindow)
+									break
+								}
+							}
+							subscribersMutexes[i].Unlock()
+						}
+						subscribersTimeMutexes[i].Unlock()
+					},
+				})
+				if err == nil {
+					create = true
+				}
+			}
+			if topic == masterConfig.Topic98 && len(masterConfig.Rule98) > 0 {
+				subscribers[i], err = goroslib.NewSubscriber(goroslib.SubscriberConf{
+					Node:  commonConfig.RosNode,
+					Topic: topic,
+					Callback: func(data *sensor_msgs.PointCloud2) {
+						subscribersTimeMutexes[i].Lock()
+						if time.Since(subscribersTimes[i]).Seconds() > triggerInterval {
+							subscribersMutexes[i].Lock()
+							faultHappenTime := commonUtil.GetNowTimeCustom() // 获取当前故障发生时间
+							lastTimeWindow := entity.GetLastTimeWindow()     // 获取最后一个时间窗口
+							var faultLabel string
+							for _, f := range masterConfig.Rule98 {
+								faultLabel = f(data)
+								if faultLabel != "" {
+									if !canCollect() {
+										break
+									}
+									subscribersTimes[i] = time.Now()
+									c_log.GlobalLogger.Errorf("触发事件【xxx】,开始采集。", faultLabel)
+									saveTimeWindow(faultLabel, faultHappenTime, lastTimeWindow)
+									break
+								}
+							}
+							subscribersMutexes[i].Unlock()
+						}
+						subscribersTimeMutexes[i].Unlock()
+					},
+				})
+				if err == nil {
+					create = true
+				}
+			}
+			if topic == masterConfig.Topic99 && len(masterConfig.Rule99) > 0 {
+				subscribers[i], err = goroslib.NewSubscriber(goroslib.SubscriberConf{
+					Node:  commonConfig.RosNode,
+					Topic: topic,
+					Callback: func(data *sensor_msgs.PointCloud2) {
+						subscribersTimeMutexes[i].Lock()
+						if time.Since(subscribersTimes[i]).Seconds() > triggerInterval {
+							subscribersMutexes[i].Lock()
+							faultHappenTime := commonUtil.GetNowTimeCustom() // 获取当前故障发生时间
+							lastTimeWindow := entity.GetLastTimeWindow()     // 获取最后一个时间窗口
+							var faultLabel string
+							for _, f := range masterConfig.Rule99 {
+								faultLabel = f(data)
+								if faultLabel != "" {
+									if !canCollect() {
+										break
+									}
+									subscribersTimes[i] = time.Now()
+									c_log.GlobalLogger.Errorf("触发事件【xxx】,开始采集。", faultLabel)
+									saveTimeWindow(faultLabel, faultHappenTime, lastTimeWindow)
+									break
+								}
+							}
+							subscribersMutexes[i].Unlock()
+						}
+						subscribersTimeMutexes[i].Unlock()
+					},
+				})
+				if err == nil {
+					create = true
+				}
+			}
+			if topic == masterConfig.Topic100 && len(masterConfig.Rule100) > 0 {
+				subscribers[i], err = goroslib.NewSubscriber(goroslib.SubscriberConf{
+					Node:  commonConfig.RosNode,
+					Topic: topic,
+					Callback: func(data *geometry_msgs.PointStamped) {
+						subscribersTimeMutexes[i].Lock()
+						if time.Since(subscribersTimes[i]).Seconds() > triggerInterval {
+							subscribersMutexes[i].Lock()
+							faultHappenTime := commonUtil.GetNowTimeCustom() // 获取当前故障发生时间
+							lastTimeWindow := entity.GetLastTimeWindow()     // 获取最后一个时间窗口
+							var faultLabel string
+							for _, f := range masterConfig.Rule100 {
+								faultLabel = f(data)
+								if faultLabel != "" {
+									if !canCollect() {
+										break
+									}
+									subscribersTimes[i] = time.Now()
+									c_log.GlobalLogger.Errorf("触发事件【xxx】,开始采集。", faultLabel)
+									saveTimeWindow(faultLabel, faultHappenTime, lastTimeWindow)
+									break
+								}
+							}
+							subscribersMutexes[i].Unlock()
+						}
+						subscribersTimeMutexes[i].Unlock()
+					},
+				})
+				if err == nil {
+					create = true
+				}
+			}
+			if topic == masterConfig.Topic101 && len(masterConfig.Rule101) > 0 {
+				subscribers[i], err = goroslib.NewSubscriber(goroslib.SubscriberConf{
+					Node:  commonConfig.RosNode,
+					Topic: topic,
+					Callback: func(data *nav_msgs.Path) {
+						subscribersTimeMutexes[i].Lock()
+						if time.Since(subscribersTimes[i]).Seconds() > triggerInterval {
+							subscribersMutexes[i].Lock()
+							faultHappenTime := commonUtil.GetNowTimeCustom() // 获取当前故障发生时间
+							lastTimeWindow := entity.GetLastTimeWindow()     // 获取最后一个时间窗口
+							var faultLabel string
+							for _, f := range masterConfig.Rule101 {
+								faultLabel = f(data)
+								if faultLabel != "" {
+									if !canCollect() {
+										break
+									}
+									subscribersTimes[i] = time.Now()
+									c_log.GlobalLogger.Errorf("触发事件【xxx】,开始采集。", faultLabel)
+									saveTimeWindow(faultLabel, faultHappenTime, lastTimeWindow)
+									break
+								}
+							}
+							subscribersMutexes[i].Unlock()
+						}
+						subscribersTimeMutexes[i].Unlock()
+					},
+				})
+				if err == nil {
+					create = true
+				}
+			}
+			if topic == masterConfig.Topic102 && len(masterConfig.Rule102) > 0 {
+				subscribers[i], err = goroslib.NewSubscriber(goroslib.SubscriberConf{
+					Node:  commonConfig.RosNode,
+					Topic: topic,
+					Callback: func(data *geometry_msgs.PoseStamped) {
+						subscribersTimeMutexes[i].Lock()
+						if time.Since(subscribersTimes[i]).Seconds() > triggerInterval {
+							subscribersMutexes[i].Lock()
+							faultHappenTime := commonUtil.GetNowTimeCustom() // 获取当前故障发生时间
+							lastTimeWindow := entity.GetLastTimeWindow()     // 获取最后一个时间窗口
+							var faultLabel string
+							for _, f := range masterConfig.Rule102 {
+								faultLabel = f(data)
+								if faultLabel != "" {
+									if !canCollect() {
+										break
+									}
+									subscribersTimes[i] = time.Now()
+									c_log.GlobalLogger.Errorf("触发事件【xxx】,开始采集。", faultLabel)
+									saveTimeWindow(faultLabel, faultHappenTime, lastTimeWindow)
+									break
+								}
+							}
+							subscribersMutexes[i].Unlock()
+						}
+						subscribersTimeMutexes[i].Unlock()
+					},
+				})
+				if err == nil {
+					create = true
+				}
+			}
+			if topic == masterConfig.Topic103 && len(masterConfig.Rule103) > 0 {
+				subscribers[i], err = goroslib.NewSubscriber(goroslib.SubscriberConf{
+					Node:  commonConfig.RosNode,
+					Topic: topic,
+					Callback: func(data *geometry_msgs.PoseWithCovarianceStamped) {
+						subscribersTimeMutexes[i].Lock()
+						if time.Since(subscribersTimes[i]).Seconds() > triggerInterval {
+							subscribersMutexes[i].Lock()
+							faultHappenTime := commonUtil.GetNowTimeCustom() // 获取当前故障发生时间
+							lastTimeWindow := entity.GetLastTimeWindow()     // 获取最后一个时间窗口
+							var faultLabel string
+							for _, f := range masterConfig.Rule103 {
+								faultLabel = f(data)
+								if faultLabel != "" {
+									if !canCollect() {
+										break
+									}
+									subscribersTimes[i] = time.Now()
+									c_log.GlobalLogger.Errorf("触发事件【xxx】,开始采集。", faultLabel)
+									saveTimeWindow(faultLabel, faultHappenTime, lastTimeWindow)
+									break
+								}
+							}
+							subscribersMutexes[i].Unlock()
+						}
+						subscribersTimeMutexes[i].Unlock()
+					},
+				})
+				if err == nil {
+					create = true
+				}
+			}
+			if topic == masterConfig.Topic104 && len(masterConfig.Rule104) > 0 {
+				subscribers[i], err = goroslib.NewSubscriber(goroslib.SubscriberConf{
+					Node:  commonConfig.RosNode,
+					Topic: topic,
+					Callback: func(data *geometry_msgs.Pose) {
+						subscribersTimeMutexes[i].Lock()
+						if time.Since(subscribersTimes[i]).Seconds() > triggerInterval {
+							subscribersMutexes[i].Lock()
+							faultHappenTime := commonUtil.GetNowTimeCustom() // 获取当前故障发生时间
+							lastTimeWindow := entity.GetLastTimeWindow()     // 获取最后一个时间窗口
+							var faultLabel string
+							for _, f := range masterConfig.Rule104 {
+								faultLabel = f(data)
+								if faultLabel != "" {
+									if !canCollect() {
+										break
+									}
+									subscribersTimes[i] = time.Now()
+									c_log.GlobalLogger.Errorf("触发事件【xxx】,开始采集。", faultLabel)
+									saveTimeWindow(faultLabel, faultHappenTime, lastTimeWindow)
+									break
+								}
+							}
+							subscribersMutexes[i].Unlock()
+						}
+						subscribersTimeMutexes[i].Unlock()
+					},
+				})
+				if err == nil {
+					create = true
+				}
+			}
+			if topic == masterConfig.Topic105 && len(masterConfig.Rule105) > 0 {
+				subscribers[i], err = goroslib.NewSubscriber(goroslib.SubscriberConf{
+					Node:  commonConfig.RosNode,
+					Topic: topic,
+					Callback: func(data *std_msgs.String) {
+						subscribersTimeMutexes[i].Lock()
+						if time.Since(subscribersTimes[i]).Seconds() > triggerInterval {
+							subscribersMutexes[i].Lock()
+							faultHappenTime := commonUtil.GetNowTimeCustom() // 获取当前故障发生时间
+							lastTimeWindow := entity.GetLastTimeWindow()     // 获取最后一个时间窗口
+							var faultLabel string
+							for _, f := range masterConfig.Rule105 {
+								faultLabel = f(data)
+								if faultLabel != "" {
+									if !canCollect() {
+										break
+									}
+									subscribersTimes[i] = time.Now()
+									c_log.GlobalLogger.Errorf("触发事件【xxx】,开始采集。", faultLabel)
+									saveTimeWindow(faultLabel, faultHappenTime, lastTimeWindow)
+									break
+								}
+							}
+							subscribersMutexes[i].Unlock()
+						}
+						subscribersTimeMutexes[i].Unlock()
+					},
+				})
+				if err == nil {
+					create = true
+				}
+			}
+			if topic == masterConfig.Topic106 && len(masterConfig.Rule106) > 0 {
+				subscribers[i], err = goroslib.NewSubscriber(goroslib.SubscriberConf{
+					Node:  commonConfig.RosNode,
+					Topic: topic,
+					Callback: func(data *std_msgs.String) {
+						subscribersTimeMutexes[i].Lock()
+						if time.Since(subscribersTimes[i]).Seconds() > triggerInterval {
+							subscribersMutexes[i].Lock()
+							faultHappenTime := commonUtil.GetNowTimeCustom() // 获取当前故障发生时间
+							lastTimeWindow := entity.GetLastTimeWindow()     // 获取最后一个时间窗口
+							var faultLabel string
+							for _, f := range masterConfig.Rule106 {
+								faultLabel = f(data)
+								if faultLabel != "" {
+									if !canCollect() {
+										break
+									}
+									subscribersTimes[i] = time.Now()
+									c_log.GlobalLogger.Errorf("触发事件【xxx】,开始采集。", faultLabel)
+									saveTimeWindow(faultLabel, faultHappenTime, lastTimeWindow)
+									break
+								}
+							}
+							subscribersMutexes[i].Unlock()
+						}
+						subscribersTimeMutexes[i].Unlock()
+					},
+				})
+				if err == nil {
+					create = true
+				}
+			}
+			if topic == masterConfig.Topic107 && len(masterConfig.Rule107) > 0 {
+				subscribers[i], err = goroslib.NewSubscriber(goroslib.SubscriberConf{
+					Node:  commonConfig.RosNode,
+					Topic: topic,
+					Callback: func(data *std_msgs.String) {
+						subscribersTimeMutexes[i].Lock()
+						if time.Since(subscribersTimes[i]).Seconds() > triggerInterval {
+							subscribersMutexes[i].Lock()
+							faultHappenTime := commonUtil.GetNowTimeCustom() // 获取当前故障发生时间
+							lastTimeWindow := entity.GetLastTimeWindow()     // 获取最后一个时间窗口
+							var faultLabel string
+							for _, f := range masterConfig.Rule107 {
+								faultLabel = f(data)
+								if faultLabel != "" {
+									if !canCollect() {
+										break
+									}
+									subscribersTimes[i] = time.Now()
+									c_log.GlobalLogger.Errorf("触发事件【xxx】,开始采集。", faultLabel)
+									saveTimeWindow(faultLabel, faultHappenTime, lastTimeWindow)
+									break
+								}
+							}
+							subscribersMutexes[i].Unlock()
+						}
+						subscribersTimeMutexes[i].Unlock()
+					},
+				})
+				if err == nil {
+					create = true
+				}
+			}
+			if topic == masterConfig.Topic108 && len(masterConfig.Rule108) > 0 {
+				subscribers[i], err = goroslib.NewSubscriber(goroslib.SubscriberConf{
+					Node:  commonConfig.RosNode,
+					Topic: topic,
+					Callback: func(data *std_msgs.String) {
+						subscribersTimeMutexes[i].Lock()
+						if time.Since(subscribersTimes[i]).Seconds() > triggerInterval {
+							subscribersMutexes[i].Lock()
+							faultHappenTime := commonUtil.GetNowTimeCustom() // 获取当前故障发生时间
+							lastTimeWindow := entity.GetLastTimeWindow()     // 获取最后一个时间窗口
+							var faultLabel string
+							for _, f := range masterConfig.Rule108 {
+								faultLabel = f(data)
+								if faultLabel != "" {
+									if !canCollect() {
+										break
+									}
+									subscribersTimes[i] = time.Now()
+									c_log.GlobalLogger.Errorf("触发事件【xxx】,开始采集。", faultLabel)
+									saveTimeWindow(faultLabel, faultHappenTime, lastTimeWindow)
+									break
+								}
+							}
+							subscribersMutexes[i].Unlock()
+						}
+						subscribersTimeMutexes[i].Unlock()
+					},
+				})
+				if err == nil {
+					create = true
+				}
+			}
+			if topic == masterConfig.Topic109 && len(masterConfig.Rule109) > 0 {
+				subscribers[i], err = goroslib.NewSubscriber(goroslib.SubscriberConf{
+					Node:  commonConfig.RosNode,
+					Topic: topic,
+					Callback: func(data *std_msgs.Float64) {
+						subscribersTimeMutexes[i].Lock()
+						if time.Since(subscribersTimes[i]).Seconds() > triggerInterval {
+							subscribersMutexes[i].Lock()
+							faultHappenTime := commonUtil.GetNowTimeCustom() // 获取当前故障发生时间
+							lastTimeWindow := entity.GetLastTimeWindow()     // 获取最后一个时间窗口
+							var faultLabel string
+							for _, f := range masterConfig.Rule109 {
+								faultLabel = f(data)
+								if faultLabel != "" {
+									if !canCollect() {
+										break
+									}
+									subscribersTimes[i] = time.Now()
+									c_log.GlobalLogger.Errorf("触发事件【xxx】,开始采集。", faultLabel)
+									saveTimeWindow(faultLabel, faultHappenTime, lastTimeWindow)
+									break
+								}
+							}
+							subscribersMutexes[i].Unlock()
+						}
+						subscribersTimeMutexes[i].Unlock()
+					},
+				})
+				if err == nil {
+					create = true
+				}
+			}
+			if topic == masterConfig.Topic110 && len(masterConfig.Rule110) > 0 {
+				subscribers[i], err = goroslib.NewSubscriber(goroslib.SubscriberConf{
+					Node:  commonConfig.RosNode,
+					Topic: topic,
+					Callback: func(data *std_msgs.String) {
+						subscribersTimeMutexes[i].Lock()
+						if time.Since(subscribersTimes[i]).Seconds() > triggerInterval {
+							subscribersMutexes[i].Lock()
+							faultHappenTime := commonUtil.GetNowTimeCustom() // 获取当前故障发生时间
+							lastTimeWindow := entity.GetLastTimeWindow()     // 获取最后一个时间窗口
+							var faultLabel string
+							for _, f := range masterConfig.Rule110 {
+								faultLabel = f(data)
+								if faultLabel != "" {
+									if !canCollect() {
+										break
+									}
+									subscribersTimes[i] = time.Now()
+									c_log.GlobalLogger.Errorf("触发事件【xxx】,开始采集。", faultLabel)
+									saveTimeWindow(faultLabel, faultHappenTime, lastTimeWindow)
+									break
+								}
+							}
+							subscribersMutexes[i].Unlock()
+						}
+						subscribersTimeMutexes[i].Unlock()
+					},
+				})
+				if err == nil {
+					create = true
+				}
+			}
+			if topic == masterConfig.Topic111 && len(masterConfig.Rule111) > 0 {
+				subscribers[i], err = goroslib.NewSubscriber(goroslib.SubscriberConf{
+					Node:  commonConfig.RosNode,
+					Topic: topic,
+					Callback: func(data *std_msgs.String) {
+						subscribersTimeMutexes[i].Lock()
+						if time.Since(subscribersTimes[i]).Seconds() > triggerInterval {
+							subscribersMutexes[i].Lock()
+							faultHappenTime := commonUtil.GetNowTimeCustom() // 获取当前故障发生时间
+							lastTimeWindow := entity.GetLastTimeWindow()     // 获取最后一个时间窗口
+							var faultLabel string
+							for _, f := range masterConfig.Rule111 {
+								faultLabel = f(data)
+								if faultLabel != "" {
+									if !canCollect() {
+										break
+									}
+									subscribersTimes[i] = time.Now()
+									c_log.GlobalLogger.Errorf("触发事件【xxx】,开始采集。", faultLabel)
+									saveTimeWindow(faultLabel, faultHappenTime, lastTimeWindow)
+									break
+								}
+							}
+							subscribersMutexes[i].Unlock()
+						}
+						subscribersTimeMutexes[i].Unlock()
+					},
+				})
+				if err == nil {
+					create = true
+				}
+			}
+			if topic == masterConfig.Topic112 && len(masterConfig.Rule112) > 0 {
+				subscribers[i], err = goroslib.NewSubscriber(goroslib.SubscriberConf{
+					Node:  commonConfig.RosNode,
+					Topic: topic,
+					Callback: func(data *sensor_msgs.Imu) {
+						subscribersTimeMutexes[i].Lock()
+						if time.Since(subscribersTimes[i]).Seconds() > triggerInterval {
+							subscribersMutexes[i].Lock()
+							faultHappenTime := commonUtil.GetNowTimeCustom() // 获取当前故障发生时间
+							lastTimeWindow := entity.GetLastTimeWindow()     // 获取最后一个时间窗口
+							var faultLabel string
+							for _, f := range masterConfig.Rule112 {
+								faultLabel = f(data)
+								if faultLabel != "" {
+									if !canCollect() {
+										break
+									}
+									subscribersTimes[i] = time.Now()
+									c_log.GlobalLogger.Errorf("触发事件【xxx】,开始采集。", faultLabel)
+									saveTimeWindow(faultLabel, faultHappenTime, lastTimeWindow)
+									break
+								}
+							}
+							subscribersMutexes[i].Unlock()
+						}
+						subscribersTimeMutexes[i].Unlock()
+					},
+				})
+				if err == nil {
+					create = true
+				}
+			}
+			if topic == masterConfig.Topic113 && len(masterConfig.Rule113) > 0 {
+				subscribers[i], err = goroslib.NewSubscriber(goroslib.SubscriberConf{
+					Node:  commonConfig.RosNode,
+					Topic: topic,
+					Callback: func(data *std_msgs.String) {
+						subscribersTimeMutexes[i].Lock()
+						if time.Since(subscribersTimes[i]).Seconds() > triggerInterval {
+							subscribersMutexes[i].Lock()
+							faultHappenTime := commonUtil.GetNowTimeCustom() // 获取当前故障发生时间
+							lastTimeWindow := entity.GetLastTimeWindow()     // 获取最后一个时间窗口
+							var faultLabel string
+							for _, f := range masterConfig.Rule113 {
+								faultLabel = f(data)
+								if faultLabel != "" {
+									if !canCollect() {
+										break
+									}
+									subscribersTimes[i] = time.Now()
+									c_log.GlobalLogger.Errorf("触发事件【xxx】,开始采集。", faultLabel)
+									saveTimeWindow(faultLabel, faultHappenTime, lastTimeWindow)
+									break
+								}
+							}
+							subscribersMutexes[i].Unlock()
+						}
+						subscribersTimeMutexes[i].Unlock()
+					},
+				})
+				if err == nil {
+					create = true
+				}
+			}
+			if topic == masterConfig.Topic114 && len(masterConfig.Rule114) > 0 {
+				subscribers[i], err = goroslib.NewSubscriber(goroslib.SubscriberConf{
+					Node:  commonConfig.RosNode,
+					Topic: topic,
+					Callback: func(data *std_msgs.Int8) {
+						subscribersTimeMutexes[i].Lock()
+						if time.Since(subscribersTimes[i]).Seconds() > triggerInterval {
+							subscribersMutexes[i].Lock()
+							faultHappenTime := commonUtil.GetNowTimeCustom() // 获取当前故障发生时间
+							lastTimeWindow := entity.GetLastTimeWindow()     // 获取最后一个时间窗口
+							var faultLabel string
+							for _, f := range masterConfig.Rule114 {
+								faultLabel = f(data)
+								if faultLabel != "" {
+									if !canCollect() {
+										break
+									}
+									subscribersTimes[i] = time.Now()
+									c_log.GlobalLogger.Errorf("触发事件【xxx】,开始采集。", faultLabel)
+									saveTimeWindow(faultLabel, faultHappenTime, lastTimeWindow)
+									break
+								}
+							}
+							subscribersMutexes[i].Unlock()
+						}
+						subscribersTimeMutexes[i].Unlock()
+					},
+				})
+				if err == nil {
+					create = true
+				}
+			}
+			if topic == masterConfig.Topic115 && len(masterConfig.Rule115) > 0 {
+				subscribers[i], err = goroslib.NewSubscriber(goroslib.SubscriberConf{
+					Node:  commonConfig.RosNode,
+					Topic: topic,
+					Callback: func(data *std_msgs.Int16) {
+						subscribersTimeMutexes[i].Lock()
+						if time.Since(subscribersTimes[i]).Seconds() > triggerInterval {
+							subscribersMutexes[i].Lock()
+							faultHappenTime := commonUtil.GetNowTimeCustom() // 获取当前故障发生时间
+							lastTimeWindow := entity.GetLastTimeWindow()     // 获取最后一个时间窗口
+							var faultLabel string
+							for _, f := range masterConfig.Rule115 {
+								faultLabel = f(data)
+								if faultLabel != "" {
+									if !canCollect() {
+										break
+									}
+									subscribersTimes[i] = time.Now()
+									c_log.GlobalLogger.Errorf("触发事件【xxx】,开始采集。", faultLabel)
+									saveTimeWindow(faultLabel, faultHappenTime, lastTimeWindow)
+									break
+								}
+							}
+							subscribersMutexes[i].Unlock()
+						}
+						subscribersTimeMutexes[i].Unlock()
+					},
+				})
+				if err == nil {
+					create = true
+				}
+			}
+			if topic == masterConfig.Topic116 && len(masterConfig.Rule116) > 0 {
+				subscribers[i], err = goroslib.NewSubscriber(goroslib.SubscriberConf{
+					Node:  commonConfig.RosNode,
+					Topic: topic,
+					Callback: func(data *std_msgs.String) {
+						subscribersTimeMutexes[i].Lock()
+						if time.Since(subscribersTimes[i]).Seconds() > triggerInterval {
+							subscribersMutexes[i].Lock()
+							faultHappenTime := commonUtil.GetNowTimeCustom() // 获取当前故障发生时间
+							lastTimeWindow := entity.GetLastTimeWindow()     // 获取最后一个时间窗口
+							var faultLabel string
+							for _, f := range masterConfig.Rule116 {
+								faultLabel = f(data)
+								if faultLabel != "" {
+									if !canCollect() {
+										break
+									}
+									subscribersTimes[i] = time.Now()
+									c_log.GlobalLogger.Errorf("触发事件【xxx】,开始采集。", faultLabel)
+									saveTimeWindow(faultLabel, faultHappenTime, lastTimeWindow)
+									break
+								}
+							}
+							subscribersMutexes[i].Unlock()
+						}
+						subscribersTimeMutexes[i].Unlock()
+					},
+				})
+				if err == nil {
+					create = true
+				}
+			}
+			if topic == masterConfig.Topic117 && len(masterConfig.Rule117) > 0 {
+				subscribers[i], err = goroslib.NewSubscriber(goroslib.SubscriberConf{
+					Node:  commonConfig.RosNode,
+					Topic: topic,
+					Callback: func(data *std_msgs.String) {
+						subscribersTimeMutexes[i].Lock()
+						if time.Since(subscribersTimes[i]).Seconds() > triggerInterval {
+							subscribersMutexes[i].Lock()
+							faultHappenTime := commonUtil.GetNowTimeCustom() // 获取当前故障发生时间
+							lastTimeWindow := entity.GetLastTimeWindow()     // 获取最后一个时间窗口
+							var faultLabel string
+							for _, f := range masterConfig.Rule117 {
+								faultLabel = f(data)
+								if faultLabel != "" {
+									if !canCollect() {
+										break
+									}
+									subscribersTimes[i] = time.Now()
+									c_log.GlobalLogger.Errorf("触发事件【xxx】,开始采集。", faultLabel)
+									saveTimeWindow(faultLabel, faultHappenTime, lastTimeWindow)
+									break
+								}
+							}
+							subscribersMutexes[i].Unlock()
+						}
+						subscribersTimeMutexes[i].Unlock()
+					},
+				})
+				if err == nil {
+					create = true
+				}
+			}
+			if topic == masterConfig.Topic118 && len(masterConfig.Rule118) > 0 {
+				subscribers[i], err = goroslib.NewSubscriber(goroslib.SubscriberConf{
+					Node:  commonConfig.RosNode,
+					Topic: topic,
+					Callback: func(data *geometry_msgs.PoseWithCovarianceStamped) {
+						subscribersTimeMutexes[i].Lock()
+						if time.Since(subscribersTimes[i]).Seconds() > triggerInterval {
+							subscribersMutexes[i].Lock()
+							faultHappenTime := commonUtil.GetNowTimeCustom() // 获取当前故障发生时间
+							lastTimeWindow := entity.GetLastTimeWindow()     // 获取最后一个时间窗口
+							var faultLabel string
+							for _, f := range masterConfig.Rule118 {
+								faultLabel = f(data)
+								if faultLabel != "" {
+									if !canCollect() {
+										break
+									}
+									subscribersTimes[i] = time.Now()
+									c_log.GlobalLogger.Errorf("触发事件【xxx】,开始采集。", faultLabel)
+									saveTimeWindow(faultLabel, faultHappenTime, lastTimeWindow)
+									break
+								}
+							}
+							subscribersMutexes[i].Unlock()
+						}
+						subscribersTimeMutexes[i].Unlock()
+					},
+				})
+				if err == nil {
+					create = true
+				}
+			}
+			if topic == masterConfig.Topic119 && len(masterConfig.Rule119) > 0 {
+				subscribers[i], err = goroslib.NewSubscriber(goroslib.SubscriberConf{
+					Node:  commonConfig.RosNode,
+					Topic: topic,
+					Callback: func(data *sensor_msgs.JointState) {
+						subscribersTimeMutexes[i].Lock()
+						if time.Since(subscribersTimes[i]).Seconds() > triggerInterval {
+							subscribersMutexes[i].Lock()
+							faultHappenTime := commonUtil.GetNowTimeCustom() // 获取当前故障发生时间
+							lastTimeWindow := entity.GetLastTimeWindow()     // 获取最后一个时间窗口
+							var faultLabel string
+							for _, f := range masterConfig.Rule119 {
+								faultLabel = f(data)
+								if faultLabel != "" {
+									if !canCollect() {
+										break
+									}
+									subscribersTimes[i] = time.Now()
+									c_log.GlobalLogger.Errorf("触发事件【xxx】,开始采集。", faultLabel)
+									saveTimeWindow(faultLabel, faultHappenTime, lastTimeWindow)
+									break
+								}
+							}
+							subscribersMutexes[i].Unlock()
+						}
+						subscribersTimeMutexes[i].Unlock()
+					},
+				})
+				if err == nil {
+					create = true
+				}
+			}
+			if topic == masterConfig.Topic120 && len(masterConfig.Rule120) > 0 {
+				subscribers[i], err = goroslib.NewSubscriber(goroslib.SubscriberConf{
+					Node:  commonConfig.RosNode,
+					Topic: topic,
+					Callback: func(data *std_msgs.String) {
+						subscribersTimeMutexes[i].Lock()
+						if time.Since(subscribersTimes[i]).Seconds() > triggerInterval {
+							subscribersMutexes[i].Lock()
+							faultHappenTime := commonUtil.GetNowTimeCustom() // 获取当前故障发生时间
+							lastTimeWindow := entity.GetLastTimeWindow()     // 获取最后一个时间窗口
+							var faultLabel string
+							for _, f := range masterConfig.Rule120 {
+								faultLabel = f(data)
+								if faultLabel != "" {
+									if !canCollect() {
+										break
+									}
+									subscribersTimes[i] = time.Now()
+									c_log.GlobalLogger.Errorf("触发事件【xxx】,开始采集。", faultLabel)
+									saveTimeWindow(faultLabel, faultHappenTime, lastTimeWindow)
+									break
+								}
+							}
+							subscribersMutexes[i].Unlock()
+						}
+						subscribersTimeMutexes[i].Unlock()
+					},
+				})
+				if err == nil {
+					create = true
+				}
+			}
+			if topic == masterConfig.Topic121 && len(masterConfig.Rule121) > 0 {
+				subscribers[i], err = goroslib.NewSubscriber(goroslib.SubscriberConf{
+					Node:  commonConfig.RosNode,
+					Topic: topic,
+					Callback: func(data *cartographer_ros_msgs.LandmarkList) {
+						subscribersTimeMutexes[i].Lock()
+						if time.Since(subscribersTimes[i]).Seconds() > triggerInterval {
+							subscribersMutexes[i].Lock()
+							faultHappenTime := commonUtil.GetNowTimeCustom() // 获取当前故障发生时间
+							lastTimeWindow := entity.GetLastTimeWindow()     // 获取最后一个时间窗口
+							var faultLabel string
+							for _, f := range masterConfig.Rule121 {
+								faultLabel = f(data)
+								if faultLabel != "" {
+									if !canCollect() {
+										break
+									}
+									subscribersTimes[i] = time.Now()
+									c_log.GlobalLogger.Errorf("触发事件【xxx】,开始采集。", faultLabel)
+									saveTimeWindow(faultLabel, faultHappenTime, lastTimeWindow)
+									break
+								}
+							}
+							subscribersMutexes[i].Unlock()
+						}
+						subscribersTimeMutexes[i].Unlock()
+					},
+				})
+				if err == nil {
+					create = true
+				}
+			}
+			if topic == masterConfig.Topic122 && len(masterConfig.Rule122) > 0 {
+				subscribers[i], err = goroslib.NewSubscriber(goroslib.SubscriberConf{
+					Node:  commonConfig.RosNode,
+					Topic: topic,
+					Callback: func(data *nav_msgs.Odometry) {
+						subscribersTimeMutexes[i].Lock()
+						if time.Since(subscribersTimes[i]).Seconds() > triggerInterval {
+							subscribersMutexes[i].Lock()
+							faultHappenTime := commonUtil.GetNowTimeCustom() // 获取当前故障发生时间
+							lastTimeWindow := entity.GetLastTimeWindow()     // 获取最后一个时间窗口
+							var faultLabel string
+							for _, f := range masterConfig.Rule122 {
+								faultLabel = f(data)
+								if faultLabel != "" {
+									if !canCollect() {
+										break
+									}
+									subscribersTimes[i] = time.Now()
+									c_log.GlobalLogger.Errorf("触发事件【xxx】,开始采集。", faultLabel)
+									saveTimeWindow(faultLabel, faultHappenTime, lastTimeWindow)
+									break
+								}
+							}
+							subscribersMutexes[i].Unlock()
+						}
+						subscribersTimeMutexes[i].Unlock()
+					},
+				})
+				if err == nil {
+					create = true
+				}
+			}
+			if topic == masterConfig.Topic123 && len(masterConfig.Rule123) > 0 {
+				subscribers[i], err = goroslib.NewSubscriber(goroslib.SubscriberConf{
+					Node:  commonConfig.RosNode,
+					Topic: topic,
+					Callback: func(data *sensor_msgs.LaserScan) {
+						subscribersTimeMutexes[i].Lock()
+						if time.Since(subscribersTimes[i]).Seconds() > triggerInterval {
+							subscribersMutexes[i].Lock()
+							faultHappenTime := commonUtil.GetNowTimeCustom() // 获取当前故障发生时间
+							lastTimeWindow := entity.GetLastTimeWindow()     // 获取最后一个时间窗口
+							var faultLabel string
+							for _, f := range masterConfig.Rule123 {
+								faultLabel = f(data)
+								if faultLabel != "" {
+									if !canCollect() {
+										break
+									}
+									subscribersTimes[i] = time.Now()
+									c_log.GlobalLogger.Errorf("触发事件【xxx】,开始采集。", faultLabel)
+									saveTimeWindow(faultLabel, faultHappenTime, lastTimeWindow)
+									break
+								}
+							}
+							subscribersMutexes[i].Unlock()
+						}
+						subscribersTimeMutexes[i].Unlock()
+					},
+				})
+				if err == nil {
+					create = true
+				}
+			}
+			if topic == masterConfig.Topic124 && len(masterConfig.Rule124) > 0 {
+				subscribers[i], err = goroslib.NewSubscriber(goroslib.SubscriberConf{
+					Node:  commonConfig.RosNode,
+					Topic: topic,
+					Callback: func(data *std_msgs.String) {
+						subscribersTimeMutexes[i].Lock()
+						if time.Since(subscribersTimes[i]).Seconds() > triggerInterval {
+							subscribersMutexes[i].Lock()
+							faultHappenTime := commonUtil.GetNowTimeCustom() // 获取当前故障发生时间
+							lastTimeWindow := entity.GetLastTimeWindow()     // 获取最后一个时间窗口
+							var faultLabel string
+							for _, f := range masterConfig.Rule124 {
+								faultLabel = f(data)
+								if faultLabel != "" {
+									if !canCollect() {
+										break
+									}
+									subscribersTimes[i] = time.Now()
+									c_log.GlobalLogger.Errorf("触发事件【xxx】,开始采集。", faultLabel)
+									saveTimeWindow(faultLabel, faultHappenTime, lastTimeWindow)
+									break
+								}
+							}
+							subscribersMutexes[i].Unlock()
+						}
+						subscribersTimeMutexes[i].Unlock()
+					},
+				})
+				if err == nil {
+					create = true
+				}
+			}
+			if topic == masterConfig.Topic125 && len(masterConfig.Rule125) > 0 {
+				subscribers[i], err = goroslib.NewSubscriber(goroslib.SubscriberConf{
+					Node:  commonConfig.RosNode,
+					Topic: topic,
+					Callback: func(data *nav_msgs.Path) {
+						subscribersTimeMutexes[i].Lock()
+						if time.Since(subscribersTimes[i]).Seconds() > triggerInterval {
+							subscribersMutexes[i].Lock()
+							faultHappenTime := commonUtil.GetNowTimeCustom() // 获取当前故障发生时间
+							lastTimeWindow := entity.GetLastTimeWindow()     // 获取最后一个时间窗口
+							var faultLabel string
+							for _, f := range masterConfig.Rule125 {
+								faultLabel = f(data)
+								if faultLabel != "" {
+									if !canCollect() {
+										break
+									}
+									subscribersTimes[i] = time.Now()
+									c_log.GlobalLogger.Errorf("触发事件【xxx】,开始采集。", faultLabel)
+									saveTimeWindow(faultLabel, faultHappenTime, lastTimeWindow)
+									break
+								}
+							}
+							subscribersMutexes[i].Unlock()
+						}
+						subscribersTimeMutexes[i].Unlock()
+					},
+				})
+				if err == nil {
+					create = true
+				}
+			}
+			if topic == masterConfig.Topic126 && len(masterConfig.Rule126) > 0 {
+				subscribers[i], err = goroslib.NewSubscriber(goroslib.SubscriberConf{
+					Node:  commonConfig.RosNode,
+					Topic: topic,
+					Callback: func(data *std_msgs.String) {
+						subscribersTimeMutexes[i].Lock()
+						if time.Since(subscribersTimes[i]).Seconds() > triggerInterval {
+							subscribersMutexes[i].Lock()
+							faultHappenTime := commonUtil.GetNowTimeCustom() // 获取当前故障发生时间
+							lastTimeWindow := entity.GetLastTimeWindow()     // 获取最后一个时间窗口
+							var faultLabel string
+							for _, f := range masterConfig.Rule126 {
+								faultLabel = f(data)
+								if faultLabel != "" {
+									if !canCollect() {
+										break
+									}
+									subscribersTimes[i] = time.Now()
+									c_log.GlobalLogger.Errorf("触发事件【xxx】,开始采集。", faultLabel)
+									saveTimeWindow(faultLabel, faultHappenTime, lastTimeWindow)
+									break
+								}
+							}
+							subscribersMutexes[i].Unlock()
+						}
+						subscribersTimeMutexes[i].Unlock()
+					},
+				})
+				if err == nil {
+					create = true
+				}
+			}
+			if topic == masterConfig.Topic127 && len(masterConfig.Rule127) > 0 {
+				subscribers[i], err = goroslib.NewSubscriber(goroslib.SubscriberConf{
+					Node:  commonConfig.RosNode,
+					Topic: topic,
+					Callback: func(data *std_msgs.String) {
+						subscribersTimeMutexes[i].Lock()
+						if time.Since(subscribersTimes[i]).Seconds() > triggerInterval {
+							subscribersMutexes[i].Lock()
+							faultHappenTime := commonUtil.GetNowTimeCustom() // 获取当前故障发生时间
+							lastTimeWindow := entity.GetLastTimeWindow()     // 获取最后一个时间窗口
+							var faultLabel string
+							for _, f := range masterConfig.Rule127 {
+								faultLabel = f(data)
+								if faultLabel != "" {
+									if !canCollect() {
+										break
+									}
+									subscribersTimes[i] = time.Now()
+									c_log.GlobalLogger.Errorf("触发事件【xxx】,开始采集。", faultLabel)
+									saveTimeWindow(faultLabel, faultHappenTime, lastTimeWindow)
+									break
+								}
+							}
+							subscribersMutexes[i].Unlock()
+						}
+						subscribersTimeMutexes[i].Unlock()
+					},
+				})
+				if err == nil {
+					create = true
+				}
+			}
+			if topic == masterConfig.Topic128 && len(masterConfig.Rule128) > 0 {
+				subscribers[i], err = goroslib.NewSubscriber(goroslib.SubscriberConf{
+					Node:  commonConfig.RosNode,
+					Topic: topic,
+					Callback: func(data *std_msgs.String) {
+						subscribersTimeMutexes[i].Lock()
+						if time.Since(subscribersTimes[i]).Seconds() > triggerInterval {
+							subscribersMutexes[i].Lock()
+							faultHappenTime := commonUtil.GetNowTimeCustom() // 获取当前故障发生时间
+							lastTimeWindow := entity.GetLastTimeWindow()     // 获取最后一个时间窗口
+							var faultLabel string
+							for _, f := range masterConfig.Rule128 {
+								faultLabel = f(data)
+								if faultLabel != "" {
+									if !canCollect() {
+										break
+									}
+									subscribersTimes[i] = time.Now()
+									c_log.GlobalLogger.Errorf("触发事件【xxx】,开始采集。", faultLabel)
+									saveTimeWindow(faultLabel, faultHappenTime, lastTimeWindow)
+									break
+								}
+							}
+							subscribersMutexes[i].Unlock()
+						}
+						subscribersTimeMutexes[i].Unlock()
+					},
+				})
+				if err == nil {
+					create = true
+				}
+			}
+			if topic == masterConfig.Topic129 && len(masterConfig.Rule129) > 0 {
+				subscribers[i], err = goroslib.NewSubscriber(goroslib.SubscriberConf{
+					Node:  commonConfig.RosNode,
+					Topic: topic,
+					Callback: func(data *std_msgs.String) {
+						subscribersTimeMutexes[i].Lock()
+						if time.Since(subscribersTimes[i]).Seconds() > triggerInterval {
+							subscribersMutexes[i].Lock()
+							faultHappenTime := commonUtil.GetNowTimeCustom() // 获取当前故障发生时间
+							lastTimeWindow := entity.GetLastTimeWindow()     // 获取最后一个时间窗口
+							var faultLabel string
+							for _, f := range masterConfig.Rule129 {
+								faultLabel = f(data)
+								if faultLabel != "" {
+									if !canCollect() {
+										break
+									}
+									subscribersTimes[i] = time.Now()
+									c_log.GlobalLogger.Errorf("触发事件【xxx】,开始采集。", faultLabel)
+									saveTimeWindow(faultLabel, faultHappenTime, lastTimeWindow)
+									break
+								}
+							}
+							subscribersMutexes[i].Unlock()
+						}
+						subscribersTimeMutexes[i].Unlock()
+					},
+				})
+				if err == nil {
+					create = true
+				}
+			}
+			if topic == masterConfig.Topic130 && len(masterConfig.Rule130) > 0 {
+				subscribers[i], err = goroslib.NewSubscriber(goroslib.SubscriberConf{
+					Node:  commonConfig.RosNode,
+					Topic: topic,
+					Callback: func(data *geometry_msgs.PoseWithCovarianceStamped) {
+						subscribersTimeMutexes[i].Lock()
+						if time.Since(subscribersTimes[i]).Seconds() > triggerInterval {
+							subscribersMutexes[i].Lock()
+							faultHappenTime := commonUtil.GetNowTimeCustom() // 获取当前故障发生时间
+							lastTimeWindow := entity.GetLastTimeWindow()     // 获取最后一个时间窗口
+							var faultLabel string
+							for _, f := range masterConfig.Rule130 {
+								faultLabel = f(data)
+								if faultLabel != "" {
+									if !canCollect() {
+										break
+									}
+									subscribersTimes[i] = time.Now()
+									c_log.GlobalLogger.Errorf("触发事件【xxx】,开始采集。", faultLabel)
+									saveTimeWindow(faultLabel, faultHappenTime, lastTimeWindow)
+									break
+								}
+							}
+							subscribersMutexes[i].Unlock()
+						}
+						subscribersTimeMutexes[i].Unlock()
+					},
+				})
+				if err == nil {
+					create = true
+				}
+			}
+			if topic == masterConfig.Topic131 && len(masterConfig.Rule131) > 0 {
+				subscribers[i], err = goroslib.NewSubscriber(goroslib.SubscriberConf{
+					Node:  commonConfig.RosNode,
+					Topic: topic,
+					Callback: func(data *std_msgs.String) {
+						subscribersTimeMutexes[i].Lock()
+						if time.Since(subscribersTimes[i]).Seconds() > triggerInterval {
+							subscribersMutexes[i].Lock()
+							faultHappenTime := commonUtil.GetNowTimeCustom() // 获取当前故障发生时间
+							lastTimeWindow := entity.GetLastTimeWindow()     // 获取最后一个时间窗口
+							var faultLabel string
+							for _, f := range masterConfig.Rule131 {
+								faultLabel = f(data)
+								if faultLabel != "" {
+									if !canCollect() {
+										break
+									}
+									subscribersTimes[i] = time.Now()
+									c_log.GlobalLogger.Errorf("触发事件【xxx】,开始采集。", faultLabel)
+									saveTimeWindow(faultLabel, faultHappenTime, lastTimeWindow)
+									break
+								}
+							}
+							subscribersMutexes[i].Unlock()
+						}
+						subscribersTimeMutexes[i].Unlock()
+					},
+				})
+				if err == nil {
+					create = true
+				}
+			}
+			if topic == masterConfig.Topic132 && len(masterConfig.Rule132) > 0 {
+				subscribers[i], err = goroslib.NewSubscriber(goroslib.SubscriberConf{
+					Node:  commonConfig.RosNode,
+					Topic: topic,
+					Callback: func(data *std_msgs.String) {
+						subscribersTimeMutexes[i].Lock()
+						if time.Since(subscribersTimes[i]).Seconds() > triggerInterval {
+							subscribersMutexes[i].Lock()
+							faultHappenTime := commonUtil.GetNowTimeCustom() // 获取当前故障发生时间
+							lastTimeWindow := entity.GetLastTimeWindow()     // 获取最后一个时间窗口
+							var faultLabel string
+							for _, f := range masterConfig.Rule132 {
+								faultLabel = f(data)
+								if faultLabel != "" {
+									if !canCollect() {
+										break
+									}
+									subscribersTimes[i] = time.Now()
+									c_log.GlobalLogger.Errorf("触发事件【xxx】,开始采集。", faultLabel)
+									saveTimeWindow(faultLabel, faultHappenTime, lastTimeWindow)
+									break
+								}
+							}
+							subscribersMutexes[i].Unlock()
+						}
+						subscribersTimeMutexes[i].Unlock()
+					},
+				})
+				if err == nil {
+					create = true
+				}
+			}
+			if topic == masterConfig.Topic133 && len(masterConfig.Rule133) > 0 {
+				subscribers[i], err = goroslib.NewSubscriber(goroslib.SubscriberConf{
+					Node:  commonConfig.RosNode,
+					Topic: topic,
+					Callback: func(data *common_msgs.LocateInfo) {
+						subscribersTimeMutexes[i].Lock()
+						if time.Since(subscribersTimes[i]).Seconds() > triggerInterval {
+							subscribersMutexes[i].Lock()
+							faultHappenTime := commonUtil.GetNowTimeCustom() // 获取当前故障发生时间
+							lastTimeWindow := entity.GetLastTimeWindow()     // 获取最后一个时间窗口
+							var faultLabel string
+							for _, f := range masterConfig.Rule133 {
+								faultLabel = f(data)
+								if faultLabel != "" {
+									if !canCollect() {
+										break
+									}
+									subscribersTimes[i] = time.Now()
+									c_log.GlobalLogger.Errorf("触发事件【xxx】,开始采集。", faultLabel)
+									saveTimeWindow(faultLabel, faultHappenTime, lastTimeWindow)
+									break
+								}
+							}
+							subscribersMutexes[i].Unlock()
+						}
+						subscribersTimeMutexes[i].Unlock()
+					},
+				})
+				if err == nil {
+					create = true
+				}
+			}
+			if topic == masterConfig.Topic134 && len(masterConfig.Rule134) > 0 {
+				subscribers[i], err = goroslib.NewSubscriber(goroslib.SubscriberConf{
+					Node:  commonConfig.RosNode,
+					Topic: topic,
+					Callback: func(data *std_msgs.Bool) {
+						subscribersTimeMutexes[i].Lock()
+						if time.Since(subscribersTimes[i]).Seconds() > triggerInterval {
+							subscribersMutexes[i].Lock()
+							faultHappenTime := commonUtil.GetNowTimeCustom() // 获取当前故障发生时间
+							lastTimeWindow := entity.GetLastTimeWindow()     // 获取最后一个时间窗口
+							var faultLabel string
+							for _, f := range masterConfig.Rule134 {
+								faultLabel = f(data)
+								if faultLabel != "" {
+									if !canCollect() {
+										break
+									}
+									subscribersTimes[i] = time.Now()
+									c_log.GlobalLogger.Errorf("触发事件【xxx】,开始采集。", faultLabel)
+									saveTimeWindow(faultLabel, faultHappenTime, lastTimeWindow)
+									break
+								}
+							}
+							subscribersMutexes[i].Unlock()
+						}
+						subscribersTimeMutexes[i].Unlock()
+					},
+				})
+				if err == nil {
+					create = true
+				}
+			}
+			if topic == masterConfig.Topic135 && len(masterConfig.Rule135) > 0 {
+				subscribers[i], err = goroslib.NewSubscriber(goroslib.SubscriberConf{
+					Node:  commonConfig.RosNode,
+					Topic: topic,
+					Callback: func(data *std_msgs.Float64MultiArray) {
+						subscribersTimeMutexes[i].Lock()
+						if time.Since(subscribersTimes[i]).Seconds() > triggerInterval {
+							subscribersMutexes[i].Lock()
+							faultHappenTime := commonUtil.GetNowTimeCustom() // 获取当前故障发生时间
+							lastTimeWindow := entity.GetLastTimeWindow()     // 获取最后一个时间窗口
+							var faultLabel string
+							for _, f := range masterConfig.Rule135 {
+								faultLabel = f(data)
+								if faultLabel != "" {
+									if !canCollect() {
+										break
+									}
+									subscribersTimes[i] = time.Now()
+									c_log.GlobalLogger.Errorf("触发事件【xxx】,开始采集。", faultLabel)
+									saveTimeWindow(faultLabel, faultHappenTime, lastTimeWindow)
+									break
+								}
+							}
+							subscribersMutexes[i].Unlock()
+						}
+						subscribersTimeMutexes[i].Unlock()
+					},
+				})
+				if err == nil {
+					create = true
+				}
+			}
+			if topic == masterConfig.Topic136 && len(masterConfig.Rule136) > 0 {
+				subscribers[i], err = goroslib.NewSubscriber(goroslib.SubscriberConf{
+					Node:  commonConfig.RosNode,
+					Topic: topic,
+					Callback: func(data *std_msgs.String) {
+						subscribersTimeMutexes[i].Lock()
+						if time.Since(subscribersTimes[i]).Seconds() > triggerInterval {
+							subscribersMutexes[i].Lock()
+							faultHappenTime := commonUtil.GetNowTimeCustom() // 获取当前故障发生时间
+							lastTimeWindow := entity.GetLastTimeWindow()     // 获取最后一个时间窗口
+							var faultLabel string
+							for _, f := range masterConfig.Rule136 {
+								faultLabel = f(data)
+								if faultLabel != "" {
+									if !canCollect() {
+										break
+									}
+									subscribersTimes[i] = time.Now()
+									c_log.GlobalLogger.Errorf("触发事件【xxx】,开始采集。", faultLabel)
+									saveTimeWindow(faultLabel, faultHappenTime, lastTimeWindow)
+									break
+								}
+							}
+							subscribersMutexes[i].Unlock()
+						}
+						subscribersTimeMutexes[i].Unlock()
+					},
+				})
+				if err == nil {
+					create = true
+				}
+			}
+			if topic == masterConfig.Topic137 && len(masterConfig.Rule137) > 0 {
+				subscribers[i], err = goroslib.NewSubscriber(goroslib.SubscriberConf{
+					Node:  commonConfig.RosNode,
+					Topic: topic,
+					Callback: func(data *std_msgs.String) {
+						subscribersTimeMutexes[i].Lock()
+						if time.Since(subscribersTimes[i]).Seconds() > triggerInterval {
+							subscribersMutexes[i].Lock()
+							faultHappenTime := commonUtil.GetNowTimeCustom() // 获取当前故障发生时间
+							lastTimeWindow := entity.GetLastTimeWindow()     // 获取最后一个时间窗口
+							var faultLabel string
+							for _, f := range masterConfig.Rule137 {
+								faultLabel = f(data)
+								if faultLabel != "" {
+									if !canCollect() {
+										break
+									}
+									subscribersTimes[i] = time.Now()
+									c_log.GlobalLogger.Errorf("触发事件【xxx】,开始采集。", faultLabel)
+									saveTimeWindow(faultLabel, faultHappenTime, lastTimeWindow)
+									break
+								}
+							}
+							subscribersMutexes[i].Unlock()
+						}
+						subscribersTimeMutexes[i].Unlock()
+					},
+				})
+				if err == nil {
+					create = true
+				}
+			}
+			if topic == masterConfig.Topic138 && len(masterConfig.Rule138) > 0 {
+				subscribers[i], err = goroslib.NewSubscriber(goroslib.SubscriberConf{
+					Node:  commonConfig.RosNode,
+					Topic: topic,
+					Callback: func(data *nav_msgs.OccupancyGrid) {
+						subscribersTimeMutexes[i].Lock()
+						if time.Since(subscribersTimes[i]).Seconds() > triggerInterval {
+							subscribersMutexes[i].Lock()
+							faultHappenTime := commonUtil.GetNowTimeCustom() // 获取当前故障发生时间
+							lastTimeWindow := entity.GetLastTimeWindow()     // 获取最后一个时间窗口
+							var faultLabel string
+							for _, f := range masterConfig.Rule138 {
+								faultLabel = f(data)
+								if faultLabel != "" {
+									if !canCollect() {
+										break
+									}
+									subscribersTimes[i] = time.Now()
+									c_log.GlobalLogger.Errorf("触发事件【xxx】,开始采集。", faultLabel)
+									saveTimeWindow(faultLabel, faultHappenTime, lastTimeWindow)
+									break
+								}
+							}
+							subscribersMutexes[i].Unlock()
+						}
+						subscribersTimeMutexes[i].Unlock()
+					},
+				})
+				if err == nil {
+					create = true
+				}
+			}
+			if topic == masterConfig.Topic139 && len(masterConfig.Rule139) > 0 {
+				subscribers[i], err = goroslib.NewSubscriber(goroslib.SubscriberConf{
+					Node:  commonConfig.RosNode,
+					Topic: topic,
+					Callback: func(data *std_msgs.String) {
+						subscribersTimeMutexes[i].Lock()
+						if time.Since(subscribersTimes[i]).Seconds() > triggerInterval {
+							subscribersMutexes[i].Lock()
+							faultHappenTime := commonUtil.GetNowTimeCustom() // 获取当前故障发生时间
+							lastTimeWindow := entity.GetLastTimeWindow()     // 获取最后一个时间窗口
+							var faultLabel string
+							for _, f := range masterConfig.Rule139 {
+								faultLabel = f(data)
+								if faultLabel != "" {
+									if !canCollect() {
+										break
+									}
+									subscribersTimes[i] = time.Now()
+									c_log.GlobalLogger.Errorf("触发事件【xxx】,开始采集。", faultLabel)
+									saveTimeWindow(faultLabel, faultHappenTime, lastTimeWindow)
+									break
+								}
+							}
+							subscribersMutexes[i].Unlock()
+						}
+						subscribersTimeMutexes[i].Unlock()
+					},
+				})
+				if err == nil {
+					create = true
+				}
+			}
+			if topic == masterConfig.Topic140 && len(masterConfig.Rule140) > 0 {
+				subscribers[i], err = goroslib.NewSubscriber(goroslib.SubscriberConf{
+					Node:  commonConfig.RosNode,
+					Topic: topic,
+					Callback: func(data *nav_msgs.Path) {
+						subscribersTimeMutexes[i].Lock()
+						if time.Since(subscribersTimes[i]).Seconds() > triggerInterval {
+							subscribersMutexes[i].Lock()
+							faultHappenTime := commonUtil.GetNowTimeCustom() // 获取当前故障发生时间
+							lastTimeWindow := entity.GetLastTimeWindow()     // 获取最后一个时间窗口
+							var faultLabel string
+							for _, f := range masterConfig.Rule140 {
+								faultLabel = f(data)
+								if faultLabel != "" {
+									if !canCollect() {
+										break
+									}
+									subscribersTimes[i] = time.Now()
+									c_log.GlobalLogger.Errorf("触发事件【xxx】,开始采集。", faultLabel)
+									saveTimeWindow(faultLabel, faultHappenTime, lastTimeWindow)
+									break
+								}
+							}
+							subscribersMutexes[i].Unlock()
+						}
+						subscribersTimeMutexes[i].Unlock()
+					},
+				})
+				if err == nil {
+					create = true
+				}
+			}
+			if topic == masterConfig.Topic141 && len(masterConfig.Rule141) > 0 {
+				subscribers[i], err = goroslib.NewSubscriber(goroslib.SubscriberConf{
+					Node:  commonConfig.RosNode,
+					Topic: topic,
+					Callback: func(data *std_msgs.String) {
+						subscribersTimeMutexes[i].Lock()
+						if time.Since(subscribersTimes[i]).Seconds() > triggerInterval {
+							subscribersMutexes[i].Lock()
+							faultHappenTime := commonUtil.GetNowTimeCustom() // 获取当前故障发生时间
+							lastTimeWindow := entity.GetLastTimeWindow()     // 获取最后一个时间窗口
+							var faultLabel string
+							for _, f := range masterConfig.Rule141 {
+								faultLabel = f(data)
+								if faultLabel != "" {
+									if !canCollect() {
+										break
+									}
+									subscribersTimes[i] = time.Now()
+									c_log.GlobalLogger.Errorf("触发事件【xxx】,开始采集。", faultLabel)
+									saveTimeWindow(faultLabel, faultHappenTime, lastTimeWindow)
+									break
+								}
+							}
+							subscribersMutexes[i].Unlock()
+						}
+						subscribersTimeMutexes[i].Unlock()
+					},
+				})
+				if err == nil {
+					create = true
+				}
+			}
+			if topic == masterConfig.Topic142 && len(masterConfig.Rule142) > 0 {
+				subscribers[i], err = goroslib.NewSubscriber(goroslib.SubscriberConf{
+					Node:  commonConfig.RosNode,
+					Topic: topic,
+					Callback: func(data *std_msgs.String) {
+						subscribersTimeMutexes[i].Lock()
+						if time.Since(subscribersTimes[i]).Seconds() > triggerInterval {
+							subscribersMutexes[i].Lock()
+							faultHappenTime := commonUtil.GetNowTimeCustom() // 获取当前故障发生时间
+							lastTimeWindow := entity.GetLastTimeWindow()     // 获取最后一个时间窗口
+							var faultLabel string
+							for _, f := range masterConfig.Rule142 {
+								faultLabel = f(data)
+								if faultLabel != "" {
+									if !canCollect() {
+										break
+									}
+									subscribersTimes[i] = time.Now()
+									c_log.GlobalLogger.Errorf("触发事件【xxx】,开始采集。", faultLabel)
+									saveTimeWindow(faultLabel, faultHappenTime, lastTimeWindow)
+									break
+								}
+							}
+							subscribersMutexes[i].Unlock()
+						}
+						subscribersTimeMutexes[i].Unlock()
+					},
+				})
+				if err == nil {
+					create = true
+				}
+			}
+			if topic == masterConfig.Topic143 && len(masterConfig.Rule143) > 0 {
+				subscribers[i], err = goroslib.NewSubscriber(goroslib.SubscriberConf{
+					Node:  commonConfig.RosNode,
+					Topic: topic,
+					Callback: func(data *nav_msgs.MapMetaData) {
+						subscribersTimeMutexes[i].Lock()
+						if time.Since(subscribersTimes[i]).Seconds() > triggerInterval {
+							subscribersMutexes[i].Lock()
+							faultHappenTime := commonUtil.GetNowTimeCustom() // 获取当前故障发生时间
+							lastTimeWindow := entity.GetLastTimeWindow()     // 获取最后一个时间窗口
+							var faultLabel string
+							for _, f := range masterConfig.Rule143 {
+								faultLabel = f(data)
+								if faultLabel != "" {
+									if !canCollect() {
+										break
+									}
+									subscribersTimes[i] = time.Now()
+									c_log.GlobalLogger.Errorf("触发事件【xxx】,开始采集。", faultLabel)
+									saveTimeWindow(faultLabel, faultHappenTime, lastTimeWindow)
+									break
+								}
+							}
+							subscribersMutexes[i].Unlock()
+						}
+						subscribersTimeMutexes[i].Unlock()
+					},
+				})
+				if err == nil {
+					create = true
+				}
+			}
+			if topic == masterConfig.Topic144 && len(masterConfig.Rule144) > 0 {
+				subscribers[i], err = goroslib.NewSubscriber(goroslib.SubscriberConf{
+					Node:  commonConfig.RosNode,
+					Topic: topic,
+					Callback: func(data *nav_msgs.Path) {
+						subscribersTimeMutexes[i].Lock()
+						if time.Since(subscribersTimes[i]).Seconds() > triggerInterval {
+							subscribersMutexes[i].Lock()
+							faultHappenTime := commonUtil.GetNowTimeCustom() // 获取当前故障发生时间
+							lastTimeWindow := entity.GetLastTimeWindow()     // 获取最后一个时间窗口
+							var faultLabel string
+							for _, f := range masterConfig.Rule144 {
+								faultLabel = f(data)
+								if faultLabel != "" {
+									if !canCollect() {
+										break
+									}
+									subscribersTimes[i] = time.Now()
+									c_log.GlobalLogger.Errorf("触发事件【xxx】,开始采集。", faultLabel)
+									saveTimeWindow(faultLabel, faultHappenTime, lastTimeWindow)
+									break
+								}
+							}
+							subscribersMutexes[i].Unlock()
+						}
+						subscribersTimeMutexes[i].Unlock()
+					},
+				})
+				if err == nil {
+					create = true
+				}
+			}
+			if topic == masterConfig.Topic145 && len(masterConfig.Rule145) > 0 {
+				subscribers[i], err = goroslib.NewSubscriber(goroslib.SubscriberConf{
+					Node:  commonConfig.RosNode,
+					Topic: topic,
+					Callback: func(data *geometry_msgs.PoseStamped) {
+						subscribersTimeMutexes[i].Lock()
+						if time.Since(subscribersTimes[i]).Seconds() > triggerInterval {
+							subscribersMutexes[i].Lock()
+							faultHappenTime := commonUtil.GetNowTimeCustom() // 获取当前故障发生时间
+							lastTimeWindow := entity.GetLastTimeWindow()     // 获取最后一个时间窗口
+							var faultLabel string
+							for _, f := range masterConfig.Rule145 {
+								faultLabel = f(data)
+								if faultLabel != "" {
+									if !canCollect() {
+										break
+									}
+									subscribersTimes[i] = time.Now()
+									c_log.GlobalLogger.Errorf("触发事件【xxx】,开始采集。", faultLabel)
+									saveTimeWindow(faultLabel, faultHappenTime, lastTimeWindow)
+									break
+								}
+							}
+							subscribersMutexes[i].Unlock()
+						}
+						subscribersTimeMutexes[i].Unlock()
+					},
+				})
+				if err == nil {
+					create = true
+				}
+			}
+			if topic == masterConfig.Topic146 && len(masterConfig.Rule146) > 0 {
+				subscribers[i], err = goroslib.NewSubscriber(goroslib.SubscriberConf{
+					Node:  commonConfig.RosNode,
+					Topic: topic,
+					Callback: func(data *nav_msgs.OccupancyGrid) {
+						subscribersTimeMutexes[i].Lock()
+						if time.Since(subscribersTimes[i]).Seconds() > triggerInterval {
+							subscribersMutexes[i].Lock()
+							faultHappenTime := commonUtil.GetNowTimeCustom() // 获取当前故障发生时间
+							lastTimeWindow := entity.GetLastTimeWindow()     // 获取最后一个时间窗口
+							var faultLabel string
+							for _, f := range masterConfig.Rule146 {
+								faultLabel = f(data)
+								if faultLabel != "" {
+									if !canCollect() {
+										break
+									}
+									subscribersTimes[i] = time.Now()
+									c_log.GlobalLogger.Errorf("触发事件【xxx】,开始采集。", faultLabel)
+									saveTimeWindow(faultLabel, faultHappenTime, lastTimeWindow)
+									break
+								}
+							}
+							subscribersMutexes[i].Unlock()
+						}
+						subscribersTimeMutexes[i].Unlock()
+					},
+				})
+				if err == nil {
+					create = true
+				}
+			}
+			if topic == masterConfig.Topic147 && len(masterConfig.Rule147) > 0 {
+				subscribers[i], err = goroslib.NewSubscriber(goroslib.SubscriberConf{
+					Node:  commonConfig.RosNode,
+					Topic: topic,
+					Callback: func(data *nav_msgs.OccupancyGrid) {
+						subscribersTimeMutexes[i].Lock()
+						if time.Since(subscribersTimes[i]).Seconds() > triggerInterval {
+							subscribersMutexes[i].Lock()
+							faultHappenTime := commonUtil.GetNowTimeCustom() // 获取当前故障发生时间
+							lastTimeWindow := entity.GetLastTimeWindow()     // 获取最后一个时间窗口
+							var faultLabel string
+							for _, f := range masterConfig.Rule147 {
+								faultLabel = f(data)
+								if faultLabel != "" {
+									if !canCollect() {
+										break
+									}
+									subscribersTimes[i] = time.Now()
+									c_log.GlobalLogger.Errorf("触发事件【xxx】,开始采集。", faultLabel)
+									saveTimeWindow(faultLabel, faultHappenTime, lastTimeWindow)
+									break
+								}
+							}
+							subscribersMutexes[i].Unlock()
+						}
+						subscribersTimeMutexes[i].Unlock()
+					},
+				})
+				if err == nil {
+					create = true
+				}
+			}
+			if topic == masterConfig.Topic148 && len(masterConfig.Rule148) > 0 {
+				subscribers[i], err = goroslib.NewSubscriber(goroslib.SubscriberConf{
+					Node:  commonConfig.RosNode,
+					Topic: topic,
+					Callback: func(data *std_msgs.String) {
+						subscribersTimeMutexes[i].Lock()
+						if time.Since(subscribersTimes[i]).Seconds() > triggerInterval {
+							subscribersMutexes[i].Lock()
+							faultHappenTime := commonUtil.GetNowTimeCustom() // 获取当前故障发生时间
+							lastTimeWindow := entity.GetLastTimeWindow()     // 获取最后一个时间窗口
+							var faultLabel string
+							for _, f := range masterConfig.Rule148 {
+								faultLabel = f(data)
+								if faultLabel != "" {
+									if !canCollect() {
+										break
+									}
+									subscribersTimes[i] = time.Now()
+									c_log.GlobalLogger.Errorf("触发事件【xxx】,开始采集。", faultLabel)
+									saveTimeWindow(faultLabel, faultHappenTime, lastTimeWindow)
+									break
+								}
+							}
+							subscribersMutexes[i].Unlock()
+						}
+						subscribersTimeMutexes[i].Unlock()
+					},
+				})
+				if err == nil {
+					create = true
+				}
+			}
+			if topic == masterConfig.Topic149 && len(masterConfig.Rule149) > 0 {
+				subscribers[i], err = goroslib.NewSubscriber(goroslib.SubscriberConf{
+					Node:  commonConfig.RosNode,
+					Topic: topic,
+					Callback: func(data *std_msgs.String) {
+						subscribersTimeMutexes[i].Lock()
+						if time.Since(subscribersTimes[i]).Seconds() > triggerInterval {
+							subscribersMutexes[i].Lock()
+							faultHappenTime := commonUtil.GetNowTimeCustom() // 获取当前故障发生时间
+							lastTimeWindow := entity.GetLastTimeWindow()     // 获取最后一个时间窗口
+							var faultLabel string
+							for _, f := range masterConfig.Rule149 {
+								faultLabel = f(data)
+								if faultLabel != "" {
+									if !canCollect() {
+										break
+									}
+									subscribersTimes[i] = time.Now()
+									c_log.GlobalLogger.Errorf("触发事件【xxx】,开始采集。", faultLabel)
+									saveTimeWindow(faultLabel, faultHappenTime, lastTimeWindow)
+									break
+								}
+							}
+							subscribersMutexes[i].Unlock()
+						}
+						subscribersTimeMutexes[i].Unlock()
+					},
+				})
+				if err == nil {
+					create = true
+				}
+			}
+			if topic == masterConfig.Topic150 && len(masterConfig.Rule150) > 0 {
+				subscribers[i], err = goroslib.NewSubscriber(goroslib.SubscriberConf{
+					Node:  commonConfig.RosNode,
+					Topic: topic,
+					Callback: func(data *std_msgs.String) {
+						subscribersTimeMutexes[i].Lock()
+						if time.Since(subscribersTimes[i]).Seconds() > triggerInterval {
+							subscribersMutexes[i].Lock()
+							faultHappenTime := commonUtil.GetNowTimeCustom() // 获取当前故障发生时间
+							lastTimeWindow := entity.GetLastTimeWindow()     // 获取最后一个时间窗口
+							var faultLabel string
+							for _, f := range masterConfig.Rule150 {
+								faultLabel = f(data)
+								if faultLabel != "" {
+									if !canCollect() {
+										break
+									}
+									subscribersTimes[i] = time.Now()
+									c_log.GlobalLogger.Errorf("触发事件【xxx】,开始采集。", faultLabel)
+									saveTimeWindow(faultLabel, faultHappenTime, lastTimeWindow)
+									break
+								}
+							}
+							subscribersMutexes[i].Unlock()
+						}
+						subscribersTimeMutexes[i].Unlock()
+					},
+				})
+				if err == nil {
+					create = true
+				}
+			}
+			if topic == masterConfig.Topic151 && len(masterConfig.Rule151) > 0 {
+				subscribers[i], err = goroslib.NewSubscriber(goroslib.SubscriberConf{
+					Node:  commonConfig.RosNode,
+					Topic: topic,
+					Callback: func(data *std_msgs.String) {
+						subscribersTimeMutexes[i].Lock()
+						if time.Since(subscribersTimes[i]).Seconds() > triggerInterval {
+							subscribersMutexes[i].Lock()
+							faultHappenTime := commonUtil.GetNowTimeCustom() // 获取当前故障发生时间
+							lastTimeWindow := entity.GetLastTimeWindow()     // 获取最后一个时间窗口
+							var faultLabel string
+							for _, f := range masterConfig.Rule151 {
+								faultLabel = f(data)
+								if faultLabel != "" {
+									if !canCollect() {
+										break
+									}
+									subscribersTimes[i] = time.Now()
+									c_log.GlobalLogger.Errorf("触发事件【xxx】,开始采集。", faultLabel)
+									saveTimeWindow(faultLabel, faultHappenTime, lastTimeWindow)
+									break
+								}
+							}
+							subscribersMutexes[i].Unlock()
+						}
+						subscribersTimeMutexes[i].Unlock()
+					},
+				})
+				if err == nil {
+					create = true
+				}
+			}
+			if topic == masterConfig.Topic152 && len(masterConfig.Rule152) > 0 {
+				subscribers[i], err = goroslib.NewSubscriber(goroslib.SubscriberConf{
+					Node:  commonConfig.RosNode,
+					Topic: topic,
+					Callback: func(data *std_msgs.Bool) {
+						subscribersTimeMutexes[i].Lock()
+						if time.Since(subscribersTimes[i]).Seconds() > triggerInterval {
+							subscribersMutexes[i].Lock()
+							faultHappenTime := commonUtil.GetNowTimeCustom() // 获取当前故障发生时间
+							lastTimeWindow := entity.GetLastTimeWindow()     // 获取最后一个时间窗口
+							var faultLabel string
+							for _, f := range masterConfig.Rule152 {
+								faultLabel = f(data)
+								if faultLabel != "" {
+									if !canCollect() {
+										break
+									}
+									subscribersTimes[i] = time.Now()
+									c_log.GlobalLogger.Errorf("触发事件【xxx】,开始采集。", faultLabel)
+									saveTimeWindow(faultLabel, faultHappenTime, lastTimeWindow)
+									break
+								}
+							}
+							subscribersMutexes[i].Unlock()
+						}
+						subscribersTimeMutexes[i].Unlock()
+					},
+				})
+				if err == nil {
+					create = true
+				}
+			}
+			if topic == masterConfig.Topic153 && len(masterConfig.Rule153) > 0 {
+				subscribers[i], err = goroslib.NewSubscriber(goroslib.SubscriberConf{
+					Node:  commonConfig.RosNode,
+					Topic: topic,
+					Callback: func(data *sensor_msgs.CameraInfo) {
+						subscribersTimeMutexes[i].Lock()
+						if time.Since(subscribersTimes[i]).Seconds() > triggerInterval {
+							subscribersMutexes[i].Lock()
+							faultHappenTime := commonUtil.GetNowTimeCustom() // 获取当前故障发生时间
+							lastTimeWindow := entity.GetLastTimeWindow()     // 获取最后一个时间窗口
+							var faultLabel string
+							for _, f := range masterConfig.Rule153 {
+								faultLabel = f(data)
+								if faultLabel != "" {
+									if !canCollect() {
+										break
+									}
+									subscribersTimes[i] = time.Now()
+									c_log.GlobalLogger.Errorf("触发事件【xxx】,开始采集。", faultLabel)
+									saveTimeWindow(faultLabel, faultHappenTime, lastTimeWindow)
+									break
+								}
+							}
+							subscribersMutexes[i].Unlock()
+						}
+						subscribersTimeMutexes[i].Unlock()
+					},
+				})
+				if err == nil {
+					create = true
+				}
+			}
+			if topic == masterConfig.Topic154 && len(masterConfig.Rule154) > 0 {
+				subscribers[i], err = goroslib.NewSubscriber(goroslib.SubscriberConf{
+					Node:  commonConfig.RosNode,
+					Topic: topic,
+					Callback: func(data *sensor_msgs.Image) {
+						subscribersTimeMutexes[i].Lock()
+						if time.Since(subscribersTimes[i]).Seconds() > triggerInterval {
+							subscribersMutexes[i].Lock()
+							faultHappenTime := commonUtil.GetNowTimeCustom() // 获取当前故障发生时间
+							lastTimeWindow := entity.GetLastTimeWindow()     // 获取最后一个时间窗口
+							var faultLabel string
+							for _, f := range masterConfig.Rule154 {
+								faultLabel = f(data)
+								if faultLabel != "" {
+									if !canCollect() {
+										break
+									}
+									subscribersTimes[i] = time.Now()
+									c_log.GlobalLogger.Errorf("触发事件【xxx】,开始采集。", faultLabel)
+									saveTimeWindow(faultLabel, faultHappenTime, lastTimeWindow)
+									break
+								}
+							}
+							subscribersMutexes[i].Unlock()
+						}
+						subscribersTimeMutexes[i].Unlock()
+					},
+				})
+				if err == nil {
+					create = true
+				}
+			}
+			if topic == masterConfig.Topic155 && len(masterConfig.Rule155) > 0 {
+				subscribers[i], err = goroslib.NewSubscriber(goroslib.SubscriberConf{
+					Node:  commonConfig.RosNode,
+					Topic: topic,
+					Callback: func(data *sensor_msgs.CompressedImage) {
+						subscribersTimeMutexes[i].Lock()
+						if time.Since(subscribersTimes[i]).Seconds() > triggerInterval {
+							subscribersMutexes[i].Lock()
+							faultHappenTime := commonUtil.GetNowTimeCustom() // 获取当前故障发生时间
+							lastTimeWindow := entity.GetLastTimeWindow()     // 获取最后一个时间窗口
+							var faultLabel string
+							for _, f := range masterConfig.Rule155 {
+								faultLabel = f(data)
+								if faultLabel != "" {
+									if !canCollect() {
+										break
+									}
+									subscribersTimes[i] = time.Now()
+									c_log.GlobalLogger.Errorf("触发事件【xxx】,开始采集。", faultLabel)
+									saveTimeWindow(faultLabel, faultHappenTime, lastTimeWindow)
+									break
+								}
+							}
+							subscribersMutexes[i].Unlock()
+						}
+						subscribersTimeMutexes[i].Unlock()
+					},
+				})
+				if err == nil {
+					create = true
+				}
+			}
+			if topic == masterConfig.Topic156 && len(masterConfig.Rule156) > 0 {
+				subscribers[i], err = goroslib.NewSubscriber(goroslib.SubscriberConf{
+					Node:  commonConfig.RosNode,
+					Topic: topic,
+					Callback: func(data *dynamic_reconfigure.ConfigDescription) {
+						subscribersTimeMutexes[i].Lock()
+						if time.Since(subscribersTimes[i]).Seconds() > triggerInterval {
+							subscribersMutexes[i].Lock()
+							faultHappenTime := commonUtil.GetNowTimeCustom() // 获取当前故障发生时间
+							lastTimeWindow := entity.GetLastTimeWindow()     // 获取最后一个时间窗口
+							var faultLabel string
+							for _, f := range masterConfig.Rule156 {
+								faultLabel = f(data)
+								if faultLabel != "" {
+									if !canCollect() {
+										break
+									}
+									subscribersTimes[i] = time.Now()
+									c_log.GlobalLogger.Errorf("触发事件【xxx】,开始采集。", faultLabel)
+									saveTimeWindow(faultLabel, faultHappenTime, lastTimeWindow)
+									break
+								}
+							}
+							subscribersMutexes[i].Unlock()
+						}
+						subscribersTimeMutexes[i].Unlock()
+					},
+				})
+				if err == nil {
+					create = true
+				}
+			}
+			if topic == masterConfig.Topic157 && len(masterConfig.Rule157) > 0 {
+				subscribers[i], err = goroslib.NewSubscriber(goroslib.SubscriberConf{
+					Node:  commonConfig.RosNode,
+					Topic: topic,
+					Callback: func(data *dynamic_reconfigure.Config) {
+						subscribersTimeMutexes[i].Lock()
+						if time.Since(subscribersTimes[i]).Seconds() > triggerInterval {
+							subscribersMutexes[i].Lock()
+							faultHappenTime := commonUtil.GetNowTimeCustom() // 获取当前故障发生时间
+							lastTimeWindow := entity.GetLastTimeWindow()     // 获取最后一个时间窗口
+							var faultLabel string
+							for _, f := range masterConfig.Rule157 {
+								faultLabel = f(data)
+								if faultLabel != "" {
+									if !canCollect() {
+										break
+									}
+									subscribersTimes[i] = time.Now()
+									c_log.GlobalLogger.Errorf("触发事件【xxx】,开始采集。", faultLabel)
+									saveTimeWindow(faultLabel, faultHappenTime, lastTimeWindow)
+									break
+								}
+							}
+							subscribersMutexes[i].Unlock()
+						}
+						subscribersTimeMutexes[i].Unlock()
+					},
+				})
+				if err == nil {
+					create = true
+				}
+			}
+			if topic == masterConfig.Topic158 && len(masterConfig.Rule158) > 0 {
+				subscribers[i], err = goroslib.NewSubscriber(goroslib.SubscriberConf{
+					Node:  commonConfig.RosNode,
+					Topic: topic,
+					Callback: func(data *sensor_msgs.CompressedImage) {
+						subscribersTimeMutexes[i].Lock()
+						if time.Since(subscribersTimes[i]).Seconds() > triggerInterval {
+							subscribersMutexes[i].Lock()
+							faultHappenTime := commonUtil.GetNowTimeCustom() // 获取当前故障发生时间
+							lastTimeWindow := entity.GetLastTimeWindow()     // 获取最后一个时间窗口
+							var faultLabel string
+							for _, f := range masterConfig.Rule158 {
+								faultLabel = f(data)
+								if faultLabel != "" {
+									if !canCollect() {
+										break
+									}
+									subscribersTimes[i] = time.Now()
+									c_log.GlobalLogger.Errorf("触发事件【xxx】,开始采集。", faultLabel)
+									saveTimeWindow(faultLabel, faultHappenTime, lastTimeWindow)
+									break
+								}
+							}
+							subscribersMutexes[i].Unlock()
+						}
+						subscribersTimeMutexes[i].Unlock()
+					},
+				})
+				if err == nil {
+					create = true
+				}
+			}
+			if topic == masterConfig.Topic159 && len(masterConfig.Rule159) > 0 {
+				subscribers[i], err = goroslib.NewSubscriber(goroslib.SubscriberConf{
+					Node:  commonConfig.RosNode,
+					Topic: topic,
+					Callback: func(data *dynamic_reconfigure.ConfigDescription) {
+						subscribersTimeMutexes[i].Lock()
+						if time.Since(subscribersTimes[i]).Seconds() > triggerInterval {
+							subscribersMutexes[i].Lock()
+							faultHappenTime := commonUtil.GetNowTimeCustom() // 获取当前故障发生时间
+							lastTimeWindow := entity.GetLastTimeWindow()     // 获取最后一个时间窗口
+							var faultLabel string
+							for _, f := range masterConfig.Rule159 {
+								faultLabel = f(data)
+								if faultLabel != "" {
+									if !canCollect() {
+										break
+									}
+									subscribersTimes[i] = time.Now()
+									c_log.GlobalLogger.Errorf("触发事件【xxx】,开始采集。", faultLabel)
+									saveTimeWindow(faultLabel, faultHappenTime, lastTimeWindow)
+									break
+								}
+							}
+							subscribersMutexes[i].Unlock()
+						}
+						subscribersTimeMutexes[i].Unlock()
+					},
+				})
+				if err == nil {
+					create = true
+				}
+			}
+			if topic == masterConfig.Topic160 && len(masterConfig.Rule160) > 0 {
+				subscribers[i], err = goroslib.NewSubscriber(goroslib.SubscriberConf{
+					Node:  commonConfig.RosNode,
+					Topic: topic,
+					Callback: func(data *dynamic_reconfigure.Config) {
+						subscribersTimeMutexes[i].Lock()
+						if time.Since(subscribersTimes[i]).Seconds() > triggerInterval {
+							subscribersMutexes[i].Lock()
+							faultHappenTime := commonUtil.GetNowTimeCustom() // 获取当前故障发生时间
+							lastTimeWindow := entity.GetLastTimeWindow()     // 获取最后一个时间窗口
+							var faultLabel string
+							for _, f := range masterConfig.Rule160 {
+								faultLabel = f(data)
+								if faultLabel != "" {
+									if !canCollect() {
+										break
+									}
+									subscribersTimes[i] = time.Now()
+									c_log.GlobalLogger.Errorf("触发事件【xxx】,开始采集。", faultLabel)
+									saveTimeWindow(faultLabel, faultHappenTime, lastTimeWindow)
+									break
+								}
+							}
+							subscribersMutexes[i].Unlock()
+						}
+						subscribersTimeMutexes[i].Unlock()
+					},
+				})
+				if err == nil {
+					create = true
+				}
+			}
+			if topic == masterConfig.Topic161 && len(masterConfig.Rule161) > 0 {
+				subscribers[i], err = goroslib.NewSubscriber(goroslib.SubscriberConf{
+					Node:  commonConfig.RosNode,
+					Topic: topic,
+					Callback: func(data *theora_image_transport.Packet) {
+						subscribersTimeMutexes[i].Lock()
+						if time.Since(subscribersTimes[i]).Seconds() > triggerInterval {
+							subscribersMutexes[i].Lock()
+							faultHappenTime := commonUtil.GetNowTimeCustom() // 获取当前故障发生时间
+							lastTimeWindow := entity.GetLastTimeWindow()     // 获取最后一个时间窗口
+							var faultLabel string
+							for _, f := range masterConfig.Rule161 {
+								faultLabel = f(data)
+								if faultLabel != "" {
+									if !canCollect() {
+										break
+									}
+									subscribersTimes[i] = time.Now()
+									c_log.GlobalLogger.Errorf("触发事件【xxx】,开始采集。", faultLabel)
+									saveTimeWindow(faultLabel, faultHappenTime, lastTimeWindow)
+									break
+								}
+							}
+							subscribersMutexes[i].Unlock()
+						}
+						subscribersTimeMutexes[i].Unlock()
+					},
+				})
+				if err == nil {
+					create = true
+				}
+			}
+			if topic == masterConfig.Topic162 && len(masterConfig.Rule162) > 0 {
+				subscribers[i], err = goroslib.NewSubscriber(goroslib.SubscriberConf{
+					Node:  commonConfig.RosNode,
+					Topic: topic,
+					Callback: func(data *dynamic_reconfigure.ConfigDescription) {
+						subscribersTimeMutexes[i].Lock()
+						if time.Since(subscribersTimes[i]).Seconds() > triggerInterval {
+							subscribersMutexes[i].Lock()
+							faultHappenTime := commonUtil.GetNowTimeCustom() // 获取当前故障发生时间
+							lastTimeWindow := entity.GetLastTimeWindow()     // 获取最后一个时间窗口
+							var faultLabel string
+							for _, f := range masterConfig.Rule162 {
+								faultLabel = f(data)
+								if faultLabel != "" {
+									if !canCollect() {
+										break
+									}
+									subscribersTimes[i] = time.Now()
+									c_log.GlobalLogger.Errorf("触发事件【xxx】,开始采集。", faultLabel)
+									saveTimeWindow(faultLabel, faultHappenTime, lastTimeWindow)
+									break
+								}
+							}
+							subscribersMutexes[i].Unlock()
+						}
+						subscribersTimeMutexes[i].Unlock()
+					},
+				})
+				if err == nil {
+					create = true
+				}
+			}
+			if topic == masterConfig.Topic163 && len(masterConfig.Rule163) > 0 {
+				subscribers[i], err = goroslib.NewSubscriber(goroslib.SubscriberConf{
+					Node:  commonConfig.RosNode,
+					Topic: topic,
+					Callback: func(data *dynamic_reconfigure.Config) {
+						subscribersTimeMutexes[i].Lock()
+						if time.Since(subscribersTimes[i]).Seconds() > triggerInterval {
+							subscribersMutexes[i].Lock()
+							faultHappenTime := commonUtil.GetNowTimeCustom() // 获取当前故障发生时间
+							lastTimeWindow := entity.GetLastTimeWindow()     // 获取最后一个时间窗口
+							var faultLabel string
+							for _, f := range masterConfig.Rule163 {
+								faultLabel = f(data)
+								if faultLabel != "" {
+									if !canCollect() {
+										break
+									}
+									subscribersTimes[i] = time.Now()
+									c_log.GlobalLogger.Errorf("触发事件【xxx】,开始采集。", faultLabel)
+									saveTimeWindow(faultLabel, faultHappenTime, lastTimeWindow)
+									break
+								}
+							}
+							subscribersMutexes[i].Unlock()
+						}
+						subscribersTimeMutexes[i].Unlock()
+					},
+				})
+				if err == nil {
+					create = true
+				}
+			}
+			if topic == masterConfig.Topic164 && len(masterConfig.Rule164) > 0 {
+				subscribers[i], err = goroslib.NewSubscriber(goroslib.SubscriberConf{
+					Node:  commonConfig.RosNode,
+					Topic: topic,
+					Callback: func(data *sensor_msgs.CameraInfo) {
+						subscribersTimeMutexes[i].Lock()
+						if time.Since(subscribersTimes[i]).Seconds() > triggerInterval {
+							subscribersMutexes[i].Lock()
+							faultHappenTime := commonUtil.GetNowTimeCustom() // 获取当前故障发生时间
+							lastTimeWindow := entity.GetLastTimeWindow()     // 获取最后一个时间窗口
+							var faultLabel string
+							for _, f := range masterConfig.Rule164 {
+								faultLabel = f(data)
+								if faultLabel != "" {
+									if !canCollect() {
+										break
+									}
+									subscribersTimes[i] = time.Now()
+									c_log.GlobalLogger.Errorf("触发事件【xxx】,开始采集。", faultLabel)
+									saveTimeWindow(faultLabel, faultHappenTime, lastTimeWindow)
+									break
+								}
+							}
+							subscribersMutexes[i].Unlock()
+						}
+						subscribersTimeMutexes[i].Unlock()
+					},
+				})
+				if err == nil {
+					create = true
+				}
+			}
+			if topic == masterConfig.Topic165 && len(masterConfig.Rule165) > 0 {
+				subscribers[i], err = goroslib.NewSubscriber(goroslib.SubscriberConf{
+					Node:  commonConfig.RosNode,
+					Topic: topic,
+					Callback: func(data *sensor_msgs.Image) {
+						subscribersTimeMutexes[i].Lock()
+						if time.Since(subscribersTimes[i]).Seconds() > triggerInterval {
+							subscribersMutexes[i].Lock()
+							faultHappenTime := commonUtil.GetNowTimeCustom() // 获取当前故障发生时间
+							lastTimeWindow := entity.GetLastTimeWindow()     // 获取最后一个时间窗口
+							var faultLabel string
+							for _, f := range masterConfig.Rule165 {
+								faultLabel = f(data)
+								if faultLabel != "" {
+									if !canCollect() {
+										break
+									}
+									subscribersTimes[i] = time.Now()
+									c_log.GlobalLogger.Errorf("触发事件【xxx】,开始采集。", faultLabel)
+									saveTimeWindow(faultLabel, faultHappenTime, lastTimeWindow)
+									break
+								}
+							}
+							subscribersMutexes[i].Unlock()
+						}
+						subscribersTimeMutexes[i].Unlock()
+					},
+				})
+				if err == nil {
+					create = true
+				}
+			}
+			if topic == masterConfig.Topic166 && len(masterConfig.Rule166) > 0 {
+				subscribers[i], err = goroslib.NewSubscriber(goroslib.SubscriberConf{
+					Node:  commonConfig.RosNode,
+					Topic: topic,
+					Callback: func(data *sensor_msgs.CompressedImage) {
+						subscribersTimeMutexes[i].Lock()
+						if time.Since(subscribersTimes[i]).Seconds() > triggerInterval {
+							subscribersMutexes[i].Lock()
+							faultHappenTime := commonUtil.GetNowTimeCustom() // 获取当前故障发生时间
+							lastTimeWindow := entity.GetLastTimeWindow()     // 获取最后一个时间窗口
+							var faultLabel string
+							for _, f := range masterConfig.Rule166 {
+								faultLabel = f(data)
+								if faultLabel != "" {
+									if !canCollect() {
+										break
+									}
+									subscribersTimes[i] = time.Now()
+									c_log.GlobalLogger.Errorf("触发事件【xxx】,开始采集。", faultLabel)
+									saveTimeWindow(faultLabel, faultHappenTime, lastTimeWindow)
+									break
+								}
+							}
+							subscribersMutexes[i].Unlock()
+						}
+						subscribersTimeMutexes[i].Unlock()
+					},
+				})
+				if err == nil {
+					create = true
+				}
+			}
+			if topic == masterConfig.Topic167 && len(masterConfig.Rule167) > 0 {
+				subscribers[i], err = goroslib.NewSubscriber(goroslib.SubscriberConf{
+					Node:  commonConfig.RosNode,
+					Topic: topic,
+					Callback: func(data *dynamic_reconfigure.ConfigDescription) {
+						subscribersTimeMutexes[i].Lock()
+						if time.Since(subscribersTimes[i]).Seconds() > triggerInterval {
+							subscribersMutexes[i].Lock()
+							faultHappenTime := commonUtil.GetNowTimeCustom() // 获取当前故障发生时间
+							lastTimeWindow := entity.GetLastTimeWindow()     // 获取最后一个时间窗口
+							var faultLabel string
+							for _, f := range masterConfig.Rule167 {
+								faultLabel = f(data)
+								if faultLabel != "" {
+									if !canCollect() {
+										break
+									}
+									subscribersTimes[i] = time.Now()
+									c_log.GlobalLogger.Errorf("触发事件【xxx】,开始采集。", faultLabel)
+									saveTimeWindow(faultLabel, faultHappenTime, lastTimeWindow)
+									break
+								}
+							}
+							subscribersMutexes[i].Unlock()
+						}
+						subscribersTimeMutexes[i].Unlock()
+					},
+				})
+				if err == nil {
+					create = true
+				}
+			}
+			if topic == masterConfig.Topic168 && len(masterConfig.Rule168) > 0 {
+				subscribers[i], err = goroslib.NewSubscriber(goroslib.SubscriberConf{
+					Node:  commonConfig.RosNode,
+					Topic: topic,
+					Callback: func(data *dynamic_reconfigure.Config) {
+						subscribersTimeMutexes[i].Lock()
+						if time.Since(subscribersTimes[i]).Seconds() > triggerInterval {
+							subscribersMutexes[i].Lock()
+							faultHappenTime := commonUtil.GetNowTimeCustom() // 获取当前故障发生时间
+							lastTimeWindow := entity.GetLastTimeWindow()     // 获取最后一个时间窗口
+							var faultLabel string
+							for _, f := range masterConfig.Rule168 {
+								faultLabel = f(data)
+								if faultLabel != "" {
+									if !canCollect() {
+										break
+									}
+									subscribersTimes[i] = time.Now()
+									c_log.GlobalLogger.Errorf("触发事件【xxx】,开始采集。", faultLabel)
+									saveTimeWindow(faultLabel, faultHappenTime, lastTimeWindow)
+									break
+								}
+							}
+							subscribersMutexes[i].Unlock()
+						}
+						subscribersTimeMutexes[i].Unlock()
+					},
+				})
+				if err == nil {
+					create = true
+				}
+			}
+			if topic == masterConfig.Topic169 && len(masterConfig.Rule169) > 0 {
+				subscribers[i], err = goroslib.NewSubscriber(goroslib.SubscriberConf{
+					Node:  commonConfig.RosNode,
+					Topic: topic,
+					Callback: func(data *sensor_msgs.CompressedImage) {
+						subscribersTimeMutexes[i].Lock()
+						if time.Since(subscribersTimes[i]).Seconds() > triggerInterval {
+							subscribersMutexes[i].Lock()
+							faultHappenTime := commonUtil.GetNowTimeCustom() // 获取当前故障发生时间
+							lastTimeWindow := entity.GetLastTimeWindow()     // 获取最后一个时间窗口
+							var faultLabel string
+							for _, f := range masterConfig.Rule169 {
+								faultLabel = f(data)
+								if faultLabel != "" {
+									if !canCollect() {
+										break
+									}
+									subscribersTimes[i] = time.Now()
+									c_log.GlobalLogger.Errorf("触发事件【xxx】,开始采集。", faultLabel)
+									saveTimeWindow(faultLabel, faultHappenTime, lastTimeWindow)
+									break
+								}
+							}
+							subscribersMutexes[i].Unlock()
+						}
+						subscribersTimeMutexes[i].Unlock()
+					},
+				})
+				if err == nil {
+					create = true
+				}
+			}
+			if topic == masterConfig.Topic170 && len(masterConfig.Rule170) > 0 {
+				subscribers[i], err = goroslib.NewSubscriber(goroslib.SubscriberConf{
+					Node:  commonConfig.RosNode,
+					Topic: topic,
+					Callback: func(data *dynamic_reconfigure.ConfigDescription) {
+						subscribersTimeMutexes[i].Lock()
+						if time.Since(subscribersTimes[i]).Seconds() > triggerInterval {
+							subscribersMutexes[i].Lock()
+							faultHappenTime := commonUtil.GetNowTimeCustom() // 获取当前故障发生时间
+							lastTimeWindow := entity.GetLastTimeWindow()     // 获取最后一个时间窗口
+							var faultLabel string
+							for _, f := range masterConfig.Rule170 {
+								faultLabel = f(data)
+								if faultLabel != "" {
+									if !canCollect() {
+										break
+									}
+									subscribersTimes[i] = time.Now()
+									c_log.GlobalLogger.Errorf("触发事件【xxx】,开始采集。", faultLabel)
+									saveTimeWindow(faultLabel, faultHappenTime, lastTimeWindow)
+									break
+								}
+							}
+							subscribersMutexes[i].Unlock()
+						}
+						subscribersTimeMutexes[i].Unlock()
+					},
+				})
+				if err == nil {
+					create = true
+				}
+			}
+			if topic == masterConfig.Topic171 && len(masterConfig.Rule171) > 0 {
+				subscribers[i], err = goroslib.NewSubscriber(goroslib.SubscriberConf{
+					Node:  commonConfig.RosNode,
+					Topic: topic,
+					Callback: func(data *dynamic_reconfigure.Config) {
+						subscribersTimeMutexes[i].Lock()
+						if time.Since(subscribersTimes[i]).Seconds() > triggerInterval {
+							subscribersMutexes[i].Lock()
+							faultHappenTime := commonUtil.GetNowTimeCustom() // 获取当前故障发生时间
+							lastTimeWindow := entity.GetLastTimeWindow()     // 获取最后一个时间窗口
+							var faultLabel string
+							for _, f := range masterConfig.Rule171 {
+								faultLabel = f(data)
+								if faultLabel != "" {
+									if !canCollect() {
+										break
+									}
+									subscribersTimes[i] = time.Now()
+									c_log.GlobalLogger.Errorf("触发事件【xxx】,开始采集。", faultLabel)
+									saveTimeWindow(faultLabel, faultHappenTime, lastTimeWindow)
+									break
+								}
+							}
+							subscribersMutexes[i].Unlock()
+						}
+						subscribersTimeMutexes[i].Unlock()
+					},
+				})
+				if err == nil {
+					create = true
+				}
+			}
+			if topic == masterConfig.Topic172 && len(masterConfig.Rule172) > 0 {
+				subscribers[i], err = goroslib.NewSubscriber(goroslib.SubscriberConf{
+					Node:  commonConfig.RosNode,
+					Topic: topic,
+					Callback: func(data *theora_image_transport.Packet) {
+						subscribersTimeMutexes[i].Lock()
+						if time.Since(subscribersTimes[i]).Seconds() > triggerInterval {
+							subscribersMutexes[i].Lock()
+							faultHappenTime := commonUtil.GetNowTimeCustom() // 获取当前故障发生时间
+							lastTimeWindow := entity.GetLastTimeWindow()     // 获取最后一个时间窗口
+							var faultLabel string
+							for _, f := range masterConfig.Rule172 {
+								faultLabel = f(data)
+								if faultLabel != "" {
+									if !canCollect() {
+										break
+									}
+									subscribersTimes[i] = time.Now()
+									c_log.GlobalLogger.Errorf("触发事件【xxx】,开始采集。", faultLabel)
+									saveTimeWindow(faultLabel, faultHappenTime, lastTimeWindow)
+									break
+								}
+							}
+							subscribersMutexes[i].Unlock()
+						}
+						subscribersTimeMutexes[i].Unlock()
+					},
+				})
+				if err == nil {
+					create = true
+				}
+			}
+			if topic == masterConfig.Topic173 && len(masterConfig.Rule173) > 0 {
+				subscribers[i], err = goroslib.NewSubscriber(goroslib.SubscriberConf{
+					Node:  commonConfig.RosNode,
+					Topic: topic,
+					Callback: func(data *dynamic_reconfigure.ConfigDescription) {
+						subscribersTimeMutexes[i].Lock()
+						if time.Since(subscribersTimes[i]).Seconds() > triggerInterval {
+							subscribersMutexes[i].Lock()
+							faultHappenTime := commonUtil.GetNowTimeCustom() // 获取当前故障发生时间
+							lastTimeWindow := entity.GetLastTimeWindow()     // 获取最后一个时间窗口
+							var faultLabel string
+							for _, f := range masterConfig.Rule173 {
+								faultLabel = f(data)
+								if faultLabel != "" {
+									if !canCollect() {
+										break
+									}
+									subscribersTimes[i] = time.Now()
+									c_log.GlobalLogger.Errorf("触发事件【xxx】,开始采集。", faultLabel)
+									saveTimeWindow(faultLabel, faultHappenTime, lastTimeWindow)
+									break
+								}
+							}
+							subscribersMutexes[i].Unlock()
+						}
+						subscribersTimeMutexes[i].Unlock()
+					},
+				})
+				if err == nil {
+					create = true
+				}
+			}
+			if topic == masterConfig.Topic174 && len(masterConfig.Rule174) > 0 {
+				subscribers[i], err = goroslib.NewSubscriber(goroslib.SubscriberConf{
+					Node:  commonConfig.RosNode,
+					Topic: topic,
+					Callback: func(data *dynamic_reconfigure.Config) {
+						subscribersTimeMutexes[i].Lock()
+						if time.Since(subscribersTimes[i]).Seconds() > triggerInterval {
+							subscribersMutexes[i].Lock()
+							faultHappenTime := commonUtil.GetNowTimeCustom() // 获取当前故障发生时间
+							lastTimeWindow := entity.GetLastTimeWindow()     // 获取最后一个时间窗口
+							var faultLabel string
+							for _, f := range masterConfig.Rule174 {
+								faultLabel = f(data)
+								if faultLabel != "" {
+									if !canCollect() {
+										break
+									}
+									subscribersTimes[i] = time.Now()
+									c_log.GlobalLogger.Errorf("触发事件【xxx】,开始采集。", faultLabel)
+									saveTimeWindow(faultLabel, faultHappenTime, lastTimeWindow)
+									break
+								}
+							}
+							subscribersMutexes[i].Unlock()
+						}
+						subscribersTimeMutexes[i].Unlock()
+					},
+				})
+				if err == nil {
+					create = true
+				}
+			}
+			if topic == masterConfig.Topic175 && len(masterConfig.Rule175) > 0 {
+				subscribers[i], err = goroslib.NewSubscriber(goroslib.SubscriberConf{
+					Node:  commonConfig.RosNode,
+					Topic: topic,
+					Callback: func(data *sensor_msgs.PointCloud2) {
+						subscribersTimeMutexes[i].Lock()
+						if time.Since(subscribersTimes[i]).Seconds() > triggerInterval {
+							subscribersMutexes[i].Lock()
+							faultHappenTime := commonUtil.GetNowTimeCustom() // 获取当前故障发生时间
+							lastTimeWindow := entity.GetLastTimeWindow()     // 获取最后一个时间窗口
+							var faultLabel string
+							for _, f := range masterConfig.Rule175 {
+								faultLabel = f(data)
+								if faultLabel != "" {
+									if !canCollect() {
+										break
+									}
+									subscribersTimes[i] = time.Now()
+									c_log.GlobalLogger.Errorf("触发事件【xxx】,开始采集。", faultLabel)
+									saveTimeWindow(faultLabel, faultHappenTime, lastTimeWindow)
+									break
+								}
+							}
+							subscribersMutexes[i].Unlock()
+						}
+						subscribersTimeMutexes[i].Unlock()
+					},
+				})
+				if err == nil {
+					create = true
+				}
+			}
+			if topic == masterConfig.Topic176 && len(masterConfig.Rule176) > 0 {
+				subscribers[i], err = goroslib.NewSubscriber(goroslib.SubscriberConf{
+					Node:  commonConfig.RosNode,
+					Topic: topic,
+					Callback: func(data *sensor_msgs.CameraInfo) {
+						subscribersTimeMutexes[i].Lock()
+						if time.Since(subscribersTimes[i]).Seconds() > triggerInterval {
+							subscribersMutexes[i].Lock()
+							faultHappenTime := commonUtil.GetNowTimeCustom() // 获取当前故障发生时间
+							lastTimeWindow := entity.GetLastTimeWindow()     // 获取最后一个时间窗口
+							var faultLabel string
+							for _, f := range masterConfig.Rule176 {
+								faultLabel = f(data)
+								if faultLabel != "" {
+									if !canCollect() {
+										break
+									}
+									subscribersTimes[i] = time.Now()
+									c_log.GlobalLogger.Errorf("触发事件【xxx】,开始采集。", faultLabel)
+									saveTimeWindow(faultLabel, faultHappenTime, lastTimeWindow)
+									break
+								}
+							}
+							subscribersMutexes[i].Unlock()
+						}
+						subscribersTimeMutexes[i].Unlock()
+					},
+				})
+				if err == nil {
+					create = true
+				}
+			}
+			if topic == masterConfig.Topic177 && len(masterConfig.Rule177) > 0 {
+				subscribers[i], err = goroslib.NewSubscriber(goroslib.SubscriberConf{
+					Node:  commonConfig.RosNode,
+					Topic: topic,
+					Callback: func(data *sensor_msgs.Image) {
+						subscribersTimeMutexes[i].Lock()
+						if time.Since(subscribersTimes[i]).Seconds() > triggerInterval {
+							subscribersMutexes[i].Lock()
+							faultHappenTime := commonUtil.GetNowTimeCustom() // 获取当前故障发生时间
+							lastTimeWindow := entity.GetLastTimeWindow()     // 获取最后一个时间窗口
+							var faultLabel string
+							for _, f := range masterConfig.Rule177 {
+								faultLabel = f(data)
+								if faultLabel != "" {
+									if !canCollect() {
+										break
+									}
+									subscribersTimes[i] = time.Now()
+									c_log.GlobalLogger.Errorf("触发事件【xxx】,开始采集。", faultLabel)
+									saveTimeWindow(faultLabel, faultHappenTime, lastTimeWindow)
+									break
+								}
+							}
+							subscribersMutexes[i].Unlock()
+						}
+						subscribersTimeMutexes[i].Unlock()
+					},
+				})
+				if err == nil {
+					create = true
+				}
+			}
+			if topic == masterConfig.Topic178 && len(masterConfig.Rule178) > 0 {
+				subscribers[i], err = goroslib.NewSubscriber(goroslib.SubscriberConf{
+					Node:  commonConfig.RosNode,
+					Topic: topic,
+					Callback: func(data *sensor_msgs.CompressedImage) {
+						subscribersTimeMutexes[i].Lock()
+						if time.Since(subscribersTimes[i]).Seconds() > triggerInterval {
+							subscribersMutexes[i].Lock()
+							faultHappenTime := commonUtil.GetNowTimeCustom() // 获取当前故障发生时间
+							lastTimeWindow := entity.GetLastTimeWindow()     // 获取最后一个时间窗口
+							var faultLabel string
+							for _, f := range masterConfig.Rule178 {
+								faultLabel = f(data)
+								if faultLabel != "" {
+									if !canCollect() {
+										break
+									}
+									subscribersTimes[i] = time.Now()
+									c_log.GlobalLogger.Errorf("触发事件【xxx】,开始采集。", faultLabel)
+									saveTimeWindow(faultLabel, faultHappenTime, lastTimeWindow)
+									break
+								}
+							}
+							subscribersMutexes[i].Unlock()
+						}
+						subscribersTimeMutexes[i].Unlock()
+					},
+				})
+				if err == nil {
+					create = true
+				}
+			}
+			if topic == masterConfig.Topic179 && len(masterConfig.Rule179) > 0 {
+				subscribers[i], err = goroslib.NewSubscriber(goroslib.SubscriberConf{
+					Node:  commonConfig.RosNode,
+					Topic: topic,
+					Callback: func(data *dynamic_reconfigure.ConfigDescription) {
+						subscribersTimeMutexes[i].Lock()
+						if time.Since(subscribersTimes[i]).Seconds() > triggerInterval {
+							subscribersMutexes[i].Lock()
+							faultHappenTime := commonUtil.GetNowTimeCustom() // 获取当前故障发生时间
+							lastTimeWindow := entity.GetLastTimeWindow()     // 获取最后一个时间窗口
+							var faultLabel string
+							for _, f := range masterConfig.Rule179 {
+								faultLabel = f(data)
+								if faultLabel != "" {
+									if !canCollect() {
+										break
+									}
+									subscribersTimes[i] = time.Now()
+									c_log.GlobalLogger.Errorf("触发事件【xxx】,开始采集。", faultLabel)
+									saveTimeWindow(faultLabel, faultHappenTime, lastTimeWindow)
+									break
+								}
+							}
+							subscribersMutexes[i].Unlock()
+						}
+						subscribersTimeMutexes[i].Unlock()
+					},
+				})
+				if err == nil {
+					create = true
+				}
+			}
+			if topic == masterConfig.Topic180 && len(masterConfig.Rule180) > 0 {
+				subscribers[i], err = goroslib.NewSubscriber(goroslib.SubscriberConf{
+					Node:  commonConfig.RosNode,
+					Topic: topic,
+					Callback: func(data *dynamic_reconfigure.Config) {
+						subscribersTimeMutexes[i].Lock()
+						if time.Since(subscribersTimes[i]).Seconds() > triggerInterval {
+							subscribersMutexes[i].Lock()
+							faultHappenTime := commonUtil.GetNowTimeCustom() // 获取当前故障发生时间
+							lastTimeWindow := entity.GetLastTimeWindow()     // 获取最后一个时间窗口
+							var faultLabel string
+							for _, f := range masterConfig.Rule180 {
+								faultLabel = f(data)
+								if faultLabel != "" {
+									if !canCollect() {
+										break
+									}
+									subscribersTimes[i] = time.Now()
+									c_log.GlobalLogger.Errorf("触发事件【xxx】,开始采集。", faultLabel)
+									saveTimeWindow(faultLabel, faultHappenTime, lastTimeWindow)
+									break
+								}
+							}
+							subscribersMutexes[i].Unlock()
+						}
+						subscribersTimeMutexes[i].Unlock()
+					},
+				})
+				if err == nil {
+					create = true
+				}
+			}
+			if topic == masterConfig.Topic181 && len(masterConfig.Rule181) > 0 {
+				subscribers[i], err = goroslib.NewSubscriber(goroslib.SubscriberConf{
+					Node:  commonConfig.RosNode,
+					Topic: topic,
+					Callback: func(data *sensor_msgs.CompressedImage) {
+						subscribersTimeMutexes[i].Lock()
+						if time.Since(subscribersTimes[i]).Seconds() > triggerInterval {
+							subscribersMutexes[i].Lock()
+							faultHappenTime := commonUtil.GetNowTimeCustom() // 获取当前故障发生时间
+							lastTimeWindow := entity.GetLastTimeWindow()     // 获取最后一个时间窗口
+							var faultLabel string
+							for _, f := range masterConfig.Rule181 {
+								faultLabel = f(data)
+								if faultLabel != "" {
+									if !canCollect() {
+										break
+									}
+									subscribersTimes[i] = time.Now()
+									c_log.GlobalLogger.Errorf("触发事件【xxx】,开始采集。", faultLabel)
+									saveTimeWindow(faultLabel, faultHappenTime, lastTimeWindow)
+									break
+								}
+							}
+							subscribersMutexes[i].Unlock()
+						}
+						subscribersTimeMutexes[i].Unlock()
+					},
+				})
+				if err == nil {
+					create = true
+				}
+			}
+			if topic == masterConfig.Topic182 && len(masterConfig.Rule182) > 0 {
+				subscribers[i], err = goroslib.NewSubscriber(goroslib.SubscriberConf{
+					Node:  commonConfig.RosNode,
+					Topic: topic,
+					Callback: func(data *dynamic_reconfigure.ConfigDescription) {
+						subscribersTimeMutexes[i].Lock()
+						if time.Since(subscribersTimes[i]).Seconds() > triggerInterval {
+							subscribersMutexes[i].Lock()
+							faultHappenTime := commonUtil.GetNowTimeCustom() // 获取当前故障发生时间
+							lastTimeWindow := entity.GetLastTimeWindow()     // 获取最后一个时间窗口
+							var faultLabel string
+							for _, f := range masterConfig.Rule182 {
+								faultLabel = f(data)
+								if faultLabel != "" {
+									if !canCollect() {
+										break
+									}
+									subscribersTimes[i] = time.Now()
+									c_log.GlobalLogger.Errorf("触发事件【xxx】,开始采集。", faultLabel)
+									saveTimeWindow(faultLabel, faultHappenTime, lastTimeWindow)
+									break
+								}
+							}
+							subscribersMutexes[i].Unlock()
+						}
+						subscribersTimeMutexes[i].Unlock()
+					},
+				})
+				if err == nil {
+					create = true
+				}
+			}
+			if topic == masterConfig.Topic183 && len(masterConfig.Rule183) > 0 {
+				subscribers[i], err = goroslib.NewSubscriber(goroslib.SubscriberConf{
+					Node:  commonConfig.RosNode,
+					Topic: topic,
+					Callback: func(data *dynamic_reconfigure.Config) {
+						subscribersTimeMutexes[i].Lock()
+						if time.Since(subscribersTimes[i]).Seconds() > triggerInterval {
+							subscribersMutexes[i].Lock()
+							faultHappenTime := commonUtil.GetNowTimeCustom() // 获取当前故障发生时间
+							lastTimeWindow := entity.GetLastTimeWindow()     // 获取最后一个时间窗口
+							var faultLabel string
+							for _, f := range masterConfig.Rule183 {
+								faultLabel = f(data)
+								if faultLabel != "" {
+									if !canCollect() {
+										break
+									}
+									subscribersTimes[i] = time.Now()
+									c_log.GlobalLogger.Errorf("触发事件【xxx】,开始采集。", faultLabel)
+									saveTimeWindow(faultLabel, faultHappenTime, lastTimeWindow)
+									break
+								}
+							}
+							subscribersMutexes[i].Unlock()
+						}
+						subscribersTimeMutexes[i].Unlock()
+					},
+				})
+				if err == nil {
+					create = true
+				}
+			}
+			if topic == masterConfig.Topic184 && len(masterConfig.Rule184) > 0 {
+				subscribers[i], err = goroslib.NewSubscriber(goroslib.SubscriberConf{
+					Node:  commonConfig.RosNode,
+					Topic: topic,
+					Callback: func(data *theora_image_transport.Packet) {
+						subscribersTimeMutexes[i].Lock()
+						if time.Since(subscribersTimes[i]).Seconds() > triggerInterval {
+							subscribersMutexes[i].Lock()
+							faultHappenTime := commonUtil.GetNowTimeCustom() // 获取当前故障发生时间
+							lastTimeWindow := entity.GetLastTimeWindow()     // 获取最后一个时间窗口
+							var faultLabel string
+							for _, f := range masterConfig.Rule184 {
+								faultLabel = f(data)
+								if faultLabel != "" {
+									if !canCollect() {
+										break
+									}
+									subscribersTimes[i] = time.Now()
+									c_log.GlobalLogger.Errorf("触发事件【xxx】,开始采集。", faultLabel)
+									saveTimeWindow(faultLabel, faultHappenTime, lastTimeWindow)
+									break
+								}
+							}
+							subscribersMutexes[i].Unlock()
+						}
+						subscribersTimeMutexes[i].Unlock()
+					},
+				})
+				if err == nil {
+					create = true
+				}
+			}
+			if topic == masterConfig.Topic185 && len(masterConfig.Rule185) > 0 {
+				subscribers[i], err = goroslib.NewSubscriber(goroslib.SubscriberConf{
+					Node:  commonConfig.RosNode,
+					Topic: topic,
+					Callback: func(data *dynamic_reconfigure.ConfigDescription) {
+						subscribersTimeMutexes[i].Lock()
+						if time.Since(subscribersTimes[i]).Seconds() > triggerInterval {
+							subscribersMutexes[i].Lock()
+							faultHappenTime := commonUtil.GetNowTimeCustom() // 获取当前故障发生时间
+							lastTimeWindow := entity.GetLastTimeWindow()     // 获取最后一个时间窗口
+							var faultLabel string
+							for _, f := range masterConfig.Rule185 {
+								faultLabel = f(data)
+								if faultLabel != "" {
+									if !canCollect() {
+										break
+									}
+									subscribersTimes[i] = time.Now()
+									c_log.GlobalLogger.Errorf("触发事件【xxx】,开始采集。", faultLabel)
+									saveTimeWindow(faultLabel, faultHappenTime, lastTimeWindow)
+									break
+								}
+							}
+							subscribersMutexes[i].Unlock()
+						}
+						subscribersTimeMutexes[i].Unlock()
+					},
+				})
+				if err == nil {
+					create = true
+				}
+			}
+			if topic == masterConfig.Topic186 && len(masterConfig.Rule186) > 0 {
+				subscribers[i], err = goroslib.NewSubscriber(goroslib.SubscriberConf{
+					Node:  commonConfig.RosNode,
+					Topic: topic,
+					Callback: func(data *dynamic_reconfigure.Config) {
+						subscribersTimeMutexes[i].Lock()
+						if time.Since(subscribersTimes[i]).Seconds() > triggerInterval {
+							subscribersMutexes[i].Lock()
+							faultHappenTime := commonUtil.GetNowTimeCustom() // 获取当前故障发生时间
+							lastTimeWindow := entity.GetLastTimeWindow()     // 获取最后一个时间窗口
+							var faultLabel string
+							for _, f := range masterConfig.Rule186 {
+								faultLabel = f(data)
+								if faultLabel != "" {
+									if !canCollect() {
+										break
+									}
+									subscribersTimes[i] = time.Now()
+									c_log.GlobalLogger.Errorf("触发事件【xxx】,开始采集。", faultLabel)
+									saveTimeWindow(faultLabel, faultHappenTime, lastTimeWindow)
+									break
+								}
+							}
+							subscribersMutexes[i].Unlock()
+						}
+						subscribersTimeMutexes[i].Unlock()
+					},
+				})
+				if err == nil {
+					create = true
+				}
+			}
+			if topic == masterConfig.Topic187 && len(masterConfig.Rule187) > 0 {
+				subscribers[i], err = goroslib.NewSubscriber(goroslib.SubscriberConf{
+					Node:  commonConfig.RosNode,
+					Topic: topic,
+					Callback: func(data *sensor_msgs.CameraInfo) {
+						subscribersTimeMutexes[i].Lock()
+						if time.Since(subscribersTimes[i]).Seconds() > triggerInterval {
+							subscribersMutexes[i].Lock()
+							faultHappenTime := commonUtil.GetNowTimeCustom() // 获取当前故障发生时间
+							lastTimeWindow := entity.GetLastTimeWindow()     // 获取最后一个时间窗口
+							var faultLabel string
+							for _, f := range masterConfig.Rule187 {
+								faultLabel = f(data)
+								if faultLabel != "" {
+									if !canCollect() {
+										break
+									}
+									subscribersTimes[i] = time.Now()
+									c_log.GlobalLogger.Errorf("触发事件【xxx】,开始采集。", faultLabel)
+									saveTimeWindow(faultLabel, faultHappenTime, lastTimeWindow)
+									break
+								}
+							}
+							subscribersMutexes[i].Unlock()
+						}
+						subscribersTimeMutexes[i].Unlock()
+					},
+				})
+				if err == nil {
+					create = true
+				}
+			}
+			if topic == masterConfig.Topic188 && len(masterConfig.Rule188) > 0 {
+				subscribers[i], err = goroslib.NewSubscriber(goroslib.SubscriberConf{
+					Node:  commonConfig.RosNode,
+					Topic: topic,
+					Callback: func(data *sensor_msgs.Image) {
+						subscribersTimeMutexes[i].Lock()
+						if time.Since(subscribersTimes[i]).Seconds() > triggerInterval {
+							subscribersMutexes[i].Lock()
+							faultHappenTime := commonUtil.GetNowTimeCustom() // 获取当前故障发生时间
+							lastTimeWindow := entity.GetLastTimeWindow()     // 获取最后一个时间窗口
+							var faultLabel string
+							for _, f := range masterConfig.Rule188 {
+								faultLabel = f(data)
+								if faultLabel != "" {
+									if !canCollect() {
+										break
+									}
+									subscribersTimes[i] = time.Now()
+									c_log.GlobalLogger.Errorf("触发事件【xxx】,开始采集。", faultLabel)
+									saveTimeWindow(faultLabel, faultHappenTime, lastTimeWindow)
+									break
+								}
+							}
+							subscribersMutexes[i].Unlock()
+						}
+						subscribersTimeMutexes[i].Unlock()
+					},
+				})
+				if err == nil {
+					create = true
+				}
+			}
+			if topic == masterConfig.Topic189 && len(masterConfig.Rule189) > 0 {
+				subscribers[i], err = goroslib.NewSubscriber(goroslib.SubscriberConf{
+					Node:  commonConfig.RosNode,
+					Topic: topic,
+					Callback: func(data *sensor_msgs.CompressedImage) {
+						subscribersTimeMutexes[i].Lock()
+						if time.Since(subscribersTimes[i]).Seconds() > triggerInterval {
+							subscribersMutexes[i].Lock()
+							faultHappenTime := commonUtil.GetNowTimeCustom() // 获取当前故障发生时间
+							lastTimeWindow := entity.GetLastTimeWindow()     // 获取最后一个时间窗口
+							var faultLabel string
+							for _, f := range masterConfig.Rule189 {
+								faultLabel = f(data)
+								if faultLabel != "" {
+									if !canCollect() {
+										break
+									}
+									subscribersTimes[i] = time.Now()
+									c_log.GlobalLogger.Errorf("触发事件【xxx】,开始采集。", faultLabel)
+									saveTimeWindow(faultLabel, faultHappenTime, lastTimeWindow)
+									break
+								}
+							}
+							subscribersMutexes[i].Unlock()
+						}
+						subscribersTimeMutexes[i].Unlock()
+					},
+				})
+				if err == nil {
+					create = true
+				}
+			}
+			if topic == masterConfig.Topic190 && len(masterConfig.Rule190) > 0 {
+				subscribers[i], err = goroslib.NewSubscriber(goroslib.SubscriberConf{
+					Node:  commonConfig.RosNode,
+					Topic: topic,
+					Callback: func(data *dynamic_reconfigure.ConfigDescription) {
+						subscribersTimeMutexes[i].Lock()
+						if time.Since(subscribersTimes[i]).Seconds() > triggerInterval {
+							subscribersMutexes[i].Lock()
+							faultHappenTime := commonUtil.GetNowTimeCustom() // 获取当前故障发生时间
+							lastTimeWindow := entity.GetLastTimeWindow()     // 获取最后一个时间窗口
+							var faultLabel string
+							for _, f := range masterConfig.Rule190 {
+								faultLabel = f(data)
+								if faultLabel != "" {
+									if !canCollect() {
+										break
+									}
+									subscribersTimes[i] = time.Now()
+									c_log.GlobalLogger.Errorf("触发事件【xxx】,开始采集。", faultLabel)
+									saveTimeWindow(faultLabel, faultHappenTime, lastTimeWindow)
+									break
+								}
+							}
+							subscribersMutexes[i].Unlock()
+						}
+						subscribersTimeMutexes[i].Unlock()
+					},
+				})
+				if err == nil {
+					create = true
+				}
+			}
+			if topic == masterConfig.Topic191 && len(masterConfig.Rule191) > 0 {
+				subscribers[i], err = goroslib.NewSubscriber(goroslib.SubscriberConf{
+					Node:  commonConfig.RosNode,
+					Topic: topic,
+					Callback: func(data *dynamic_reconfigure.Config) {
+						subscribersTimeMutexes[i].Lock()
+						if time.Since(subscribersTimes[i]).Seconds() > triggerInterval {
+							subscribersMutexes[i].Lock()
+							faultHappenTime := commonUtil.GetNowTimeCustom() // 获取当前故障发生时间
+							lastTimeWindow := entity.GetLastTimeWindow()     // 获取最后一个时间窗口
+							var faultLabel string
+							for _, f := range masterConfig.Rule191 {
+								faultLabel = f(data)
+								if faultLabel != "" {
+									if !canCollect() {
+										break
+									}
+									subscribersTimes[i] = time.Now()
+									c_log.GlobalLogger.Errorf("触发事件【xxx】,开始采集。", faultLabel)
+									saveTimeWindow(faultLabel, faultHappenTime, lastTimeWindow)
+									break
+								}
+							}
+							subscribersMutexes[i].Unlock()
+						}
+						subscribersTimeMutexes[i].Unlock()
+					},
+				})
+				if err == nil {
+					create = true
+				}
+			}
+			if topic == masterConfig.Topic192 && len(masterConfig.Rule192) > 0 {
+				subscribers[i], err = goroslib.NewSubscriber(goroslib.SubscriberConf{
+					Node:  commonConfig.RosNode,
+					Topic: topic,
+					Callback: func(data *sensor_msgs.CompressedImage) {
+						subscribersTimeMutexes[i].Lock()
+						if time.Since(subscribersTimes[i]).Seconds() > triggerInterval {
+							subscribersMutexes[i].Lock()
+							faultHappenTime := commonUtil.GetNowTimeCustom() // 获取当前故障发生时间
+							lastTimeWindow := entity.GetLastTimeWindow()     // 获取最后一个时间窗口
+							var faultLabel string
+							for _, f := range masterConfig.Rule192 {
+								faultLabel = f(data)
+								if faultLabel != "" {
+									if !canCollect() {
+										break
+									}
+									subscribersTimes[i] = time.Now()
+									c_log.GlobalLogger.Errorf("触发事件【xxx】,开始采集。", faultLabel)
+									saveTimeWindow(faultLabel, faultHappenTime, lastTimeWindow)
+									break
+								}
+							}
+							subscribersMutexes[i].Unlock()
+						}
+						subscribersTimeMutexes[i].Unlock()
+					},
+				})
+				if err == nil {
+					create = true
+				}
+			}
+			if topic == masterConfig.Topic193 && len(masterConfig.Rule193) > 0 {
+				subscribers[i], err = goroslib.NewSubscriber(goroslib.SubscriberConf{
+					Node:  commonConfig.RosNode,
+					Topic: topic,
+					Callback: func(data *dynamic_reconfigure.ConfigDescription) {
+						subscribersTimeMutexes[i].Lock()
+						if time.Since(subscribersTimes[i]).Seconds() > triggerInterval {
+							subscribersMutexes[i].Lock()
+							faultHappenTime := commonUtil.GetNowTimeCustom() // 获取当前故障发生时间
+							lastTimeWindow := entity.GetLastTimeWindow()     // 获取最后一个时间窗口
+							var faultLabel string
+							for _, f := range masterConfig.Rule193 {
+								faultLabel = f(data)
+								if faultLabel != "" {
+									if !canCollect() {
+										break
+									}
+									subscribersTimes[i] = time.Now()
+									c_log.GlobalLogger.Errorf("触发事件【xxx】,开始采集。", faultLabel)
+									saveTimeWindow(faultLabel, faultHappenTime, lastTimeWindow)
+									break
+								}
+							}
+							subscribersMutexes[i].Unlock()
+						}
+						subscribersTimeMutexes[i].Unlock()
+					},
+				})
+				if err == nil {
+					create = true
+				}
+			}
+			if topic == masterConfig.Topic194 && len(masterConfig.Rule194) > 0 {
+				subscribers[i], err = goroslib.NewSubscriber(goroslib.SubscriberConf{
+					Node:  commonConfig.RosNode,
+					Topic: topic,
+					Callback: func(data *dynamic_reconfigure.Config) {
+						subscribersTimeMutexes[i].Lock()
+						if time.Since(subscribersTimes[i]).Seconds() > triggerInterval {
+							subscribersMutexes[i].Lock()
+							faultHappenTime := commonUtil.GetNowTimeCustom() // 获取当前故障发生时间
+							lastTimeWindow := entity.GetLastTimeWindow()     // 获取最后一个时间窗口
+							var faultLabel string
+							for _, f := range masterConfig.Rule194 {
+								faultLabel = f(data)
+								if faultLabel != "" {
+									if !canCollect() {
+										break
+									}
+									subscribersTimes[i] = time.Now()
+									c_log.GlobalLogger.Errorf("触发事件【xxx】,开始采集。", faultLabel)
+									saveTimeWindow(faultLabel, faultHappenTime, lastTimeWindow)
+									break
+								}
+							}
+							subscribersMutexes[i].Unlock()
+						}
+						subscribersTimeMutexes[i].Unlock()
+					},
+				})
+				if err == nil {
+					create = true
+				}
+			}
+			if topic == masterConfig.Topic195 && len(masterConfig.Rule195) > 0 {
+				subscribers[i], err = goroslib.NewSubscriber(goroslib.SubscriberConf{
+					Node:  commonConfig.RosNode,
+					Topic: topic,
+					Callback: func(data *theora_image_transport.Packet) {
+						subscribersTimeMutexes[i].Lock()
+						if time.Since(subscribersTimes[i]).Seconds() > triggerInterval {
+							subscribersMutexes[i].Lock()
+							faultHappenTime := commonUtil.GetNowTimeCustom() // 获取当前故障发生时间
+							lastTimeWindow := entity.GetLastTimeWindow()     // 获取最后一个时间窗口
+							var faultLabel string
+							for _, f := range masterConfig.Rule195 {
+								faultLabel = f(data)
+								if faultLabel != "" {
+									if !canCollect() {
+										break
+									}
+									subscribersTimes[i] = time.Now()
+									c_log.GlobalLogger.Errorf("触发事件【xxx】,开始采集。", faultLabel)
+									saveTimeWindow(faultLabel, faultHappenTime, lastTimeWindow)
+									break
+								}
+							}
+							subscribersMutexes[i].Unlock()
+						}
+						subscribersTimeMutexes[i].Unlock()
+					},
+				})
+				if err == nil {
+					create = true
+				}
+			}
+			if topic == masterConfig.Topic196 && len(masterConfig.Rule196) > 0 {
+				subscribers[i], err = goroslib.NewSubscriber(goroslib.SubscriberConf{
+					Node:  commonConfig.RosNode,
+					Topic: topic,
+					Callback: func(data *dynamic_reconfigure.ConfigDescription) {
+						subscribersTimeMutexes[i].Lock()
+						if time.Since(subscribersTimes[i]).Seconds() > triggerInterval {
+							subscribersMutexes[i].Lock()
+							faultHappenTime := commonUtil.GetNowTimeCustom() // 获取当前故障发生时间
+							lastTimeWindow := entity.GetLastTimeWindow()     // 获取最后一个时间窗口
+							var faultLabel string
+							for _, f := range masterConfig.Rule196 {
+								faultLabel = f(data)
+								if faultLabel != "" {
+									if !canCollect() {
+										break
+									}
+									subscribersTimes[i] = time.Now()
+									c_log.GlobalLogger.Errorf("触发事件【xxx】,开始采集。", faultLabel)
+									saveTimeWindow(faultLabel, faultHappenTime, lastTimeWindow)
+									break
+								}
+							}
+							subscribersMutexes[i].Unlock()
+						}
+						subscribersTimeMutexes[i].Unlock()
+					},
+				})
+				if err == nil {
+					create = true
+				}
+			}
+			if topic == masterConfig.Topic197 && len(masterConfig.Rule197) > 0 {
+				subscribers[i], err = goroslib.NewSubscriber(goroslib.SubscriberConf{
+					Node:  commonConfig.RosNode,
+					Topic: topic,
+					Callback: func(data *dynamic_reconfigure.Config) {
+						subscribersTimeMutexes[i].Lock()
+						if time.Since(subscribersTimes[i]).Seconds() > triggerInterval {
+							subscribersMutexes[i].Lock()
+							faultHappenTime := commonUtil.GetNowTimeCustom() // 获取当前故障发生时间
+							lastTimeWindow := entity.GetLastTimeWindow()     // 获取最后一个时间窗口
+							var faultLabel string
+							for _, f := range masterConfig.Rule197 {
+								faultLabel = f(data)
+								if faultLabel != "" {
+									if !canCollect() {
+										break
+									}
+									subscribersTimes[i] = time.Now()
+									c_log.GlobalLogger.Errorf("触发事件【xxx】,开始采集。", faultLabel)
+									saveTimeWindow(faultLabel, faultHappenTime, lastTimeWindow)
+									break
+								}
+							}
+							subscribersMutexes[i].Unlock()
+						}
+						subscribersTimeMutexes[i].Unlock()
+					},
+				})
+				if err == nil {
+					create = true
+				}
+			}
+			if topic == masterConfig.Topic198 && len(masterConfig.Rule198) > 0 {
+				subscribers[i], err = goroslib.NewSubscriber(goroslib.SubscriberConf{
+					Node:  commonConfig.RosNode,
+					Topic: topic,
+					Callback: func(data *sensor_msgs.PointCloud2) {
+						subscribersTimeMutexes[i].Lock()
+						if time.Since(subscribersTimes[i]).Seconds() > triggerInterval {
+							subscribersMutexes[i].Lock()
+							faultHappenTime := commonUtil.GetNowTimeCustom() // 获取当前故障发生时间
+							lastTimeWindow := entity.GetLastTimeWindow()     // 获取最后一个时间窗口
+							var faultLabel string
+							for _, f := range masterConfig.Rule198 {
+								faultLabel = f(data)
+								if faultLabel != "" {
+									if !canCollect() {
+										break
+									}
+									subscribersTimes[i] = time.Now()
+									c_log.GlobalLogger.Errorf("触发事件【xxx】,开始采集。", faultLabel)
+									saveTimeWindow(faultLabel, faultHappenTime, lastTimeWindow)
+									break
+								}
+							}
+							subscribersMutexes[i].Unlock()
+						}
+						subscribersTimeMutexes[i].Unlock()
+					},
+				})
+				if err == nil {
+					create = true
+				}
+			}
+			if topic == masterConfig.Topic199 && len(masterConfig.Rule199) > 0 {
+				subscribers[i], err = goroslib.NewSubscriber(goroslib.SubscriberConf{
+					Node:  commonConfig.RosNode,
+					Topic: topic,
+					Callback: func(data *geometry_msgs.PoseStamped) {
+						subscribersTimeMutexes[i].Lock()
+						if time.Since(subscribersTimes[i]).Seconds() > triggerInterval {
+							subscribersMutexes[i].Lock()
+							faultHappenTime := commonUtil.GetNowTimeCustom() // 获取当前故障发生时间
+							lastTimeWindow := entity.GetLastTimeWindow()     // 获取最后一个时间窗口
+							var faultLabel string
+							for _, f := range masterConfig.Rule199 {
+								faultLabel = f(data)
+								if faultLabel != "" {
+									if !canCollect() {
+										break
+									}
+									subscribersTimes[i] = time.Now()
+									c_log.GlobalLogger.Errorf("触发事件【xxx】,开始采集。", faultLabel)
+									saveTimeWindow(faultLabel, faultHappenTime, lastTimeWindow)
+									break
+								}
+							}
+							subscribersMutexes[i].Unlock()
+						}
+						subscribersTimeMutexes[i].Unlock()
+					},
+				})
+				if err == nil {
+					create = true
+				}
+			}
+			if topic == masterConfig.Topic200 && len(masterConfig.Rule200) > 0 {
+				subscribers[i], err = goroslib.NewSubscriber(goroslib.SubscriberConf{
+					Node:  commonConfig.RosNode,
+					Topic: topic,
+					Callback: func(data *geometry_msgs.PoseStamped) {
+						subscribersTimeMutexes[i].Lock()
+						if time.Since(subscribersTimes[i]).Seconds() > triggerInterval {
+							subscribersMutexes[i].Lock()
+							faultHappenTime := commonUtil.GetNowTimeCustom() // 获取当前故障发生时间
+							lastTimeWindow := entity.GetLastTimeWindow()     // 获取最后一个时间窗口
+							var faultLabel string
+							for _, f := range masterConfig.Rule200 {
+								faultLabel = f(data)
+								if faultLabel != "" {
+									if !canCollect() {
+										break
+									}
+									subscribersTimes[i] = time.Now()
+									c_log.GlobalLogger.Errorf("触发事件【xxx】,开始采集。", faultLabel)
+									saveTimeWindow(faultLabel, faultHappenTime, lastTimeWindow)
+									break
+								}
+							}
+							subscribersMutexes[i].Unlock()
+						}
+						subscribersTimeMutexes[i].Unlock()
+					},
+				})
+				if err == nil {
+					create = true
+				}
+			}
+			if topic == masterConfig.Topic201 && len(masterConfig.Rule201) > 0 {
+				subscribers[i], err = goroslib.NewSubscriber(goroslib.SubscriberConf{
+					Node:  commonConfig.RosNode,
+					Topic: topic,
+					Callback: func(data *std_msgs.UInt8) {
+						subscribersTimeMutexes[i].Lock()
+						if time.Since(subscribersTimes[i]).Seconds() > triggerInterval {
+							subscribersMutexes[i].Lock()
+							faultHappenTime := commonUtil.GetNowTimeCustom() // 获取当前故障发生时间
+							lastTimeWindow := entity.GetLastTimeWindow()     // 获取最后一个时间窗口
+							var faultLabel string
+							for _, f := range masterConfig.Rule201 {
+								faultLabel = f(data)
+								if faultLabel != "" {
+									if !canCollect() {
+										break
+									}
+									subscribersTimes[i] = time.Now()
+									c_log.GlobalLogger.Errorf("触发事件【xxx】,开始采集。", faultLabel)
+									saveTimeWindow(faultLabel, faultHappenTime, lastTimeWindow)
+									break
+								}
+							}
+							subscribersMutexes[i].Unlock()
+						}
+						subscribersTimeMutexes[i].Unlock()
+					},
+				})
+				if err == nil {
+					create = true
+				}
+			}
+			if topic == masterConfig.Topic202 && len(masterConfig.Rule202) > 0 {
+				subscribers[i], err = goroslib.NewSubscriber(goroslib.SubscriberConf{
+					Node:  commonConfig.RosNode,
+					Topic: topic,
+					Callback: func(data *nav_msgs.Odometry) {
+						subscribersTimeMutexes[i].Lock()
+						if time.Since(subscribersTimes[i]).Seconds() > triggerInterval {
+							subscribersMutexes[i].Lock()
+							faultHappenTime := commonUtil.GetNowTimeCustom() // 获取当前故障发生时间
+							lastTimeWindow := entity.GetLastTimeWindow()     // 获取最后一个时间窗口
+							var faultLabel string
+							for _, f := range masterConfig.Rule202 {
+								faultLabel = f(data)
+								if faultLabel != "" {
+									if !canCollect() {
+										break
+									}
+									subscribersTimes[i] = time.Now()
+									c_log.GlobalLogger.Errorf("触发事件【xxx】,开始采集。", faultLabel)
+									saveTimeWindow(faultLabel, faultHappenTime, lastTimeWindow)
+									break
+								}
+							}
+							subscribersMutexes[i].Unlock()
+						}
+						subscribersTimeMutexes[i].Unlock()
+					},
+				})
+				if err == nil {
+					create = true
+				}
+			}
+			if topic == masterConfig.Topic203 && len(masterConfig.Rule203) > 0 {
+				subscribers[i], err = goroslib.NewSubscriber(goroslib.SubscriberConf{
+					Node:  commonConfig.RosNode,
+					Topic: topic,
+					Callback: func(data *std_msgs.String) {
+						subscribersTimeMutexes[i].Lock()
+						if time.Since(subscribersTimes[i]).Seconds() > triggerInterval {
+							subscribersMutexes[i].Lock()
+							faultHappenTime := commonUtil.GetNowTimeCustom() // 获取当前故障发生时间
+							lastTimeWindow := entity.GetLastTimeWindow()     // 获取最后一个时间窗口
+							var faultLabel string
+							for _, f := range masterConfig.Rule203 {
+								faultLabel = f(data)
+								if faultLabel != "" {
+									if !canCollect() {
+										break
+									}
+									subscribersTimes[i] = time.Now()
+									c_log.GlobalLogger.Errorf("触发事件【xxx】,开始采集。", faultLabel)
+									saveTimeWindow(faultLabel, faultHappenTime, lastTimeWindow)
+									break
+								}
+							}
+							subscribersMutexes[i].Unlock()
+						}
+						subscribersTimeMutexes[i].Unlock()
+					},
+				})
+				if err == nil {
+					create = true
+				}
+			}
+			if topic == masterConfig.Topic204 && len(masterConfig.Rule204) > 0 {
+				subscribers[i], err = goroslib.NewSubscriber(goroslib.SubscriberConf{
+					Node:  commonConfig.RosNode,
+					Topic: topic,
+					Callback: func(data *std_msgs.String) {
+						subscribersTimeMutexes[i].Lock()
+						if time.Since(subscribersTimes[i]).Seconds() > triggerInterval {
+							subscribersMutexes[i].Lock()
+							faultHappenTime := commonUtil.GetNowTimeCustom() // 获取当前故障发生时间
+							lastTimeWindow := entity.GetLastTimeWindow()     // 获取最后一个时间窗口
+							var faultLabel string
+							for _, f := range masterConfig.Rule204 {
+								faultLabel = f(data)
+								if faultLabel != "" {
+									if !canCollect() {
+										break
+									}
+									subscribersTimes[i] = time.Now()
+									c_log.GlobalLogger.Errorf("触发事件【xxx】,开始采集。", faultLabel)
+									saveTimeWindow(faultLabel, faultHappenTime, lastTimeWindow)
+									break
+								}
+							}
+							subscribersMutexes[i].Unlock()
+						}
+						subscribersTimeMutexes[i].Unlock()
+					},
+				})
+				if err == nil {
+					create = true
+				}
+			}
+			if topic == masterConfig.Topic205 && len(masterConfig.Rule205) > 0 {
+				subscribers[i], err = goroslib.NewSubscriber(goroslib.SubscriberConf{
+					Node:  commonConfig.RosNode,
+					Topic: topic,
+					Callback: func(data *nav_msgs.Odometry) {
+						subscribersTimeMutexes[i].Lock()
+						if time.Since(subscribersTimes[i]).Seconds() > triggerInterval {
+							subscribersMutexes[i].Lock()
+							faultHappenTime := commonUtil.GetNowTimeCustom() // 获取当前故障发生时间
+							lastTimeWindow := entity.GetLastTimeWindow()     // 获取最后一个时间窗口
+							var faultLabel string
+							for _, f := range masterConfig.Rule205 {
+								faultLabel = f(data)
+								if faultLabel != "" {
+									if !canCollect() {
+										break
+									}
+									subscribersTimes[i] = time.Now()
+									c_log.GlobalLogger.Errorf("触发事件【xxx】,开始采集。", faultLabel)
+									saveTimeWindow(faultLabel, faultHappenTime, lastTimeWindow)
+									break
+								}
+							}
+							subscribersMutexes[i].Unlock()
+						}
+						subscribersTimeMutexes[i].Unlock()
+					},
+				})
+				if err == nil {
+					create = true
+				}
+			}
+			if topic == masterConfig.Topic206 && len(masterConfig.Rule206) > 0 {
+				subscribers[i], err = goroslib.NewSubscriber(goroslib.SubscriberConf{
+					Node:  commonConfig.RosNode,
+					Topic: topic,
+					Callback: func(data *sensor_msgs.Imu) {
+						subscribersTimeMutexes[i].Lock()
+						if time.Since(subscribersTimes[i]).Seconds() > triggerInterval {
+							subscribersMutexes[i].Lock()
+							faultHappenTime := commonUtil.GetNowTimeCustom() // 获取当前故障发生时间
+							lastTimeWindow := entity.GetLastTimeWindow()     // 获取最后一个时间窗口
+							var faultLabel string
+							for _, f := range masterConfig.Rule206 {
+								faultLabel = f(data)
+								if faultLabel != "" {
+									if !canCollect() {
+										break
+									}
+									subscribersTimes[i] = time.Now()
+									c_log.GlobalLogger.Errorf("触发事件【xxx】,开始采集。", faultLabel)
+									saveTimeWindow(faultLabel, faultHappenTime, lastTimeWindow)
+									break
+								}
+							}
+							subscribersMutexes[i].Unlock()
+						}
+						subscribersTimeMutexes[i].Unlock()
+					},
+				})
+				if err == nil {
+					create = true
+				}
+			}
+			if topic == masterConfig.Topic207 && len(masterConfig.Rule207) > 0 {
+				subscribers[i], err = goroslib.NewSubscriber(goroslib.SubscriberConf{
+					Node:  commonConfig.RosNode,
+					Topic: topic,
+					Callback: func(data *sensor_msgs.PointCloud2) {
+						subscribersTimeMutexes[i].Lock()
+						if time.Since(subscribersTimes[i]).Seconds() > triggerInterval {
+							subscribersMutexes[i].Lock()
+							faultHappenTime := commonUtil.GetNowTimeCustom() // 获取当前故障发生时间
+							lastTimeWindow := entity.GetLastTimeWindow()     // 获取最后一个时间窗口
+							var faultLabel string
+							for _, f := range masterConfig.Rule207 {
+								faultLabel = f(data)
+								if faultLabel != "" {
+									if !canCollect() {
+										break
+									}
+									subscribersTimes[i] = time.Now()
+									c_log.GlobalLogger.Errorf("触发事件【xxx】,开始采集。", faultLabel)
+									saveTimeWindow(faultLabel, faultHappenTime, lastTimeWindow)
+									break
+								}
+							}
+							subscribersMutexes[i].Unlock()
+						}
+						subscribersTimeMutexes[i].Unlock()
+					},
+				})
+				if err == nil {
+					create = true
+				}
+			}
+			if topic == masterConfig.Topic208 && len(masterConfig.Rule208) > 0 {
+				subscribers[i], err = goroslib.NewSubscriber(goroslib.SubscriberConf{
+					Node:  commonConfig.RosNode,
+					Topic: topic,
+					Callback: func(data *geometry_msgs.PoseArray) {
+						subscribersTimeMutexes[i].Lock()
+						if time.Since(subscribersTimes[i]).Seconds() > triggerInterval {
+							subscribersMutexes[i].Lock()
+							faultHappenTime := commonUtil.GetNowTimeCustom() // 获取当前故障发生时间
+							lastTimeWindow := entity.GetLastTimeWindow()     // 获取最后一个时间窗口
+							var faultLabel string
+							for _, f := range masterConfig.Rule208 {
+								faultLabel = f(data)
+								if faultLabel != "" {
+									if !canCollect() {
+										break
+									}
+									subscribersTimes[i] = time.Now()
+									c_log.GlobalLogger.Errorf("触发事件【xxx】,开始采集。", faultLabel)
+									saveTimeWindow(faultLabel, faultHappenTime, lastTimeWindow)
+									break
+								}
+							}
+							subscribersMutexes[i].Unlock()
+						}
+						subscribersTimeMutexes[i].Unlock()
+					},
+				})
+				if err == nil {
+					create = true
+				}
+			}
+			if topic == masterConfig.Topic209 && len(masterConfig.Rule209) > 0 {
+				subscribers[i], err = goroslib.NewSubscriber(goroslib.SubscriberConf{
+					Node:  commonConfig.RosNode,
+					Topic: topic,
+					Callback: func(data *sensor_msgs.PointCloud2) {
+						subscribersTimeMutexes[i].Lock()
+						if time.Since(subscribersTimes[i]).Seconds() > triggerInterval {
+							subscribersMutexes[i].Lock()
+							faultHappenTime := commonUtil.GetNowTimeCustom() // 获取当前故障发生时间
+							lastTimeWindow := entity.GetLastTimeWindow()     // 获取最后一个时间窗口
+							var faultLabel string
+							for _, f := range masterConfig.Rule209 {
+								faultLabel = f(data)
+								if faultLabel != "" {
+									if !canCollect() {
+										break
+									}
+									subscribersTimes[i] = time.Now()
+									c_log.GlobalLogger.Errorf("触发事件【xxx】,开始采集。", faultLabel)
+									saveTimeWindow(faultLabel, faultHappenTime, lastTimeWindow)
+									break
+								}
+							}
+							subscribersMutexes[i].Unlock()
+						}
+						subscribersTimeMutexes[i].Unlock()
+					},
+				})
+				if err == nil {
+					create = true
+				}
+			}
+			if topic == masterConfig.Topic210 && len(masterConfig.Rule210) > 0 {
+				subscribers[i], err = goroslib.NewSubscriber(goroslib.SubscriberConf{
+					Node:  commonConfig.RosNode,
+					Topic: topic,
+					Callback: func(data *sensor_msgs.LaserScan) {
+						subscribersTimeMutexes[i].Lock()
+						if time.Since(subscribersTimes[i]).Seconds() > triggerInterval {
+							subscribersMutexes[i].Lock()
+							faultHappenTime := commonUtil.GetNowTimeCustom() // 获取当前故障发生时间
+							lastTimeWindow := entity.GetLastTimeWindow()     // 获取最后一个时间窗口
+							var faultLabel string
+							for _, f := range masterConfig.Rule210 {
+								faultLabel = f(data)
+								if faultLabel != "" {
+									if !canCollect() {
+										break
+									}
+									subscribersTimes[i] = time.Now()
+									c_log.GlobalLogger.Errorf("触发事件【xxx】,开始采集。", faultLabel)
+									saveTimeWindow(faultLabel, faultHappenTime, lastTimeWindow)
+									break
+								}
+							}
+							subscribersMutexes[i].Unlock()
+						}
+						subscribersTimeMutexes[i].Unlock()
+					},
+				})
+				if err == nil {
+					create = true
+				}
+			}
+			if topic == masterConfig.Topic211 && len(masterConfig.Rule211) > 0 {
+				subscribers[i], err = goroslib.NewSubscriber(goroslib.SubscriberConf{
+					Node:  commonConfig.RosNode,
+					Topic: topic,
+					Callback: func(data *geometry_msgs.PoseWithCovarianceStamped) {
+						subscribersTimeMutexes[i].Lock()
+						if time.Since(subscribersTimes[i]).Seconds() > triggerInterval {
+							subscribersMutexes[i].Lock()
+							faultHappenTime := commonUtil.GetNowTimeCustom() // 获取当前故障发生时间
+							lastTimeWindow := entity.GetLastTimeWindow()     // 获取最后一个时间窗口
+							var faultLabel string
+							for _, f := range masterConfig.Rule211 {
+								faultLabel = f(data)
+								if faultLabel != "" {
+									if !canCollect() {
+										break
+									}
+									subscribersTimes[i] = time.Now()
+									c_log.GlobalLogger.Errorf("触发事件【xxx】,开始采集。", faultLabel)
+									saveTimeWindow(faultLabel, faultHappenTime, lastTimeWindow)
+									break
+								}
+							}
+							subscribersMutexes[i].Unlock()
+						}
+						subscribersTimeMutexes[i].Unlock()
+					},
+				})
+				if err == nil {
+					create = true
+				}
+			}
+			if topic == masterConfig.Topic212 && len(masterConfig.Rule212) > 0 {
+				subscribers[i], err = goroslib.NewSubscriber(goroslib.SubscriberConf{
+					Node:  commonConfig.RosNode,
+					Topic: topic,
+					Callback: func(data *geometry_msgs.Vector3Stamped) {
+						subscribersTimeMutexes[i].Lock()
+						if time.Since(subscribersTimes[i]).Seconds() > triggerInterval {
+							subscribersMutexes[i].Lock()
+							faultHappenTime := commonUtil.GetNowTimeCustom() // 获取当前故障发生时间
+							lastTimeWindow := entity.GetLastTimeWindow()     // 获取最后一个时间窗口
+							var faultLabel string
+							for _, f := range masterConfig.Rule212 {
+								faultLabel = f(data)
+								if faultLabel != "" {
+									if !canCollect() {
+										break
+									}
+									subscribersTimes[i] = time.Now()
+									c_log.GlobalLogger.Errorf("触发事件【xxx】,开始采集。", faultLabel)
+									saveTimeWindow(faultLabel, faultHappenTime, lastTimeWindow)
+									break
+								}
+							}
+							subscribersMutexes[i].Unlock()
+						}
+						subscribersTimeMutexes[i].Unlock()
+					},
+				})
+				if err == nil {
+					create = true
+				}
+			}
+			if topic == masterConfig.Topic213 && len(masterConfig.Rule213) > 0 {
+				subscribers[i], err = goroslib.NewSubscriber(goroslib.SubscriberConf{
+					Node:  commonConfig.RosNode,
+					Topic: topic,
+					Callback: func(data *std_msgs.String) {
+						subscribersTimeMutexes[i].Lock()
+						if time.Since(subscribersTimes[i]).Seconds() > triggerInterval {
+							subscribersMutexes[i].Lock()
+							faultHappenTime := commonUtil.GetNowTimeCustom() // 获取当前故障发生时间
+							lastTimeWindow := entity.GetLastTimeWindow()     // 获取最后一个时间窗口
+							var faultLabel string
+							for _, f := range masterConfig.Rule213 {
+								faultLabel = f(data)
+								if faultLabel != "" {
+									if !canCollect() {
+										break
+									}
+									subscribersTimes[i] = time.Now()
+									c_log.GlobalLogger.Errorf("触发事件【xxx】,开始采集。", faultLabel)
+									saveTimeWindow(faultLabel, faultHappenTime, lastTimeWindow)
+									break
+								}
+							}
+							subscribersMutexes[i].Unlock()
+						}
+						subscribersTimeMutexes[i].Unlock()
+					},
+				})
+				if err == nil {
+					create = true
+				}
+			}
+			if topic == masterConfig.Topic214 && len(masterConfig.Rule214) > 0 {
+				subscribers[i], err = goroslib.NewSubscriber(goroslib.SubscriberConf{
+					Node:  commonConfig.RosNode,
+					Topic: topic,
+					Callback: func(data *common_msgs.FunctionAreas) {
+						subscribersTimeMutexes[i].Lock()
+						if time.Since(subscribersTimes[i]).Seconds() > triggerInterval {
+							subscribersMutexes[i].Lock()
+							faultHappenTime := commonUtil.GetNowTimeCustom() // 获取当前故障发生时间
+							lastTimeWindow := entity.GetLastTimeWindow()     // 获取最后一个时间窗口
+							var faultLabel string
+							for _, f := range masterConfig.Rule214 {
+								faultLabel = f(data)
+								if faultLabel != "" {
+									if !canCollect() {
+										break
+									}
+									subscribersTimes[i] = time.Now()
+									c_log.GlobalLogger.Errorf("触发事件【xxx】,开始采集。", faultLabel)
+									saveTimeWindow(faultLabel, faultHappenTime, lastTimeWindow)
+									break
+								}
+							}
+							subscribersMutexes[i].Unlock()
+						}
+						subscribersTimeMutexes[i].Unlock()
+					},
+				})
+				if err == nil {
+					create = true
+				}
+			}
+			if topic == masterConfig.Topic215 && len(masterConfig.Rule215) > 0 {
+				subscribers[i], err = goroslib.NewSubscriber(goroslib.SubscriberConf{
+					Node:  commonConfig.RosNode,
+					Topic: topic,
+					Callback: func(data *std_msgs.Bool) {
+						subscribersTimeMutexes[i].Lock()
+						if time.Since(subscribersTimes[i]).Seconds() > triggerInterval {
+							subscribersMutexes[i].Lock()
+							faultHappenTime := commonUtil.GetNowTimeCustom() // 获取当前故障发生时间
+							lastTimeWindow := entity.GetLastTimeWindow()     // 获取最后一个时间窗口
+							var faultLabel string
+							for _, f := range masterConfig.Rule215 {
+								faultLabel = f(data)
+								if faultLabel != "" {
+									if !canCollect() {
+										break
+									}
+									subscribersTimes[i] = time.Now()
+									c_log.GlobalLogger.Errorf("触发事件【xxx】,开始采集。", faultLabel)
+									saveTimeWindow(faultLabel, faultHappenTime, lastTimeWindow)
+									break
+								}
+							}
+							subscribersMutexes[i].Unlock()
+						}
+						subscribersTimeMutexes[i].Unlock()
+					},
+				})
+				if err == nil {
+					create = true
+				}
+			}
+			if topic == masterConfig.Topic216 && len(masterConfig.Rule216) > 0 {
+				subscribers[i], err = goroslib.NewSubscriber(goroslib.SubscriberConf{
+					Node:  commonConfig.RosNode,
+					Topic: topic,
+					Callback: func(data *nav_msgs.Path) {
+						subscribersTimeMutexes[i].Lock()
+						if time.Since(subscribersTimes[i]).Seconds() > triggerInterval {
+							subscribersMutexes[i].Lock()
+							faultHappenTime := commonUtil.GetNowTimeCustom() // 获取当前故障发生时间
+							lastTimeWindow := entity.GetLastTimeWindow()     // 获取最后一个时间窗口
+							var faultLabel string
+							for _, f := range masterConfig.Rule216 {
+								faultLabel = f(data)
+								if faultLabel != "" {
+									if !canCollect() {
+										break
+									}
+									subscribersTimes[i] = time.Now()
+									c_log.GlobalLogger.Errorf("触发事件【xxx】,开始采集。", faultLabel)
+									saveTimeWindow(faultLabel, faultHappenTime, lastTimeWindow)
+									break
+								}
+							}
+							subscribersMutexes[i].Unlock()
+						}
+						subscribersTimeMutexes[i].Unlock()
+					},
+				})
+				if err == nil {
+					create = true
+				}
+			}
+			if topic == masterConfig.Topic217 && len(masterConfig.Rule217) > 0 {
+				subscribers[i], err = goroslib.NewSubscriber(goroslib.SubscriberConf{
+					Node:  commonConfig.RosNode,
+					Topic: topic,
+					Callback: func(data *std_msgs.Float64MultiArray) {
+						subscribersTimeMutexes[i].Lock()
+						if time.Since(subscribersTimes[i]).Seconds() > triggerInterval {
+							subscribersMutexes[i].Lock()
+							faultHappenTime := commonUtil.GetNowTimeCustom() // 获取当前故障发生时间
+							lastTimeWindow := entity.GetLastTimeWindow()     // 获取最后一个时间窗口
+							var faultLabel string
+							for _, f := range masterConfig.Rule217 {
+								faultLabel = f(data)
+								if faultLabel != "" {
+									if !canCollect() {
+										break
+									}
+									subscribersTimes[i] = time.Now()
+									c_log.GlobalLogger.Errorf("触发事件【xxx】,开始采集。", faultLabel)
+									saveTimeWindow(faultLabel, faultHappenTime, lastTimeWindow)
+									break
+								}
+							}
+							subscribersMutexes[i].Unlock()
+						}
+						subscribersTimeMutexes[i].Unlock()
+					},
+				})
+				if err == nil {
+					create = true
+				}
+			}
+			if topic == masterConfig.Topic218 && len(masterConfig.Rule218) > 0 {
+				subscribers[i], err = goroslib.NewSubscriber(goroslib.SubscriberConf{
+					Node:  commonConfig.RosNode,
+					Topic: topic,
+					Callback: func(data *std_msgs.String) {
+						subscribersTimeMutexes[i].Lock()
+						if time.Since(subscribersTimes[i]).Seconds() > triggerInterval {
+							subscribersMutexes[i].Lock()
+							faultHappenTime := commonUtil.GetNowTimeCustom() // 获取当前故障发生时间
+							lastTimeWindow := entity.GetLastTimeWindow()     // 获取最后一个时间窗口
+							var faultLabel string
+							for _, f := range masterConfig.Rule218 {
+								faultLabel = f(data)
+								if faultLabel != "" {
+									if !canCollect() {
+										break
+									}
+									subscribersTimes[i] = time.Now()
+									c_log.GlobalLogger.Errorf("触发事件【xxx】,开始采集。", faultLabel)
+									saveTimeWindow(faultLabel, faultHappenTime, lastTimeWindow)
+									break
+								}
+							}
+							subscribersMutexes[i].Unlock()
+						}
+						subscribersTimeMutexes[i].Unlock()
+					},
+				})
+				if err == nil {
+					create = true
+				}
+			}
+			if topic == masterConfig.Topic219 && len(masterConfig.Rule219) > 0 {
+				subscribers[i], err = goroslib.NewSubscriber(goroslib.SubscriberConf{
+					Node:  commonConfig.RosNode,
+					Topic: topic,
+					Callback: func(data *std_msgs.String) {
+						subscribersTimeMutexes[i].Lock()
+						if time.Since(subscribersTimes[i]).Seconds() > triggerInterval {
+							subscribersMutexes[i].Lock()
+							faultHappenTime := commonUtil.GetNowTimeCustom() // 获取当前故障发生时间
+							lastTimeWindow := entity.GetLastTimeWindow()     // 获取最后一个时间窗口
+							var faultLabel string
+							for _, f := range masterConfig.Rule219 {
+								faultLabel = f(data)
+								if faultLabel != "" {
+									if !canCollect() {
+										break
+									}
+									subscribersTimes[i] = time.Now()
+									c_log.GlobalLogger.Errorf("触发事件【xxx】,开始采集。", faultLabel)
+									saveTimeWindow(faultLabel, faultHappenTime, lastTimeWindow)
+									break
+								}
+							}
+							subscribersMutexes[i].Unlock()
+						}
+						subscribersTimeMutexes[i].Unlock()
+					},
+				})
+				if err == nil {
+					create = true
+				}
+			}
+			if topic == masterConfig.Topic220 && len(masterConfig.Rule220) > 0 {
+				subscribers[i], err = goroslib.NewSubscriber(goroslib.SubscriberConf{
+					Node:  commonConfig.RosNode,
+					Topic: topic,
+					Callback: func(data *std_msgs.String) {
+						subscribersTimeMutexes[i].Lock()
+						if time.Since(subscribersTimes[i]).Seconds() > triggerInterval {
+							subscribersMutexes[i].Lock()
+							faultHappenTime := commonUtil.GetNowTimeCustom() // 获取当前故障发生时间
+							lastTimeWindow := entity.GetLastTimeWindow()     // 获取最后一个时间窗口
+							var faultLabel string
+							for _, f := range masterConfig.Rule220 {
+								faultLabel = f(data)
+								if faultLabel != "" {
+									if !canCollect() {
+										break
+									}
+									subscribersTimes[i] = time.Now()
+									c_log.GlobalLogger.Errorf("触发事件【xxx】,开始采集。", faultLabel)
+									saveTimeWindow(faultLabel, faultHappenTime, lastTimeWindow)
+									break
+								}
+							}
+							subscribersMutexes[i].Unlock()
+						}
+						subscribersTimeMutexes[i].Unlock()
+					},
+				})
+				if err == nil {
+					create = true
+				}
+			}
+			if topic == masterConfig.Topic221 && len(masterConfig.Rule221) > 0 {
+				subscribers[i], err = goroslib.NewSubscriber(goroslib.SubscriberConf{
+					Node:  commonConfig.RosNode,
+					Topic: topic,
+					Callback: func(data *geometry_msgs.PoseStamped) {
+						subscribersTimeMutexes[i].Lock()
+						if time.Since(subscribersTimes[i]).Seconds() > triggerInterval {
+							subscribersMutexes[i].Lock()
+							faultHappenTime := commonUtil.GetNowTimeCustom() // 获取当前故障发生时间
+							lastTimeWindow := entity.GetLastTimeWindow()     // 获取最后一个时间窗口
+							var faultLabel string
+							for _, f := range masterConfig.Rule221 {
+								faultLabel = f(data)
+								if faultLabel != "" {
+									if !canCollect() {
+										break
+									}
+									subscribersTimes[i] = time.Now()
+									c_log.GlobalLogger.Errorf("触发事件【xxx】,开始采集。", faultLabel)
+									saveTimeWindow(faultLabel, faultHappenTime, lastTimeWindow)
+									break
+								}
+							}
+							subscribersMutexes[i].Unlock()
+						}
+						subscribersTimeMutexes[i].Unlock()
+					},
+				})
+				if err == nil {
+					create = true
+				}
+			}
+			if topic == masterConfig.Topic222 && len(masterConfig.Rule222) > 0 {
+				subscribers[i], err = goroslib.NewSubscriber(goroslib.SubscriberConf{
+					Node:  commonConfig.RosNode,
+					Topic: topic,
+					Callback: func(data *geometry_msgs.PoseWithCovarianceStamped) {
+						subscribersTimeMutexes[i].Lock()
+						if time.Since(subscribersTimes[i]).Seconds() > triggerInterval {
+							subscribersMutexes[i].Lock()
+							faultHappenTime := commonUtil.GetNowTimeCustom() // 获取当前故障发生时间
+							lastTimeWindow := entity.GetLastTimeWindow()     // 获取最后一个时间窗口
+							var faultLabel string
+							for _, f := range masterConfig.Rule222 {
+								faultLabel = f(data)
+								if faultLabel != "" {
+									if !canCollect() {
+										break
+									}
+									subscribersTimes[i] = time.Now()
+									c_log.GlobalLogger.Errorf("触发事件【xxx】,开始采集。", faultLabel)
+									saveTimeWindow(faultLabel, faultHappenTime, lastTimeWindow)
+									break
+								}
+							}
+							subscribersMutexes[i].Unlock()
+						}
+						subscribersTimeMutexes[i].Unlock()
+					},
+				})
+				if err == nil {
+					create = true
+				}
+			}
+			if topic == masterConfig.Topic223 && len(masterConfig.Rule223) > 0 {
+				subscribers[i], err = goroslib.NewSubscriber(goroslib.SubscriberConf{
+					Node:  commonConfig.RosNode,
+					Topic: topic,
+					Callback: func(data *std_msgs.String) {
+						subscribersTimeMutexes[i].Lock()
+						if time.Since(subscribersTimes[i]).Seconds() > triggerInterval {
+							subscribersMutexes[i].Lock()
+							faultHappenTime := commonUtil.GetNowTimeCustom() // 获取当前故障发生时间
+							lastTimeWindow := entity.GetLastTimeWindow()     // 获取最后一个时间窗口
+							var faultLabel string
+							for _, f := range masterConfig.Rule223 {
+								faultLabel = f(data)
+								if faultLabel != "" {
+									if !canCollect() {
+										break
+									}
+									subscribersTimes[i] = time.Now()
+									c_log.GlobalLogger.Errorf("触发事件【xxx】,开始采集。", faultLabel)
+									saveTimeWindow(faultLabel, faultHappenTime, lastTimeWindow)
+									break
+								}
+							}
+							subscribersMutexes[i].Unlock()
+						}
+						subscribersTimeMutexes[i].Unlock()
+					},
+				})
+				if err == nil {
+					create = true
+				}
+			}
+			if topic == masterConfig.Topic224 && len(masterConfig.Rule224) > 0 {
+				subscribers[i], err = goroslib.NewSubscriber(goroslib.SubscriberConf{
+					Node:  commonConfig.RosNode,
+					Topic: topic,
+					Callback: func(data *std_msgs.String) {
+						subscribersTimeMutexes[i].Lock()
+						if time.Since(subscribersTimes[i]).Seconds() > triggerInterval {
+							subscribersMutexes[i].Lock()
+							faultHappenTime := commonUtil.GetNowTimeCustom() // 获取当前故障发生时间
+							lastTimeWindow := entity.GetLastTimeWindow()     // 获取最后一个时间窗口
+							var faultLabel string
+							for _, f := range masterConfig.Rule224 {
+								faultLabel = f(data)
+								if faultLabel != "" {
+									if !canCollect() {
+										break
+									}
+									subscribersTimes[i] = time.Now()
+									c_log.GlobalLogger.Errorf("触发事件【xxx】,开始采集。", faultLabel)
+									saveTimeWindow(faultLabel, faultHappenTime, lastTimeWindow)
+									break
+								}
+							}
+							subscribersMutexes[i].Unlock()
+						}
+						subscribersTimeMutexes[i].Unlock()
+					},
+				})
+				if err == nil {
+					create = true
+				}
+			}
+			if topic == masterConfig.Topic225 && len(masterConfig.Rule225) > 0 {
+				subscribers[i], err = goroslib.NewSubscriber(goroslib.SubscriberConf{
+					Node:  commonConfig.RosNode,
+					Topic: topic,
+					Callback: func(data *localization_monitor.RobotStatus) {
+						subscribersTimeMutexes[i].Lock()
+						if time.Since(subscribersTimes[i]).Seconds() > triggerInterval {
+							subscribersMutexes[i].Lock()
+							faultHappenTime := commonUtil.GetNowTimeCustom() // 获取当前故障发生时间
+							lastTimeWindow := entity.GetLastTimeWindow()     // 获取最后一个时间窗口
+							var faultLabel string
+							for _, f := range masterConfig.Rule225 {
+								faultLabel = f(data)
+								if faultLabel != "" {
+									if !canCollect() {
+										break
+									}
+									subscribersTimes[i] = time.Now()
+									c_log.GlobalLogger.Errorf("触发事件【xxx】,开始采集。", faultLabel)
+									saveTimeWindow(faultLabel, faultHappenTime, lastTimeWindow)
+									break
+								}
+							}
+							subscribersMutexes[i].Unlock()
+						}
+						subscribersTimeMutexes[i].Unlock()
+					},
+				})
+				if err == nil {
+					create = true
+				}
+			}
+			if topic == masterConfig.Topic226 && len(masterConfig.Rule226) > 0 {
+				subscribers[i], err = goroslib.NewSubscriber(goroslib.SubscriberConf{
+					Node:  commonConfig.RosNode,
+					Topic: topic,
+					Callback: func(data *std_msgs.Float64MultiArray) {
+						subscribersTimeMutexes[i].Lock()
+						if time.Since(subscribersTimes[i]).Seconds() > triggerInterval {
+							subscribersMutexes[i].Lock()
+							faultHappenTime := commonUtil.GetNowTimeCustom() // 获取当前故障发生时间
+							lastTimeWindow := entity.GetLastTimeWindow()     // 获取最后一个时间窗口
+							var faultLabel string
+							for _, f := range masterConfig.Rule226 {
+								faultLabel = f(data)
+								if faultLabel != "" {
+									if !canCollect() {
+										break
+									}
+									subscribersTimes[i] = time.Now()
+									c_log.GlobalLogger.Errorf("触发事件【xxx】,开始采集。", faultLabel)
+									saveTimeWindow(faultLabel, faultHappenTime, lastTimeWindow)
+									break
+								}
+							}
+							subscribersMutexes[i].Unlock()
+						}
+						subscribersTimeMutexes[i].Unlock()
+					},
+				})
+				if err == nil {
+					create = true
+				}
+			}
+			if topic == masterConfig.Topic227 && len(masterConfig.Rule227) > 0 {
+				subscribers[i], err = goroslib.NewSubscriber(goroslib.SubscriberConf{
+					Node:  commonConfig.RosNode,
+					Topic: topic,
+					Callback: func(data *std_msgs.String) {
+						subscribersTimeMutexes[i].Lock()
+						if time.Since(subscribersTimes[i]).Seconds() > triggerInterval {
+							subscribersMutexes[i].Lock()
+							faultHappenTime := commonUtil.GetNowTimeCustom() // 获取当前故障发生时间
+							lastTimeWindow := entity.GetLastTimeWindow()     // 获取最后一个时间窗口
+							var faultLabel string
+							for _, f := range masterConfig.Rule227 {
+								faultLabel = f(data)
+								if faultLabel != "" {
+									if !canCollect() {
+										break
+									}
+									subscribersTimes[i] = time.Now()
+									c_log.GlobalLogger.Errorf("触发事件【xxx】,开始采集。", faultLabel)
+									saveTimeWindow(faultLabel, faultHappenTime, lastTimeWindow)
+									break
+								}
+							}
+							subscribersMutexes[i].Unlock()
+						}
+						subscribersTimeMutexes[i].Unlock()
+					},
+				})
+				if err == nil {
+					create = true
+				}
+			}
+			if topic == masterConfig.Topic228 && len(masterConfig.Rule228) > 0 {
+				subscribers[i], err = goroslib.NewSubscriber(goroslib.SubscriberConf{
+					Node:  commonConfig.RosNode,
+					Topic: topic,
+					Callback: func(data *actionlib_msgs.GoalID) {
+						subscribersTimeMutexes[i].Lock()
+						if time.Since(subscribersTimes[i]).Seconds() > triggerInterval {
+							subscribersMutexes[i].Lock()
+							faultHappenTime := commonUtil.GetNowTimeCustom() // 获取当前故障发生时间
+							lastTimeWindow := entity.GetLastTimeWindow()     // 获取最后一个时间窗口
+							var faultLabel string
+							for _, f := range masterConfig.Rule228 {
+								faultLabel = f(data)
+								if faultLabel != "" {
+									if !canCollect() {
+										break
+									}
+									subscribersTimes[i] = time.Now()
+									c_log.GlobalLogger.Errorf("触发事件【xxx】,开始采集。", faultLabel)
+									saveTimeWindow(faultLabel, faultHappenTime, lastTimeWindow)
+									break
+								}
+							}
+							subscribersMutexes[i].Unlock()
+						}
+						subscribersTimeMutexes[i].Unlock()
+					},
+				})
+				if err == nil {
+					create = true
+				}
+			}
+			if topic == masterConfig.Topic229 && len(masterConfig.Rule229) > 0 {
+				subscribers[i], err = goroslib.NewSubscriber(goroslib.SubscriberConf{
+					Node:  commonConfig.RosNode,
+					Topic: topic,
+					Callback: func(data *ipa_building_msgs.MapSegmentationActionFeedback) {
+						subscribersTimeMutexes[i].Lock()
+						if time.Since(subscribersTimes[i]).Seconds() > triggerInterval {
+							subscribersMutexes[i].Lock()
+							faultHappenTime := commonUtil.GetNowTimeCustom() // 获取当前故障发生时间
+							lastTimeWindow := entity.GetLastTimeWindow()     // 获取最后一个时间窗口
+							var faultLabel string
+							for _, f := range masterConfig.Rule229 {
+								faultLabel = f(data)
+								if faultLabel != "" {
+									if !canCollect() {
+										break
+									}
+									subscribersTimes[i] = time.Now()
+									c_log.GlobalLogger.Errorf("触发事件【xxx】,开始采集。", faultLabel)
+									saveTimeWindow(faultLabel, faultHappenTime, lastTimeWindow)
+									break
+								}
+							}
+							subscribersMutexes[i].Unlock()
+						}
+						subscribersTimeMutexes[i].Unlock()
+					},
+				})
+				if err == nil {
+					create = true
+				}
+			}
+			if topic == masterConfig.Topic230 && len(masterConfig.Rule230) > 0 {
+				subscribers[i], err = goroslib.NewSubscriber(goroslib.SubscriberConf{
+					Node:  commonConfig.RosNode,
+					Topic: topic,
+					Callback: func(data *ipa_building_msgs.MapSegmentationActionGoal) {
+						subscribersTimeMutexes[i].Lock()
+						if time.Since(subscribersTimes[i]).Seconds() > triggerInterval {
+							subscribersMutexes[i].Lock()
+							faultHappenTime := commonUtil.GetNowTimeCustom() // 获取当前故障发生时间
+							lastTimeWindow := entity.GetLastTimeWindow()     // 获取最后一个时间窗口
+							var faultLabel string
+							for _, f := range masterConfig.Rule230 {
+								faultLabel = f(data)
+								if faultLabel != "" {
+									if !canCollect() {
+										break
+									}
+									subscribersTimes[i] = time.Now()
+									c_log.GlobalLogger.Errorf("触发事件【xxx】,开始采集。", faultLabel)
+									saveTimeWindow(faultLabel, faultHappenTime, lastTimeWindow)
+									break
+								}
+							}
+							subscribersMutexes[i].Unlock()
+						}
+						subscribersTimeMutexes[i].Unlock()
+					},
+				})
+				if err == nil {
+					create = true
+				}
+			}
+			if topic == masterConfig.Topic231 && len(masterConfig.Rule231) > 0 {
+				subscribers[i], err = goroslib.NewSubscriber(goroslib.SubscriberConf{
+					Node:  commonConfig.RosNode,
+					Topic: topic,
+					Callback: func(data *dynamic_reconfigure.ConfigDescription) {
+						subscribersTimeMutexes[i].Lock()
+						if time.Since(subscribersTimes[i]).Seconds() > triggerInterval {
+							subscribersMutexes[i].Lock()
+							faultHappenTime := commonUtil.GetNowTimeCustom() // 获取当前故障发生时间
+							lastTimeWindow := entity.GetLastTimeWindow()     // 获取最后一个时间窗口
+							var faultLabel string
+							for _, f := range masterConfig.Rule231 {
+								faultLabel = f(data)
+								if faultLabel != "" {
+									if !canCollect() {
+										break
+									}
+									subscribersTimes[i] = time.Now()
+									c_log.GlobalLogger.Errorf("触发事件【xxx】,开始采集。", faultLabel)
+									saveTimeWindow(faultLabel, faultHappenTime, lastTimeWindow)
+									break
+								}
+							}
+							subscribersMutexes[i].Unlock()
+						}
+						subscribersTimeMutexes[i].Unlock()
+					},
+				})
+				if err == nil {
+					create = true
+				}
+			}
+			if topic == masterConfig.Topic232 && len(masterConfig.Rule232) > 0 {
+				subscribers[i], err = goroslib.NewSubscriber(goroslib.SubscriberConf{
+					Node:  commonConfig.RosNode,
+					Topic: topic,
+					Callback: func(data *dynamic_reconfigure.Config) {
+						subscribersTimeMutexes[i].Lock()
+						if time.Since(subscribersTimes[i]).Seconds() > triggerInterval {
+							subscribersMutexes[i].Lock()
+							faultHappenTime := commonUtil.GetNowTimeCustom() // 获取当前故障发生时间
+							lastTimeWindow := entity.GetLastTimeWindow()     // 获取最后一个时间窗口
+							var faultLabel string
+							for _, f := range masterConfig.Rule232 {
+								faultLabel = f(data)
+								if faultLabel != "" {
+									if !canCollect() {
+										break
+									}
+									subscribersTimes[i] = time.Now()
+									c_log.GlobalLogger.Errorf("触发事件【xxx】,开始采集。", faultLabel)
+									saveTimeWindow(faultLabel, faultHappenTime, lastTimeWindow)
+									break
+								}
+							}
+							subscribersMutexes[i].Unlock()
+						}
+						subscribersTimeMutexes[i].Unlock()
+					},
+				})
+				if err == nil {
+					create = true
+				}
+			}
+			if topic == masterConfig.Topic233 && len(masterConfig.Rule233) > 0 {
+				subscribers[i], err = goroslib.NewSubscriber(goroslib.SubscriberConf{
+					Node:  commonConfig.RosNode,
+					Topic: topic,
+					Callback: func(data *ipa_building_msgs.MapSegmentationActionResult) {
+						subscribersTimeMutexes[i].Lock()
+						if time.Since(subscribersTimes[i]).Seconds() > triggerInterval {
+							subscribersMutexes[i].Lock()
+							faultHappenTime := commonUtil.GetNowTimeCustom() // 获取当前故障发生时间
+							lastTimeWindow := entity.GetLastTimeWindow()     // 获取最后一个时间窗口
+							var faultLabel string
+							for _, f := range masterConfig.Rule233 {
+								faultLabel = f(data)
+								if faultLabel != "" {
+									if !canCollect() {
+										break
+									}
+									subscribersTimes[i] = time.Now()
+									c_log.GlobalLogger.Errorf("触发事件【xxx】,开始采集。", faultLabel)
+									saveTimeWindow(faultLabel, faultHappenTime, lastTimeWindow)
+									break
+								}
+							}
+							subscribersMutexes[i].Unlock()
+						}
+						subscribersTimeMutexes[i].Unlock()
+					},
+				})
+				if err == nil {
+					create = true
+				}
+			}
+			if topic == masterConfig.Topic234 && len(masterConfig.Rule234) > 0 {
+				subscribers[i], err = goroslib.NewSubscriber(goroslib.SubscriberConf{
+					Node:  commonConfig.RosNode,
+					Topic: topic,
+					Callback: func(data *nav_msgs.OccupancyGrid) {
+						subscribersTimeMutexes[i].Lock()
+						if time.Since(subscribersTimes[i]).Seconds() > triggerInterval {
+							subscribersMutexes[i].Lock()
+							faultHappenTime := commonUtil.GetNowTimeCustom() // 获取当前故障发生时间
+							lastTimeWindow := entity.GetLastTimeWindow()     // 获取最后一个时间窗口
+							var faultLabel string
+							for _, f := range masterConfig.Rule234 {
+								faultLabel = f(data)
+								if faultLabel != "" {
+									if !canCollect() {
+										break
+									}
+									subscribersTimes[i] = time.Now()
+									c_log.GlobalLogger.Errorf("触发事件【xxx】,开始采集。", faultLabel)
+									saveTimeWindow(faultLabel, faultHappenTime, lastTimeWindow)
+									break
+								}
+							}
+							subscribersMutexes[i].Unlock()
+						}
+						subscribersTimeMutexes[i].Unlock()
+					},
+				})
+				if err == nil {
+					create = true
+				}
+			}
+			if topic == masterConfig.Topic235 && len(masterConfig.Rule235) > 0 {
+				subscribers[i], err = goroslib.NewSubscriber(goroslib.SubscriberConf{
+					Node:  commonConfig.RosNode,
+					Topic: topic,
+					Callback: func(data *actionlib_msgs.GoalStatusArray) {
+						subscribersTimeMutexes[i].Lock()
+						if time.Since(subscribersTimes[i]).Seconds() > triggerInterval {
+							subscribersMutexes[i].Lock()
+							faultHappenTime := commonUtil.GetNowTimeCustom() // 获取当前故障发生时间
+							lastTimeWindow := entity.GetLastTimeWindow()     // 获取最后一个时间窗口
+							var faultLabel string
+							for _, f := range masterConfig.Rule235 {
+								faultLabel = f(data)
+								if faultLabel != "" {
+									if !canCollect() {
+										break
+									}
+									subscribersTimes[i] = time.Now()
+									c_log.GlobalLogger.Errorf("触发事件【xxx】,开始采集。", faultLabel)
+									saveTimeWindow(faultLabel, faultHappenTime, lastTimeWindow)
+									break
+								}
+							}
+							subscribersMutexes[i].Unlock()
+						}
+						subscribersTimeMutexes[i].Unlock()
+					},
+				})
+				if err == nil {
+					create = true
+				}
+			}
+			if topic == masterConfig.Topic236 && len(masterConfig.Rule236) > 0 {
+				subscribers[i], err = goroslib.NewSubscriber(goroslib.SubscriberConf{
+					Node:  commonConfig.RosNode,
+					Topic: topic,
+					Callback: func(data *rosgraph_msgs.Log) {
+						subscribersTimeMutexes[i].Lock()
+						if time.Since(subscribersTimes[i]).Seconds() > triggerInterval {
+							subscribersMutexes[i].Lock()
+							faultHappenTime := commonUtil.GetNowTimeCustom() // 获取当前故障发生时间
+							lastTimeWindow := entity.GetLastTimeWindow()     // 获取最后一个时间窗口
+							var faultLabel string
+							for _, f := range masterConfig.Rule236 {
+								faultLabel = f(data)
+								if faultLabel != "" {
+									if !canCollect() {
+										break
+									}
+									subscribersTimes[i] = time.Now()
+									c_log.GlobalLogger.Errorf("触发事件【xxx】,开始采集。", faultLabel)
+									saveTimeWindow(faultLabel, faultHappenTime, lastTimeWindow)
+									break
+								}
+							}
+							subscribersMutexes[i].Unlock()
+						}
+						subscribersTimeMutexes[i].Unlock()
+					},
+				})
+				if err == nil {
+					create = true
+				}
+			}
+			if topic == masterConfig.Topic237 && len(masterConfig.Rule237) > 0 {
+				subscribers[i], err = goroslib.NewSubscriber(goroslib.SubscriberConf{
+					Node:  commonConfig.RosNode,
+					Topic: topic,
+					Callback: func(data *rosgraph_msgs.Log) {
+						subscribersTimeMutexes[i].Lock()
+						if time.Since(subscribersTimes[i]).Seconds() > triggerInterval {
+							subscribersMutexes[i].Lock()
+							faultHappenTime := commonUtil.GetNowTimeCustom() // 获取当前故障发生时间
+							lastTimeWindow := entity.GetLastTimeWindow()     // 获取最后一个时间窗口
+							var faultLabel string
+							for _, f := range masterConfig.Rule237 {
+								faultLabel = f(data)
+								if faultLabel != "" {
+									if !canCollect() {
+										break
+									}
+									subscribersTimes[i] = time.Now()
+									c_log.GlobalLogger.Errorf("触发事件【xxx】,开始采集。", faultLabel)
+									saveTimeWindow(faultLabel, faultHappenTime, lastTimeWindow)
+									break
+								}
+							}
+							subscribersMutexes[i].Unlock()
+						}
+						subscribersTimeMutexes[i].Unlock()
+					},
+				})
+				if err == nil {
+					create = true
+				}
+			}
+			if topic == masterConfig.Topic238 && len(masterConfig.Rule238) > 0 {
+				subscribers[i], err = goroslib.NewSubscriber(goroslib.SubscriberConf{
+					Node:  commonConfig.RosNode,
+					Topic: topic,
+					Callback: func(data *nav_msgs.Path) {
+						subscribersTimeMutexes[i].Lock()
+						if time.Since(subscribersTimes[i]).Seconds() > triggerInterval {
+							subscribersMutexes[i].Lock()
+							faultHappenTime := commonUtil.GetNowTimeCustom() // 获取当前故障发生时间
+							lastTimeWindow := entity.GetLastTimeWindow()     // 获取最后一个时间窗口
+							var faultLabel string
+							for _, f := range masterConfig.Rule238 {
+								faultLabel = f(data)
+								if faultLabel != "" {
+									if !canCollect() {
+										break
+									}
+									subscribersTimes[i] = time.Now()
+									c_log.GlobalLogger.Errorf("触发事件【xxx】,开始采集。", faultLabel)
+									saveTimeWindow(faultLabel, faultHappenTime, lastTimeWindow)
+									break
+								}
+							}
+							subscribersMutexes[i].Unlock()
+						}
+						subscribersTimeMutexes[i].Unlock()
+					},
+				})
+				if err == nil {
+					create = true
+				}
+			}
+			if topic == masterConfig.Topic239 && len(masterConfig.Rule239) > 0 {
+				subscribers[i], err = goroslib.NewSubscriber(goroslib.SubscriberConf{
+					Node:  commonConfig.RosNode,
+					Topic: topic,
+					Callback: func(data *geometry_msgs.Vector3Stamped) {
+						subscribersTimeMutexes[i].Lock()
+						if time.Since(subscribersTimes[i]).Seconds() > triggerInterval {
+							subscribersMutexes[i].Lock()
+							faultHappenTime := commonUtil.GetNowTimeCustom() // 获取当前故障发生时间
+							lastTimeWindow := entity.GetLastTimeWindow()     // 获取最后一个时间窗口
+							var faultLabel string
+							for _, f := range masterConfig.Rule239 {
+								faultLabel = f(data)
+								if faultLabel != "" {
+									if !canCollect() {
+										break
+									}
+									subscribersTimes[i] = time.Now()
+									c_log.GlobalLogger.Errorf("触发事件【xxx】,开始采集。", faultLabel)
+									saveTimeWindow(faultLabel, faultHappenTime, lastTimeWindow)
+									break
+								}
+							}
+							subscribersMutexes[i].Unlock()
+						}
+						subscribersTimeMutexes[i].Unlock()
+					},
+				})
+				if err == nil {
+					create = true
+				}
+			}
+			if topic == masterConfig.Topic240 && len(masterConfig.Rule240) > 0 {
+				subscribers[i], err = goroslib.NewSubscriber(goroslib.SubscriberConf{
+					Node:  commonConfig.RosNode,
+					Topic: topic,
+					Callback: func(data *sensor_msgs.LaserScan) {
+						subscribersTimeMutexes[i].Lock()
+						if time.Since(subscribersTimes[i]).Seconds() > triggerInterval {
+							subscribersMutexes[i].Lock()
+							faultHappenTime := commonUtil.GetNowTimeCustom() // 获取当前故障发生时间
+							lastTimeWindow := entity.GetLastTimeWindow()     // 获取最后一个时间窗口
+							var faultLabel string
+							for _, f := range masterConfig.Rule240 {
+								faultLabel = f(data)
+								if faultLabel != "" {
+									if !canCollect() {
+										break
+									}
+									subscribersTimes[i] = time.Now()
+									c_log.GlobalLogger.Errorf("触发事件【xxx】,开始采集。", faultLabel)
+									saveTimeWindow(faultLabel, faultHappenTime, lastTimeWindow)
+									break
+								}
+							}
+							subscribersMutexes[i].Unlock()
+						}
+						subscribersTimeMutexes[i].Unlock()
+					},
+				})
+				if err == nil {
+					create = true
+				}
+			}
+			if topic == masterConfig.Topic241 && len(masterConfig.Rule241) > 0 {
+				subscribers[i], err = goroslib.NewSubscriber(goroslib.SubscriberConf{
+					Node:  commonConfig.RosNode,
+					Topic: topic,
+					Callback: func(data *sensor_msgs.LaserScan) {
+						subscribersTimeMutexes[i].Lock()
+						if time.Since(subscribersTimes[i]).Seconds() > triggerInterval {
+							subscribersMutexes[i].Lock()
+							faultHappenTime := commonUtil.GetNowTimeCustom() // 获取当前故障发生时间
+							lastTimeWindow := entity.GetLastTimeWindow()     // 获取最后一个时间窗口
+							var faultLabel string
+							for _, f := range masterConfig.Rule241 {
+								faultLabel = f(data)
+								if faultLabel != "" {
+									if !canCollect() {
+										break
+									}
+									subscribersTimes[i] = time.Now()
+									c_log.GlobalLogger.Errorf("触发事件【xxx】,开始采集。", faultLabel)
+									saveTimeWindow(faultLabel, faultHappenTime, lastTimeWindow)
+									break
+								}
+							}
+							subscribersMutexes[i].Unlock()
+						}
+						subscribersTimeMutexes[i].Unlock()
+					},
+				})
+				if err == nil {
+					create = true
+				}
+			}
+			if topic == masterConfig.Topic242 && len(masterConfig.Rule242) > 0 {
+				subscribers[i], err = goroslib.NewSubscriber(goroslib.SubscriberConf{
+					Node:  commonConfig.RosNode,
+					Topic: topic,
+					Callback: func(data *sensor_msgs.LaserScan) {
+						subscribersTimeMutexes[i].Lock()
+						if time.Since(subscribersTimes[i]).Seconds() > triggerInterval {
+							subscribersMutexes[i].Lock()
+							faultHappenTime := commonUtil.GetNowTimeCustom() // 获取当前故障发生时间
+							lastTimeWindow := entity.GetLastTimeWindow()     // 获取最后一个时间窗口
+							var faultLabel string
+							for _, f := range masterConfig.Rule242 {
+								faultLabel = f(data)
+								if faultLabel != "" {
+									if !canCollect() {
+										break
+									}
+									subscribersTimes[i] = time.Now()
+									c_log.GlobalLogger.Errorf("触发事件【xxx】,开始采集。", faultLabel)
+									saveTimeWindow(faultLabel, faultHappenTime, lastTimeWindow)
+									break
+								}
+							}
+							subscribersMutexes[i].Unlock()
+						}
+						subscribersTimeMutexes[i].Unlock()
+					},
+				})
+				if err == nil {
+					create = true
+				}
+			}
+			if topic == masterConfig.Topic243 && len(masterConfig.Rule243) > 0 {
+				subscribers[i], err = goroslib.NewSubscriber(goroslib.SubscriberConf{
+					Node:  commonConfig.RosNode,
+					Topic: topic,
+					Callback: func(data *sensor_msgs.LaserScan) {
+						subscribersTimeMutexes[i].Lock()
+						if time.Since(subscribersTimes[i]).Seconds() > triggerInterval {
+							subscribersMutexes[i].Lock()
+							faultHappenTime := commonUtil.GetNowTimeCustom() // 获取当前故障发生时间
+							lastTimeWindow := entity.GetLastTimeWindow()     // 获取最后一个时间窗口
+							var faultLabel string
+							for _, f := range masterConfig.Rule243 {
+								faultLabel = f(data)
+								if faultLabel != "" {
+									if !canCollect() {
+										break
+									}
+									subscribersTimes[i] = time.Now()
+									c_log.GlobalLogger.Errorf("触发事件【xxx】,开始采集。", faultLabel)
+									saveTimeWindow(faultLabel, faultHappenTime, lastTimeWindow)
+									break
+								}
+							}
+							subscribersMutexes[i].Unlock()
+						}
+						subscribersTimeMutexes[i].Unlock()
+					},
+				})
+				if err == nil {
+					create = true
+				}
+			}
+			if topic == masterConfig.Topic244 && len(masterConfig.Rule244) > 0 {
+				subscribers[i], err = goroslib.NewSubscriber(goroslib.SubscriberConf{
+					Node:  commonConfig.RosNode,
+					Topic: topic,
+					Callback: func(data *sensor_msgs.LaserScan) {
+						subscribersTimeMutexes[i].Lock()
+						if time.Since(subscribersTimes[i]).Seconds() > triggerInterval {
+							subscribersMutexes[i].Lock()
+							faultHappenTime := commonUtil.GetNowTimeCustom() // 获取当前故障发生时间
+							lastTimeWindow := entity.GetLastTimeWindow()     // 获取最后一个时间窗口
+							var faultLabel string
+							for _, f := range masterConfig.Rule244 {
+								faultLabel = f(data)
+								if faultLabel != "" {
+									if !canCollect() {
+										break
+									}
+									subscribersTimes[i] = time.Now()
+									c_log.GlobalLogger.Errorf("触发事件【xxx】,开始采集。", faultLabel)
+									saveTimeWindow(faultLabel, faultHappenTime, lastTimeWindow)
+									break
+								}
+							}
+							subscribersMutexes[i].Unlock()
+						}
+						subscribersTimeMutexes[i].Unlock()
+					},
+				})
+				if err == nil {
+					create = true
+				}
+			}
+			if topic == masterConfig.Topic245 && len(masterConfig.Rule245) > 0 {
+				subscribers[i], err = goroslib.NewSubscriber(goroslib.SubscriberConf{
+					Node:  commonConfig.RosNode,
+					Topic: topic,
+					Callback: func(data *sensor_msgs.PointCloud2) {
+						subscribersTimeMutexes[i].Lock()
+						if time.Since(subscribersTimes[i]).Seconds() > triggerInterval {
+							subscribersMutexes[i].Lock()
+							faultHappenTime := commonUtil.GetNowTimeCustom() // 获取当前故障发生时间
+							lastTimeWindow := entity.GetLastTimeWindow()     // 获取最后一个时间窗口
+							var faultLabel string
+							for _, f := range masterConfig.Rule245 {
+								faultLabel = f(data)
+								if faultLabel != "" {
+									if !canCollect() {
+										break
+									}
+									subscribersTimes[i] = time.Now()
+									c_log.GlobalLogger.Errorf("触发事件【xxx】,开始采集。", faultLabel)
+									saveTimeWindow(faultLabel, faultHappenTime, lastTimeWindow)
+									break
+								}
+							}
+							subscribersMutexes[i].Unlock()
+						}
+						subscribersTimeMutexes[i].Unlock()
+					},
+				})
+				if err == nil {
+					create = true
+				}
+			}
+			if topic == masterConfig.Topic246 && len(masterConfig.Rule246) > 0 {
+				subscribers[i], err = goroslib.NewSubscriber(goroslib.SubscriberConf{
+					Node:  commonConfig.RosNode,
+					Topic: topic,
+					Callback: func(data *sensor_msgs.PointCloud2) {
+						subscribersTimeMutexes[i].Lock()
+						if time.Since(subscribersTimes[i]).Seconds() > triggerInterval {
+							subscribersMutexes[i].Lock()
+							faultHappenTime := commonUtil.GetNowTimeCustom() // 获取当前故障发生时间
+							lastTimeWindow := entity.GetLastTimeWindow()     // 获取最后一个时间窗口
+							var faultLabel string
+							for _, f := range masterConfig.Rule246 {
+								faultLabel = f(data)
+								if faultLabel != "" {
+									if !canCollect() {
+										break
+									}
+									subscribersTimes[i] = time.Now()
+									c_log.GlobalLogger.Errorf("触发事件【xxx】,开始采集。", faultLabel)
+									saveTimeWindow(faultLabel, faultHappenTime, lastTimeWindow)
+									break
+								}
+							}
+							subscribersMutexes[i].Unlock()
+						}
+						subscribersTimeMutexes[i].Unlock()
+					},
+				})
+				if err == nil {
+					create = true
+				}
+			}
+			if topic == masterConfig.Topic247 && len(masterConfig.Rule247) > 0 {
+				subscribers[i], err = goroslib.NewSubscriber(goroslib.SubscriberConf{
+					Node:  commonConfig.RosNode,
+					Topic: topic,
+					Callback: func(data *visualization_msgs.MarkerArray) {
+						subscribersTimeMutexes[i].Lock()
+						if time.Since(subscribersTimes[i]).Seconds() > triggerInterval {
+							subscribersMutexes[i].Lock()
+							faultHappenTime := commonUtil.GetNowTimeCustom() // 获取当前故障发生时间
+							lastTimeWindow := entity.GetLastTimeWindow()     // 获取最后一个时间窗口
+							var faultLabel string
+							for _, f := range masterConfig.Rule247 {
+								faultLabel = f(data)
+								if faultLabel != "" {
+									if !canCollect() {
+										break
+									}
+									subscribersTimes[i] = time.Now()
+									c_log.GlobalLogger.Errorf("触发事件【xxx】,开始采集。", faultLabel)
+									saveTimeWindow(faultLabel, faultHappenTime, lastTimeWindow)
+									break
+								}
+							}
+							subscribersMutexes[i].Unlock()
+						}
+						subscribersTimeMutexes[i].Unlock()
+					},
+				})
+				if err == nil {
+					create = true
+				}
+			}
+			if topic == masterConfig.Topic248 && len(masterConfig.Rule248) > 0 {
+				subscribers[i], err = goroslib.NewSubscriber(goroslib.SubscriberConf{
+					Node:  commonConfig.RosNode,
+					Topic: topic,
+					Callback: func(data *common_msgs.SensorTask) {
+						subscribersTimeMutexes[i].Lock()
+						if time.Since(subscribersTimes[i]).Seconds() > triggerInterval {
+							subscribersMutexes[i].Lock()
+							faultHappenTime := commonUtil.GetNowTimeCustom() // 获取当前故障发生时间
+							lastTimeWindow := entity.GetLastTimeWindow()     // 获取最后一个时间窗口
+							var faultLabel string
+							for _, f := range masterConfig.Rule248 {
+								faultLabel = f(data)
+								if faultLabel != "" {
+									if !canCollect() {
+										break
+									}
+									subscribersTimes[i] = time.Now()
+									c_log.GlobalLogger.Errorf("触发事件【xxx】,开始采集。", faultLabel)
+									saveTimeWindow(faultLabel, faultHappenTime, lastTimeWindow)
+									break
+								}
+							}
+							subscribersMutexes[i].Unlock()
+						}
+						subscribersTimeMutexes[i].Unlock()
+					},
+				})
+				if err == nil {
+					create = true
+				}
+			}
+			if topic == masterConfig.Topic249 && len(masterConfig.Rule249) > 0 {
+				subscribers[i], err = goroslib.NewSubscriber(goroslib.SubscriberConf{
+					Node:  commonConfig.RosNode,
+					Topic: topic,
+					Callback: func(data *std_msgs.String) {
+						subscribersTimeMutexes[i].Lock()
+						if time.Since(subscribersTimes[i]).Seconds() > triggerInterval {
+							subscribersMutexes[i].Lock()
+							faultHappenTime := commonUtil.GetNowTimeCustom() // 获取当前故障发生时间
+							lastTimeWindow := entity.GetLastTimeWindow()     // 获取最后一个时间窗口
+							var faultLabel string
+							for _, f := range masterConfig.Rule249 {
+								faultLabel = f(data)
+								if faultLabel != "" {
+									if !canCollect() {
+										break
+									}
+									subscribersTimes[i] = time.Now()
+									c_log.GlobalLogger.Errorf("触发事件【xxx】,开始采集。", faultLabel)
+									saveTimeWindow(faultLabel, faultHappenTime, lastTimeWindow)
+									break
+								}
+							}
+							subscribersMutexes[i].Unlock()
+						}
+						subscribersTimeMutexes[i].Unlock()
+					},
+				})
+				if err == nil {
+					create = true
+				}
+			}
+			if topic == masterConfig.Topic250 && len(masterConfig.Rule250) > 0 {
+				subscribers[i], err = goroslib.NewSubscriber(goroslib.SubscriberConf{
+					Node:  commonConfig.RosNode,
+					Topic: topic,
+					Callback: func(data *geometry_msgs.Vector3Stamped) {
+						subscribersTimeMutexes[i].Lock()
+						if time.Since(subscribersTimes[i]).Seconds() > triggerInterval {
+							subscribersMutexes[i].Lock()
+							faultHappenTime := commonUtil.GetNowTimeCustom() // 获取当前故障发生时间
+							lastTimeWindow := entity.GetLastTimeWindow()     // 获取最后一个时间窗口
+							var faultLabel string
+							for _, f := range masterConfig.Rule250 {
+								faultLabel = f(data)
+								if faultLabel != "" {
+									if !canCollect() {
+										break
+									}
+									subscribersTimes[i] = time.Now()
+									c_log.GlobalLogger.Errorf("触发事件【xxx】,开始采集。", faultLabel)
+									saveTimeWindow(faultLabel, faultHappenTime, lastTimeWindow)
+									break
+								}
+							}
+							subscribersMutexes[i].Unlock()
+						}
+						subscribersTimeMutexes[i].Unlock()
+					},
+				})
+				if err == nil {
+					create = true
+				}
+			}
+			if topic == masterConfig.Topic251 && len(masterConfig.Rule251) > 0 {
+				subscribers[i], err = goroslib.NewSubscriber(goroslib.SubscriberConf{
+					Node:  commonConfig.RosNode,
+					Topic: topic,
+					Callback: func(data *common_msgs.SonarList) {
+						subscribersTimeMutexes[i].Lock()
+						if time.Since(subscribersTimes[i]).Seconds() > triggerInterval {
+							subscribersMutexes[i].Lock()
+							faultHappenTime := commonUtil.GetNowTimeCustom() // 获取当前故障发生时间
+							lastTimeWindow := entity.GetLastTimeWindow()     // 获取最后一个时间窗口
+							var faultLabel string
+							for _, f := range masterConfig.Rule251 {
+								faultLabel = f(data)
+								if faultLabel != "" {
+									if !canCollect() {
+										break
+									}
+									subscribersTimes[i] = time.Now()
+									c_log.GlobalLogger.Errorf("触发事件【xxx】,开始采集。", faultLabel)
+									saveTimeWindow(faultLabel, faultHappenTime, lastTimeWindow)
+									break
+								}
+							}
+							subscribersMutexes[i].Unlock()
+						}
+						subscribersTimeMutexes[i].Unlock()
+					},
+				})
+				if err == nil {
+					create = true
+				}
+			}
+			if topic == masterConfig.Topic252 && len(masterConfig.Rule252) > 0 {
+				subscribers[i], err = goroslib.NewSubscriber(goroslib.SubscriberConf{
+					Node:  commonConfig.RosNode,
+					Topic: topic,
+					Callback: func(data *nav_msgs.Odometry) {
+						subscribersTimeMutexes[i].Lock()
+						if time.Since(subscribersTimes[i]).Seconds() > triggerInterval {
+							subscribersMutexes[i].Lock()
+							faultHappenTime := commonUtil.GetNowTimeCustom() // 获取当前故障发生时间
+							lastTimeWindow := entity.GetLastTimeWindow()     // 获取最后一个时间窗口
+							var faultLabel string
+							for _, f := range masterConfig.Rule252 {
+								faultLabel = f(data)
+								if faultLabel != "" {
+									if !canCollect() {
+										break
+									}
+									subscribersTimes[i] = time.Now()
+									c_log.GlobalLogger.Errorf("触发事件【xxx】,开始采集。", faultLabel)
+									saveTimeWindow(faultLabel, faultHappenTime, lastTimeWindow)
+									break
+								}
+							}
+							subscribersMutexes[i].Unlock()
+						}
+						subscribersTimeMutexes[i].Unlock()
+					},
+				})
+				if err == nil {
+					create = true
+				}
+			}
+			if topic == masterConfig.Topic253 && len(masterConfig.Rule253) > 0 {
+				subscribers[i], err = goroslib.NewSubscriber(goroslib.SubscriberConf{
+					Node:  commonConfig.RosNode,
+					Topic: topic,
+					Callback: func(data *sensor_msgs.LaserScan) {
+						subscribersTimeMutexes[i].Lock()
+						if time.Since(subscribersTimes[i]).Seconds() > triggerInterval {
+							subscribersMutexes[i].Lock()
+							faultHappenTime := commonUtil.GetNowTimeCustom() // 获取当前故障发生时间
+							lastTimeWindow := entity.GetLastTimeWindow()     // 获取最后一个时间窗口
+							var faultLabel string
+							for _, f := range masterConfig.Rule253 {
+								faultLabel = f(data)
+								if faultLabel != "" {
+									if !canCollect() {
+										break
+									}
+									subscribersTimes[i] = time.Now()
+									c_log.GlobalLogger.Errorf("触发事件【xxx】,开始采集。", faultLabel)
+									saveTimeWindow(faultLabel, faultHappenTime, lastTimeWindow)
+									break
+								}
+							}
+							subscribersMutexes[i].Unlock()
+						}
+						subscribersTimeMutexes[i].Unlock()
+					},
+				})
+				if err == nil {
+					create = true
+				}
+			}
+			if topic == masterConfig.Topic254 && len(masterConfig.Rule254) > 0 {
+				subscribers[i], err = goroslib.NewSubscriber(goroslib.SubscriberConf{
+					Node:  commonConfig.RosNode,
+					Topic: topic,
+					Callback: func(data *std_msgs.Bool) {
+						subscribersTimeMutexes[i].Lock()
+						if time.Since(subscribersTimes[i]).Seconds() > triggerInterval {
+							subscribersMutexes[i].Lock()
+							faultHappenTime := commonUtil.GetNowTimeCustom() // 获取当前故障发生时间
+							lastTimeWindow := entity.GetLastTimeWindow()     // 获取最后一个时间窗口
+							var faultLabel string
+							for _, f := range masterConfig.Rule254 {
+								faultLabel = f(data)
+								if faultLabel != "" {
+									if !canCollect() {
+										break
+									}
+									subscribersTimes[i] = time.Now()
+									c_log.GlobalLogger.Errorf("触发事件【xxx】,开始采集。", faultLabel)
+									saveTimeWindow(faultLabel, faultHappenTime, lastTimeWindow)
+									break
+								}
+							}
+							subscribersMutexes[i].Unlock()
+						}
+						subscribersTimeMutexes[i].Unlock()
+					},
+				})
+				if err == nil {
+					create = true
+				}
+			}
+			if topic == masterConfig.Topic255 && len(masterConfig.Rule255) > 0 {
+				subscribers[i], err = goroslib.NewSubscriber(goroslib.SubscriberConf{
+					Node:  commonConfig.RosNode,
+					Topic: topic,
+					Callback: func(data *sensor_msgs.LaserScan) {
+						subscribersTimeMutexes[i].Lock()
+						if time.Since(subscribersTimes[i]).Seconds() > triggerInterval {
+							subscribersMutexes[i].Lock()
+							faultHappenTime := commonUtil.GetNowTimeCustom() // 获取当前故障发生时间
+							lastTimeWindow := entity.GetLastTimeWindow()     // 获取最后一个时间窗口
+							var faultLabel string
+							for _, f := range masterConfig.Rule255 {
+								faultLabel = f(data)
+								if faultLabel != "" {
+									if !canCollect() {
+										break
+									}
+									subscribersTimes[i] = time.Now()
+									c_log.GlobalLogger.Errorf("触发事件【xxx】,开始采集。", faultLabel)
+									saveTimeWindow(faultLabel, faultHappenTime, lastTimeWindow)
+									break
+								}
+							}
+							subscribersMutexes[i].Unlock()
+						}
+						subscribersTimeMutexes[i].Unlock()
+					},
+				})
+				if err == nil {
+					create = true
+				}
+			}
+			if topic == masterConfig.Topic256 && len(masterConfig.Rule256) > 0 {
+				subscribers[i], err = goroslib.NewSubscriber(goroslib.SubscriberConf{
+					Node:  commonConfig.RosNode,
+					Topic: topic,
+					Callback: func(data *std_msgs.String) {
+						subscribersTimeMutexes[i].Lock()
+						if time.Since(subscribersTimes[i]).Seconds() > triggerInterval {
+							subscribersMutexes[i].Lock()
+							faultHappenTime := commonUtil.GetNowTimeCustom() // 获取当前故障发生时间
+							lastTimeWindow := entity.GetLastTimeWindow()     // 获取最后一个时间窗口
+							var faultLabel string
+							for _, f := range masterConfig.Rule256 {
+								faultLabel = f(data)
+								if faultLabel != "" {
+									if !canCollect() {
+										break
+									}
+									subscribersTimes[i] = time.Now()
+									c_log.GlobalLogger.Errorf("触发事件【xxx】,开始采集。", faultLabel)
+									saveTimeWindow(faultLabel, faultHappenTime, lastTimeWindow)
+									break
+								}
+							}
+							subscribersMutexes[i].Unlock()
+						}
+						subscribersTimeMutexes[i].Unlock()
+					},
+				})
+				if err == nil {
+					create = true
+				}
+			}
+			if topic == masterConfig.Topic257 && len(masterConfig.Rule257) > 0 {
+				subscribers[i], err = goroslib.NewSubscriber(goroslib.SubscriberConf{
+					Node:  commonConfig.RosNode,
+					Topic: topic,
+					Callback: func(data *std_msgs.Bool) {
+						subscribersTimeMutexes[i].Lock()
+						if time.Since(subscribersTimes[i]).Seconds() > triggerInterval {
+							subscribersMutexes[i].Lock()
+							faultHappenTime := commonUtil.GetNowTimeCustom() // 获取当前故障发生时间
+							lastTimeWindow := entity.GetLastTimeWindow()     // 获取最后一个时间窗口
+							var faultLabel string
+							for _, f := range masterConfig.Rule257 {
+								faultLabel = f(data)
+								if faultLabel != "" {
+									if !canCollect() {
+										break
+									}
+									subscribersTimes[i] = time.Now()
+									c_log.GlobalLogger.Errorf("触发事件【xxx】,开始采集。", faultLabel)
+									saveTimeWindow(faultLabel, faultHappenTime, lastTimeWindow)
+									break
+								}
+							}
+							subscribersMutexes[i].Unlock()
+						}
+						subscribersTimeMutexes[i].Unlock()
+					},
+				})
+				if err == nil {
+					create = true
+				}
+			}
+			if topic == masterConfig.Topic258 && len(masterConfig.Rule258) > 0 {
+				subscribers[i], err = goroslib.NewSubscriber(goroslib.SubscriberConf{
+					Node:  commonConfig.RosNode,
+					Topic: topic,
+					Callback: func(data *sensor_msgs.CameraInfo) {
+						subscribersTimeMutexes[i].Lock()
+						if time.Since(subscribersTimes[i]).Seconds() > triggerInterval {
+							subscribersMutexes[i].Lock()
+							faultHappenTime := commonUtil.GetNowTimeCustom() // 获取当前故障发生时间
+							lastTimeWindow := entity.GetLastTimeWindow()     // 获取最后一个时间窗口
+							var faultLabel string
+							for _, f := range masterConfig.Rule258 {
+								faultLabel = f(data)
+								if faultLabel != "" {
+									if !canCollect() {
+										break
+									}
+									subscribersTimes[i] = time.Now()
+									c_log.GlobalLogger.Errorf("触发事件【xxx】,开始采集。", faultLabel)
+									saveTimeWindow(faultLabel, faultHappenTime, lastTimeWindow)
+									break
+								}
+							}
+							subscribersMutexes[i].Unlock()
+						}
+						subscribersTimeMutexes[i].Unlock()
+					},
+				})
+				if err == nil {
+					create = true
+				}
+			}
+			if topic == masterConfig.Topic259 && len(masterConfig.Rule259) > 0 {
+				subscribers[i], err = goroslib.NewSubscriber(goroslib.SubscriberConf{
+					Node:  commonConfig.RosNode,
+					Topic: topic,
+					Callback: func(data *common_msgs.SysInfo) {
+						subscribersTimeMutexes[i].Lock()
+						if time.Since(subscribersTimes[i]).Seconds() > triggerInterval {
+							subscribersMutexes[i].Lock()
+							faultHappenTime := commonUtil.GetNowTimeCustom() // 获取当前故障发生时间
+							lastTimeWindow := entity.GetLastTimeWindow()     // 获取最后一个时间窗口
+							var faultLabel string
+							for _, f := range masterConfig.Rule259 {
+								faultLabel = f(data)
+								if faultLabel != "" {
+									if !canCollect() {
+										break
+									}
+									subscribersTimes[i] = time.Now()
+									c_log.GlobalLogger.Errorf("触发事件【xxx】,开始采集。", faultLabel)
+									saveTimeWindow(faultLabel, faultHappenTime, lastTimeWindow)
+									break
+								}
+							}
+							subscribersMutexes[i].Unlock()
+						}
+						subscribersTimeMutexes[i].Unlock()
+					},
+				})
+				if err == nil {
+					create = true
+				}
+			}
+			if topic == masterConfig.Topic260 && len(masterConfig.Rule260) > 0 {
+				subscribers[i], err = goroslib.NewSubscriber(goroslib.SubscriberConf{
+					Node:  commonConfig.RosNode,
+					Topic: topic,
+					Callback: func(data *sensor_msgs.Image) {
+						subscribersTimeMutexes[i].Lock()
+						if time.Since(subscribersTimes[i]).Seconds() > triggerInterval {
+							subscribersMutexes[i].Lock()
+							faultHappenTime := commonUtil.GetNowTimeCustom() // 获取当前故障发生时间
+							lastTimeWindow := entity.GetLastTimeWindow()     // 获取最后一个时间窗口
+							var faultLabel string
+							for _, f := range masterConfig.Rule260 {
+								faultLabel = f(data)
+								if faultLabel != "" {
+									if !canCollect() {
+										break
+									}
+									subscribersTimes[i] = time.Now()
+									c_log.GlobalLogger.Errorf("触发事件【xxx】,开始采集。", faultLabel)
+									saveTimeWindow(faultLabel, faultHappenTime, lastTimeWindow)
+									break
+								}
+							}
+							subscribersMutexes[i].Unlock()
+						}
+						subscribersTimeMutexes[i].Unlock()
+					},
+				})
+				if err == nil {
+					create = true
+				}
+			}
+			if topic == masterConfig.Topic261 && len(masterConfig.Rule261) > 0 {
+				subscribers[i], err = goroslib.NewSubscriber(goroslib.SubscriberConf{
+					Node:  commonConfig.RosNode,
+					Topic: topic,
+					Callback: func(data *sensor_msgs.CompressedImage) {
+						subscribersTimeMutexes[i].Lock()
+						if time.Since(subscribersTimes[i]).Seconds() > triggerInterval {
+							subscribersMutexes[i].Lock()
+							faultHappenTime := commonUtil.GetNowTimeCustom() // 获取当前故障发生时间
+							lastTimeWindow := entity.GetLastTimeWindow()     // 获取最后一个时间窗口
+							var faultLabel string
+							for _, f := range masterConfig.Rule261 {
+								faultLabel = f(data)
+								if faultLabel != "" {
+									if !canCollect() {
+										break
+									}
+									subscribersTimes[i] = time.Now()
+									c_log.GlobalLogger.Errorf("触发事件【xxx】,开始采集。", faultLabel)
+									saveTimeWindow(faultLabel, faultHappenTime, lastTimeWindow)
+									break
+								}
+							}
+							subscribersMutexes[i].Unlock()
+						}
+						subscribersTimeMutexes[i].Unlock()
+					},
+				})
+				if err == nil {
+					create = true
+				}
+			}
+			if topic == masterConfig.Topic262 && len(masterConfig.Rule262) > 0 {
+				subscribers[i], err = goroslib.NewSubscriber(goroslib.SubscriberConf{
+					Node:  commonConfig.RosNode,
+					Topic: topic,
+					Callback: func(data *dynamic_reconfigure.ConfigDescription) {
+						subscribersTimeMutexes[i].Lock()
+						if time.Since(subscribersTimes[i]).Seconds() > triggerInterval {
+							subscribersMutexes[i].Lock()
+							faultHappenTime := commonUtil.GetNowTimeCustom() // 获取当前故障发生时间
+							lastTimeWindow := entity.GetLastTimeWindow()     // 获取最后一个时间窗口
+							var faultLabel string
+							for _, f := range masterConfig.Rule262 {
+								faultLabel = f(data)
+								if faultLabel != "" {
+									if !canCollect() {
+										break
+									}
+									subscribersTimes[i] = time.Now()
+									c_log.GlobalLogger.Errorf("触发事件【xxx】,开始采集。", faultLabel)
+									saveTimeWindow(faultLabel, faultHappenTime, lastTimeWindow)
+									break
+								}
+							}
+							subscribersMutexes[i].Unlock()
+						}
+						subscribersTimeMutexes[i].Unlock()
+					},
+				})
+				if err == nil {
+					create = true
+				}
+			}
+			if topic == masterConfig.Topic263 && len(masterConfig.Rule263) > 0 {
+				subscribers[i], err = goroslib.NewSubscriber(goroslib.SubscriberConf{
+					Node:  commonConfig.RosNode,
+					Topic: topic,
+					Callback: func(data *dynamic_reconfigure.Config) {
+						subscribersTimeMutexes[i].Lock()
+						if time.Since(subscribersTimes[i]).Seconds() > triggerInterval {
+							subscribersMutexes[i].Lock()
+							faultHappenTime := commonUtil.GetNowTimeCustom() // 获取当前故障发生时间
+							lastTimeWindow := entity.GetLastTimeWindow()     // 获取最后一个时间窗口
+							var faultLabel string
+							for _, f := range masterConfig.Rule263 {
+								faultLabel = f(data)
+								if faultLabel != "" {
+									if !canCollect() {
+										break
+									}
+									subscribersTimes[i] = time.Now()
+									c_log.GlobalLogger.Errorf("触发事件【xxx】,开始采集。", faultLabel)
+									saveTimeWindow(faultLabel, faultHappenTime, lastTimeWindow)
+									break
+								}
+							}
+							subscribersMutexes[i].Unlock()
+						}
+						subscribersTimeMutexes[i].Unlock()
+					},
+				})
+				if err == nil {
+					create = true
+				}
+			}
+			if topic == masterConfig.Topic264 && len(masterConfig.Rule264) > 0 {
+				subscribers[i], err = goroslib.NewSubscriber(goroslib.SubscriberConf{
+					Node:  commonConfig.RosNode,
+					Topic: topic,
+					Callback: func(data *sensor_msgs.CompressedImage) {
+						subscribersTimeMutexes[i].Lock()
+						if time.Since(subscribersTimes[i]).Seconds() > triggerInterval {
+							subscribersMutexes[i].Lock()
+							faultHappenTime := commonUtil.GetNowTimeCustom() // 获取当前故障发生时间
+							lastTimeWindow := entity.GetLastTimeWindow()     // 获取最后一个时间窗口
+							var faultLabel string
+							for _, f := range masterConfig.Rule264 {
+								faultLabel = f(data)
+								if faultLabel != "" {
+									if !canCollect() {
+										break
+									}
+									subscribersTimes[i] = time.Now()
+									c_log.GlobalLogger.Errorf("触发事件【xxx】,开始采集。", faultLabel)
+									saveTimeWindow(faultLabel, faultHappenTime, lastTimeWindow)
+									break
+								}
+							}
+							subscribersMutexes[i].Unlock()
+						}
+						subscribersTimeMutexes[i].Unlock()
+					},
+				})
+				if err == nil {
+					create = true
+				}
+			}
+			if topic == masterConfig.Topic265 && len(masterConfig.Rule265) > 0 {
+				subscribers[i], err = goroslib.NewSubscriber(goroslib.SubscriberConf{
+					Node:  commonConfig.RosNode,
+					Topic: topic,
+					Callback: func(data *dynamic_reconfigure.ConfigDescription) {
+						subscribersTimeMutexes[i].Lock()
+						if time.Since(subscribersTimes[i]).Seconds() > triggerInterval {
+							subscribersMutexes[i].Lock()
+							faultHappenTime := commonUtil.GetNowTimeCustom() // 获取当前故障发生时间
+							lastTimeWindow := entity.GetLastTimeWindow()     // 获取最后一个时间窗口
+							var faultLabel string
+							for _, f := range masterConfig.Rule265 {
+								faultLabel = f(data)
+								if faultLabel != "" {
+									if !canCollect() {
+										break
+									}
+									subscribersTimes[i] = time.Now()
+									c_log.GlobalLogger.Errorf("触发事件【xxx】,开始采集。", faultLabel)
+									saveTimeWindow(faultLabel, faultHappenTime, lastTimeWindow)
+									break
+								}
+							}
+							subscribersMutexes[i].Unlock()
+						}
+						subscribersTimeMutexes[i].Unlock()
+					},
+				})
+				if err == nil {
+					create = true
+				}
+			}
+			if topic == masterConfig.Topic266 && len(masterConfig.Rule266) > 0 {
+				subscribers[i], err = goroslib.NewSubscriber(goroslib.SubscriberConf{
+					Node:  commonConfig.RosNode,
+					Topic: topic,
+					Callback: func(data *dynamic_reconfigure.Config) {
+						subscribersTimeMutexes[i].Lock()
+						if time.Since(subscribersTimes[i]).Seconds() > triggerInterval {
+							subscribersMutexes[i].Lock()
+							faultHappenTime := commonUtil.GetNowTimeCustom() // 获取当前故障发生时间
+							lastTimeWindow := entity.GetLastTimeWindow()     // 获取最后一个时间窗口
+							var faultLabel string
+							for _, f := range masterConfig.Rule266 {
+								faultLabel = f(data)
+								if faultLabel != "" {
+									if !canCollect() {
+										break
+									}
+									subscribersTimes[i] = time.Now()
+									c_log.GlobalLogger.Errorf("触发事件【xxx】,开始采集。", faultLabel)
+									saveTimeWindow(faultLabel, faultHappenTime, lastTimeWindow)
+									break
+								}
+							}
+							subscribersMutexes[i].Unlock()
+						}
+						subscribersTimeMutexes[i].Unlock()
+					},
+				})
+				if err == nil {
+					create = true
+				}
+			}
+			if topic == masterConfig.Topic267 && len(masterConfig.Rule267) > 0 {
+				subscribers[i], err = goroslib.NewSubscriber(goroslib.SubscriberConf{
+					Node:  commonConfig.RosNode,
+					Topic: topic,
+					Callback: func(data *theora_image_transport.Packet) {
+						subscribersTimeMutexes[i].Lock()
+						if time.Since(subscribersTimes[i]).Seconds() > triggerInterval {
+							subscribersMutexes[i].Lock()
+							faultHappenTime := commonUtil.GetNowTimeCustom() // 获取当前故障发生时间
+							lastTimeWindow := entity.GetLastTimeWindow()     // 获取最后一个时间窗口
+							var faultLabel string
+							for _, f := range masterConfig.Rule267 {
+								faultLabel = f(data)
+								if faultLabel != "" {
+									if !canCollect() {
+										break
+									}
+									subscribersTimes[i] = time.Now()
+									c_log.GlobalLogger.Errorf("触发事件【xxx】,开始采集。", faultLabel)
+									saveTimeWindow(faultLabel, faultHappenTime, lastTimeWindow)
+									break
+								}
+							}
+							subscribersMutexes[i].Unlock()
+						}
+						subscribersTimeMutexes[i].Unlock()
+					},
+				})
+				if err == nil {
+					create = true
+				}
+			}
+			if topic == masterConfig.Topic268 && len(masterConfig.Rule268) > 0 {
+				subscribers[i], err = goroslib.NewSubscriber(goroslib.SubscriberConf{
+					Node:  commonConfig.RosNode,
+					Topic: topic,
+					Callback: func(data *dynamic_reconfigure.ConfigDescription) {
+						subscribersTimeMutexes[i].Lock()
+						if time.Since(subscribersTimes[i]).Seconds() > triggerInterval {
+							subscribersMutexes[i].Lock()
+							faultHappenTime := commonUtil.GetNowTimeCustom() // 获取当前故障发生时间
+							lastTimeWindow := entity.GetLastTimeWindow()     // 获取最后一个时间窗口
+							var faultLabel string
+							for _, f := range masterConfig.Rule268 {
+								faultLabel = f(data)
+								if faultLabel != "" {
+									if !canCollect() {
+										break
+									}
+									subscribersTimes[i] = time.Now()
+									c_log.GlobalLogger.Errorf("触发事件【xxx】,开始采集。", faultLabel)
+									saveTimeWindow(faultLabel, faultHappenTime, lastTimeWindow)
+									break
+								}
+							}
+							subscribersMutexes[i].Unlock()
+						}
+						subscribersTimeMutexes[i].Unlock()
+					},
+				})
+				if err == nil {
+					create = true
+				}
+			}
+			if topic == masterConfig.Topic269 && len(masterConfig.Rule269) > 0 {
+				subscribers[i], err = goroslib.NewSubscriber(goroslib.SubscriberConf{
+					Node:  commonConfig.RosNode,
+					Topic: topic,
+					Callback: func(data *dynamic_reconfigure.Config) {
+						subscribersTimeMutexes[i].Lock()
+						if time.Since(subscribersTimes[i]).Seconds() > triggerInterval {
+							subscribersMutexes[i].Lock()
+							faultHappenTime := commonUtil.GetNowTimeCustom() // 获取当前故障发生时间
+							lastTimeWindow := entity.GetLastTimeWindow()     // 获取最后一个时间窗口
+							var faultLabel string
+							for _, f := range masterConfig.Rule269 {
+								faultLabel = f(data)
+								if faultLabel != "" {
+									if !canCollect() {
+										break
+									}
+									subscribersTimes[i] = time.Now()
+									c_log.GlobalLogger.Errorf("触发事件【xxx】,开始采集。", faultLabel)
+									saveTimeWindow(faultLabel, faultHappenTime, lastTimeWindow)
+									break
+								}
+							}
+							subscribersMutexes[i].Unlock()
+						}
+						subscribersTimeMutexes[i].Unlock()
+					},
+				})
+				if err == nil {
+					create = true
+				}
+			}
+			if topic == masterConfig.Topic270 && len(masterConfig.Rule270) > 0 {
+				subscribers[i], err = goroslib.NewSubscriber(goroslib.SubscriberConf{
+					Node:  commonConfig.RosNode,
+					Topic: topic,
+					Callback: func(data *std_msgs.Bool) {
+						subscribersTimeMutexes[i].Lock()
+						if time.Since(subscribersTimes[i]).Seconds() > triggerInterval {
+							subscribersMutexes[i].Lock()
+							faultHappenTime := commonUtil.GetNowTimeCustom() // 获取当前故障发生时间
+							lastTimeWindow := entity.GetLastTimeWindow()     // 获取最后一个时间窗口
+							var faultLabel string
+							for _, f := range masterConfig.Rule270 {
+								faultLabel = f(data)
+								if faultLabel != "" {
+									if !canCollect() {
+										break
+									}
+									subscribersTimes[i] = time.Now()
+									c_log.GlobalLogger.Errorf("触发事件【xxx】,开始采集。", faultLabel)
+									saveTimeWindow(faultLabel, faultHappenTime, lastTimeWindow)
+									break
+								}
+							}
+							subscribersMutexes[i].Unlock()
+						}
+						subscribersTimeMutexes[i].Unlock()
+					},
+				})
+				if err == nil {
+					create = true
+				}
+			}
+			if topic == masterConfig.Topic271 && len(masterConfig.Rule271) > 0 {
+				subscribers[i], err = goroslib.NewSubscriber(goroslib.SubscriberConf{
+					Node:  commonConfig.RosNode,
+					Topic: topic,
+					Callback: func(data *geometry_msgs.PoseStamped) {
+						subscribersTimeMutexes[i].Lock()
+						if time.Since(subscribersTimes[i]).Seconds() > triggerInterval {
+							subscribersMutexes[i].Lock()
+							faultHappenTime := commonUtil.GetNowTimeCustom() // 获取当前故障发生时间
+							lastTimeWindow := entity.GetLastTimeWindow()     // 获取最后一个时间窗口
+							var faultLabel string
+							for _, f := range masterConfig.Rule271 {
+								faultLabel = f(data)
+								if faultLabel != "" {
+									if !canCollect() {
+										break
+									}
+									subscribersTimes[i] = time.Now()
+									c_log.GlobalLogger.Errorf("触发事件【xxx】,开始采集。", faultLabel)
+									saveTimeWindow(faultLabel, faultHappenTime, lastTimeWindow)
+									break
+								}
+							}
+							subscribersMutexes[i].Unlock()
+						}
+						subscribersTimeMutexes[i].Unlock()
+					},
+				})
+				if err == nil {
+					create = true
+				}
+			}
+			if topic == masterConfig.Topic272 && len(masterConfig.Rule272) > 0 {
+				subscribers[i], err = goroslib.NewSubscriber(goroslib.SubscriberConf{
+					Node:  commonConfig.RosNode,
+					Topic: topic,
+					Callback: func(data *geometry_msgs.Vector3Stamped) {
+						subscribersTimeMutexes[i].Lock()
+						if time.Since(subscribersTimes[i]).Seconds() > triggerInterval {
+							subscribersMutexes[i].Lock()
+							faultHappenTime := commonUtil.GetNowTimeCustom() // 获取当前故障发生时间
+							lastTimeWindow := entity.GetLastTimeWindow()     // 获取最后一个时间窗口
+							var faultLabel string
+							for _, f := range masterConfig.Rule272 {
+								faultLabel = f(data)
+								if faultLabel != "" {
+									if !canCollect() {
+										break
+									}
+									subscribersTimes[i] = time.Now()
+									c_log.GlobalLogger.Errorf("触发事件【xxx】,开始采集。", faultLabel)
+									saveTimeWindow(faultLabel, faultHappenTime, lastTimeWindow)
+									break
+								}
+							}
+							subscribersMutexes[i].Unlock()
+						}
+						subscribersTimeMutexes[i].Unlock()
+					},
+				})
+				if err == nil {
+					create = true
+				}
+			}
+			if topic == masterConfig.Topic273 && len(masterConfig.Rule273) > 0 {
+				subscribers[i], err = goroslib.NewSubscriber(goroslib.SubscriberConf{
+					Node:  commonConfig.RosNode,
+					Topic: topic,
+					Callback: func(data *common_msgs.TaskFeedbackInfo) {
+						subscribersTimeMutexes[i].Lock()
+						if time.Since(subscribersTimes[i]).Seconds() > triggerInterval {
+							subscribersMutexes[i].Lock()
+							faultHappenTime := commonUtil.GetNowTimeCustom() // 获取当前故障发生时间
+							lastTimeWindow := entity.GetLastTimeWindow()     // 获取最后一个时间窗口
+							var faultLabel string
+							for _, f := range masterConfig.Rule273 {
+								faultLabel = f(data)
+								if faultLabel != "" {
+									if !canCollect() {
+										break
+									}
+									subscribersTimes[i] = time.Now()
+									c_log.GlobalLogger.Errorf("触发事件【xxx】,开始采集。", faultLabel)
+									saveTimeWindow(faultLabel, faultHappenTime, lastTimeWindow)
+									break
+								}
+							}
+							subscribersMutexes[i].Unlock()
+						}
+						subscribersTimeMutexes[i].Unlock()
+					},
+				})
+				if err == nil {
+					create = true
+				}
+			}
+			if topic == masterConfig.Topic274 && len(masterConfig.Rule274) > 0 {
+				subscribers[i], err = goroslib.NewSubscriber(goroslib.SubscriberConf{
+					Node:  commonConfig.RosNode,
+					Topic: topic,
+					Callback: func(data *common_msgs.Points) {
+						subscribersTimeMutexes[i].Lock()
+						if time.Since(subscribersTimes[i]).Seconds() > triggerInterval {
+							subscribersMutexes[i].Lock()
+							faultHappenTime := commonUtil.GetNowTimeCustom() // 获取当前故障发生时间
+							lastTimeWindow := entity.GetLastTimeWindow()     // 获取最后一个时间窗口
+							var faultLabel string
+							for _, f := range masterConfig.Rule274 {
+								faultLabel = f(data)
+								if faultLabel != "" {
+									if !canCollect() {
+										break
+									}
+									subscribersTimes[i] = time.Now()
+									c_log.GlobalLogger.Errorf("触发事件【xxx】,开始采集。", faultLabel)
+									saveTimeWindow(faultLabel, faultHappenTime, lastTimeWindow)
+									break
+								}
+							}
+							subscribersMutexes[i].Unlock()
+						}
+						subscribersTimeMutexes[i].Unlock()
+					},
+				})
+				if err == nil {
+					create = true
+				}
+			}
+			if topic == masterConfig.Topic275 && len(masterConfig.Rule275) > 0 {
+				subscribers[i], err = goroslib.NewSubscriber(goroslib.SubscriberConf{
+					Node:  commonConfig.RosNode,
+					Topic: topic,
+					Callback: func(data *tf2_msgs.TFMessage) {
+						subscribersTimeMutexes[i].Lock()
+						if time.Since(subscribersTimes[i]).Seconds() > triggerInterval {
+							subscribersMutexes[i].Lock()
+							faultHappenTime := commonUtil.GetNowTimeCustom() // 获取当前故障发生时间
+							lastTimeWindow := entity.GetLastTimeWindow()     // 获取最后一个时间窗口
+							var faultLabel string
+							for _, f := range masterConfig.Rule275 {
+								faultLabel = f(data)
+								if faultLabel != "" {
+									if !canCollect() {
+										break
+									}
+									subscribersTimes[i] = time.Now()
+									c_log.GlobalLogger.Errorf("触发事件【xxx】,开始采集。", faultLabel)
+									saveTimeWindow(faultLabel, faultHappenTime, lastTimeWindow)
+									break
+								}
+							}
+							subscribersMutexes[i].Unlock()
+						}
+						subscribersTimeMutexes[i].Unlock()
+					},
+				})
+				if err == nil {
+					create = true
+				}
+			}
+			if topic == masterConfig.Topic276 && len(masterConfig.Rule276) > 0 {
+				subscribers[i], err = goroslib.NewSubscriber(goroslib.SubscriberConf{
+					Node:  commonConfig.RosNode,
+					Topic: topic,
+					Callback: func(data *std_msgs.String) {
+						subscribersTimeMutexes[i].Lock()
+						if time.Since(subscribersTimes[i]).Seconds() > triggerInterval {
+							subscribersMutexes[i].Lock()
+							faultHappenTime := commonUtil.GetNowTimeCustom() // 获取当前故障发生时间
+							lastTimeWindow := entity.GetLastTimeWindow()     // 获取最后一个时间窗口
+							var faultLabel string
+							for _, f := range masterConfig.Rule276 {
+								faultLabel = f(data)
+								if faultLabel != "" {
+									if !canCollect() {
+										break
+									}
+									subscribersTimes[i] = time.Now()
+									c_log.GlobalLogger.Errorf("触发事件【xxx】,开始采集。", faultLabel)
+									saveTimeWindow(faultLabel, faultHappenTime, lastTimeWindow)
+									break
+								}
+							}
+							subscribersMutexes[i].Unlock()
+						}
+						subscribersTimeMutexes[i].Unlock()
+					},
+				})
+				if err == nil {
+					create = true
+				}
+			}
+			if topic == masterConfig.Topic277 && len(masterConfig.Rule277) > 0 {
+				subscribers[i], err = goroslib.NewSubscriber(goroslib.SubscriberConf{
+					Node:  commonConfig.RosNode,
+					Topic: topic,
+					Callback: func(data *tf2_msgs.TFMessage) {
+						subscribersTimeMutexes[i].Lock()
+						if time.Since(subscribersTimes[i]).Seconds() > triggerInterval {
+							subscribersMutexes[i].Lock()
+							faultHappenTime := commonUtil.GetNowTimeCustom() // 获取当前故障发生时间
+							lastTimeWindow := entity.GetLastTimeWindow()     // 获取最后一个时间窗口
+							var faultLabel string
+							for _, f := range masterConfig.Rule277 {
+								faultLabel = f(data)
+								if faultLabel != "" {
+									if !canCollect() {
+										break
+									}
+									subscribersTimes[i] = time.Now()
+									c_log.GlobalLogger.Errorf("触发事件【xxx】,开始采集。", faultLabel)
+									saveTimeWindow(faultLabel, faultHappenTime, lastTimeWindow)
+									break
+								}
+							}
+							subscribersMutexes[i].Unlock()
+						}
+						subscribersTimeMutexes[i].Unlock()
+					},
+				})
+				if err == nil {
+					create = true
+				}
+			}
+			if topic == masterConfig.Topic278 && len(masterConfig.Rule278) > 0 {
+				subscribers[i], err = goroslib.NewSubscriber(goroslib.SubscriberConf{
+					Node:  commonConfig.RosNode,
+					Topic: topic,
+					Callback: func(data *nav_msgs.Path) {
+						subscribersTimeMutexes[i].Lock()
+						if time.Since(subscribersTimes[i]).Seconds() > triggerInterval {
+							subscribersMutexes[i].Lock()
+							faultHappenTime := commonUtil.GetNowTimeCustom() // 获取当前故障发生时间
+							lastTimeWindow := entity.GetLastTimeWindow()     // 获取最后一个时间窗口
+							var faultLabel string
+							for _, f := range masterConfig.Rule278 {
+								faultLabel = f(data)
+								if faultLabel != "" {
+									if !canCollect() {
+										break
+									}
+									subscribersTimes[i] = time.Now()
+									c_log.GlobalLogger.Errorf("触发事件【xxx】,开始采集。", faultLabel)
+									saveTimeWindow(faultLabel, faultHappenTime, lastTimeWindow)
+									break
+								}
+							}
+							subscribersMutexes[i].Unlock()
+						}
+						subscribersTimeMutexes[i].Unlock()
+					},
+				})
+				if err == nil {
+					create = true
+				}
+			}
+			if topic == masterConfig.Topic279 && len(masterConfig.Rule279) > 0 {
+				subscribers[i], err = goroslib.NewSubscriber(goroslib.SubscriberConf{
+					Node:  commonConfig.RosNode,
+					Topic: topic,
+					Callback: func(data *common_msgs.UpLoadFileList) {
+						subscribersTimeMutexes[i].Lock()
+						if time.Since(subscribersTimes[i]).Seconds() > triggerInterval {
+							subscribersMutexes[i].Lock()
+							faultHappenTime := commonUtil.GetNowTimeCustom() // 获取当前故障发生时间
+							lastTimeWindow := entity.GetLastTimeWindow()     // 获取最后一个时间窗口
+							var faultLabel string
+							for _, f := range masterConfig.Rule279 {
+								faultLabel = f(data)
+								if faultLabel != "" {
+									if !canCollect() {
+										break
+									}
+									subscribersTimes[i] = time.Now()
+									c_log.GlobalLogger.Errorf("触发事件【xxx】,开始采集。", faultLabel)
+									saveTimeWindow(faultLabel, faultHappenTime, lastTimeWindow)
+									break
+								}
+							}
+							subscribersMutexes[i].Unlock()
+						}
+						subscribersTimeMutexes[i].Unlock()
+					},
+				})
+				if err == nil {
+					create = true
+				}
+			}
+			if topic == masterConfig.Topic280 && len(masterConfig.Rule280) > 0 {
+				subscribers[i], err = goroslib.NewSubscriber(goroslib.SubscriberConf{
+					Node:  commonConfig.RosNode,
+					Topic: topic,
+					Callback: func(data *sensor_msgs.Range) {
+						subscribersTimeMutexes[i].Lock()
+						if time.Since(subscribersTimes[i]).Seconds() > triggerInterval {
+							subscribersMutexes[i].Lock()
+							faultHappenTime := commonUtil.GetNowTimeCustom() // 获取当前故障发生时间
+							lastTimeWindow := entity.GetLastTimeWindow()     // 获取最后一个时间窗口
+							var faultLabel string
+							for _, f := range masterConfig.Rule280 {
+								faultLabel = f(data)
+								if faultLabel != "" {
+									if !canCollect() {
+										break
+									}
+									subscribersTimes[i] = time.Now()
+									c_log.GlobalLogger.Errorf("触发事件【xxx】,开始采集。", faultLabel)
+									saveTimeWindow(faultLabel, faultHappenTime, lastTimeWindow)
+									break
+								}
+							}
+							subscribersMutexes[i].Unlock()
+						}
+						subscribersTimeMutexes[i].Unlock()
+					},
+				})
+				if err == nil {
+					create = true
+				}
+			}
+			if topic == masterConfig.Topic281 && len(masterConfig.Rule281) > 0 {
+				subscribers[i], err = goroslib.NewSubscriber(goroslib.SubscriberConf{
+					Node:  commonConfig.RosNode,
+					Topic: topic,
+					Callback: func(data *sensor_msgs.LaserScan) {
+						subscribersTimeMutexes[i].Lock()
+						if time.Since(subscribersTimes[i]).Seconds() > triggerInterval {
+							subscribersMutexes[i].Lock()
+							faultHappenTime := commonUtil.GetNowTimeCustom() // 获取当前故障发生时间
+							lastTimeWindow := entity.GetLastTimeWindow()     // 获取最后一个时间窗口
+							var faultLabel string
+							for _, f := range masterConfig.Rule281 {
+								faultLabel = f(data)
+								if faultLabel != "" {
+									if !canCollect() {
+										break
+									}
+									subscribersTimes[i] = time.Now()
+									c_log.GlobalLogger.Errorf("触发事件【xxx】,开始采集。", faultLabel)
+									saveTimeWindow(faultLabel, faultHappenTime, lastTimeWindow)
+									break
+								}
+							}
+							subscribersMutexes[i].Unlock()
+						}
+						subscribersTimeMutexes[i].Unlock()
+					},
+				})
+				if err == nil {
+					create = true
+				}
+			}
+			if topic == masterConfig.Topic282 && len(masterConfig.Rule282) > 0 {
+				subscribers[i], err = goroslib.NewSubscriber(goroslib.SubscriberConf{
+					Node:  commonConfig.RosNode,
+					Topic: topic,
+					Callback: func(data *sensor_msgs.LaserScan) {
+						subscribersTimeMutexes[i].Lock()
+						if time.Since(subscribersTimes[i]).Seconds() > triggerInterval {
+							subscribersMutexes[i].Lock()
+							faultHappenTime := commonUtil.GetNowTimeCustom() // 获取当前故障发生时间
+							lastTimeWindow := entity.GetLastTimeWindow()     // 获取最后一个时间窗口
+							var faultLabel string
+							for _, f := range masterConfig.Rule282 {
+								faultLabel = f(data)
+								if faultLabel != "" {
+									if !canCollect() {
+										break
+									}
+									subscribersTimes[i] = time.Now()
+									c_log.GlobalLogger.Errorf("触发事件【xxx】,开始采集。", faultLabel)
+									saveTimeWindow(faultLabel, faultHappenTime, lastTimeWindow)
+									break
+								}
+							}
+							subscribersMutexes[i].Unlock()
+						}
+						subscribersTimeMutexes[i].Unlock()
+					},
+				})
+				if err == nil {
+					create = true
+				}
+			}
+			if topic == masterConfig.Topic283 && len(masterConfig.Rule283) > 0 {
+				subscribers[i], err = goroslib.NewSubscriber(goroslib.SubscriberConf{
+					Node:  commonConfig.RosNode,
+					Topic: topic,
+					Callback: func(data *sensor_msgs.LaserScan) {
+						subscribersTimeMutexes[i].Lock()
+						if time.Since(subscribersTimes[i]).Seconds() > triggerInterval {
+							subscribersMutexes[i].Lock()
+							faultHappenTime := commonUtil.GetNowTimeCustom() // 获取当前故障发生时间
+							lastTimeWindow := entity.GetLastTimeWindow()     // 获取最后一个时间窗口
+							var faultLabel string
+							for _, f := range masterConfig.Rule283 {
+								faultLabel = f(data)
+								if faultLabel != "" {
+									if !canCollect() {
+										break
+									}
+									subscribersTimes[i] = time.Now()
+									c_log.GlobalLogger.Errorf("触发事件【xxx】,开始采集。", faultLabel)
+									saveTimeWindow(faultLabel, faultHappenTime, lastTimeWindow)
+									break
+								}
+							}
+							subscribersMutexes[i].Unlock()
+						}
+						subscribersTimeMutexes[i].Unlock()
+					},
+				})
+				if err == nil {
+					create = true
+				}
+			}
+			if topic == masterConfig.Topic284 && len(masterConfig.Rule284) > 0 {
+				subscribers[i], err = goroslib.NewSubscriber(goroslib.SubscriberConf{
+					Node:  commonConfig.RosNode,
+					Topic: topic,
+					Callback: func(data *sensor_msgs.LaserScan) {
+						subscribersTimeMutexes[i].Lock()
+						if time.Since(subscribersTimes[i]).Seconds() > triggerInterval {
+							subscribersMutexes[i].Lock()
+							faultHappenTime := commonUtil.GetNowTimeCustom() // 获取当前故障发生时间
+							lastTimeWindow := entity.GetLastTimeWindow()     // 获取最后一个时间窗口
+							var faultLabel string
+							for _, f := range masterConfig.Rule284 {
+								faultLabel = f(data)
+								if faultLabel != "" {
+									if !canCollect() {
+										break
+									}
+									subscribersTimes[i] = time.Now()
+									c_log.GlobalLogger.Errorf("触发事件【xxx】,开始采集。", faultLabel)
+									saveTimeWindow(faultLabel, faultHappenTime, lastTimeWindow)
+									break
+								}
+							}
+							subscribersMutexes[i].Unlock()
+						}
+						subscribersTimeMutexes[i].Unlock()
+					},
+				})
+				if err == nil {
+					create = true
+				}
+			}
+
+			if err != nil {
+				c_log.GlobalLogger.Infof("创建订阅者报错,可能由于节点未启动,再次尝试【%v】", err)
+				time.Sleep(time.Duration(2) * time.Second)
+				continue
+			} else {
+				if create {
+					c_log.GlobalLogger.Infof("创建订阅者订阅话题【%v】", topic)
+				}
+				break
+			}
+		}
+	}
+	c_log.GlobalLogger.Infof("全部订阅者创建完成。")
+	select {
+	case signal := <-commonService.ChannelKillSubscriber:
+		if signal == 1 {
+			commonConfig.RosNode.Close()
+			commonService.AddKillTimes("3")
+			return
+		}
+	}
 }
 
 func saveTimeWindow(faultLabel string, faultHappenTime string, lastTimeWindow *entity.TimeWindow) {

+ 42 - 2
tools/print_code/main/main.go

@@ -10,7 +10,7 @@ type Rule struct {
 	TopicName string
 }
 
-func generateRuleCode(rules []Rule) string {
+func generateRuleCode1(rules []Rule) string {
 	code := ""
 	for i, rule := range rules {
 		ifPart := "if"
@@ -30,6 +30,46 @@ func generateRuleCode(rules []Rule) string {
 	code += "}"
 	return code
 }
+func generateRuleCode2(rules []Rule) string {
+	code := ""
+	for _, rule := range rules {
+		code += fmt.Sprintf(`
+		if topic == masterConfig.%s && len(masterConfig.%s) > 0 {
+			subscribers[i], err = goroslib.NewSubscriber(goroslib.SubscriberConf{
+				Node:  commonConfig.RosNode,
+				Topic: topic,
+				Callback: func(data *%s) {
+					subscribersTimeMutexes[i].Lock()
+					if time.Since(subscribersTimes[i]).Seconds() > triggerInterval {
+						subscribersMutexes[i].Lock()
+						faultHappenTime := commonUtil.GetNowTimeCustom() // 获取当前故障发生时间
+						lastTimeWindow := entity.GetLastTimeWindow()     // 获取最后一个时间窗口
+						var faultLabel string
+						for _, f := range masterConfig.%s {
+							faultLabel = f(data)
+							if faultLabel != "" {
+								if !canCollect() {
+									break
+								}
+								subscribersTimes[i] = time.Now()
+								c_log.GlobalLogger.Errorf("触发事件【xxx】,开始采集。", faultLabel)
+								saveTimeWindow(faultLabel, faultHappenTime, lastTimeWindow)
+								break
+							}
+						}
+						subscribersMutexes[i].Unlock()
+					}
+					subscribersTimeMutexes[i].Unlock()
+				},
+			})
+			if err == nil {
+				create = true
+			}
+		}`, rule.TopicName, rule.Name, rule.DataType, rule.Name)
+	}
+	code += "}"
+	return code
+}
 
 func main() {
 	rules := []Rule{
@@ -319,6 +359,6 @@ func main() {
 		{"Rule284", "sensor_msgs.LaserScan", "Topic284"},
 	}
 
-	code := generateRuleCode(rules)
+	code := generateRuleCode2(rules)
 	fmt.Println(code)
 }