for_competition.go 1.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  1. package svc
  2. import (
  3. commonConfig "cicv-data-closedloop/aarch64/pjisuv/common/config"
  4. "cicv-data-closedloop/common/config/c_log"
  5. "cicv-data-closedloop/common/util"
  6. "strings"
  7. "time"
  8. )
  9. /*
  10. 实车比赛临时使用
  11. */
  12. var (
  13. timeInterval = "5"
  14. dir = "/home/root/competition/"
  15. )
  16. func ForCompetition() {
  17. c_log.GlobalLogger.Info("开始采集实车算法比赛全量数据。")
  18. util.CreateDir(dir)
  19. // 1 打包
  20. var commandArgs = []string{"record", "--split", "--duration=" + timeInterval, "/pji_gps", "/data_read"}
  21. _, err := util.ExecuteWithEnvAndDirAsync(commonConfig.RosbagEnvs, dir, commonConfig.RosbagPath, commandArgs...)
  22. if err != nil {
  23. c_log.GlobalLogger.Error("执行record命令报错,", commandArgs)
  24. }
  25. // 2 扫描目录文件
  26. for {
  27. time.Sleep(time.Duration(2) * time.Second)
  28. files, _ := util.ListAbsolutePathAndSort(dir)
  29. if len(files) >= 2 {
  30. c_log.GlobalLogger.Info("扫描试车比赛数据采集目录,", files)
  31. for i := range files {
  32. if i == len(files)-1 { // 最后一个包在录制中,不上传
  33. break
  34. }
  35. c_log.GlobalLogger.Info("上传实车算法比赛全量数据包", files[i])
  36. bagSlice := strings.Split(files[0], "/")
  37. commonConfig.OssMutex.Lock()
  38. _ = commonConfig.OssBucket.PutObjectFromFile("competition/"+bagSlice[len(bagSlice)-1], files[0])
  39. commonConfig.OssMutex.Unlock()
  40. }
  41. }
  42. }
  43. }