|
@@ -46,61 +46,86 @@ func InitTriggerConfig() {
|
|
|
continue
|
|
|
}
|
|
|
|
|
|
- {
|
|
|
- open, err := plugin.Open(triggerLocalPath)
|
|
|
- if err != nil {
|
|
|
- log.GlobalLogger.Error("加载本地插件", triggerLocalPath, "失败。", err)
|
|
|
+ open, err := plugin.Open(triggerLocalPath)
|
|
|
+ if err != nil {
|
|
|
+ log.GlobalLogger.Error("加载本地插件", triggerLocalPath, "失败。", err)
|
|
|
+ }
|
|
|
+ topic0, err := open.Lookup("Topic")
|
|
|
+ if err != nil {
|
|
|
+ log.GlobalLogger.Error("加载本地插件", triggerLocalPath, "中的Topic方法失败。", err)
|
|
|
+ continue
|
|
|
+ }
|
|
|
+ topic1, ok := topic0.(func() string)
|
|
|
+ if ok != true {
|
|
|
+ log.GlobalLogger.Error("插件", triggerLocalPath, "中的Topic方法必须是(func() string):", err)
|
|
|
+ continue
|
|
|
+ }
|
|
|
+ topic2 := topic1()
|
|
|
+ rule, err := open.Lookup("Rule")
|
|
|
+ if err != nil {
|
|
|
+ log.GlobalLogger.Error("加载本地插件", triggerLocalPath, "中的Rule方法失败。", err)
|
|
|
+ continue
|
|
|
+ }
|
|
|
+ if TopicOfOdom == topic2 {
|
|
|
+ f, ok := rule.(func(data *nav_msgs.Odometry) string)
|
|
|
+ if ok != true {
|
|
|
+ log.GlobalLogger.Error("插件", triggerLocalPath, "中的Topic方法必须是(func(data *nav_msgs.Odometry) string):", err)
|
|
|
+ continue
|
|
|
}
|
|
|
- topic0, err := open.Lookup("Topic")
|
|
|
- if err != nil {
|
|
|
- log.GlobalLogger.Error("加载本地插件", triggerLocalPath, "中的Topic方法失败。", err)
|
|
|
+ RuleOfOdom = append(RuleOfOdom, f)
|
|
|
+ } else if TopicOfObstacleDetection == topic2 {
|
|
|
+ f, ok := rule.(func(data *std_msgs.UInt8) string)
|
|
|
+ if ok != true {
|
|
|
+ log.GlobalLogger.Error("插件", triggerLocalPath, "中的Topic方法必须是(func(data *std_msgs.UInt8) string):", err)
|
|
|
continue
|
|
|
}
|
|
|
- topic1, ok := topic0.(func() string)
|
|
|
+ RuleOfObstacleDetection = append(RuleOfObstacleDetection, f)
|
|
|
+ } else if TopicOfSysInfo == topic2 {
|
|
|
+ f, ok := rule.(func(data *pji_msgs.SysInfo) string)
|
|
|
if ok != true {
|
|
|
- log.GlobalLogger.Error("插件", triggerLocalPath, "中的Topic方法必须是(func() string):", err)
|
|
|
+ log.GlobalLogger.Error("插件", triggerLocalPath, "中的Topic方法必须是(func(data *pji_msgs.SysInfo) string):", err)
|
|
|
continue
|
|
|
}
|
|
|
- topic2 := topic1()
|
|
|
- rule, err := open.Lookup("Rule")
|
|
|
- if err != nil {
|
|
|
- log.GlobalLogger.Error("加载本地插件", triggerLocalPath, "中的Rule方法失败。", err)
|
|
|
+ RuleOfSysInfo = append(RuleOfSysInfo, f)
|
|
|
+ } else if TopicOfLocateInfo == topic2 {
|
|
|
+ f, ok := rule.(func(data *pji_msgs.LocateInfo) string)
|
|
|
+ if ok != true {
|
|
|
+ log.GlobalLogger.Error("插件", triggerLocalPath, "中的Topic方法必须是(func(data *pji_msgs.LocateInfo) string):", err)
|
|
|
continue
|
|
|
}
|
|
|
-
|
|
|
- if TopicOfOdom == topic2 {
|
|
|
- f := rule.(func(data *nav_msgs.Odometry) string)
|
|
|
- RuleOfOdom = append(RuleOfOdom, f)
|
|
|
- } else if TopicOfObstacleDetection == topic2 {
|
|
|
- f := rule.(func(data *std_msgs.UInt8) string)
|
|
|
- RuleOfObstacleDetection = append(RuleOfObstacleDetection, f)
|
|
|
- } else if TopicOfSysInfo == topic2 {
|
|
|
- f := rule.(func(data *pji_msgs.SysInfo) string)
|
|
|
- RuleOfSysInfo = append(RuleOfSysInfo, f)
|
|
|
- } else if TopicOfLocateInfo == topic2 {
|
|
|
- f := rule.(func(data *pji_msgs.LocateInfo) string)
|
|
|
- RuleOfLocateInfo = append(RuleOfLocateInfo, f)
|
|
|
- } else if TopicOfImu == topic2 {
|
|
|
- f := rule.(func(data *sensor_msgs.Imu) string)
|
|
|
- RuleOfImu = append(RuleOfImu, f)
|
|
|
- } else if TopicOfDiagnostics == topic2 {
|
|
|
- f := rule.(func(data *diagnostic_msgs.DiagnosticArray) string)
|
|
|
- RuleOfDiagnostics = append(RuleOfDiagnostics, f)
|
|
|
- } else {
|
|
|
- log.GlobalLogger.Error("未知的topic:", topic2)
|
|
|
+ RuleOfLocateInfo = append(RuleOfLocateInfo, f)
|
|
|
+ } else if TopicOfImu == topic2 {
|
|
|
+ f, ok := rule.(func(data *sensor_msgs.Imu) string)
|
|
|
+ if ok != true {
|
|
|
+ log.GlobalLogger.Error("插件", triggerLocalPath, "中的Topic方法必须是(func(data *sensor_msgs.Imu) string):", err)
|
|
|
continue
|
|
|
}
|
|
|
-
|
|
|
- label, err := open.Lookup("Label")
|
|
|
- if err != nil {
|
|
|
- log.GlobalLogger.Error("加载本地插件", triggerLocalPath, "中的TriggerName方法失败。", err)
|
|
|
+ RuleOfImu = append(RuleOfImu, f)
|
|
|
+ } else if TopicOfDiagnostics == topic2 {
|
|
|
+ f, ok := rule.(func(data *diagnostic_msgs.DiagnosticArray) string)
|
|
|
+ if ok != true {
|
|
|
+ log.GlobalLogger.Error("插件", triggerLocalPath, "中的Topic方法必须是(func(data *diagnostic_msgs.DiagnosticArray) string):", err)
|
|
|
continue
|
|
|
}
|
|
|
- labelFunc := label.(func() string)
|
|
|
- labelString := labelFunc()
|
|
|
- LabelMapTriggerId[labelString] = strconv.Itoa(trigger.TriggerId)
|
|
|
- log.GlobalLogger.Info("主节点加载触发器插件:【ros topic】=", topic2, ",【触发器label】=", labelString, "【触发器ID】=", trigger.TriggerId, "【label和id映射关系】=", LabelMapTriggerId)
|
|
|
+ RuleOfDiagnostics = append(RuleOfDiagnostics, f)
|
|
|
+ } else {
|
|
|
+ log.GlobalLogger.Error("未知的topic:", topic2)
|
|
|
+ continue
|
|
|
}
|
|
|
|
|
|
+ label, err := open.Lookup("Label")
|
|
|
+ if err != nil {
|
|
|
+ log.GlobalLogger.Error("加载本地插件", triggerLocalPath, "中的TriggerName方法失败。", err)
|
|
|
+ continue
|
|
|
+ }
|
|
|
+ labelFunc, ok := label.(func() string)
|
|
|
+ if ok != true {
|
|
|
+ log.GlobalLogger.Error("插件", triggerLocalPath, "中的Label方法必须是(func() string):", err)
|
|
|
+ continue
|
|
|
+ }
|
|
|
+ labelString := labelFunc()
|
|
|
+ LabelMapTriggerId[labelString] = strconv.Itoa(trigger.TriggerId)
|
|
|
+ log.GlobalLogger.Info("主节点加载触发器插件:【ros topic】=", topic2, ",【触发器label】=", labelString, "【触发器ID】=", trigger.TriggerId, "【label和id映射关系】=", LabelMapTriggerId)
|
|
|
}
|
|
|
+ log.GlobalLogger.Info("主节点加载触发器插件 - 成功。")
|
|
|
}
|