user_run_new.py 3.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109
  1. import os
  2. import sys
  3. sys.path.append(os.path.dirname(os.path.abspath(__file__)) +
  4. "/../../onsite_parking/")
  5. import json
  6. from planner.hybridastar import planner as planner
  7. import input.make_map as mp
  8. from input import make_car
  9. from utils import replay
  10. from utils import map_display as mdp
  11. import matplotlib.pyplot as plt
  12. sys.setrecursionlimit(3000) # 将默认的递归深度修改为3000
  13. def main():
  14. # 请在此输入input文件夹下场景文件
  15. map_path = './input/B02.json'
  16. # mdp.map_display(map_path) # 仅绘制地图
  17. ox, oy,sp,gp = mp.make_map(map_path)
  18. sx, sy, syaw0 = sp['x'], sp['y'], sp['yaw']
  19. C = make_car.C
  20. # 遍历所有停车位
  21. for i in range(1,len(gp)+1):
  22. if i == '1':
  23. for i in range(sy - 500, sy + 1500, 1):
  24. ox.append(sx + 500)
  25. oy.append(i)
  26. for i in range(sx - 1500, sx, 1):
  27. ox.append(i)
  28. oy.append(sy + 750)
  29. for i in range(sx - 1500, sx, 1):
  30. ox.append(i)
  31. oy.append(sy - 3500)
  32. elif i == '2':
  33. pass
  34. elif i == '3':
  35. for i in range(sy - 500, sy + 1500, 1):
  36. ox.append(sx + 500)
  37. oy.append(i)
  38. # for i in range(gy + 500, sy - 1500, 100):
  39. # ox.append(sx)
  40. # oy.append(i)
  41. # for i in range(sx - 500, sx, 100):
  42. # ox.append(i)
  43. # oy.append(sy - 750)
  44. for i in range(sx - 1500, sx, 1):
  45. ox.append(i)
  46. oy.append(sy + 750)
  47. for i in range(sx - 1500, sx, 1):
  48. ox.append(i)
  49. oy.append(sy - 3500)
  50. elif i == '10':
  51. for i in range(sy - 500, sy + 1500, 100):
  52. ox.append(sx + 500)
  53. oy.append(i)
  54. for i in range(gy + 500, sy - 1500, 100):
  55. ox.append(sx)
  56. oy.append(i)
  57. # for i in range(gy + 1500, sy + 500, 1):
  58. # ox.append(sx - 1000)
  59. # oy.append(i)
  60. # for i in range(sx - 500, sx, 100):
  61. # ox.append(i)
  62. # oy.append(sy - 750)
  63. for i in range(sx - 1500, sx, 100):
  64. ox.append(i)
  65. oy.append(sy + 750)
  66. elif i == '26':
  67. pass
  68. # for i in range(sy - 500, sy + 1500, 100):
  69. # ox.append(sx + 500)
  70. # oy.append(i)
  71. # for i in range(gy + 500, sy - 1500, 100):
  72. # ox.append(sx)
  73. # oy.append(i)
  74. # for i in range(sx - 2000, sx, 100):
  75. # ox.append(i)
  76. # oy.append(sy + 600)
  77. gx, gy, gyaw0 = gp[str(i)]['x_end'], gp[str(i)]['y_end'], gp[str(i)]['yaw']
  78. # 请在此调用planer文件夹下的规控算法
  79. path = planner.hybrid_astar_planning(sx, sy, syaw0, gx, gy, gyaw0, ox, oy, C.XY_RESO, C.YAW_RESO)
  80. # 算法测试结果保存
  81. if not path:
  82. print("Searching failed!")
  83. return
  84. output_dit={
  85. "output_x": path.x,
  86. "output_y": path.y,
  87. "output_yaw": path.yaw,
  88. "output_dir": path.direction,
  89. }
  90. with open(f"./output/use_result_{map_path.split('/')[-1].split('.json')[0]}_{str(i)}.json", "w") as file:
  91. json.dump(output_dit, file)
  92. # 仿真回放
  93. result_path = f"./output/use_result_{map_path.split('/')[-1].split('.json')[0]}_{str(i)}.json"
  94. replay.replay(map_path, result_path)
  95. if __name__ == '__main__':
  96. main()