|
@@ -32,6 +32,8 @@ var (
|
|
mutexOfDataRead sync.RWMutex
|
|
mutexOfDataRead sync.RWMutex
|
|
// /pj_vehicle_fdb_pub
|
|
// /pj_vehicle_fdb_pub
|
|
mutexOfPjVehicleFdbPub sync.RWMutex
|
|
mutexOfPjVehicleFdbPub sync.RWMutex
|
|
|
|
+ // /pj_vehicle_fdb_pub
|
|
|
|
+ mutexOfCicvAmrTrajectory sync.RWMutex
|
|
)
|
|
)
|
|
|
|
|
|
// PrepareTimeWindowProducerQueue 负责监听所有主题并修改时间窗口
|
|
// PrepareTimeWindowProducerQueue 负责监听所有主题并修改时间窗口
|
|
@@ -339,6 +341,7 @@ func PrepareTimeWindowProducerQueue() {
|
|
Node: commonConfig.RosNode,
|
|
Node: commonConfig.RosNode,
|
|
Topic: topic,
|
|
Topic: topic,
|
|
Callback: func(data *pjisuv_msgs.Trajectory) {
|
|
Callback: func(data *pjisuv_msgs.Trajectory) {
|
|
|
|
+
|
|
subscribersTimeMutexes[i].Lock()
|
|
subscribersTimeMutexes[i].Lock()
|
|
if time.Since(subscribersTimes[i]).Seconds() > 1 {
|
|
if time.Since(subscribersTimes[i]).Seconds() > 1 {
|
|
subscribersMutexes[i].Lock()
|
|
subscribersMutexes[i].Lock()
|
|
@@ -346,7 +349,7 @@ func PrepareTimeWindowProducerQueue() {
|
|
lastTimeWindow := commonEntity.GetLastTimeWindow() // 获取最后一个时间窗口
|
|
lastTimeWindow := commonEntity.GetLastTimeWindow() // 获取最后一个时间窗口
|
|
var faultLabel string
|
|
var faultLabel string
|
|
for _, f := range masterConfig.RuleOfCicvAmrTrajectory {
|
|
for _, f := range masterConfig.RuleOfCicvAmrTrajectory {
|
|
- faultLabel = f(data)
|
|
|
|
|
|
+ faultLabel = f(data, pjisuvParam)
|
|
if faultLabel != "" {
|
|
if faultLabel != "" {
|
|
saveTimeWindow(faultLabel, faultHappenTime, lastTimeWindow)
|
|
saveTimeWindow(faultLabel, faultHappenTime, lastTimeWindow)
|
|
subscribersTimes[i] = time.Now()
|
|
subscribersTimes[i] = time.Now()
|
|
@@ -356,6 +359,17 @@ func PrepareTimeWindowProducerQueue() {
|
|
subscribersMutexes[i].Unlock()
|
|
subscribersMutexes[i].Unlock()
|
|
}
|
|
}
|
|
subscribersTimeMutexes[i].Unlock()
|
|
subscribersTimeMutexes[i].Unlock()
|
|
|
|
+
|
|
|
|
+ // 触发后更新共享变量
|
|
|
|
+ mutexOfCicvAmrTrajectory.RLock()
|
|
|
|
+ {
|
|
|
|
+ var currentCurvateres []float64
|
|
|
|
+ for _, point := range data.Trajectoryinfo.Trajectorypoints {
|
|
|
|
+ currentCurvateres = append(currentCurvateres, math.Abs(float64(point.Curvature)))
|
|
|
|
+ }
|
|
|
|
+ pjisuvParam.LastCurvaturesOfCicvAmrTrajectory = currentCurvateres
|
|
|
|
+ }
|
|
|
|
+ mutexOfCicvAmrTrajectory.RUnlock()
|
|
},
|
|
},
|
|
})
|
|
})
|
|
}
|
|
}
|