run_test_b01.py 8.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241
  1. import os
  2. import sys
  3. sys.path.append(os.path.dirname(os.path.abspath(__file__)) +
  4. "/../../onsite_parking/")
  5. import json
  6. import input.make_map as mp
  7. from planner.hybridastar import planner as planner
  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. import numpy as np
  13. def main():
  14. # 输入input文件夹下场景文件
  15. map_path = '../input/B01.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. park = '26'
  22. gx, gy, gyaw0 = gp[park]['x_end'], gp[park]['y_end'], gp[park]['yaw']
  23. print(gx,gy)
  24. if park == '3' or park == '2'or park == '1'or park == '6'or park == '8':
  25. x = np.linspace(10300, 10300, 500)
  26. y = np.linspace(7000, 1000, 500)
  27. for i in range(len(x)):
  28. ox.append(x[i])
  29. oy.append(y[i])
  30. x = np.linspace(8800, 8800, 500)
  31. y = np.linspace(2800, 5500, 500)
  32. for i in range(len(x)):
  33. ox.append(x[i])
  34. oy.append(y[i])
  35. x = np.linspace(7200, 8800, 500)
  36. y = np.linspace(1300, 2800, 500)
  37. for i in range(len(x)):
  38. ox.append(x[i])
  39. oy.append(y[i])
  40. x = np.linspace(9200, 10300, 500)
  41. y = np.linspace(870, 1800, 500)
  42. for i in range(len(x)):
  43. ox.append(x[i])
  44. oy.append(y[i])
  45. if park == '5'or park == '7' :
  46. x = np.linspace(10300, 10300, 500)
  47. y = np.linspace(7000, 1000, 500)
  48. for i in range(len(x)):
  49. ox.append(x[i])
  50. oy.append(y[i])
  51. x = np.linspace(8800, 8800, 500)
  52. y = np.linspace(2800, 5500, 500)
  53. for i in range(len(x)):
  54. ox.append(x[i])
  55. oy.append(y[i])
  56. x = np.linspace(7200, 8800, 500)
  57. y = np.linspace(1300, 2800, 500)
  58. for i in range(len(x)):
  59. ox.append(x[i])
  60. oy.append(y[i])
  61. x = np.linspace(8800, 10300, 500)
  62. y = np.linspace(870, 1800, 500)
  63. for i in range(len(x)):
  64. ox.append(x[i])
  65. oy.append(y[i])
  66. if park == '4': pass
  67. if park == '9' or park == '10'or park == '11'or park == '12'or park == '13'or park == '14'or park == '15':
  68. x = np.linspace(5800, 1500, 500)
  69. y = np.linspace(2000, 2000, 500)
  70. for i in range(len(x)):
  71. ox.append(x[i])
  72. oy.append(y[i])
  73. x = np.linspace(8300, 8300, 500)
  74. y = np.linspace(2800, 500, 500)
  75. for i in range(len(x)):
  76. ox.append(x[i])
  77. oy.append(y[i])
  78. x = np.linspace(4000, 1400, 500)
  79. y = np.linspace(2900, 2900, 500)
  80. for i in range(len(x)):
  81. ox.append(x[i])
  82. oy.append(y[i])
  83. x = np.linspace(4000, 4000, 500)
  84. y = np.linspace(1000, 2900, 500)
  85. for i in range(len(x)):
  86. ox.append(x[i])
  87. oy.append(y[i])
  88. x = np.linspace(4200, 5200, 500)
  89. y = np.linspace(4300, 4300, 500)
  90. for i in range(len(x)):
  91. ox.append(x[i])
  92. oy.append(y[i])
  93. C.XY_RESO = C.XY_RESO - 200
  94. if park == '16':
  95. x = np.linspace(5800, 1500, 500)
  96. y = np.linspace(2000, 2000, 500)
  97. for i in range(len(x)):
  98. ox.append(x[i])
  99. oy.append(y[i])
  100. x = np.linspace(8300, 8300, 500)
  101. y = np.linspace(2800, 500, 500)
  102. for i in range(len(x)):
  103. ox.append(x[i])
  104. oy.append(y[i])
  105. x = np.linspace(6900, 5200, 500)
  106. y = np.linspace(3600, 3600, 500)
  107. for i in range(len(x)):
  108. ox.append(x[i])
  109. oy.append(y[i])
  110. C.XY_RESO = C.XY_RESO - 200
  111. if park == '17': # TODO
  112. pass
  113. if park == '18': # TODO
  114. pass
  115. if park == '19'or park == '20'or park == '21'or park == '22'or park == '23'or park == '24'or park == '25':
  116. x = np.linspace(8300, 8300, 500)
  117. y = np.linspace(2800, 500, 500)
  118. for i in range(len(x)):
  119. ox.append(x[i])
  120. oy.append(y[i])
  121. x = np.linspace(1500, 5100, 500)
  122. y = np.linspace(2900, 2900, 500)
  123. for i in range(len(x)):
  124. ox.append(x[i])
  125. oy.append(y[i])
  126. x = np.linspace(1500, 3000, 500)
  127. y = np.linspace(2200, 2200, 500)
  128. for i in range(len(x)):
  129. ox.append(x[i])
  130. oy.append(y[i])
  131. x = np.linspace(5300, 3000, 500)
  132. y = np.linspace(2800, 2200, 500)
  133. for i in range(len(x)):
  134. ox.append(x[i])
  135. oy.append(y[i])
  136. C.XY_RESO = C.XY_RESO - 200
  137. if park == '26' or park == '27' or park == '28' or park == '29': # TODO
  138. pass
  139. if park == '30' or park == '31' or park == '32' or park == '33' or park == '34' or park == '35':
  140. x = np.linspace(10000, 7000, 500)
  141. y = np.linspace(2000, 2000, 500)
  142. for i in range(len(x)):
  143. ox.append(x[i])
  144. oy.append(y[i])
  145. if park == '36' or park == '37' or park == '38' or park == '39' or park == '40':
  146. x = np.linspace(10000, 7000, 500)
  147. y = np.linspace(2000, 2000, 500)
  148. for i in range(len(x)):
  149. ox.append(x[i])
  150. oy.append(y[i])
  151. x = np.linspace(12000, 14000, 500)
  152. y = np.linspace(860, 860, 500)
  153. for i in range(len(x)):
  154. ox.append(x[i])
  155. oy.append(y[i])
  156. if park == '41' or park == '42' or park == '43': # TODO
  157. pass
  158. if park == '44' or park == '45' or park == '46'or park == '47'or park == '48'or park == '49':
  159. x = np.linspace(9000, 9000, 500)
  160. y = np.linspace(2800, 7000, 500)
  161. for i in range(len(x)):
  162. ox.append(x[i])
  163. oy.append(y[i])
  164. x = np.linspace(7200, 8800, 500)
  165. y = np.linspace(2000, 2800, 500)
  166. for i in range(len(x)):
  167. ox.append(x[i])
  168. oy.append(y[i])
  169. x = np.linspace(8500, 10200, 500)
  170. y = np.linspace(940, 1800, 500)
  171. for i in range(len(x)):
  172. ox.append(x[i])
  173. oy.append(y[i])
  174. x = np.linspace(9000, 10500, 500)
  175. y = np.linspace(6300, 6300, 500)
  176. for i in range(len(x)):
  177. ox.append(x[i])
  178. oy.append(y[i])
  179. C.XY_RESO = C.XY_RESO - 200
  180. if park == '50':
  181. x = np.linspace(9000, 9000, 500)
  182. y = np.linspace(2800, 7000, 500)
  183. for i in range(len(x)):
  184. ox.append(x[i])
  185. oy.append(y[i])
  186. x = np.linspace(7200, 8800, 500)
  187. y = np.linspace(2000, 2800, 500)
  188. for i in range(len(x)):
  189. ox.append(x[i])
  190. oy.append(y[i])
  191. x = np.linspace(8500, 10200, 500)
  192. y = np.linspace(940, 1800, 500)
  193. for i in range(len(x)):
  194. ox.append(x[i])
  195. oy.append(y[i])
  196. x = np.linspace(9000, 10500, 500)
  197. y = np.linspace(6300, 6300, 500)
  198. for i in range(len(x)):
  199. ox.append(x[i])
  200. oy.append(y[i])
  201. C.XY_RESO = C.XY_RESO - 500
  202. x = np.linspace(10100, 10100, 500)
  203. y = np.linspace(2500, 4500, 500)
  204. for i in range(len(x)):
  205. ox.append(x[i])
  206. oy.append(y[i])
  207. x = np.linspace(8200, 8200, 500)
  208. y = np.linspace(510, 1000, 500)
  209. for i in range(len(x)):
  210. ox.append(x[i])
  211. oy.append(y[i])
  212. plt.plot(ox, oy, ",k")
  213. plt.show()
  214. # 规划算法
  215. path = planner.hybrid_astar_planning(sx, sy, syaw0, gx, gy, gyaw0, ox, oy, C.XY_RESO, C.YAW_RESO)
  216. C.XY_RESO = 1000
  217. # 算法测试结果保存
  218. if not path:
  219. print("Searching failed!")
  220. return
  221. output_dit={
  222. "output_x":path.x,
  223. "output_y": path.y,
  224. "output_yaw": path.yaw,
  225. "output_dir": path.direction,
  226. }
  227. with open(f"../output/result_{map_path.split('/')[-1].split('.json')[0]}_{park}.json", "w") as file:
  228. json.dump(output_dit, file)
  229. # 仿真回放
  230. result_path = f"../output/result_{map_path.split('/')[-1].split('.json')[0]}_{park}.json"
  231. replay.replay(map_path, result_path)
  232. if __name__ == '__main__':
  233. main()