LingxinMeng 1 год назад
Родитель
Сommit
f4e1e2f408

+ 5 - 2
aarch64/kinglong/common/config/c_platform.go

@@ -47,8 +47,7 @@ func InitPlatformConfig() {
 	c_log.GlobalLogger.Info("获取数据闭环平台配置 - 开始")
 	// 1 如果车辆没有配置任务,则阻塞在这里,不启动任务
 	for {
-		time.Sleep(time.Duration(1))
-		c_log.GlobalLogger.Info("获取数据闭环平台配置 - 进行中")
+		time.Sleep(time.Duration(2) * time.Second)
 		PlatformConfig, err = getConfig()
 		if err != nil {
 			c_log.GlobalLogger.Error("获取配置status失败:", err)
@@ -180,6 +179,10 @@ func getConfig() (platformConfig, error) {
 	return result.Data, nil
 }
 func checkPlatformConfig() bool {
+	if PlatformConfig.TaskConfigId == "" {
+		c_log.GlobalLogger.Error("数据闭环平台没有配置任务。")
+		return false
+	}
 	if PlatformConfig.EquipmentTopic == "" {
 		c_log.GlobalLogger.Error("数据闭环平台没有配置topic序列。")
 		return false

+ 5 - 2
aarch64/pji/common/config/c_platform.go

@@ -47,8 +47,7 @@ func InitPlatformConfig() {
 	c_log.GlobalLogger.Info("获取数据闭环平台配置 - 开始")
 	// 1 如果车辆没有配置任务,则阻塞在这里,不启动任务
 	for {
-		time.Sleep(time.Duration(1))
-		c_log.GlobalLogger.Info("获取数据闭环平台配置 - 进行中")
+		time.Sleep(time.Duration(2) * time.Second)
 		// 判断是否有配置,第一次访问状态应该为:CHANGE(一共三种状态 CHANGE|UNCHANGE|NONE)
 		PlatformConfig, err = getConfig()
 		if err != nil {
@@ -182,6 +181,10 @@ func getConfig() (platformConfig, error) {
 }
 
 func checkPlatformConfig() bool {
+	if PlatformConfig.TaskConfigId == "" {
+		c_log.GlobalLogger.Error("数据闭环平台没有配置任务。")
+		return false
+	}
 	if PlatformConfig.EquipmentTopic == "" {
 		c_log.GlobalLogger.Error("数据闭环平台没有配置topic序列。")
 		return false

+ 5 - 2
aarch64/pjisuv/common/config/c_platform.go

@@ -47,8 +47,7 @@ func InitPlatformConfig() {
 	c_log.GlobalLogger.Info("获取数据闭环平台配置 - 开始")
 	// 1 如果车辆没有配置任务,则阻塞在这里,不启动任务
 	for {
-		time.Sleep(time.Duration(1))
-		c_log.GlobalLogger.Info("获取数据闭环平台配置 - 进行中")
+		time.Sleep(time.Duration(2) * time.Second)
 		PlatformConfig, err = getConfig()
 		if err != nil {
 			c_log.GlobalLogger.Error("获取配置status失败:", err)
@@ -181,6 +180,10 @@ func getConfig() (platformConfig, error) {
 }
 
 func checkPlatformConfig() bool {
+	if PlatformConfig.TaskConfigId == "" {
+		c_log.GlobalLogger.Error("数据闭环平台没有配置任务。")
+		return false
+	}
 	if PlatformConfig.EquipmentTopic == "" {
 		c_log.GlobalLogger.Error("数据闭环平台没有配置topic序列。")
 		return false

+ 130 - 0
aarch64/pjisuv/common/config/yaml/pjisuv3-cloud-config.yaml

@@ -0,0 +1,130 @@
+---
+platform:
+  url-device-auth: http://139.9.199.227:30991/device/auth
+  url-task-poll: http://139.9.199.227:30991/device/task/poll
+  url-task: http://139.9.199.227:30991/device/task
+bag-number: 120
+config-refresh-interval: 60
+disk:
+  name: /dev/vdb # 磁盘名称
+  used: 800000000000 # 磁盘占用阈值,单位bytes
+bag-data-dir: /mnt/media/sda1/cicv-data-closedloop/data/
+bag-copy-dir: /mnt/media/sda1/cicv-data-closedloop/copy/
+time-to-label-json-path: /mnt/media/sda1/cicv-data-closedloop/timeToLabel.json
+triggers-dir: /mnt/media/sda1/cicv-data-closedloop/triggers/
+time-window-send-gap: 6
+tcp-port: 12340
+rpc-port: 12341
+ros:
+  master-address: 192.168.1.102:11311
+  nodes:
+    - /camera_output
+    - /ins
+    - /lidar_pretreatment
+    - /sensorfusion
+    - /planner_s4
+    - /control
+hosts:
+  - name: node1
+    ip: 192.168.1.102
+    rosbag:
+      path: "/opt/ros/melodic/bin/rosbag"
+      envs:
+        - "LD_LIBRARY_PATH=/opt/ros/melodic/lib:/usr/lib::/usr/lib:/userdata/third_lib/libaicc"
+        - "ROS_ETC_DIR=/opt/ros/melodic/etc/ros"
+        - "USER=root"
+        - "ROS_OS_OVERRIDE=openembedded"
+        - "PWD=/mnt/media/sda1/cicv-data-closedloop"
+        - "HOME=/home/root"
+        - "CMAKE_PREFIX_PATH=/opt/ros/melodic:/usr"
+        - "ROS_ROOT=/opt/ros/melodic/share/ros"
+        - "ROS_MASTER_URI=http://192.168.1.102:11311"
+        - "ROS_VERSION=1"
+        - "ROS_PYTHON_VERSION=2"
+        - "ROS_IP=192.168.1.102"
+        - "PYTHONPATH=/opt/ros/melodic/lib/python2.7/site-packages:/usr/lib/python2.7/site-packages"
+        - "ROS_PACKAGE_PATH=/opt/ros/melodic/share"
+        - "PATH=/opt/ros/melodic/bin:/usr/bin/cyber/tools/cyber_service:/usr/bin/cyber/tools/cyber_node:/usr/bin/cyber/tools/cyber_channel:/usr/bin/cyber/tools/cyber_launch:/usr/bin/cyber/tools/cyber_monitor:/usr/bin/cyber/tools/cyber_recorder:/apollo/bazel-bin/cyber:/usr/local/bin:/usr/bin:/bin:/usr/local/sbin:/usr/sbin:/sbin"
+        - "PKG_CONFIG_PATH=/usr/lib/pkgconfig"
+        - "ROS_DISTRO=melodic"
+    topics:
+      - /camera_image # /camera_output
+      - /cicv_amr_trajectory #  /planner_s4
+      - /pj_control_pub # /control
+  #      - /data_read
+  - name: node2
+    ip: 192.168.1.103
+    rosbag:
+      path: "/opt/ros/melodic/bin/rosbag"
+      envs:
+        - "LD_LIBRARY_PATH=/opt/ros/melodic/lib:/usr/lib::/usr/lib:/userdata/third_lib"
+        - "ROS_ETC_DIR=/opt/ros/melodic/etc/ros"
+        - "USER=root"
+        - "ROS_OS_OVERRIDE=openembedded"
+        - "PWD=/mnt/media/sda1/cicv-data-closedloop"
+        - "HOME=/home/root"
+        - "CMAKE_PREFIX_PATH=/opt/ros/melodic:/usr"
+        - "ROS_ROOT=/opt/ros/melodic/share/ros"
+        - "ROS_MASTER_URI=http://192.168.1.102:11311"
+        - "ROS_VERSION=1"
+        - "ROS_PYTHON_VERSION=2"
+        - "ROS_IP=192.168.1.103"
+        - "PYTHONPATH=/opt/ros/melodic/lib/python2.7/site-packages:/usr/lib/python2.7/site-packages"
+        - "ROS_PACKAGE_PATH=/opt/ros/melodic/share"
+        - "PATH=/opt/ros/melodic/bin:/usr/bin/cyber/tools/cyber_service:/usr/bin/cyber/tools/cyber_node:/usr/bin/cyber/tools/cyber_channel:/usr/bin/cyber/tools/cyber_launch:/usr/bin/cyber/tools/cyber_monitor:/usr/bin/cyber/tools/cyber_recorder:/apollo/bazel-bin/cyber:/usr/local/bin:/usr/bin:/bin:/usr/local/sbin:/usr/sbin:/sbin "
+        - "PKG_CONFIG_PATH=/usr/lib/pkgconfig"
+        - "ROS_DISTRO=melodic"
+    topics:
+      - /points_concat  # /lidar_pretreatment
+      - /tpperception # /sensorfusion
+      - /cicv_location  # /ins
+full-collect: true  #如果不是全量采集需要根据triggers过滤
+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

+ 19 - 0
aarch64/pjisuv/common/config/yaml/pjisuv3-soc1-local-config.yaml

@@ -0,0 +1,19 @@
+node:
+  name: node1
+  ip: 192.168.1.102
+# 数据闭环平台参数
+equipment-no: pjisuv3
+secret-key: Y5cDokMKhhGNu368F76gVMDp4GJA7zAOYngx53Ps
+# 获取oss连接信息的接口url
+url-get-oss-config: http://36.110.106.156:18379/oss/config?token=nXonLUcMtGcrQqqKiyygIwyVbvizE0wD
+# 金龙车数据前缀
+oss-base-prefix: pjisuv/
+# oss上的配置文件的名称
+cloud-config-filename: cloud-config.yaml
+# 将oss上的配置文件下载到本地的路径
+cloud-config-local-path: /mnt/media/sda1/cicv-data-closedloop/config/cloud-config.yaml
+restart-cmd:
+  dir: "/mnt/media/sda1/cicv-data-closedloop/"
+  name: "sh"
+  args:
+    - "start-soc1.sh"

+ 19 - 0
aarch64/pjisuv/common/config/yaml/pjisuv3-soc2-local-config.yaml

@@ -0,0 +1,19 @@
+node:
+  name: node2
+  ip: 192.168.1.103
+# 数据闭环平台参数
+equipment-no: pjisuv3
+secret-key: Y5cDokMKhhGNu368F76gVMDp4GJA7zAOYngx53Ps
+# 获取oss连接信息的接口url
+url-get-oss-config: http://36.110.106.156:18379/oss/config?token=nXonLUcMtGcrQqqKiyygIwyVbvizE0wD
+# 金龙车数据前缀
+oss-base-prefix: pjisuv/
+# oss上的配置文件的名称
+cloud-config-filename: cloud-config.yaml
+# 将oss上的配置文件下载到本地的路径
+cloud-config-local-path: /mnt/media/sda1/cicv-data-closedloop/config/cloud-config.yaml
+restart-cmd:
+  dir: "/mnt/media/sda1/cicv-data-closedloop/"
+  name: "sh"
+  args:
+    - "start-soc2.sh"

+ 0 - 0
aarch64/pjisuv/common/config/yaml/cloud-config-pjisuv95.yaml → aarch64/pjisuv/common/config/yaml/pjisuv9-cloud-config.yaml


+ 19 - 0
aarch64/pjisuv/common/config/yaml/pjisuv9-soc1-local-config.yaml

@@ -0,0 +1,19 @@
+node:
+  name: node1
+  ip: 192.168.1.102
+# 数据闭环平台参数
+equipment-no: pjisuv9
+secret-key: eVNEaIpeAxIs3Kq5xb1S3DQMeOF581io0zVpyVv5
+# 获取oss连接信息的接口url
+url-get-oss-config: http://36.110.106.156:18379/oss/config?token=nXonLUcMtGcrQqqKiyygIwyVbvizE0wD
+# 金龙车数据前缀
+oss-base-prefix: pjisuv/
+# oss上的配置文件的名称
+cloud-config-filename: cloud-config.yaml
+# 将oss上的配置文件下载到本地的路径
+cloud-config-local-path: /mnt/media/sda1/cicv-data-closedloop/config/cloud-config.yaml
+restart-cmd:
+  dir: "/mnt/media/sda1/cicv-data-closedloop/"
+  name: "sh"
+  args:
+    - "start-soc1.sh"

+ 19 - 0
aarch64/pjisuv/common/config/yaml/pjisuv9-soc2-local-config.yaml

@@ -0,0 +1,19 @@
+node:
+  name: node2
+  ip: 192.168.1.103
+# 数据闭环平台参数
+equipment-no: pjisuv9
+secret-key: eVNEaIpeAxIs3Kq5xb1S3DQMeOF581io0zVpyVv5
+# 获取oss连接信息的接口url
+url-get-oss-config: http://36.110.106.156:18379/oss/config?token=nXonLUcMtGcrQqqKiyygIwyVbvizE0wD
+# 金龙车数据前缀
+oss-base-prefix: pjisuv/
+# oss上的配置文件的名称
+cloud-config-filename: cloud-config.yaml
+# 将oss上的配置文件下载到本地的路径
+cloud-config-local-path: /mnt/media/sda1/cicv-data-closedloop/config/cloud-config.yaml
+restart-cmd:
+  dir: "/mnt/media/sda1/cicv-data-closedloop/"
+  name: "sh"
+  args:
+    - "start-soc2.sh"

+ 130 - 0
aarch64/pjisuv/common/config/yaml/pjisuv95-cloud-config.yaml

@@ -0,0 +1,130 @@
+---
+platform:
+  url-device-auth: http://139.9.199.227:30991/device/auth
+  url-task-poll: http://139.9.199.227:30991/device/task/poll
+  url-task: http://139.9.199.227:30991/device/task
+full-collect: true
+bag-number: 120
+config-refresh-interval: 60
+disk:
+  name: /dev/vdb # 磁盘名称
+  used: 800000000000 # 磁盘占用阈值,单位bytes
+bag-data-dir: /mnt/media/sda1/cicv-data-closedloop/data/
+bag-copy-dir: /mnt/media/sda1/cicv-data-closedloop/copy/
+time-to-label-json-path: /mnt/media/sda1/cicv-data-closedloop/timeToLabel.json
+triggers-dir: /mnt/media/sda1/cicv-data-closedloop/triggers/
+time-window-send-gap: 6
+tcp-port: 12340
+rpc-port: 12341
+ros:
+  master-address: 192.168.1.102:11311
+  nodes:
+    - /camera_output
+    - /ins
+    - /lidar_pretreatment
+    - /sensorfusion
+    - /planner_s4
+    - /control
+hosts:
+  - name: node1
+    ip: 192.168.1.102
+    rosbag:
+      path: "/opt/ros/melodic/bin/rosbag"
+      envs:
+        - "LD_LIBRARY_PATH=/opt/ros/melodic/lib:/usr/lib::/usr/lib:/userdata/third_lib/libaicc"
+        - "ROS_ETC_DIR=/opt/ros/melodic/etc/ros"
+        - "USER=root"
+        - "ROS_OS_OVERRIDE=openembedded"
+        - "PWD=/mnt/media/sda1/cicv-data-closedloop"
+        - "HOME=/home/root"
+        - "CMAKE_PREFIX_PATH=/opt/ros/melodic:/usr"
+        - "ROS_ROOT=/opt/ros/melodic/share/ros"
+        - "ROS_MASTER_URI=http://192.168.1.102:11311"
+        - "ROS_VERSION=1"
+        - "ROS_PYTHON_VERSION=2"
+        - "ROS_IP=192.168.1.102"
+        - "PYTHONPATH=/opt/ros/melodic/lib/python2.7/site-packages:/usr/lib/python2.7/site-packages"
+        - "ROS_PACKAGE_PATH=/opt/ros/melodic/share"
+        - "PATH=/opt/ros/melodic/bin:/usr/bin/cyber/tools/cyber_service:/usr/bin/cyber/tools/cyber_node:/usr/bin/cyber/tools/cyber_channel:/usr/bin/cyber/tools/cyber_launch:/usr/bin/cyber/tools/cyber_monitor:/usr/bin/cyber/tools/cyber_recorder:/apollo/bazel-bin/cyber:/usr/local/bin:/usr/bin:/bin:/usr/local/sbin:/usr/sbin:/sbin"
+        - "PKG_CONFIG_PATH=/usr/lib/pkgconfig"
+        - "ROS_DISTRO=melodic"
+    topics:
+      - /camera_image # /camera_output
+      - /cicv_amr_trajectory #  /planner_s4
+      - /pj_control_pub # /control
+  #      - /data_read
+  - name: node2
+    ip: 192.168.1.103
+    rosbag:
+      path: "/opt/ros/melodic/bin/rosbag"
+      envs:
+        - "LD_LIBRARY_PATH=/opt/ros/melodic/lib:/usr/lib::/usr/lib:/userdata/third_lib"
+        - "ROS_ETC_DIR=/opt/ros/melodic/etc/ros"
+        - "USER=root"
+        - "ROS_OS_OVERRIDE=openembedded"
+        - "PWD=/mnt/media/sda1/cicv-data-closedloop"
+        - "HOME=/home/root"
+        - "CMAKE_PREFIX_PATH=/opt/ros/melodic:/usr"
+        - "ROS_ROOT=/opt/ros/melodic/share/ros"
+        - "ROS_MASTER_URI=http://192.168.1.102:11311"
+        - "ROS_VERSION=1"
+        - "ROS_PYTHON_VERSION=2"
+        - "ROS_IP=192.168.1.103"
+        - "PYTHONPATH=/opt/ros/melodic/lib/python2.7/site-packages:/usr/lib/python2.7/site-packages"
+        - "ROS_PACKAGE_PATH=/opt/ros/melodic/share"
+        - "PATH=/opt/ros/melodic/bin:/usr/bin/cyber/tools/cyber_service:/usr/bin/cyber/tools/cyber_node:/usr/bin/cyber/tools/cyber_channel:/usr/bin/cyber/tools/cyber_launch:/usr/bin/cyber/tools/cyber_monitor:/usr/bin/cyber/tools/cyber_recorder:/apollo/bazel-bin/cyber:/usr/local/bin:/usr/bin:/bin:/usr/local/sbin:/usr/sbin:/sbin "
+        - "PKG_CONFIG_PATH=/usr/lib/pkgconfig"
+        - "ROS_DISTRO=melodic"
+    topics:
+      - /points_concat  # /lidar_pretreatment
+      - /tpperception # /sensorfusion
+      - /cicv_location  # /ins
+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

+ 0 - 0
aarch64/pjisuv/common/config/yaml/local-config-pjisuv95-soc1.yaml → aarch64/pjisuv/common/config/yaml/pjisuv95-soc1-local-config.yaml


+ 0 - 0
aarch64/pjisuv/common/config/yaml/local-config-pjisuv95-soc2.yaml → aarch64/pjisuv/common/config/yaml/pjisuv95-soc2-local-config.yaml


+ 4 - 3
aarch64/pjisuv/control/main/control.go

@@ -34,6 +34,7 @@ func main() {
 			c_log.GlobalLogger.Error("获取配置status失败:", err)
 			continue
 		}
+		c_log.GlobalLogger.Info("【lastStatus】=", lastStatus, ",【status】=", status)
 		// 2 判断 status
 		// UN_CHANGE 没有新的任务,无需更改
 		// CHANGE 有新的任务,需要杀死旧的任务并重启
@@ -70,20 +71,20 @@ func main() {
 			KillRpcClient, err := rpc.Dial("tcp", config.LocalConfig.Node.Ip+":"+config.CloudConfig.RpcPort)
 			if err != nil {
 				c_log.GlobalLogger.Error("创建rpc客户端连接master失败:", err)
-				// 此处关闭client会报错
 				continue
 			}
 
 			reply := 0
 			if err = KillRpcClient.Call("KillService.Kill", killArgs, &reply); err != nil {
 				c_log.GlobalLogger.Error("发送rpc请求到master失败:", err)
-				//TODO 这里可能会报错 unexpected EOF 但是不影响,先注释 close 和 continue
+				//todo 这里可能会报错 unexpected EOF 但是不影响,先注释 close 和 continue
 				//KillRpcClient.Close()
 				//continue
 			}
 			lastStatus = status
-			c_log.GlobalLogger.Info("获取数据闭环平台最新配置。")
+			c_log.GlobalLogger.Info("结束任务后,获取数据闭环平台最新配置。")
 			config.InitPlatformConfig()
+			lastStatus = "NONE"
 			KillRpcClient.Close()
 		} else {
 			c_log.GlobalLogger.Error("未知的采集任务状态。【status】=", status)

+ 0 - 2
go.sum

@@ -177,8 +177,6 @@ github.com/google/pprof v0.0.0-20200229191704-1ebb73c60ed3/go.mod h1:ZgVRPoUq/hf
 github.com/google/pprof v0.0.0-20200430221834-fc25d7d30c6d/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM=
 github.com/google/pprof v0.0.0-20200708004538-1a94d8640e99/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM=
 github.com/google/renameio v0.1.0/go.mod h1:KWCgfxg9yswjAJkECMjeO8J8rahYeXnNhOm40UhjYkI=
-github.com/google/uuid v1.5.0 h1:1p67kYwdtXjb0gL0BPiP1Av9wiZPo5A8z2cWkTZ+eyU=
-github.com/google/uuid v1.5.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
 github.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0=
 github.com/google/uuid v1.6.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
 github.com/googleapis/gax-go/v2 v2.0.4/go.mod h1:0Wqv26UfaUD9n4G6kQubkQ+KchISgw+vpHVxEJEs9eg=

+ 12 - 1
readme.md

@@ -1,6 +1,17 @@
 # go version
 
-1.21.6
+1.22.0
+
+# oss 配置
+```
+cname:http://open-bucket.oss.icvdc.com
+内网endpoint: oss-cn-beijing-gqzl-d01-a.ops.gqzl-cloud.com
+oss桶名: open-bucket
+oss-browser预设oss路径:oss://open-bucket
+oss-browser区域:华北2(北京)
+keyid:n8glvFGS25MrLY7j
+secret:xZ2Fozoarpfw0z28FUhtg8cu0yDc5d
+```
 
 # 编译
 ## 一、进入容器

+ 4 - 0
trigger/pjisuv/pj_control_pub/CmdStrAngleUnstable/main/CmdStrAngleUnstable.go

@@ -2,6 +2,7 @@ package main
 
 import (
 	"cicv-data-closedloop/pjisuv_msgs"
+	"fmt"
 	"math"
 	"time"
 )
@@ -22,6 +23,7 @@ func Label() string {
 }
 
 func Rule(data *pjisuv_msgs.CommonVehicleCmd) string {
+
 	// 初始化第一次
 	if len(cacheSlice) == 0 {
 		cacheSlice = append(cacheSlice, data.ICPVCmdStrAngle)
@@ -30,7 +32,9 @@ func Rule(data *pjisuv_msgs.CommonVehicleCmd) string {
 	}
 	// 每3秒判断一次
 	if time.Since(timeWindowBegin).Seconds() > float64(timeWindowLength) {
+		fmt.Println("已缓存的数据为:", cacheSlice)
 		numCount := countSignChange(cacheSlice)
+		fmt.Println("抖动次数为:", numCount)
 		if numCount > 3 {
 			return "CmdStrAngleUnstable"
 		}