for_competition.go 1.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  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. "os"
  7. "strings"
  8. "time"
  9. )
  10. var (
  11. dir = "/home/root/competition/"
  12. commandArgs = []string{"record", "--split", "--duration=1", "/pji_gps", "/data_read"}
  13. )
  14. // todo 实车比赛临时使用
  15. // history record命令无法录制()
  16. func ForCompetition() {
  17. c_log.GlobalLogger.Info("开始采集实车算法比赛全量数据。")
  18. util.CreateDir(dir)
  19. // 1 打包
  20. c_log.GlobalLogger.Info("采集实车算法比赛全量数据的环境变量为:", commonConfig.RosbagEnvs)
  21. command, err := util.ExecuteWithEnvAndDirAsync(commonConfig.RosbagEnvs, dir, commonConfig.RosbagPath, commandArgs...)
  22. if err != nil {
  23. c_log.GlobalLogger.Error("程序崩溃。执行record命令", command, "出错:", err)
  24. os.Exit(-1)
  25. }
  26. // 2 扫描目录文件
  27. for {
  28. time.Sleep(time.Duration(2) * time.Second)
  29. files, _ := util.ListAbsolutePathAndSort(dir)
  30. if len(files) >= 2 {
  31. c_log.GlobalLogger.Info("扫描试车比赛数据采集目录,", files)
  32. for i := range files {
  33. if i == len(files)-1 { // 最后一个包在录制中,不上传
  34. break
  35. }
  36. c_log.GlobalLogger.Debug("上传实车算法比赛全量数据包", files[i])
  37. bagSlice := strings.Split(files[i], "/")
  38. commonConfig.OssMutex.Lock()
  39. _ = commonConfig.OssBucket.PutObjectFromFile("competition/"+bagSlice[len(bagSlice)-1], files[i])
  40. commonConfig.OssMutex.Unlock()
  41. util.DeleteFile(files[i])
  42. }
  43. }
  44. }
  45. }