main.go 16 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364
  1. package main
  2. import (
  3. "fmt"
  4. )
  5. type Rule struct {
  6. Name string
  7. DataType string
  8. TopicName string
  9. }
  10. func generateRuleCode1(rules []Rule) string {
  11. code := ""
  12. for i, rule := range rules {
  13. ifPart := "if"
  14. if i > 0 {
  15. ifPart = "} else if"
  16. }
  17. code += fmt.Sprintf(`
  18. %s %s == topic2 { // %d
  19. if f, ok1 := rule.(func(data *%s) string); ok1 {
  20. %s = append(%s, f)
  21. goto JudgeDone
  22. }
  23. log(triggerLocalPath)
  24. continue
  25. `, ifPart, rule.TopicName, i+1, rule.DataType, rule.Name, rule.Name)
  26. }
  27. code += "}"
  28. return code
  29. }
  30. func generateRuleCode2(rules []Rule) string {
  31. code := ""
  32. for _, rule := range rules {
  33. code += fmt.Sprintf(`
  34. if topic == masterConfig.%s && len(masterConfig.%s) > 0 {
  35. subscribers[i], err = goroslib.NewSubscriber(goroslib.SubscriberConf{
  36. Node: commonConfig.RosNode,
  37. Topic: topic,
  38. Callback: func(data *%s) {
  39. subscribersTimeMutexes[i].Lock()
  40. if time.Since(subscribersTimes[i]).Seconds() > triggerInterval {
  41. subscribersMutexes[i].Lock()
  42. faultHappenTime := commonUtil.GetNowTimeCustom() // 获取当前故障发生时间
  43. lastTimeWindow := entity.GetLastTimeWindow() // 获取最后一个时间窗口
  44. var faultLabel string
  45. for _, f := range masterConfig.%s {
  46. faultLabel = f(data)
  47. if faultLabel != "" {
  48. if !canCollect() {
  49. break
  50. }
  51. subscribersTimes[i] = time.Now()
  52. c_log.GlobalLogger.Errorf("触发事件【xxx】,开始采集。", faultLabel)
  53. saveTimeWindow(faultLabel, faultHappenTime, lastTimeWindow)
  54. break
  55. }
  56. }
  57. subscribersMutexes[i].Unlock()
  58. }
  59. subscribersTimeMutexes[i].Unlock()
  60. },
  61. })
  62. if err == nil {
  63. create = true
  64. }
  65. }`, rule.TopicName, rule.Name, rule.DataType, rule.Name)
  66. }
  67. code += "}"
  68. return code
  69. }
  70. func main() {
  71. rules := []Rule{
  72. {"Rule1", "std_msgs.Int16MultiArray", "Topic1"},
  73. {"Rule2", "geometry_msgs.PoseStamped", "Topic2"},
  74. {"Rule3", "dynamic_reconfigure.ConfigDescription", "Topic3"},
  75. {"Rule4", "dynamic_reconfigure.Config", "Topic4"},
  76. {"Rule5", "std_msgs.String", "Topic5"},
  77. {"Rule6", "geometry_msgs.PoseWithCovarianceStamped", "Topic6"},
  78. {"Rule7", "std_msgs.String", "Topic7"},
  79. {"Rule8", "std_msgs.String", "Topic8"},
  80. {"Rule9", "std_msgs.Bool", "Topic9"},
  81. {"Rule10", "std_msgs.Int8", "Topic10"},
  82. {"Rule11", "std_msgs.Int8", "Topic11"},
  83. {"Rule12", "sensor_msgs.PointCloud2", "Topic12"},
  84. {"Rule13", "sensor_msgs.BatteryState", "Topic13"},
  85. {"Rule14", "std_msgs.Int16", "Topic14"},
  86. {"Rule15", "visualization_msgs.Marker", "Topic15"},
  87. {"Rule16", "std_msgs.String", "Topic16"},
  88. {"Rule17", "sensor_msgs.CameraInfo", "Topic17"},
  89. {"Rule18", "sensor_msgs.Image", "Topic18"},
  90. {"Rule19", "sensor_msgs.CompressedImage", "Topic19"},
  91. {"Rule20", "dynamic_reconfigure.ConfigDescription", "Topic20"},
  92. {"Rule21", "dynamic_reconfigure.Config", "Topic21"},
  93. {"Rule22", "sensor_msgs.CompressedImage", "Topic22"},
  94. {"Rule23", "dynamic_reconfigure.ConfigDescription", "Topic23"},
  95. {"Rule24", "dynamic_reconfigure.Config", "Topic24"},
  96. {"Rule25", "theora_image_transport.Packet", "Topic25"},
  97. {"Rule26", "dynamic_reconfigure.ConfigDescription", "Topic26"},
  98. {"Rule27", "dynamic_reconfigure.Config", "Topic27"},
  99. {"Rule28", "sensor_msgs.PointCloud2", "Topic28"},
  100. {"Rule29", "sensor_msgs.CameraInfo", "Topic29"},
  101. {"Rule30", "sensor_msgs.Image", "Topic30"},
  102. {"Rule31", "sensor_msgs.CompressedImage", "Topic31"},
  103. {"Rule32", "dynamic_reconfigure.ConfigDescription", "Topic32"},
  104. {"Rule33", "dynamic_reconfigure.Config", "Topic33"},
  105. {"Rule34", "sensor_msgs.CompressedImage", "Topic34"},
  106. {"Rule35", "dynamic_reconfigure.ConfigDescription", "Topic35"},
  107. {"Rule36", "dynamic_reconfigure.Config", "Topic36"},
  108. {"Rule37", "theora_image_transport.Packet", "Topic37"},
  109. {"Rule38", "dynamic_reconfigure.ConfigDescription", "Topic38"},
  110. {"Rule39", "dynamic_reconfigure.Config", "Topic39"},
  111. {"Rule40", "geometry_msgs.PoseStamped", "Topic40"},
  112. {"Rule41", "geometry_msgs.PoseStamped", "Topic41"},
  113. {"Rule42", "nav_msgs.Path", "Topic42"},
  114. {"Rule43", "std_msgs.Int8", "Topic43"},
  115. {"Rule44", "std_msgs.Bool", "Topic44"},
  116. {"Rule45", "nav_msgs.Path", "Topic45"},
  117. {"Rule46", "geometry_msgs.PoseStamped", "Topic46"},
  118. {"Rule47", "geometry_msgs.PoseStamped", "Topic47"},
  119. {"Rule48", "geometry_msgs.PoseStamped", "Topic48"},
  120. {"Rule49", "std_msgs.String", "Topic49"},
  121. {"Rule50", "visualization_msgs.MarkerArray", "Topic50"},
  122. {"Rule51", "geometry_msgs.PolygonStamped", "Topic51"},
  123. {"Rule52", "nav_msgs.OccupancyGrid", "Topic52"},
  124. {"Rule53", "nav_msgs.OccupancyGrid", "Topic53"},
  125. {"Rule54", "nav_msgs.OccupancyGrid", "Topic54"},
  126. {"Rule55", "std_msgs.Float32", "Topic55"},
  127. {"Rule56", "std_msgs.Int32", "Topic56"},
  128. {"Rule57", "nav_msgs.Path", "Topic57"},
  129. {"Rule58", "clean_msg.ErrorInfo", "Topic58"},
  130. {"Rule59", "nav_msgs.OccupancyGrid", "Topic59"},
  131. {"Rule60", "nav_msgs.OccupancyGrid", "Topic60"},
  132. {"Rule61", "nav_msgs.OccupancyGrid", "Topic61"},
  133. {"Rule62", "nav_msgs.OccupancyGrid", "Topic62"},
  134. {"Rule63", "nav_msgs.OccupancyGrid", "Topic63"},
  135. {"Rule64", "nav_msgs.OccupancyGrid", "Topic64"},
  136. {"Rule65", "std_msgs.String", "Topic65"},
  137. {"Rule66", "std_msgs.Bool", "Topic66"},
  138. {"Rule67", "std_msgs.Bool", "Topic67"},
  139. {"Rule68", "geometry_msgs.PolygonStamped", "Topic68"},
  140. {"Rule69", "geometry_msgs.PointStamped", "Topic69"},
  141. {"Rule70", "std_msgs.String", "Topic70"},
  142. {"Rule71", "geometry_msgs.Twist", "Topic71"},
  143. {"Rule72", "geometry_msgs.Twist", "Topic72"},
  144. {"Rule73", "nav_msgs.Path", "Topic73"},
  145. {"Rule74", "common_msgs.CreateMapInfo", "Topic74"},
  146. {"Rule75", "geometry_msgs.Twist", "Topic75"},
  147. {"Rule76", "common_msgs.SensorStatus", "Topic76"},
  148. {"Rule77", "geometry_msgs.PoseArray", "Topic77"},
  149. {"Rule78", "nav_msgs.Path", "Topic78"},
  150. {"Rule79", "common_msgs.IdentifierObjsInfo", "Topic79"},
  151. {"Rule80", "common_msgs.McuDiagnostic", "Topic80"},
  152. {"Rule81", "diagnostic_msgs.DiagnosticArray", "Topic81"},
  153. {"Rule82", "std_msgs.Int8", "Topic82"},
  154. {"Rule83", "std_msgs.Int16", "Topic83"},
  155. {"Rule84", "geometry_msgs.Vector3Stamped", "Topic84"},
  156. {"Rule85", "sensor_msgs.LaserScan", "Topic85"},
  157. {"Rule86", "sensor_msgs.PointCloud2", "Topic86"},
  158. {"Rule87", "std_msgs.String", "Topic87"},
  159. {"Rule88", "std_msgs.String", "Topic88"},
  160. {"Rule89", "std_msgs.String", "Topic89"},
  161. {"Rule90", "std_msgs.Int32", "Topic90"},
  162. {"Rule91", "common_msgs.TaskInfo", "Topic91"},
  163. {"Rule92", "common_msgs.MapInfo", "Topic92"},
  164. {"Rule93", "nav_msgs.Path", "Topic93"},
  165. {"Rule94", "common_msgs.VideoStream", "Topic94"},
  166. {"Rule95", "sensor_msgs.PointCloud2", "Topic95"},
  167. {"Rule96", "nav_msgs.Path", "Topic96"},
  168. {"Rule97", "sensor_msgs.PointCloud2", "Topic97"},
  169. {"Rule98", "sensor_msgs.PointCloud2", "Topic98"},
  170. {"Rule99", "sensor_msgs.PointCloud2", "Topic99"},
  171. {"Rule100", "geometry_msgs.PointStamped", "Topic100"},
  172. {"Rule101", "nav_msgs.Path", "Topic101"},
  173. {"Rule102", "geometry_msgs.PoseStamped", "Topic102"},
  174. {"Rule103", "geometry_msgs.PoseWithCovarianceStamped", "Topic103"},
  175. {"Rule104", "geometry_msgs.Pose", "Topic104"},
  176. {"Rule105", "std_msgs.String", "Topic105"},
  177. {"Rule106", "std_msgs.String", "Topic106"},
  178. {"Rule107", "std_msgs.String", "Topic107"},
  179. {"Rule108", "std_msgs.String", "Topic108"},
  180. {"Rule109", "std_msgs.Float64", "Topic109"},
  181. {"Rule110", "std_msgs.String", "Topic110"},
  182. {"Rule111", "std_msgs.String", "Topic111"},
  183. {"Rule112", "sensor_msgs.Imu", "Topic112"},
  184. {"Rule113", "std_msgs.String", "Topic113"},
  185. {"Rule114", "std_msgs.Int8", "Topic114"},
  186. {"Rule115", "std_msgs.Int16", "Topic115"},
  187. {"Rule116", "std_msgs.String", "Topic116"},
  188. {"Rule117", "std_msgs.String", "Topic117"},
  189. {"Rule118", "geometry_msgs.PoseWithCovarianceStamped", "Topic118"},
  190. {"Rule119", "sensor_msgs.JointState", "Topic119"},
  191. {"Rule120", "std_msgs.String", "Topic120"},
  192. {"Rule121", "cartographer_ros_msgs.LandmarkList", "Topic121"},
  193. {"Rule122", "nav_msgs.Odometry", "Topic122"},
  194. {"Rule123", "sensor_msgs.LaserScan", "Topic123"},
  195. {"Rule124", "std_msgs.String", "Topic124"},
  196. {"Rule125", "nav_msgs.Path", "Topic125"},
  197. {"Rule126", "std_msgs.String", "Topic126"},
  198. {"Rule127", "std_msgs.String", "Topic127"},
  199. {"Rule128", "std_msgs.String", "Topic128"},
  200. {"Rule129", "std_msgs.String", "Topic129"},
  201. {"Rule130", "geometry_msgs.PoseWithCovarianceStamped", "Topic130"},
  202. {"Rule131", "std_msgs.String", "Topic131"},
  203. {"Rule132", "std_msgs.String", "Topic132"},
  204. {"Rule133", "common_msgs.LocateInfo", "Topic133"},
  205. {"Rule134", "std_msgs.Bool", "Topic134"},
  206. {"Rule135", "std_msgs.Float64MultiArray", "Topic135"},
  207. {"Rule136", "std_msgs.String", "Topic136"},
  208. {"Rule137", "std_msgs.String", "Topic137"},
  209. {"Rule138", "nav_msgs.OccupancyGrid", "Topic138"},
  210. {"Rule139", "std_msgs.String", "Topic139"},
  211. {"Rule140", "nav_msgs.Path", "Topic140"},
  212. {"Rule141", "std_msgs.String", "Topic141"},
  213. {"Rule142", "std_msgs.String", "Topic142"},
  214. {"Rule143", "nav_msgs.MapMetaData", "Topic143"},
  215. {"Rule144", "nav_msgs.Path", "Topic144"},
  216. {"Rule145", "geometry_msgs.PoseStamped", "Topic145"},
  217. {"Rule146", "nav_msgs.OccupancyGrid", "Topic146"},
  218. {"Rule147", "nav_msgs.OccupancyGrid", "Topic147"},
  219. {"Rule148", "std_msgs.String", "Topic148"},
  220. {"Rule149", "std_msgs.String", "Topic149"},
  221. {"Rule150", "std_msgs.String", "Topic150"},
  222. {"Rule151", "std_msgs.String", "Topic151"},
  223. {"Rule152", "std_msgs.Bool", "Topic152"},
  224. {"Rule153", "sensor_msgs.CameraInfo", "Topic153"},
  225. {"Rule154", "sensor_msgs.Image", "Topic154"},
  226. {"Rule155", "sensor_msgs.CompressedImage", "Topic155"},
  227. {"Rule156", "dynamic_reconfigure.ConfigDescription", "Topic156"},
  228. {"Rule157", "dynamic_reconfigure.Config", "Topic157"},
  229. {"Rule158", "sensor_msgs.CompressedImage", "Topic158"},
  230. {"Rule159", "dynamic_reconfigure.ConfigDescription", "Topic159"},
  231. {"Rule160", "dynamic_reconfigure.Config", "Topic160"},
  232. {"Rule161", "theora_image_transport.Packet", "Topic161"},
  233. {"Rule162", "dynamic_reconfigure.ConfigDescription", "Topic162"},
  234. {"Rule163", "dynamic_reconfigure.Config", "Topic163"},
  235. {"Rule164", "sensor_msgs.CameraInfo", "Topic164"},
  236. {"Rule165", "sensor_msgs.Image", "Topic165"},
  237. {"Rule166", "sensor_msgs.CompressedImage", "Topic166"},
  238. {"Rule167", "dynamic_reconfigure.ConfigDescription", "Topic167"},
  239. {"Rule168", "dynamic_reconfigure.Config", "Topic168"},
  240. {"Rule169", "sensor_msgs.CompressedImage", "Topic169"},
  241. {"Rule170", "dynamic_reconfigure.ConfigDescription", "Topic170"},
  242. {"Rule171", "dynamic_reconfigure.Config", "Topic171"},
  243. {"Rule172", "theora_image_transport.Packet", "Topic172"},
  244. {"Rule173", "dynamic_reconfigure.ConfigDescription", "Topic173"},
  245. {"Rule174", "dynamic_reconfigure.Config", "Topic174"},
  246. {"Rule175", "sensor_msgs.PointCloud2", "Topic175"},
  247. {"Rule176", "sensor_msgs.CameraInfo", "Topic176"},
  248. {"Rule177", "sensor_msgs.Image", "Topic177"},
  249. {"Rule178", "sensor_msgs.CompressedImage", "Topic178"},
  250. {"Rule179", "dynamic_reconfigure.ConfigDescription", "Topic179"},
  251. {"Rule180", "dynamic_reconfigure.Config", "Topic180"},
  252. {"Rule181", "sensor_msgs.CompressedImage", "Topic181"},
  253. {"Rule182", "dynamic_reconfigure.ConfigDescription", "Topic182"},
  254. {"Rule183", "dynamic_reconfigure.Config", "Topic183"},
  255. {"Rule184", "theora_image_transport.Packet", "Topic184"},
  256. {"Rule185", "dynamic_reconfigure.ConfigDescription", "Topic185"},
  257. {"Rule186", "dynamic_reconfigure.Config", "Topic186"},
  258. {"Rule187", "sensor_msgs.CameraInfo", "Topic187"},
  259. {"Rule188", "sensor_msgs.Image", "Topic188"},
  260. {"Rule189", "sensor_msgs.CompressedImage", "Topic189"},
  261. {"Rule190", "dynamic_reconfigure.ConfigDescription", "Topic190"},
  262. {"Rule191", "dynamic_reconfigure.Config", "Topic191"},
  263. {"Rule192", "sensor_msgs.CompressedImage", "Topic192"},
  264. {"Rule193", "dynamic_reconfigure.ConfigDescription", "Topic193"},
  265. {"Rule194", "dynamic_reconfigure.Config", "Topic194"},
  266. {"Rule195", "theora_image_transport.Packet", "Topic195"},
  267. {"Rule196", "dynamic_reconfigure.ConfigDescription", "Topic196"},
  268. {"Rule197", "dynamic_reconfigure.Config", "Topic197"},
  269. {"Rule198", "sensor_msgs.PointCloud2", "Topic198"},
  270. {"Rule199", "geometry_msgs.PoseStamped", "Topic199"},
  271. {"Rule200", "geometry_msgs.PoseStamped", "Topic200"},
  272. {"Rule201", "std_msgs.UInt8", "Topic201"},
  273. {"Rule202", "nav_msgs.Odometry", "Topic202"},
  274. {"Rule203", "std_msgs.String", "Topic203"},
  275. {"Rule204", "std_msgs.String", "Topic204"},
  276. {"Rule205", "nav_msgs.Odometry", "Topic205"},
  277. {"Rule206", "sensor_msgs.Imu", "Topic206"},
  278. {"Rule207", "sensor_msgs.PointCloud2", "Topic207"},
  279. {"Rule208", "geometry_msgs.PoseArray", "Topic208"},
  280. {"Rule209", "sensor_msgs.PointCloud2", "Topic209"},
  281. {"Rule210", "sensor_msgs.LaserScan", "Topic210"},
  282. {"Rule211", "geometry_msgs.PoseWithCovarianceStamped", "Topic211"},
  283. {"Rule212", "geometry_msgs.Vector3Stamped", "Topic212"},
  284. {"Rule213", "std_msgs.String", "Topic213"},
  285. {"Rule214", "common_msgs.FunctionAreas", "Topic214"},
  286. {"Rule215", "std_msgs.Bool", "Topic215"},
  287. {"Rule216", "nav_msgs.Path", "Topic216"},
  288. {"Rule217", "std_msgs.Float64MultiArray", "Topic217"},
  289. {"Rule218", "std_msgs.String", "Topic218"},
  290. {"Rule219", "std_msgs.String", "Topic219"},
  291. {"Rule220", "std_msgs.String", "Topic220"},
  292. {"Rule221", "geometry_msgs.PoseStamped", "Topic221"},
  293. {"Rule222", "geometry_msgs.PoseWithCovarianceStamped", "Topic222"},
  294. {"Rule223", "std_msgs.String", "Topic223"},
  295. {"Rule224", "std_msgs.String", "Topic224"},
  296. {"Rule225", "localization_monitor.RobotStatus", "Topic225"},
  297. {"Rule226", "std_msgs.Float64MultiArray", "Topic226"},
  298. {"Rule227", "std_msgs.String", "Topic227"},
  299. {"Rule228", "actionlib_msgs.GoalID", "Topic228"},
  300. {"Rule229", "ipa_building_msgs.MapSegmentationActionFeedback", "Topic229"},
  301. {"Rule230", "ipa_building_msgs.MapSegmentationActionGoal", "Topic230"},
  302. {"Rule231", "dynamic_reconfigure.ConfigDescription", "Topic231"},
  303. {"Rule232", "dynamic_reconfigure.Config", "Topic232"},
  304. {"Rule233", "ipa_building_msgs.MapSegmentationActionResult", "Topic233"},
  305. {"Rule234", "nav_msgs.OccupancyGrid", "Topic234"},
  306. {"Rule235", "actionlib_msgs.GoalStatusArray", "Topic235"},
  307. {"Rule236", "rosgraph_msgs.Log", "Topic236"},
  308. {"Rule237", "rosgraph_msgs.Log", "Topic237"},
  309. {"Rule238", "nav_msgs.Path", "Topic238"},
  310. {"Rule239", "geometry_msgs.Vector3Stamped", "Topic239"},
  311. {"Rule240", "sensor_msgs.LaserScan", "Topic240"},
  312. {"Rule241", "sensor_msgs.LaserScan", "Topic241"},
  313. {"Rule242", "sensor_msgs.LaserScan", "Topic242"},
  314. {"Rule243", "sensor_msgs.LaserScan", "Topic243"},
  315. {"Rule244", "sensor_msgs.LaserScan", "Topic244"},
  316. {"Rule245", "sensor_msgs.PointCloud2", "Topic245"},
  317. {"Rule246", "sensor_msgs.PointCloud2", "Topic246"},
  318. {"Rule247", "visualization_msgs.MarkerArray", "Topic247"},
  319. {"Rule248", "common_msgs.SensorTask", "Topic248"},
  320. {"Rule249", "std_msgs.String", "Topic249"},
  321. {"Rule250", "geometry_msgs.Vector3Stamped", "Topic250"},
  322. {"Rule251", "common_msgs.SonarList", "Topic251"},
  323. {"Rule252", "nav_msgs.Odometry", "Topic252"},
  324. {"Rule253", "sensor_msgs.LaserScan", "Topic253"},
  325. {"Rule254", "std_msgs.Bool", "Topic254"},
  326. {"Rule255", "sensor_msgs.LaserScan", "Topic255"},
  327. {"Rule256", "std_msgs.String", "Topic256"},
  328. {"Rule257", "std_msgs.Bool", "Topic257"},
  329. {"Rule258", "sensor_msgs.CameraInfo", "Topic258"},
  330. {"Rule259", "common_msgs.SysInfo", "Topic259"},
  331. {"Rule260", "sensor_msgs.Image", "Topic260"},
  332. {"Rule261", "sensor_msgs.CompressedImage", "Topic261"},
  333. {"Rule262", "dynamic_reconfigure.ConfigDescription", "Topic262"},
  334. {"Rule263", "dynamic_reconfigure.Config", "Topic263"},
  335. {"Rule264", "sensor_msgs.CompressedImage", "Topic264"},
  336. {"Rule265", "dynamic_reconfigure.ConfigDescription", "Topic265"},
  337. {"Rule266", "dynamic_reconfigure.Config", "Topic266"},
  338. {"Rule267", "theora_image_transport.Packet", "Topic267"},
  339. {"Rule268", "dynamic_reconfigure.ConfigDescription", "Topic268"},
  340. {"Rule269", "dynamic_reconfigure.Config", "Topic269"},
  341. {"Rule270", "std_msgs.Bool", "Topic270"},
  342. {"Rule271", "geometry_msgs.PoseStamped", "Topic271"},
  343. {"Rule272", "geometry_msgs.Vector3Stamped", "Topic272"},
  344. {"Rule273", "common_msgs.TaskFeedbackInfo", "Topic273"},
  345. {"Rule274", "common_msgs.Points", "Topic274"},
  346. {"Rule275", "tf2_msgs.TFMessage", "Topic275"},
  347. {"Rule276", "std_msgs.String", "Topic276"},
  348. {"Rule277", "tf2_msgs.TFMessage", "Topic277"},
  349. {"Rule278", "nav_msgs.Path", "Topic278"},
  350. {"Rule279", "common_msgs.UpLoadFileList", "Topic279"},
  351. {"Rule280", "sensor_msgs.Range", "Topic280"},
  352. {"Rule281", "sensor_msgs.LaserScan", "Topic281"},
  353. {"Rule282", "sensor_msgs.LaserScan", "Topic282"},
  354. {"Rule283", "sensor_msgs.LaserScan", "Topic283"},
  355. {"Rule284", "sensor_msgs.LaserScan", "Topic284"},
  356. }
  357. code := generateRuleCode2(rules)
  358. fmt.Println(code)
  359. }