@@ -1,4 +1,4 @@
-package ros_message
+package pji_msgs
import (
"github.com/bluenviron/goroslib/v2/pkg/msg"
@@ -0,0 +1,20 @@
+package main
+
+import (
+ "cicv-data-closedloop/pji_msgs"
+)
+func Topic() string {
+ return "/sys_info"
+}
+func Label() string {
+ return "cpuoveroccupied"
+func Rule(data *pji_msgs.SysInfo) string {
+ if data.CpuOccupied > 99 {
+ }
+ return ""
+ "github.com/bluenviron/goroslib/v2/pkg/msgs/diagnostic_msgs"
+ return "/diagnostics"
+ return "detectfault"
+func Rule(data *diagnostic_msgs.DiagnosticArray) string {
+ if data.Status[0].Level >= 3 {
+ return "/locate_info"
+ return "locationfailed"
+func Rule(data *pji_msgs.LocateInfo) string {
+ if data.LocateStatus == 0 {
+ return "memoveroccupied"
+ if data.MemOccupied > 99 {
@@ -0,0 +1,21 @@
+ "github.com/bluenviron/goroslib/v2/pkg/msgs/std_msgs"
+ return "/obstacle_detection"
+ return "obstacledetection"
+// TODO 如果速度很小则不触发
+func Rule(data *std_msgs.UInt8) string {
+ if data.Data != 0 {
@@ -0,0 +1,24 @@
+ "github.com/bluenviron/goroslib/v2/pkg/msgs/nav_msgs"
+ "math"
+ return "/odom"
+ return "overspeed"
+func Rule(data *nav_msgs.Odometry) string {
+ velocityX := data.Twist.Twist.Linear.X
+ velocityY := data.Twist.Twist.Linear.Y
+ absV := math.Pow(math.Pow(velocityX, 2)+math.Pow(velocityY, 2), 0.5)
+ if absV*3.6 > 0 {
+ "github.com/bluenviron/goroslib/v2/pkg/msgs/sensor_msgs"
+ return "/imu"
+ return "unstabledriving"
+func Rule(data *sensor_msgs.Imu) string {
+ if math.Abs(data.LinearAcceleration.X) >= 0.7 && math.Abs(data.LinearAcceleration.Y) >= 0.7 {