CBLA.go 1.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081
  1. package main
  2. import (
  3. "awesomeProject/entity"
  4. "awesomeProject/pjisuv_msgs"
  5. "fmt"
  6. "github.com/bluenviron/goroslib/v2"
  7. "math"
  8. "os"
  9. "os/signal"
  10. "time"
  11. )
  12. type Point struct {
  13. Latitude float64
  14. Longitude float64
  15. }
  16. var (
  17. param entity.PjisuvParam
  18. StartTime int64
  19. IsFollow bool
  20. )
  21. func CallbackTpperception(data *pjisuv_msgs.PerceptionObjects) {
  22. for _, obj := range data.Objs {
  23. fmt.Println("ID=", obj.Id, "Type=", obj.Type)
  24. if obj.Type == 4 && obj.X >= 2 && obj.X <= 20 && math.Abs(float64(obj.Y)) <= 1.2 {
  25. if StartTime == 0 {
  26. StartTime = time.Now().Unix()
  27. }
  28. // 判断是否持续超过5S
  29. if time.Now().Unix()-StartTime > 5 {
  30. if !IsFollow {
  31. event_label := "CBLA"
  32. fmt.Println(event_label)
  33. IsFollow = true
  34. }
  35. }
  36. } else {
  37. StartTime = 0
  38. IsFollow = false
  39. }
  40. }
  41. }
  42. func main() {
  43. go listener()
  44. select {}
  45. //time.Sleep(10000)
  46. }
  47. func listener() {
  48. // create a node and connect to the master
  49. n, err := goroslib.NewNode(goroslib.NodeConf{
  50. Name: "goroslib_sub",
  51. MasterAddress: "127.0.0.1:11311",
  52. })
  53. if err != nil {
  54. panic(err)
  55. }
  56. defer n.Close()
  57. // create a subscriber
  58. subEndPointMessage, err := goroslib.NewSubscriber(goroslib.SubscriberConf{
  59. Node: n,
  60. Topic: "/tpperception",
  61. Callback: CallbackTpperception,
  62. })
  63. if err != nil {
  64. panic(err)
  65. }
  66. defer subEndPointMessage.Close()
  67. // wait for CTRL-C
  68. c := make(chan os.Signal, 1)
  69. signal.Notify(c, os.Interrupt)
  70. <-c
  71. }