LingxinMeng 10 ماه پیش
والد
کامیت
5bfe5058ed

+ 3 - 0
README.md

@@ -1,6 +1,9 @@
 # 注意事项
 - go.mod不要动
 - msgs目录内容非必要不修改
+- 添加共享变量时
+  - 如果有新的topic需要被订阅,需要在数据闭环平台上的topic序列添加
+  - 需要修改produce_window.go文件中的订阅者,将触发器>0条件去掉
 
 # 一、代码目录结构
 

+ 1 - 1
aarch64/pjisuv/master/main.go

@@ -47,7 +47,7 @@ func main() {
 	// 1 负责打包数据到data目录
 	go commonService.BagRecord(commonConfig.CloudConfig.Hosts[0].Name)
 	// 2 启动第4个线程,负责监控故障,并修改timeWindow
-	go masterService.PrepareTimeWindowProducerQueue()
+	go masterService.ProduceWindow()
 	// 3
 	go masterService.RunTimeWindowProducerQueue()
 	// 4 排队运行时间窗口

+ 20 - 19
aarch64/pjisuv/master/service/produce_window.go

@@ -22,14 +22,12 @@ import (
 
 // 所有共享变量
 var (
-	latestTimeWindowEnd = util.GetTimeCustom(time.Now())
-	pjisuvParam         = pjisuv_param.PjisuvParam{
+	pjisuvParam = pjisuv_param.PjisuvParam{
 		ObjDicOfTpperception:      make(map[uint32][]float32),
 		ObjTypeDicOfTpperception:  make(map[uint32]uint8),
 		ObjSpeedDicOfTpperception: make(map[uint32]float64),
 	}
-	// 每个触发器5秒触发一次
-	triggerInterval = 3.0
+
 	// 保存时间窗口需要锁,防止数据竟态
 	saveTimeWindowMutex sync.Mutex
 	// /cicv_location
@@ -41,13 +39,15 @@ var (
 	// /data_read
 	mutexOfDataRead sync.RWMutex
 	// /pj_vehicle_fdb_pub
-	mutexOfPjVehicleFdbPub sync.RWMutex
-	// /pj_vehicle_fdb_pub
 	mutexOfCicvAmrTrajectory sync.RWMutex
+
+	latestTimeWindowEnd = util.GetTimeCustom(time.Now())
+	// 每个触发器5秒触发一次
+	triggerInterval = 3.0
 )
 
-// PrepareTimeWindowProducerQueue 负责监听所有主题并修改时间窗口
-func PrepareTimeWindowProducerQueue() {
+// 负责监听所有主题并修改时间窗口
+func ProduceWindow() {
 	c_log.GlobalLogger.Info("订阅者 goroutine,启动。")
 
 	var err error
@@ -497,13 +497,12 @@ func PrepareTimeWindowProducerQueue() {
 				})
 			}
 
-			// 11
-			if topic == masterConfig.TopicOfCicvAmrTrajectory && (len(masterConfig.RuleOfCicvAmrTrajectory1) > 0 || len(masterConfig.RuleOfCicvAmrTrajectory2) > 0) {
+			// 11 有共享变量的订阅者必须被创建
+			if topic == masterConfig.TopicOfCicvAmrTrajectory {
 				subscribers[i], err = goroslib.NewSubscriber(goroslib.SubscriberConf{
 					Node:  commonConfig.RosNode,
 					Topic: topic,
 					Callback: func(data *pjisuv_msgs.Trajectory) {
-
 						subscribersTimeMutexes[i].Lock()
 						if time.Since(subscribersTimes[i]).Seconds() > triggerInterval {
 							subscribersMutexes[i].Lock()
@@ -551,8 +550,8 @@ func PrepareTimeWindowProducerQueue() {
 				})
 			}
 
-			// 12
-			if topic == masterConfig.TopicOfCicvLocation && (len(masterConfig.RuleOfCicvLocation1) > 0 || len(masterConfig.RuleOfCicvLocation2) > 0) {
+			// 12 有共享变量的订阅者必须被创建
+			if topic == masterConfig.TopicOfCicvLocation {
 				subscribers[i], err = goroslib.NewSubscriber(goroslib.SubscriberConf{
 					Node:  commonConfig.RosNode,
 					Topic: topic,
@@ -1000,8 +999,8 @@ func PrepareTimeWindowProducerQueue() {
 				})
 			}
 
-			// 22
-			if topic == masterConfig.TopicOfPjControlPub && (len(masterConfig.RuleOfPjControlPub1) > 0 || len(masterConfig.RuleOfPjControlPub2) > 0) {
+			// 22 有共享变量的订阅者必须被创建
+			if topic == masterConfig.TopicOfPjControlPub {
 				subscribers[i], err = goroslib.NewSubscriber(goroslib.SubscriberConf{
 					Node:  commonConfig.RosNode,
 					Topic: topic,
@@ -1363,8 +1362,8 @@ func PrepareTimeWindowProducerQueue() {
 				})
 			}
 
-			// 30
-			if topic == masterConfig.TopicOfTpperception && (len(masterConfig.RuleOfTpperception1) > 0 || len(masterConfig.RuleOfTpperception2) > 0) {
+			// 30 有共享变量的订阅者必须被创建
+			if topic == masterConfig.TopicOfTpperception {
 				subscribers[i], err = goroslib.NewSubscriber(goroslib.SubscriberConf{
 					Node:  commonConfig.RosNode,
 					Topic: topic,
@@ -1612,6 +1611,7 @@ func PrepareTimeWindowProducerQueue() {
 
 			// 35
 			if topic == masterConfig.TopicOfCameraImage && (len(masterConfig.RuleOfCameraImage1) > 0 || len(masterConfig.RuleOfCameraImage2) > 0) {
+
 				subscribers[i], err = goroslib.NewSubscriber(goroslib.SubscriberConf{
 					Node:  commonConfig.RosNode,
 					Topic: topic,
@@ -1653,8 +1653,9 @@ func PrepareTimeWindowProducerQueue() {
 					},
 				})
 			}
-			// 36
-			if topic == masterConfig.TopicOfDataRead && (len(masterConfig.RuleOfDataRead1) > 0 || len(masterConfig.RuleOfDataRead2) > 0) {
+
+			// 36 有共享变量的订阅者必须被创建
+			if topic == masterConfig.TopicOfDataRead {
 				subscribers[i], err = goroslib.NewSubscriber(goroslib.SubscriberConf{
 					Node:  commonConfig.RosNode,
 					Topic: topic,

+ 0 - 1
trigger/pjisuv/cicv_amr_trajectory/ControlJump/main/ControlJump.go

@@ -28,7 +28,6 @@ func Rule(data *pjisuv_msgs.Trajectory, param *pjisuv_param.PjisuvParam) string
 		currentCurvateres = append(currentCurvateres, math.Abs(float64(point.Curvature)))
 	}
 	if len(currentCurvateres) != 0 {
-
 		maxCurrent := slices.Max(currentCurvateres)
 		maxLast := slices.Max(param.LastCurvaturesOfCicvAmrTrajectory)
 		a := math.Abs(maxCurrent - maxLast)