123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364 |
- package main
- import (
- "fmt"
- )
- type Rule struct {
- Name string
- DataType string
- TopicName string
- }
- func generateRuleCode1(rules []Rule) string {
- code := ""
- for i, rule := range rules {
- ifPart := "if"
- if i > 0 {
- ifPart = "} else if"
- }
- code += fmt.Sprintf(`
- %s %s == topic2 { // %d
- if f, ok1 := rule.(func(data *%s) string); ok1 {
- %s = append(%s, f)
- goto JudgeDone
- }
- log(triggerLocalPath)
- continue
- `, ifPart, rule.TopicName, i+1, rule.DataType, rule.Name, rule.Name)
- }
- 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{
- {"Rule1", "std_msgs.Int16MultiArray", "Topic1"},
- {"Rule2", "geometry_msgs.PoseStamped", "Topic2"},
- {"Rule3", "dynamic_reconfigure.ConfigDescription", "Topic3"},
- {"Rule4", "dynamic_reconfigure.Config", "Topic4"},
- {"Rule5", "std_msgs.String", "Topic5"},
- {"Rule6", "geometry_msgs.PoseWithCovarianceStamped", "Topic6"},
- {"Rule7", "std_msgs.String", "Topic7"},
- {"Rule8", "std_msgs.String", "Topic8"},
- {"Rule9", "std_msgs.Bool", "Topic9"},
- {"Rule10", "std_msgs.Int8", "Topic10"},
- {"Rule11", "std_msgs.Int8", "Topic11"},
- {"Rule12", "sensor_msgs.PointCloud2", "Topic12"},
- {"Rule13", "sensor_msgs.BatteryState", "Topic13"},
- {"Rule14", "std_msgs.Int16", "Topic14"},
- {"Rule15", "visualization_msgs.Marker", "Topic15"},
- {"Rule16", "std_msgs.String", "Topic16"},
- {"Rule17", "sensor_msgs.CameraInfo", "Topic17"},
- {"Rule18", "sensor_msgs.Image", "Topic18"},
- {"Rule19", "sensor_msgs.CompressedImage", "Topic19"},
- {"Rule20", "dynamic_reconfigure.ConfigDescription", "Topic20"},
- {"Rule21", "dynamic_reconfigure.Config", "Topic21"},
- {"Rule22", "sensor_msgs.CompressedImage", "Topic22"},
- {"Rule23", "dynamic_reconfigure.ConfigDescription", "Topic23"},
- {"Rule24", "dynamic_reconfigure.Config", "Topic24"},
- {"Rule25", "theora_image_transport.Packet", "Topic25"},
- {"Rule26", "dynamic_reconfigure.ConfigDescription", "Topic26"},
- {"Rule27", "dynamic_reconfigure.Config", "Topic27"},
- {"Rule28", "sensor_msgs.PointCloud2", "Topic28"},
- {"Rule29", "sensor_msgs.CameraInfo", "Topic29"},
- {"Rule30", "sensor_msgs.Image", "Topic30"},
- {"Rule31", "sensor_msgs.CompressedImage", "Topic31"},
- {"Rule32", "dynamic_reconfigure.ConfigDescription", "Topic32"},
- {"Rule33", "dynamic_reconfigure.Config", "Topic33"},
- {"Rule34", "sensor_msgs.CompressedImage", "Topic34"},
- {"Rule35", "dynamic_reconfigure.ConfigDescription", "Topic35"},
- {"Rule36", "dynamic_reconfigure.Config", "Topic36"},
- {"Rule37", "theora_image_transport.Packet", "Topic37"},
- {"Rule38", "dynamic_reconfigure.ConfigDescription", "Topic38"},
- {"Rule39", "dynamic_reconfigure.Config", "Topic39"},
- {"Rule40", "geometry_msgs.PoseStamped", "Topic40"},
- {"Rule41", "geometry_msgs.PoseStamped", "Topic41"},
- {"Rule42", "nav_msgs.Path", "Topic42"},
- {"Rule43", "std_msgs.Int8", "Topic43"},
- {"Rule44", "std_msgs.Bool", "Topic44"},
- {"Rule45", "nav_msgs.Path", "Topic45"},
- {"Rule46", "geometry_msgs.PoseStamped", "Topic46"},
- {"Rule47", "geometry_msgs.PoseStamped", "Topic47"},
- {"Rule48", "geometry_msgs.PoseStamped", "Topic48"},
- {"Rule49", "std_msgs.String", "Topic49"},
- {"Rule50", "visualization_msgs.MarkerArray", "Topic50"},
- {"Rule51", "geometry_msgs.PolygonStamped", "Topic51"},
- {"Rule52", "nav_msgs.OccupancyGrid", "Topic52"},
- {"Rule53", "nav_msgs.OccupancyGrid", "Topic53"},
- {"Rule54", "nav_msgs.OccupancyGrid", "Topic54"},
- {"Rule55", "std_msgs.Float32", "Topic55"},
- {"Rule56", "std_msgs.Int32", "Topic56"},
- {"Rule57", "nav_msgs.Path", "Topic57"},
- {"Rule58", "clean_msg.ErrorInfo", "Topic58"},
- {"Rule59", "nav_msgs.OccupancyGrid", "Topic59"},
- {"Rule60", "nav_msgs.OccupancyGrid", "Topic60"},
- {"Rule61", "nav_msgs.OccupancyGrid", "Topic61"},
- {"Rule62", "nav_msgs.OccupancyGrid", "Topic62"},
- {"Rule63", "nav_msgs.OccupancyGrid", "Topic63"},
- {"Rule64", "nav_msgs.OccupancyGrid", "Topic64"},
- {"Rule65", "std_msgs.String", "Topic65"},
- {"Rule66", "std_msgs.Bool", "Topic66"},
- {"Rule67", "std_msgs.Bool", "Topic67"},
- {"Rule68", "geometry_msgs.PolygonStamped", "Topic68"},
- {"Rule69", "geometry_msgs.PointStamped", "Topic69"},
- {"Rule70", "std_msgs.String", "Topic70"},
- {"Rule71", "geometry_msgs.Twist", "Topic71"},
- {"Rule72", "geometry_msgs.Twist", "Topic72"},
- {"Rule73", "nav_msgs.Path", "Topic73"},
- {"Rule74", "common_msgs.CreateMapInfo", "Topic74"},
- {"Rule75", "geometry_msgs.Twist", "Topic75"},
- {"Rule76", "common_msgs.SensorStatus", "Topic76"},
- {"Rule77", "geometry_msgs.PoseArray", "Topic77"},
- {"Rule78", "nav_msgs.Path", "Topic78"},
- {"Rule79", "common_msgs.IdentifierObjsInfo", "Topic79"},
- {"Rule80", "common_msgs.McuDiagnostic", "Topic80"},
- {"Rule81", "diagnostic_msgs.DiagnosticArray", "Topic81"},
- {"Rule82", "std_msgs.Int8", "Topic82"},
- {"Rule83", "std_msgs.Int16", "Topic83"},
- {"Rule84", "geometry_msgs.Vector3Stamped", "Topic84"},
- {"Rule85", "sensor_msgs.LaserScan", "Topic85"},
- {"Rule86", "sensor_msgs.PointCloud2", "Topic86"},
- {"Rule87", "std_msgs.String", "Topic87"},
- {"Rule88", "std_msgs.String", "Topic88"},
- {"Rule89", "std_msgs.String", "Topic89"},
- {"Rule90", "std_msgs.Int32", "Topic90"},
- {"Rule91", "common_msgs.TaskInfo", "Topic91"},
- {"Rule92", "common_msgs.MapInfo", "Topic92"},
- {"Rule93", "nav_msgs.Path", "Topic93"},
- {"Rule94", "common_msgs.VideoStream", "Topic94"},
- {"Rule95", "sensor_msgs.PointCloud2", "Topic95"},
- {"Rule96", "nav_msgs.Path", "Topic96"},
- {"Rule97", "sensor_msgs.PointCloud2", "Topic97"},
- {"Rule98", "sensor_msgs.PointCloud2", "Topic98"},
- {"Rule99", "sensor_msgs.PointCloud2", "Topic99"},
- {"Rule100", "geometry_msgs.PointStamped", "Topic100"},
- {"Rule101", "nav_msgs.Path", "Topic101"},
- {"Rule102", "geometry_msgs.PoseStamped", "Topic102"},
- {"Rule103", "geometry_msgs.PoseWithCovarianceStamped", "Topic103"},
- {"Rule104", "geometry_msgs.Pose", "Topic104"},
- {"Rule105", "std_msgs.String", "Topic105"},
- {"Rule106", "std_msgs.String", "Topic106"},
- {"Rule107", "std_msgs.String", "Topic107"},
- {"Rule108", "std_msgs.String", "Topic108"},
- {"Rule109", "std_msgs.Float64", "Topic109"},
- {"Rule110", "std_msgs.String", "Topic110"},
- {"Rule111", "std_msgs.String", "Topic111"},
- {"Rule112", "sensor_msgs.Imu", "Topic112"},
- {"Rule113", "std_msgs.String", "Topic113"},
- {"Rule114", "std_msgs.Int8", "Topic114"},
- {"Rule115", "std_msgs.Int16", "Topic115"},
- {"Rule116", "std_msgs.String", "Topic116"},
- {"Rule117", "std_msgs.String", "Topic117"},
- {"Rule118", "geometry_msgs.PoseWithCovarianceStamped", "Topic118"},
- {"Rule119", "sensor_msgs.JointState", "Topic119"},
- {"Rule120", "std_msgs.String", "Topic120"},
- {"Rule121", "cartographer_ros_msgs.LandmarkList", "Topic121"},
- {"Rule122", "nav_msgs.Odometry", "Topic122"},
- {"Rule123", "sensor_msgs.LaserScan", "Topic123"},
- {"Rule124", "std_msgs.String", "Topic124"},
- {"Rule125", "nav_msgs.Path", "Topic125"},
- {"Rule126", "std_msgs.String", "Topic126"},
- {"Rule127", "std_msgs.String", "Topic127"},
- {"Rule128", "std_msgs.String", "Topic128"},
- {"Rule129", "std_msgs.String", "Topic129"},
- {"Rule130", "geometry_msgs.PoseWithCovarianceStamped", "Topic130"},
- {"Rule131", "std_msgs.String", "Topic131"},
- {"Rule132", "std_msgs.String", "Topic132"},
- {"Rule133", "common_msgs.LocateInfo", "Topic133"},
- {"Rule134", "std_msgs.Bool", "Topic134"},
- {"Rule135", "std_msgs.Float64MultiArray", "Topic135"},
- {"Rule136", "std_msgs.String", "Topic136"},
- {"Rule137", "std_msgs.String", "Topic137"},
- {"Rule138", "nav_msgs.OccupancyGrid", "Topic138"},
- {"Rule139", "std_msgs.String", "Topic139"},
- {"Rule140", "nav_msgs.Path", "Topic140"},
- {"Rule141", "std_msgs.String", "Topic141"},
- {"Rule142", "std_msgs.String", "Topic142"},
- {"Rule143", "nav_msgs.MapMetaData", "Topic143"},
- {"Rule144", "nav_msgs.Path", "Topic144"},
- {"Rule145", "geometry_msgs.PoseStamped", "Topic145"},
- {"Rule146", "nav_msgs.OccupancyGrid", "Topic146"},
- {"Rule147", "nav_msgs.OccupancyGrid", "Topic147"},
- {"Rule148", "std_msgs.String", "Topic148"},
- {"Rule149", "std_msgs.String", "Topic149"},
- {"Rule150", "std_msgs.String", "Topic150"},
- {"Rule151", "std_msgs.String", "Topic151"},
- {"Rule152", "std_msgs.Bool", "Topic152"},
- {"Rule153", "sensor_msgs.CameraInfo", "Topic153"},
- {"Rule154", "sensor_msgs.Image", "Topic154"},
- {"Rule155", "sensor_msgs.CompressedImage", "Topic155"},
- {"Rule156", "dynamic_reconfigure.ConfigDescription", "Topic156"},
- {"Rule157", "dynamic_reconfigure.Config", "Topic157"},
- {"Rule158", "sensor_msgs.CompressedImage", "Topic158"},
- {"Rule159", "dynamic_reconfigure.ConfigDescription", "Topic159"},
- {"Rule160", "dynamic_reconfigure.Config", "Topic160"},
- {"Rule161", "theora_image_transport.Packet", "Topic161"},
- {"Rule162", "dynamic_reconfigure.ConfigDescription", "Topic162"},
- {"Rule163", "dynamic_reconfigure.Config", "Topic163"},
- {"Rule164", "sensor_msgs.CameraInfo", "Topic164"},
- {"Rule165", "sensor_msgs.Image", "Topic165"},
- {"Rule166", "sensor_msgs.CompressedImage", "Topic166"},
- {"Rule167", "dynamic_reconfigure.ConfigDescription", "Topic167"},
- {"Rule168", "dynamic_reconfigure.Config", "Topic168"},
- {"Rule169", "sensor_msgs.CompressedImage", "Topic169"},
- {"Rule170", "dynamic_reconfigure.ConfigDescription", "Topic170"},
- {"Rule171", "dynamic_reconfigure.Config", "Topic171"},
- {"Rule172", "theora_image_transport.Packet", "Topic172"},
- {"Rule173", "dynamic_reconfigure.ConfigDescription", "Topic173"},
- {"Rule174", "dynamic_reconfigure.Config", "Topic174"},
- {"Rule175", "sensor_msgs.PointCloud2", "Topic175"},
- {"Rule176", "sensor_msgs.CameraInfo", "Topic176"},
- {"Rule177", "sensor_msgs.Image", "Topic177"},
- {"Rule178", "sensor_msgs.CompressedImage", "Topic178"},
- {"Rule179", "dynamic_reconfigure.ConfigDescription", "Topic179"},
- {"Rule180", "dynamic_reconfigure.Config", "Topic180"},
- {"Rule181", "sensor_msgs.CompressedImage", "Topic181"},
- {"Rule182", "dynamic_reconfigure.ConfigDescription", "Topic182"},
- {"Rule183", "dynamic_reconfigure.Config", "Topic183"},
- {"Rule184", "theora_image_transport.Packet", "Topic184"},
- {"Rule185", "dynamic_reconfigure.ConfigDescription", "Topic185"},
- {"Rule186", "dynamic_reconfigure.Config", "Topic186"},
- {"Rule187", "sensor_msgs.CameraInfo", "Topic187"},
- {"Rule188", "sensor_msgs.Image", "Topic188"},
- {"Rule189", "sensor_msgs.CompressedImage", "Topic189"},
- {"Rule190", "dynamic_reconfigure.ConfigDescription", "Topic190"},
- {"Rule191", "dynamic_reconfigure.Config", "Topic191"},
- {"Rule192", "sensor_msgs.CompressedImage", "Topic192"},
- {"Rule193", "dynamic_reconfigure.ConfigDescription", "Topic193"},
- {"Rule194", "dynamic_reconfigure.Config", "Topic194"},
- {"Rule195", "theora_image_transport.Packet", "Topic195"},
- {"Rule196", "dynamic_reconfigure.ConfigDescription", "Topic196"},
- {"Rule197", "dynamic_reconfigure.Config", "Topic197"},
- {"Rule198", "sensor_msgs.PointCloud2", "Topic198"},
- {"Rule199", "geometry_msgs.PoseStamped", "Topic199"},
- {"Rule200", "geometry_msgs.PoseStamped", "Topic200"},
- {"Rule201", "std_msgs.UInt8", "Topic201"},
- {"Rule202", "nav_msgs.Odometry", "Topic202"},
- {"Rule203", "std_msgs.String", "Topic203"},
- {"Rule204", "std_msgs.String", "Topic204"},
- {"Rule205", "nav_msgs.Odometry", "Topic205"},
- {"Rule206", "sensor_msgs.Imu", "Topic206"},
- {"Rule207", "sensor_msgs.PointCloud2", "Topic207"},
- {"Rule208", "geometry_msgs.PoseArray", "Topic208"},
- {"Rule209", "sensor_msgs.PointCloud2", "Topic209"},
- {"Rule210", "sensor_msgs.LaserScan", "Topic210"},
- {"Rule211", "geometry_msgs.PoseWithCovarianceStamped", "Topic211"},
- {"Rule212", "geometry_msgs.Vector3Stamped", "Topic212"},
- {"Rule213", "std_msgs.String", "Topic213"},
- {"Rule214", "common_msgs.FunctionAreas", "Topic214"},
- {"Rule215", "std_msgs.Bool", "Topic215"},
- {"Rule216", "nav_msgs.Path", "Topic216"},
- {"Rule217", "std_msgs.Float64MultiArray", "Topic217"},
- {"Rule218", "std_msgs.String", "Topic218"},
- {"Rule219", "std_msgs.String", "Topic219"},
- {"Rule220", "std_msgs.String", "Topic220"},
- {"Rule221", "geometry_msgs.PoseStamped", "Topic221"},
- {"Rule222", "geometry_msgs.PoseWithCovarianceStamped", "Topic222"},
- {"Rule223", "std_msgs.String", "Topic223"},
- {"Rule224", "std_msgs.String", "Topic224"},
- {"Rule225", "localization_monitor.RobotStatus", "Topic225"},
- {"Rule226", "std_msgs.Float64MultiArray", "Topic226"},
- {"Rule227", "std_msgs.String", "Topic227"},
- {"Rule228", "actionlib_msgs.GoalID", "Topic228"},
- {"Rule229", "ipa_building_msgs.MapSegmentationActionFeedback", "Topic229"},
- {"Rule230", "ipa_building_msgs.MapSegmentationActionGoal", "Topic230"},
- {"Rule231", "dynamic_reconfigure.ConfigDescription", "Topic231"},
- {"Rule232", "dynamic_reconfigure.Config", "Topic232"},
- {"Rule233", "ipa_building_msgs.MapSegmentationActionResult", "Topic233"},
- {"Rule234", "nav_msgs.OccupancyGrid", "Topic234"},
- {"Rule235", "actionlib_msgs.GoalStatusArray", "Topic235"},
- {"Rule236", "rosgraph_msgs.Log", "Topic236"},
- {"Rule237", "rosgraph_msgs.Log", "Topic237"},
- {"Rule238", "nav_msgs.Path", "Topic238"},
- {"Rule239", "geometry_msgs.Vector3Stamped", "Topic239"},
- {"Rule240", "sensor_msgs.LaserScan", "Topic240"},
- {"Rule241", "sensor_msgs.LaserScan", "Topic241"},
- {"Rule242", "sensor_msgs.LaserScan", "Topic242"},
- {"Rule243", "sensor_msgs.LaserScan", "Topic243"},
- {"Rule244", "sensor_msgs.LaserScan", "Topic244"},
- {"Rule245", "sensor_msgs.PointCloud2", "Topic245"},
- {"Rule246", "sensor_msgs.PointCloud2", "Topic246"},
- {"Rule247", "visualization_msgs.MarkerArray", "Topic247"},
- {"Rule248", "common_msgs.SensorTask", "Topic248"},
- {"Rule249", "std_msgs.String", "Topic249"},
- {"Rule250", "geometry_msgs.Vector3Stamped", "Topic250"},
- {"Rule251", "common_msgs.SonarList", "Topic251"},
- {"Rule252", "nav_msgs.Odometry", "Topic252"},
- {"Rule253", "sensor_msgs.LaserScan", "Topic253"},
- {"Rule254", "std_msgs.Bool", "Topic254"},
- {"Rule255", "sensor_msgs.LaserScan", "Topic255"},
- {"Rule256", "std_msgs.String", "Topic256"},
- {"Rule257", "std_msgs.Bool", "Topic257"},
- {"Rule258", "sensor_msgs.CameraInfo", "Topic258"},
- {"Rule259", "common_msgs.SysInfo", "Topic259"},
- {"Rule260", "sensor_msgs.Image", "Topic260"},
- {"Rule261", "sensor_msgs.CompressedImage", "Topic261"},
- {"Rule262", "dynamic_reconfigure.ConfigDescription", "Topic262"},
- {"Rule263", "dynamic_reconfigure.Config", "Topic263"},
- {"Rule264", "sensor_msgs.CompressedImage", "Topic264"},
- {"Rule265", "dynamic_reconfigure.ConfigDescription", "Topic265"},
- {"Rule266", "dynamic_reconfigure.Config", "Topic266"},
- {"Rule267", "theora_image_transport.Packet", "Topic267"},
- {"Rule268", "dynamic_reconfigure.ConfigDescription", "Topic268"},
- {"Rule269", "dynamic_reconfigure.Config", "Topic269"},
- {"Rule270", "std_msgs.Bool", "Topic270"},
- {"Rule271", "geometry_msgs.PoseStamped", "Topic271"},
- {"Rule272", "geometry_msgs.Vector3Stamped", "Topic272"},
- {"Rule273", "common_msgs.TaskFeedbackInfo", "Topic273"},
- {"Rule274", "common_msgs.Points", "Topic274"},
- {"Rule275", "tf2_msgs.TFMessage", "Topic275"},
- {"Rule276", "std_msgs.String", "Topic276"},
- {"Rule277", "tf2_msgs.TFMessage", "Topic277"},
- {"Rule278", "nav_msgs.Path", "Topic278"},
- {"Rule279", "common_msgs.UpLoadFileList", "Topic279"},
- {"Rule280", "sensor_msgs.Range", "Topic280"},
- {"Rule281", "sensor_msgs.LaserScan", "Topic281"},
- {"Rule282", "sensor_msgs.LaserScan", "Topic282"},
- {"Rule283", "sensor_msgs.LaserScan", "Topic283"},
- {"Rule284", "sensor_msgs.LaserScan", "Topic284"},
- }
- code := generateRuleCode2(rules)
- fmt.Println(code)
- }
|