LingxinMeng 7 달 전
부모
커밋
a6c1176fc3

+ 3 - 0
aarch64/pjisuv/common/config/c_cloud.go

@@ -105,6 +105,9 @@ func InitCloudConfig() {
 			}
 			break
 		}
+		if CloudConfig.RefreshCloudConfig {
+			go RefreshCloudConfig()
+		}
 	} else {
 		c_log.GlobalLogger.Infof("车辆不可以访问互联网,请提前将配置文件放到【%v】。", LocalConfig.CloudConfigLocalPath)
 		for {

+ 3 - 0
aarch64/pjisuv/common/config/c_oss.go

@@ -24,6 +24,9 @@ var (
 )
 
 func InitOssConfig() {
+	if !LocalConfig.Internet { // 如果没有网,就是完全用不了oss,直接不初始化
+		return
+	}
 	var err error
 	c_log.GlobalLogger.Info("初始化OSS客户端对象 - 开始。")
 	// 1 访问 HTTP 服务获取 OSS 配置

+ 3 - 0
aarch64/pjisuv/common/config/c_platform.go

@@ -43,6 +43,9 @@ var (
 
 // 初始化数据闭环平台的配置
 func InitPlatformConfig() {
+	if !LocalConfig.Internet {
+		return
+	}
 	var err error
 	c_log.GlobalLogger.Info("获取数据闭环平台配置 - 开始")
 	// 1 如果车辆没有配置任务,则阻塞在这里,不启动任务

+ 13 - 5
aarch64/pjisuv/common/service/rosbag_record.go

@@ -26,14 +26,22 @@ func BagRecord(nodeName string) {
 		command = append(command, "--duration=1")
 		for _, host := range config.CloudConfig.Hosts {
 			if host.Name == nodeName {
-				// 配置文件中的是node1和node2各自的所有topic,platformConfig中配置用户想缓存的topic,取交集
-				for _, topic1 := range config.RecordTopics {
-					for _, topic2 := range host.Topics {
-						if topic1 == topic2 {
-							command = append(command, topic1)
+				// 配置文件中的是node1和node2各自的所有topic,platformConfig中配置用户想缓存的topic
+				// 如果有网,取交集,没有网,算了
+				if config.LocalConfig.Internet {
+					for _, topic1 := range config.RecordTopics {
+						for _, topic2 := range host.Topics {
+							if topic1 == topic2 {
+								command = append(command, topic2)
+							}
 						}
 					}
+				} else {
+					for _, topic2 := range host.Topics {
+						command = append(command, topic2)
+					}
 				}
+
 			}
 		}
 

+ 20 - 5
aarch64/pjisuv/control/main.go

@@ -25,6 +25,14 @@ func init() {
 }
 
 func main() {
+	if commonConfig.LocalConfig.Internet {
+		RunWithInternet()
+	} else {
+		RunWithoutInternet()
+	}
+}
+
+func RunWithInternet() {
 	lastStatus := "NONE"
 	wait := false
 	//  轮询任务接口判断是否有更新
@@ -57,11 +65,7 @@ func main() {
 			}
 			// 3 发送rpc信号杀死两个服务,并重启程序
 			if lastStatus == "NONE" && status == "CHANGE" {
-				if _, err := util.ExecuteWithPath(commonConfig.LocalConfig.RestartCmd.Dir, commonConfig.LocalConfig.RestartCmd.Name, commonConfig.LocalConfig.RestartCmd.Args...); err != nil {
-					c_log.GlobalLogger.Info("启动新程序失败,【path】=", commonConfig.LocalConfig.RestartCmd.Dir, "【cmd】=", commonConfig.LocalConfig.RestartCmd.Name, commonConfig.LocalConfig.RestartCmd.Args, ":", err)
-					os.Exit(-1)
-				}
-				c_log.GlobalLogger.Info("启动任务,本地执行启动命令:【path】=", commonConfig.LocalConfig.RestartCmd.Dir, "【cmd】=", commonConfig.LocalConfig.RestartCmd.Name, commonConfig.LocalConfig.RestartCmd.Args)
+				startMasterOrSlave()
 				lastStatus = status
 				c_log.GlobalLogger.Info("获取数据闭环平台最新配置。")
 				commonConfig.InitPlatformConfig()
@@ -103,3 +107,14 @@ func main() {
 		}
 	}
 }
+func RunWithoutInternet() {
+	startMasterOrSlave()
+}
+
+func startMasterOrSlave() {
+	if _, err := util.ExecuteWithPath(commonConfig.LocalConfig.RestartCmd.Dir, commonConfig.LocalConfig.RestartCmd.Name, commonConfig.LocalConfig.RestartCmd.Args...); err != nil {
+		c_log.GlobalLogger.Info("启动新程序失败,【path】=", commonConfig.LocalConfig.RestartCmd.Dir, "【cmd】=", commonConfig.LocalConfig.RestartCmd.Name, commonConfig.LocalConfig.RestartCmd.Args, ":", err)
+		os.Exit(-1)
+	}
+	c_log.GlobalLogger.Info("启动任务,本地执行启动命令:【path】=", commonConfig.LocalConfig.RestartCmd.Dir, "【cmd】=", commonConfig.LocalConfig.RestartCmd.Name, commonConfig.LocalConfig.RestartCmd.Args)
+}

+ 38 - 32
aarch64/pjisuv/master/config/trigger_init.go

@@ -21,39 +21,45 @@ func InitTriggerConfig() {
 	defer config.OssMutex.Unlock()
 	triggerLocalPathsMapTriggerId := make(map[string]string)
 	c_log.GlobalLogger.Info("主节点加载触发器插件 - 开始。")
-	// 1 获取数采任务的触发器列表
-	cloudTriggers := &config.PlatformConfig.TaskTriggers
-	// 2 获取本地触发器列表(触发器目录的一级子目录为【触发器ID_触发器Label】)
-	localTriggerIds := util.GetFirstLevelSubdirectories(config.CloudConfig.TriggersDir)
-	// 3 对比触发器列表,本地没有的则下载
-	for _, trigger := range *cloudTriggers {
-		id := util.ToString(trigger.TriggerId)
-		hasIdDir := slices.Contains(localTriggerIds, id) // 改成了 slices 工具库
-		triggerLocalDir := config.CloudConfig.TriggersDir + id + "/"
-		hasLabelSo, soPaths := util.CheckSoFilesInDirectory(triggerLocalDir)
-		var triggerLocalPath string
-		if hasIdDir && hasLabelSo { // 已存在的触发器需要判断是否大小一致
-			triggerLocalPath = soPaths[0]
-			ossSize, _ := util.GetOSSFileSize(config.OssBucket, trigger.TriggerScriptPath)
-			localSize, _ := util.GetFileSize(triggerLocalPath)
-			if ossSize == localSize {
-				c_log.GlobalLogger.Info("触发器插件 ", triggerLocalPath, " 存在且与云端触发器大小一致。")
-				triggerLocalPathsMapTriggerId[triggerLocalPath] = id
-				continue
-			}
-		}
-		label := util.GetFileNameWithoutExtension(config.CloudConfig.TriggersDir + trigger.TriggerScriptPath)
-		triggerLocalPath = config.CloudConfig.TriggersDir + id + "/" + label + ".so"
-		c_log.GlobalLogger.Info("开始下载触发器插件从 ", trigger.TriggerScriptPath, " 到 ", triggerLocalPath)
-		_ = util.CreateParentDir(triggerLocalPath)
-		for {
-			if err := config.OssBucket.GetObjectToFile(trigger.TriggerScriptPath, triggerLocalPath); err != nil {
-				c_log.GlobalLogger.Error("下载触发器插件失败,再次尝试:", err)
-				continue
-			}
-			break
+	if config.LocalConfig.Internet {
+		// 1 获取数采任务的触发器列表
+		cloudTriggers := &config.PlatformConfig.TaskTriggers
+		// 2 获取本地触发器列表(触发器目录的一级子目录为【触发器ID_触发器Label】)
+		localTriggerIds := util.GetFirstLevelSubdirectories(config.CloudConfig.TriggersDir)
+		// 3 对比触发器列表,本地没有的则下载
+		for _, trigger := range *cloudTriggers {
+			id := util.ToString(trigger.TriggerId)
+			hasIdDir := slices.Contains(localTriggerIds, id) // 改成了 slices 工具库
+			triggerLocalDir := config.CloudConfig.TriggersDir + id + "/"
+			hasLabelSo, soPaths := util.CheckSoFilesInDirectory(triggerLocalDir)
+			var triggerLocalPath string
+			if hasIdDir && hasLabelSo { // 已存在的触发器需要判断是否大小一致
+				triggerLocalPath = soPaths[0]
+				ossSize, _ := util.GetOSSFileSize(config.OssBucket, trigger.TriggerScriptPath)
+				localSize, _ := util.GetFileSize(triggerLocalPath)
+				if ossSize == localSize {
+					c_log.GlobalLogger.Info("触发器插件 ", triggerLocalPath, " 存在且与云端触发器大小一致。")
+					triggerLocalPathsMapTriggerId[triggerLocalPath] = id
+					continue
+				}
+			}
+			label := util.GetFileNameWithoutExtension(config.CloudConfig.TriggersDir + trigger.TriggerScriptPath)
+			triggerLocalPath = config.CloudConfig.TriggersDir + id + "/" + label + ".so"
+			c_log.GlobalLogger.Info("开始下载触发器插件从 ", trigger.TriggerScriptPath, " 到 ", triggerLocalPath)
+			_ = util.CreateParentDir(triggerLocalPath)
+			for {
+				if err := config.OssBucket.GetObjectToFile(trigger.TriggerScriptPath, triggerLocalPath); err != nil {
+					c_log.GlobalLogger.Error("下载触发器插件失败,再次尝试:", err)
+					continue
+				}
+				break
+			}
+			triggerLocalPathsMapTriggerId[triggerLocalPath] = id
 		}
-		triggerLocalPathsMapTriggerId[triggerLocalPath] = id
+	} else {
+		errorCodeSoPath := "/mnt/media/sda1/cicv-data-closedloop/ErrorCode.so"
+		c_log.GlobalLogger.Error("无法连接互联网,提前准备触发器插件文件:", errorCodeSoPath)
+		triggerLocalPathsMapTriggerId[errorCodeSoPath] = "ErrorCodeId"
 	}
 
 	success := 0

+ 0 - 3
aarch64/pjisuv/master/main.go

@@ -19,9 +19,6 @@ func init() {
 	commonConfig.InitOssConfig()
 	// 初始化业务逻辑配置信息,配置文件在oss上(第2处配置,在oss文件)
 	commonConfig.InitCloudConfig()
-	if commonConfig.CloudConfig.RefreshCloudConfig {
-		go commonConfig.RefreshCloudConfig()
-	}
 	// 初始化数据闭环平台的配置(第3处配置,在数据闭环平台接口)
 	commonConfig.InitPlatformConfig()
 	// 初始化ros节点

+ 32 - 92
aarch64/pjisuv/金龙车-cloud-config.yaml

@@ -25,13 +25,8 @@ rpc-port: 12341
 ros:
   master-address: 192.168.1.102:11311
   nodes:
-    - /camera_output
-    - /ins
-    - /lidar_pretreatment
-    - /sensorfusion
-    - /control
+    - /ins # 定位
 
-# /camera_image,/cicv_amr_trajectory,/pj_control_pub,/data_read,/tftrafficlight,/cicv_amr_trajectory,/trajectory_display,/reference_display,/reference_trajectory,/tprouteplan,/map_polygon,/vehicle_info,/target_line,/parking_line,/station_status,/pj_control_pub,/pj_control_debug_pub,/tar_traj_pub,/park_task,/parking_line,/map_display,/v2x_planner,/end_point_message,/heartbeat_info,/fault_info,/planning_fault_info,/nodefault_info,/points_concat,/tpperception,/cicv_location,/tpperception,/pull_over,/pj_vehicle_fdb_pub,/pre_line,/target_line,/amr_pose,/destination_pose,/lidar_roi,/obstacle_display,/target_point_pub,/fusion/traffic_light,/roi/polygon,/tpperception/vis
 hosts:
   - name: node1
     ip: 192.168.1.102
@@ -56,33 +51,40 @@ hosts:
         - "PKG_CONFIG_PATH=/usr/lib/pkgconfig"
         - "ROS_DISTRO=melodic"
     topics:
-      - /camera_image # /camera_output
-      - /cicv_amr_trajectory
-      - /pj_control_pub # /control
-      - /data_read
-      - /tftrafficlight
-      - /cicv_amr_trajectory
+      - /cam_3D # 感知
+      - /car_wheel
+      - /ch64w/rear
+      - /ch64w_l/lslidar_point_cloud
+      - /ch64w_q/lslidar_point_cloud
+      - /ch64w_r/lslidar_point_cloud
+      - /cicv/lidarfusionmovingobject
+      - /cicv_location
+      - /f_radar_objects
+      - /fusion/vis/box
+      - /fusion/vis/camera
+      - /fusion/vis/camera_text
+      - /fusion/vis/velocity
+      - /lidar_objects_cluster
+      - /lidar_objects_deeplearning
+      - /lidar_objects_fusion
+      - /lslidar_point_cloud
+      - /map_polygon
+      - /roi/polygon/rosout
+      - /cicv_amr_trajectory # 规划控制
       - /trajectory_display
-      - /reference_display
       - /reference_trajectory
+      - /tpperception
       - /tprouteplan
-      - /map_polygon
+      - /jinglong_control_pub
       - /vehicle_info
-      - /target_line
-      - /parking_line
-      - /station_status
-      - /pj_control_pub
-      - /pj_control_debug_pub
-      - /tar_traj_pub
-      - /park_task
-      - /parking_line
-      - /map_display
-      - /v2x_planner
+      - /tftrafficlight
+      - /DestinationLocationInfo
       - /end_point_message
-      - /heartbeat_info
-      - /fault_info
-      - /planning_fault_info
-      - /nodefault_info
+      - /amr_pose
+      - /map_display
+      - /obstacle_display
+      - /reference_display
+      - /lidar_roi
   - name: node2
     ip: 192.168.1.103
     rosbag:
@@ -106,68 +108,6 @@ hosts:
         - "PKG_CONFIG_PATH=/usr/lib/pkgconfig"
         - "ROS_DISTRO=melodic"
     topics:
-      - /points_concat  # /lidar_pretreatment
-      - /tpperception # /sensorfusion
-      - /cicv_location  # /ins
-      - /tpperception
-      - /pull_over
-      - /pj_vehicle_fdb_pub
-      - /pre_line
-      - /target_line
-      - /amr_pose
-      - /destination_pose
-      - /lidar_roi
-      - /obstacle_display
-      - /target_point_pub
-      - /fusion/traffic_light
-      - /roi/polygon
-      - /tpperception/vis
 triggers:
-  - label: rapidaccel
-    topics:
-      - /tpperception
-      - /points_concat
-      - /cicv_location
-      - /camera_image
-  - label: brake
-    topics:
-      - /tpperception
-      - /points_concat
-      - /cicv_location
-      - /camera_image
-  - label: EmergencyStop
-    topics:
-      - /tpperception
-      - /points_concat
-      - /cicv_location
-      - /camera_image
-  - label: AutoDLimit
-    topics:
-      - /tpperception
-      - /points_concat
-      - /cicv_location
-      - /camera_image
-  - label: lanechange
-    topics:
-      - /tpperception
-      - /points_concat
-      - /cicv_location
-      - /camera_image
-  - label: brakefault
-    topics:
-      - /tpperception
-      - /points_concat
-      - /cicv_location
-      - /camera_image
-  - label: takeover
-    topics:
-      - /tpperception
-      - /points_concat
-      - /cicv_location
-      - /camera_image
-  - label: TTC
-    topics:
-      - /tpperception
-      - /points_concat
-      - /cicv_location
-      - /camera_image
+  - label: ""
+    topics: ""