pji_run.py 3.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192
  1. #!/usr/bin/env python
  2. # -*- coding: utf-8 -*-
  3. ##################################################################
  4. #
  5. # Copyright (c) 2023 CICV, Inc. All Rights Reserved
  6. #
  7. ##################################################################
  8. """
  9. @Authors: yangzihao(yangzihao@china-icv.cn)
  10. @Data: 2024/04/21
  11. @Last Modified: 2024/08/01
  12. @Summary: Pji outdoor robot evaluate entrance
  13. """
  14. import os
  15. import sys
  16. import time
  17. from single_case_evaluate import single_case_eval
  18. from common import get_subfolders_name
  19. # from pjirebot_evaluate_csv import parsebag
  20. import log
  21. if __name__ == "__main__":
  22. # 屏蔽warning,减少非必要问题的干扰
  23. from warnings import simplefilter
  24. # simplefilter(action="ignore", category=FutureWarning)
  25. simplefilter(action="ignore")
  26. # input_dict = {
  27. # "data_path": dataPath,
  28. # "resultPath": resultPath,
  29. # "trackPath": trackPath
  30. # }
  31. # 判断参数数量是否足够
  32. if len(sys.argv) >= 3:
  33. dataPath = sys.argv[1] # 数据地址路径,包含多个csv
  34. resultPath = sys.argv[2] # 结果文件保存路径,结果文件包括几个过程图片、报告等
  35. trackPath = sys.argv[3] # 轨迹图片地址路径,用于报告展示
  36. # 用例名称,可选参数,如果传输则 选用,不传输则选择文件路径名作为用例名称
  37. if len(sys.argv) > 4:
  38. case_name = sys.argv[4]
  39. else:
  40. case_name = dataPath.split('/')[-1] # .split('.')[0]
  41. configPath = r"./config.json" # 配置信息,包含指标列表及评分系数
  42. # logFileName = f'{resultPath}/log.log'
  43. logFileName = os.path.join(resultPath, 'log.log') # 日志文件名
  44. log.setup_logger(logFileName) # 日志设置
  45. # 获取日志记录器
  46. logger = log.get_logger()
  47. # 如果数据路径不存在,报错,存入日志,退出
  48. if not os.path.exists(dataPath):
  49. print('Invalid dataPath!')
  50. logger.error(f"[case:{case_name}] SINGLE_CASE_EVAL: Invalid dataPath!")
  51. sys.exit(-1)
  52. else:
  53. try:
  54. logger.info(f"[case:{case_name}] SINGLE_CASE_EVAL: Start evaluating:")
  55. print("SINGLE_CASE_EVAL程序开始运行:")
  56. print(
  57. f" configPath: {configPath},\n dataPath: {dataPath},\n resultPath: {resultPath},\n trackPath: {trackPath}")
  58. # 统计运行时间
  59. t1 = time.time()
  60. # 将输入的bag进行解析
  61. # parsebag(dataPath, resultPath) # EgoState_pji.csv存放resultPath下
  62. # 进入主要模块进行单用例评价分析
  63. single_case_eval(configPath, resultPath, resultPath, trackPath, case_name)
  64. t2 = time.time()
  65. print(f"程序结束,执行时间:{int(t2 - t1)} s")
  66. logger.info(f"[case:{case_name}] SINGLE_CASE_EVAL: End.")
  67. # 正常运行完成,返回状态0
  68. sys.exit(0)
  69. # 异常打印,退出
  70. except Exception as e:
  71. print("异常,退出...")
  72. print(repr(e))
  73. sys.exit(-1)
  74. # 增加兜底策略,输出问题报告(内容暂定为日志及问题总结)
  75. # finally:
  76. # pass
  77. # 参数量不够,报错退出
  78. else:
  79. print('No enough arguments!')
  80. sys.exit(-1)