LocationJump.go 1.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970
  1. package main
  2. import (
  3. "awesomeProject/pjisuv_msgs"
  4. "fmt"
  5. "github.com/bluenviron/goroslib/v2"
  6. "math"
  7. "os"
  8. "os/signal"
  9. )
  10. var (
  11. PrePositionX float64 = 0
  12. PrePositionY float64 = 0
  13. //numbers = make([]float64, 0)
  14. )
  15. func CallbackCicvLocation(data *pjisuv_msgs.PerceptionLocalization) {
  16. if PrePositionX != 0 && PrePositionY != 0 {
  17. d := math.Sqrt((PrePositionX-data.PositionX)*(PrePositionX-data.PositionX) + (PrePositionY-data.PositionY)*(PrePositionY-data.PositionY))
  18. if d >= 2 {
  19. eventLabel := "LocationJump"
  20. fmt.Println(eventLabel)
  21. }
  22. //fmt.Println(d)
  23. //numbers = append(numbers, d)
  24. //sort.Float64s(numbers)
  25. //max := numbers[len(numbers)-1]
  26. //fmt.Println("最大值为:", max)
  27. }
  28. PrePositionX = data.PositionX
  29. PrePositionY = data.PositionY
  30. }
  31. func main() {
  32. go listener()
  33. select {}
  34. //time.Sleep(10000)
  35. }
  36. func listener() {
  37. // create a node and connect to the master
  38. n, err := goroslib.NewNode(goroslib.NodeConf{
  39. Name: "goroslib_sub",
  40. MasterAddress: "127.0.0.1:11311",
  41. })
  42. if err != nil {
  43. panic(err)
  44. }
  45. defer n.Close()
  46. // create a subscriber
  47. subCicvLocation, err := goroslib.NewSubscriber(goroslib.SubscriberConf{
  48. Node: n,
  49. Topic: "/cicv_location",
  50. Callback: CallbackCicvLocation,
  51. })
  52. if err != nil {
  53. panic(err)
  54. }
  55. defer subCicvLocation.Close()
  56. // wait for CTRL-C
  57. c := make(chan os.Signal, 1)
  58. //sort.Float64s(numbers)
  59. //max := numbers[len(numbers)-1]
  60. //fmt.Println("最大值为:", max)
  61. signal.Notify(c, os.Interrupt)
  62. <-c
  63. }