|
@@ -4,6 +4,7 @@ import (
|
|
|
"cicv-data-closedloop/pjisuv_msgs"
|
|
|
"cicv-data-closedloop/pjisuv_param"
|
|
|
"math"
|
|
|
+ "slices"
|
|
|
)
|
|
|
|
|
|
func Topic() string {
|
|
@@ -12,36 +13,22 @@ func Topic() string {
|
|
|
|
|
|
// Label todo 禁止存在下划线_
|
|
|
func Label() string {
|
|
|
- return "controljump"
|
|
|
+ return "ControlJump"
|
|
|
}
|
|
|
|
|
|
-func Rule(data *pjisuv_msgs.Trajectory, param pjisuv_param.PjisuvParam) string {
|
|
|
+func Rule(data *pjisuv_msgs.Trajectory, param *pjisuv_param.PjisuvParam) string {
|
|
|
var currentCurvateres []float64
|
|
|
for _, point := range data.Trajectoryinfo.Trajectorypoints {
|
|
|
currentCurvateres = append(currentCurvateres, math.Abs(float64(point.Curvature)))
|
|
|
}
|
|
|
if len(currentCurvateres) != 0 {
|
|
|
- maxCurrent := findMax(currentCurvateres)
|
|
|
- maxLast := findMax(param.LastCurvaturesOfCicvAmrTrajectory)
|
|
|
+
|
|
|
+ maxCurrent := slices.Max(currentCurvateres)
|
|
|
+ maxLast := slices.Max(param.LastCurvaturesOfCicvAmrTrajectory)
|
|
|
a := math.Abs(maxCurrent - maxLast)
|
|
|
if a >= 0.099 {
|
|
|
- return "controljump"
|
|
|
+ return "ControlJump"
|
|
|
}
|
|
|
}
|
|
|
return ""
|
|
|
}
|
|
|
-
|
|
|
-// findMax 函数接收一个float64类型的切片,并返回其中的最大值
|
|
|
-func findMax(numbers []float64) float64 {
|
|
|
- if len(numbers) == 0 {
|
|
|
- // 如果没有元素,可以根据需要处理,这里直接返回0作为示例
|
|
|
- return 0
|
|
|
- }
|
|
|
- maxTemp := numbers[0] // 假设第一个元素就是最大的
|
|
|
- for _, number := range numbers {
|
|
|
- if number > maxTemp {
|
|
|
- maxTemp = number
|
|
|
- }
|
|
|
- }
|
|
|
- return maxTemp
|
|
|
-}
|