test_run.py 22 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776
  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. import time
  14. # sys.setrecursionlimit(3000) # 将默认的递归深度修改为3000
  15. def linear_interpolation(x1,x2,y1,y2,num):
  16. x = np.linspace(x1,x2,num)
  17. y = np.linspace(y1,y2,num)
  18. return x,y
  19. def changeOxyB01(park,ox,oy,sx,sy,gx,gy):
  20. if park == '1':
  21. x = np.linspace(10300, 10300, 500)
  22. y = np.linspace(7000, 1000, 500)
  23. for i in range(len(x)):
  24. ox.append(x[i])
  25. oy.append(y[i])
  26. x = np.linspace(8800, 8800, 500)
  27. y = np.linspace(2800, 5500, 500)
  28. for i in range(len(x)):
  29. ox.append(x[i])
  30. oy.append(y[i])
  31. x = np.linspace(7200, 8800, 500)
  32. y = np.linspace(1300, 2800, 500)
  33. for i in range(len(x)):
  34. ox.append(x[i])
  35. oy.append(y[i])
  36. x = np.linspace(9200, 10300, 500)
  37. y = np.linspace(870, 1800, 500)
  38. for i in range(len(x)):
  39. ox.append(x[i])
  40. oy.append(y[i])
  41. elif park == '2':
  42. for i in range(0, 2500, 1):
  43. ox.append(sx + 500)
  44. oy.append(i)
  45. for i in range(0, 6000, 1):
  46. ox.append(i)
  47. oy.append(2000)
  48. for i in range(2000, 6000, 1):
  49. ox.append(4500)
  50. oy.append(i)
  51. for i in range(5500, 7000, 1):
  52. ox.append(5500)
  53. oy.append(i)
  54. elif park == '3':
  55. for i in range(0, 2500, 1):
  56. ox.append(sx + 500)
  57. oy.append(i)
  58. for i in range(0, 6000, 1):
  59. ox.append(i)
  60. oy.append(2000)
  61. for i in range(2000, 6000, 1):
  62. ox.append(4500)
  63. oy.append(i)
  64. for i in range(5500, 7000, 1):
  65. ox.append(5500)
  66. oy.append(i)
  67. elif park == '4':
  68. for i in range(0, 2500, 1):
  69. ox.append(sx + 500)
  70. oy.append(i)
  71. for i in range(0, 6000, 1):
  72. ox.append(i)
  73. oy.append(2000)
  74. for i in range(2000, 6000, 1):
  75. ox.append(4500)
  76. oy.append(i)
  77. for i in range(5500, 7000, 1):
  78. ox.append(5500)
  79. oy.append(i)
  80. elif park == '5':
  81. for i in range(0, 2500, 1):
  82. ox.append(sx + 500)
  83. oy.append(i)
  84. for i in range(0, 6000, 1):
  85. ox.append(i)
  86. oy.append(2000)
  87. for i in range(2000, 6000, 1):
  88. ox.append(4500)
  89. oy.append(i)
  90. for i in range(5500, 7000, 1):
  91. ox.append(5500)
  92. oy.append(i)
  93. elif park == '6':
  94. for i in range(0, 2500, 1):
  95. ox.append(sx + 500)
  96. oy.append(i)
  97. for i in range(0, 6000, 1):
  98. ox.append(i)
  99. oy.append(2000)
  100. for i in range(2000, 6000, 1):
  101. ox.append(4500)
  102. oy.append(i)
  103. for i in range(5500, 7000, 1):
  104. ox.append(5500)
  105. oy.append(i)
  106. elif park == '7':
  107. for i in range(0, 2500, 1):
  108. ox.append(sx + 500)
  109. oy.append(i)
  110. for i in range(0, 6000, 1):
  111. ox.append(i)
  112. oy.append(2000)
  113. for i in range(2000, 6000, 1):
  114. ox.append(4500)
  115. oy.append(i)
  116. for i in range(5500, 7000, 1):
  117. ox.append(5500)
  118. oy.append(i)
  119. elif park == '8':
  120. for i in range(0, 2500, 1):
  121. ox.append(sx + 500)
  122. oy.append(i)
  123. for i in range(0, 6000, 1):
  124. ox.append(i)
  125. oy.append(2000)
  126. for i in range(2000, 6000, 1):
  127. ox.append(4500)
  128. oy.append(i)
  129. for i in range(5500, 7000, 1):
  130. ox.append(5500)
  131. oy.append(i)
  132. elif park == '9':
  133. x = np.linspace(5800, 1500, 500)
  134. y = np.linspace(2000, 2000, 500)
  135. for i in range(len(x)):
  136. ox.append(x[i])
  137. oy.append(y[i])
  138. x = np.linspace(8300, 8300, 500)
  139. y = np.linspace(2800, 500, 500)
  140. for i in range(len(x)):
  141. ox.append(x[i])
  142. oy.append(y[i])
  143. x = np.linspace(4000, 1400, 500)
  144. y = np.linspace(2900, 2900, 500)
  145. for i in range(len(x)):
  146. ox.append(x[i])
  147. oy.append(y[i])
  148. x = np.linspace(4000, 4000, 500)
  149. y = np.linspace(1000, 2900, 500)
  150. for i in range(len(x)):
  151. ox.append(x[i])
  152. oy.append(y[i])
  153. x = np.linspace(4200, 5200, 500)
  154. y = np.linspace(4300, 4300, 500)
  155. for i in range(len(x)):
  156. ox.append(x[i])
  157. oy.append(y[i])
  158. return ox,oy
  159. def changeOxyB02(park,ox,oy,sx,sy,gx,gy):
  160. if park == '1':
  161. for i in range(sy - 500, sy + 1500, 1):
  162. ox.append(sx + 500)
  163. oy.append(i)
  164. for i in range(sy - 5500, sy - 500, 1):
  165. ox.append(sx - 1500)
  166. oy.append(i)
  167. for i in range(sx - 1500, sx, 1):
  168. ox.append(i)
  169. oy.append(sy + 750)
  170. # for i in range(sx - 1500, sx, 1):
  171. # ox.append(i)
  172. # oy.append(sy - 3500)
  173. elif park == '2':
  174. for i in range(sy - 500, sy + 1500, 1):
  175. ox.append(sx + 500)
  176. oy.append(i)
  177. for i in range(sy - 5500, sy - 500, 1):
  178. ox.append(sx - 1500)
  179. oy.append(i)
  180. for i in range(sx - 1500, sx, 1):
  181. ox.append(i)
  182. oy.append(sy + 750)
  183. elif park == '3':
  184. for i in range(sy - 500, sy + 1500, 1):
  185. ox.append(sx + 500)
  186. oy.append(i)
  187. # for i in range(gy + 500, sy - 1500, 100):
  188. # ox.append(sx)
  189. # oy.append(i)
  190. # for i in range(sx - 500, sx, 100):
  191. # ox.append(i)
  192. # oy.append(sy - 750)
  193. for i in range(sx - 1500, sx, 1):
  194. ox.append(i)
  195. oy.append(sy + 750)
  196. for i in range(sx - 1500, sx, 1):
  197. ox.append(i)
  198. oy.append(sy - 3500)
  199. elif park == '4':# TODO list assignment index out of range
  200. pass
  201. elif park == '5':# TODO list assignment index out of range
  202. pass
  203. elif park == '6':# TODO list assignment index out of range
  204. pass
  205. elif park == '7':# TODO list assignment index out of range
  206. pass
  207. elif park == '8':# TODO list assignment index out of range
  208. pass
  209. elif park == '9':# TODO list assignment index out of range
  210. pass
  211. elif park == '10':
  212. for i in range(sy - 500, sy + 1500, 100):
  213. ox.append(sx + 500)
  214. oy.append(i)
  215. for i in range(gy + 500, sy - 1500, 100):
  216. ox.append(sx)
  217. oy.append(i)
  218. for i in range(sx - 1500, sx, 100):
  219. ox.append(i)
  220. oy.append(sy + 750)
  221. elif park == '11': # TODO bad
  222. for i in range(sy - 500, sy + 1500, 100):
  223. ox.append(sx + 500)
  224. oy.append(i)
  225. for i in range(gy + 500, sy - 1500, 100):
  226. ox.append(sx)
  227. oy.append(i)
  228. # for i in range(gy + 1500, sy - 500, 100):
  229. # ox.append(sx - 1300)
  230. # oy.append(i)
  231. # for i in range(sx - 1500, sx, 100):
  232. # ox.append(i)
  233. # oy.append(sy + 750)
  234. elif park == '12': # TODO not good
  235. for i in range(sy - 500, sy + 1500, 100):
  236. ox.append(sx + 500)
  237. oy.append(i)
  238. for i in range(gy + 500, sy - 1500, 100):
  239. ox.append(sx - 200)
  240. oy.append(i)
  241. for i in range(sx - 1500, sx, 100):
  242. ox.append(i)
  243. oy.append(sy + 750)
  244. for i in range(sy - 4500, sy + 1500, 100):
  245. ox.append(sx - 1500)
  246. oy.append(i)
  247. elif park == '13': # TODO bad
  248. for i in range(sy - 500, sy + 1500, 100):
  249. ox.append(sx + 500)
  250. oy.append(i)
  251. for i in range(sy - 5500, sy - 500, 100):
  252. ox.append(sx - 3200)
  253. oy.append(i)
  254. for i in range(sx - 1500, sx, 100):
  255. ox.append(i)
  256. oy.append(sy + 750)
  257. for i in range(sx - 1500, sx + 500, 100):
  258. ox.append(i)
  259. oy.append(sy - 500)
  260. # for i in range(sy - 500, sy + 500, 100):
  261. # ox.append(sx + 500)
  262. # oy.append(i)
  263. # for i in range(gy + 500, sy - 1500, 100):
  264. # ox.append(sx)
  265. # oy.append(i)
  266. # for i in range(sx - 4500, sx, 100):
  267. # ox.append(i)
  268. # oy.append(sy + 700)
  269. # for i in range(sy - 3500, sy + 500, 100):
  270. # ox.append(sx - 1500)
  271. # oy.append(i)
  272. # for i in range(sx - 1500, sx, 100):
  273. # ox.append(i)
  274. # oy.append(sy - 750)
  275. # for i in range(sx - 1500, sx, 100):
  276. # ox.append(i)
  277. # oy.append(sy - 3500)
  278. # for i in range(gy + 800, sy - 500, 100):
  279. # ox.append(sx - 3300)
  280. # oy.append(i)
  281. # for i in range(gy + 1000, sy - 500, 100):
  282. # ox.append(sx - 4200)
  283. # oy.append(i)
  284. # for i in range(gy, gy + 1500, 100):
  285. # ox.append(sx - 1500)
  286. # oy.append(i)
  287. elif park == '14': # TODO Searching failed
  288. for i in range(sy - 500, sy + 1500, 100):
  289. ox.append(sx + 500)
  290. oy.append(i)
  291. for i in range(sy - 5500, sy - 500, 100):
  292. ox.append(sx - 3200)
  293. oy.append(i)
  294. for i in range(sx - 1500, sx, 100):
  295. ox.append(i)
  296. oy.append(sy + 750)
  297. for i in range(sx - 1500, sx + 500, 100):
  298. ox.append(i)
  299. oy.append(sy - 500)
  300. elif park == '15':
  301. for i in range(sy - 500, sy + 1500, 100):
  302. ox.append(sx + 500)
  303. oy.append(i)
  304. for i in range(sy - 5500, sy - 500, 100):
  305. ox.append(sx - 3200)
  306. oy.append(i)
  307. for i in range(sx - 1500, sx, 100):
  308. ox.append(i)
  309. oy.append(sy + 750)
  310. for i in range(sx - 1500, sx + 500, 100):
  311. ox.append(i)
  312. oy.append(sy - 500)
  313. elif park == '16':
  314. for i in range(sy - 500, sy + 1500, 100):
  315. ox.append(sx + 500)
  316. oy.append(i)
  317. for i in range(sy - 5500, sy - 500, 100):
  318. ox.append(sx - 3200)
  319. oy.append(i)
  320. for i in range(sx - 1500, sx, 100):
  321. ox.append(i)
  322. oy.append(sy + 750)
  323. for i in range(sx - 1500, sx + 500, 100):
  324. ox.append(i)
  325. oy.append(sy - 500)
  326. elif park == '17':
  327. for i in range(sy - 500, sy + 1500, 100):
  328. ox.append(sx + 500)
  329. oy.append(i)
  330. for i in range(sy - 5500, sy - 500, 100):
  331. ox.append(sx - 3200)
  332. oy.append(i)
  333. for i in range(sx - 1500, sx, 100):
  334. ox.append(i)
  335. oy.append(sy + 750)
  336. for i in range(sx - 1500, sx + 500, 100):
  337. ox.append(i)
  338. oy.append(sy - 500)
  339. elif park == '18':
  340. for i in range(sy - 500, sy + 1500, 100):
  341. ox.append(sx + 500)
  342. oy.append(i)
  343. for i in range(sy - 5500, sy - 500, 100):
  344. ox.append(sx - 3200)
  345. oy.append(i)
  346. for i in range(sx - 1500, sx, 100):
  347. ox.append(i)
  348. oy.append(sy + 750)
  349. for i in range(sx - 1500, sx + 500, 100):
  350. ox.append(i)
  351. oy.append(sy - 500)
  352. elif park == '19':
  353. for i in range(sy - 500, sy + 1500, 100):
  354. ox.append(sx + 500)
  355. oy.append(i)
  356. for i in range(sy - 5500, sy - 500, 100):
  357. ox.append(sx - 3200)
  358. oy.append(i)
  359. for i in range(sx - 1500, sx, 100):
  360. ox.append(i)
  361. oy.append(sy + 750)
  362. for i in range(sx - 1500, sx + 500, 100):
  363. ox.append(i)
  364. oy.append(sy - 500)
  365. elif park == '20':
  366. for i in range(sy - 500, sy + 1500, 100):
  367. ox.append(sx + 500)
  368. oy.append(i)
  369. for i in range(sy - 5500, sy - 500, 100):
  370. ox.append(sx - 3200)
  371. oy.append(i)
  372. for i in range(sx - 1500, sx, 100):
  373. ox.append(i)
  374. oy.append(sy + 750)
  375. for i in range(sx - 1500, sx + 500, 100):
  376. ox.append(i)
  377. oy.append(sy - 500)
  378. elif park == '21': # TODO bad
  379. for i in range(sy - 500, sy + 1500, 100):
  380. ox.append(sx + 500)
  381. oy.append(i)
  382. for i in range(sy - 5500, sy - 500, 100):
  383. ox.append(sx - 3200)
  384. oy.append(i)
  385. for i in range(sx - 1500, sx, 100):
  386. ox.append(i)
  387. oy.append(sy + 700)
  388. for i in range(sx - 1500, sx + 500, 100):
  389. ox.append(i)
  390. oy.append(sy - 500)
  391. elif park == '22':# TODO bad
  392. for i in range(sy - 500, sy + 1500, 100):
  393. ox.append(sx + 500)
  394. oy.append(i)
  395. for i in range(sy - 5500, sy - 500, 100):
  396. ox.append(sx - 3200)
  397. oy.append(i)
  398. for i in range(sx - 1500, sx, 100):
  399. ox.append(i)
  400. oy.append(sy + 750)
  401. for i in range(sx - 1500, sx + 500, 100):
  402. ox.append(i)
  403. oy.append(sy - 500)
  404. elif park == '23':# TODO bad
  405. for i in range(sy - 500, sy + 1500, 100):
  406. ox.append(sx + 500)
  407. oy.append(i)
  408. for i in range(sy - 5500, sy - 500, 100):
  409. ox.append(sx - 3200)
  410. oy.append(i)
  411. for i in range(sx - 1500, sx, 100):
  412. ox.append(i)
  413. oy.append(sy + 750)
  414. for i in range(sx - 1500, sx + 500, 100):
  415. ox.append(i)
  416. oy.append(sy - 500)
  417. elif park == '24':# TODO bad
  418. for i in range(sy - 500, sy + 1500, 100):
  419. ox.append(sx + 500)
  420. oy.append(i)
  421. for i in range(sy - 5500, sy - 500, 100):
  422. ox.append(sx - 3200)
  423. oy.append(i)
  424. for i in range(sx - 1500, sx, 100):
  425. ox.append(i)
  426. oy.append(sy + 750)
  427. for i in range(sx - 1500, sx + 500, 100):
  428. ox.append(i)
  429. oy.append(sy - 500)
  430. elif park == '25':
  431. for i in range(sy - 500, sy + 1500, 100):
  432. ox.append(sx + 500)
  433. oy.append(i)
  434. for i in range(sy - 5500, sy - 500, 100):
  435. ox.append(sx - 3200)
  436. oy.append(i)
  437. for i in range(sx - 1500, sx, 100):
  438. ox.append(i)
  439. oy.append(sy + 750)
  440. for i in range(sx - 1500, sx + 500, 100):
  441. ox.append(i)
  442. oy.append(sy - 500)
  443. elif park == '26':
  444. for i in range(sy - 500, sy + 1500, 100):
  445. ox.append(sx + 500)
  446. oy.append(i)
  447. for i in range(gy + 500, sy - 1500, 100):
  448. ox.append(sx)
  449. oy.append(i)
  450. for i in range(sx - 2000, sx, 100):
  451. ox.append(i)
  452. oy.append(sy + 600)
  453. elif park == '27': # TODO list assignment index out of range
  454. for i in range(sy - 500, sy + 1500, 100):
  455. ox.append(sx + 500)
  456. oy.append(i)
  457. for i in range(gy + 500, sy - 1500, 100):
  458. ox.append(sx)
  459. oy.append(i)
  460. for i in range(sx - 2000, sx, 100):
  461. ox.append(i)
  462. oy.append(sy + 600)
  463. elif park == '28': # TODO list assignment index out of range
  464. for i in range(sy - 500, sy + 1500, 100):
  465. ox.append(sx + 500)
  466. oy.append(i)
  467. for i in range(gy + 500, sy - 1500, 100):
  468. ox.append(sx)
  469. oy.append(i)
  470. for i in range(sx - 2000, sx, 100):
  471. ox.append(i)
  472. oy.append(sy + 600)
  473. elif park == '29': # TODO list assignment index out of range
  474. for i in range(sy - 500, sy + 1500, 100):
  475. ox.append(sx + 500)
  476. oy.append(i)
  477. for i in range(gy + 500, sy - 1500, 100):
  478. ox.append(sx)
  479. oy.append(i)
  480. for i in range(sx - 2000, sx, 100):
  481. ox.append(i)
  482. oy.append(sy + 600)
  483. elif park == '30': # TODO bad
  484. for i in range(sy - 500, sy + 1500, 100):
  485. ox.append(sx + 500)
  486. oy.append(i)
  487. for i in range(sx - 3500, sx, 100):
  488. ox.append(i)
  489. oy.append(sy + 600)
  490. for i in range(sx - 1500, sx + 500, 100):
  491. ox.append(i)
  492. oy.append(sy - 500)
  493. elif park == '31': # TODO bad
  494. for i in range(sy - 500, sy + 1500, 100):
  495. ox.append(sx + 500)
  496. oy.append(i)
  497. for i in range(sx - 3500, sx, 100):
  498. ox.append(i)
  499. oy.append(sy + 600)
  500. for i in range(sx - 1500, sx + 500, 100):
  501. ox.append(i)
  502. oy.append(sy - 500)
  503. elif park == '32': # TODO bad
  504. for i in range(sy - 500, sy + 1500, 100):
  505. ox.append(sx + 500)
  506. oy.append(i)
  507. for i in range(sx - 3500, sx, 100):
  508. ox.append(i)
  509. oy.append(sy + 600)
  510. for i in range(sx - 1500, sx + 500, 100):
  511. ox.append(i)
  512. oy.append(sy - 500)
  513. elif park == '33': # TODO bad
  514. for i in range(sy - 500, sy + 1500, 100):
  515. ox.append(sx + 500)
  516. oy.append(i)
  517. for i in range(sx - 3500, sx, 100):
  518. ox.append(i)
  519. oy.append(sy + 600)
  520. for i in range(sx - 1500, sx + 500, 100):
  521. ox.append(i)
  522. oy.append(sy - 500)
  523. elif park == '34': # TODO bad
  524. for i in range(sy - 500, sy + 1500, 100):
  525. ox.append(sx + 500)
  526. oy.append(i)
  527. for i in range(sx - 3500, sx, 100):
  528. ox.append(i)
  529. oy.append(sy + 600)
  530. for i in range(sx - 1500, sx + 500, 100):
  531. ox.append(i)
  532. oy.append(sy - 500)
  533. elif park == '35': # TODO bad
  534. for i in range(sy - 500, sy + 1500, 100):
  535. ox.append(sx + 500)
  536. oy.append(i)
  537. for i in range(sx - 3500, sx, 100):
  538. ox.append(i)
  539. oy.append(sy + 600)
  540. for i in range(sx - 1500, sx + 500, 100):
  541. ox.append(i)
  542. oy.append(sy - 500)
  543. for i in range(sy - 5500, sy - 1500, 100):
  544. ox.append(sx - 4300)
  545. oy.append(i)
  546. elif park == '36': # TODO bad
  547. for i in range(sy - 500, sy + 1500, 100):
  548. ox.append(sx + 500)
  549. oy.append(i)
  550. for i in range(sx - 4500, sx, 100):
  551. ox.append(i)
  552. oy.append(sy + 700)
  553. for i in range(sx - 1500, sx + 500, 100):
  554. ox.append(i)
  555. oy.append(sy - 500)
  556. elif park == '37': # TODO bad
  557. for i in range(sy - 500, sy + 1500, 100):
  558. ox.append(sx + 500)
  559. oy.append(i)
  560. for i in range(sx - 3500, sx, 100):
  561. ox.append(i)
  562. oy.append(sy + 600)
  563. for i in range(sx - 1500, sx + 500, 100):
  564. ox.append(i)
  565. oy.append(sy - 500)
  566. elif park == '38': # TODO bad
  567. for i in range(sy - 500, sy + 1500, 100):
  568. ox.append(sx + 500)
  569. oy.append(i)
  570. for i in range(sx - 3500, sx, 100):
  571. ox.append(i)
  572. oy.append(sy + 600)
  573. for i in range(sx - 1500, sx + 500, 100):
  574. ox.append(i)
  575. oy.append(sy - 500)
  576. elif park == '39':
  577. for i in range(sy - 500, sy + 500, 1):
  578. ox.append(sx - 1500)
  579. oy.append(i)
  580. for i in range(sx - 1500, sx, 1):
  581. ox.append(i)
  582. oy.append(sy + 300)
  583. for i in range(sy - 3000, sy - 200, 1):
  584. ox.append(sx + 100)
  585. oy.append(i)
  586. elif park == '40':
  587. for i in range(sy - 500, sy + 500, 1):
  588. ox.append(sx - 1500)
  589. oy.append(i)
  590. for i in range(sx - 1500, sx, 1):
  591. ox.append(i)
  592. oy.append(sy + 300)
  593. for i in range(sy - 3000, sy - 200, 1):
  594. ox.append(sx + 100)
  595. oy.append(i)
  596. elif park == '41':
  597. for i in range(sy - 500, sy + 500, 1):
  598. ox.append(sx - 1500)
  599. oy.append(i)
  600. for i in range(sx - 1500, sx, 1):
  601. ox.append(i)
  602. oy.append(sy + 300)
  603. for i in range(sy - 3000, sy - 200, 1):
  604. ox.append(sx + 100)
  605. oy.append(i)
  606. elif park == '42':
  607. for i in range(sy - 500, sy + 500, 1):
  608. ox.append(sx - 1500)
  609. oy.append(i)
  610. for i in range(sx - 1500, sx, 1):
  611. ox.append(i)
  612. oy.append(sy + 300)
  613. for i in range(sy - 3000, sy - 200, 1):
  614. ox.append(sx + 100)
  615. oy.append(i)
  616. elif park == '43':
  617. for i in range(sy - 500, sy + 500, 1):
  618. ox.append(sx - 1500)
  619. oy.append(i)
  620. for i in range(sx - 1500, sx, 1):
  621. ox.append(i)
  622. oy.append(sy + 300)
  623. for i in range(sy - 3000, sy - 200, 1):
  624. ox.append(sx + 100)
  625. oy.append(i)
  626. elif park == '44':
  627. for i in range(sy - 500, sy + 500, 1):
  628. ox.append(sx - 1500)
  629. oy.append(i)
  630. for i in range(sx - 1500, sx, 1):
  631. ox.append(i)
  632. oy.append(sy + 300)
  633. for i in range(sy - 2500, sy - 500, 1):
  634. ox.append(sx + 100)
  635. oy.append(i)
  636. elif park == '45':
  637. for i in range(sy - 500, sy + 500, 1):
  638. ox.append(sx - 1500)
  639. oy.append(i)
  640. for i in range(sx - 1500, sx, 1):
  641. ox.append(i)
  642. oy.append(sy + 300)
  643. for i in range(sy - 2000, sy - 500, 1):
  644. ox.append(sx + 100)
  645. oy.append(i)
  646. elif park == '46':
  647. for i in range(sy - 500, sy + 500, 1):
  648. ox.append(sx - 1500)
  649. oy.append(i)
  650. for i in range(sx - 1500, sx, 1):
  651. ox.append(i)
  652. oy.append(sy + 300)
  653. # for i in range(sy - 1500, sy + 1500, 1):
  654. # ox.append(sx + 100)
  655. # oy.append(i)
  656. elif park == '47':
  657. for i in range(sy - 500, sy + 1500, 1):
  658. ox.append(sx + 500)
  659. oy.append(i)
  660. for i in range(sx - 1500, sx, 1):
  661. ox.append(i)
  662. oy.append(sy + 300)
  663. for i in range(sx - 1500, sx, 1):
  664. ox.append(i)
  665. oy.append(sy - 1000)
  666. return ox,oy
  667. def main():
  668. # 输入input文件夹下场景文件
  669. map_path = './input/B01.json'
  670. # mdp.map_display(map_path) # 仅绘制地图
  671. ox, oy,sp,gp = mp.make_map(map_path)
  672. sx, sy, syaw0 = sp['x'], sp['y'], sp['yaw']
  673. C = make_car.C
  674. # 获取目标停车位
  675. park = '17'
  676. gx, gy, gyaw0 = gp[park]['x_end'], gp[park]['y_end'], gp[park]['yaw']
  677. # print(type(ox),type(oy))
  678. # if map_path.split('/')[-1] == 'B01.json':
  679. # ox,oy = changeOxyB01(park,ox,oy,sx,sy,gx,gy)
  680. # elif map_path.split('/')[-1] == 'B02.json':
  681. # ox,oy = changeOxyB02(park,ox,oy,sx,sy,gx,gy)
  682. # print(1)
  683. x = np.linspace(5800, 1500, 500)
  684. y = np.linspace(2800, 2800, 500)
  685. for i in range(len(x)):
  686. ox.append(x[i])
  687. oy.append(y[i])
  688. x = np.linspace(6000, 2000, 500)
  689. y = np.linspace(2000, 500, 500)
  690. for i in range(len(x)):
  691. ox.append(x[i])
  692. oy.append(y[i])
  693. x = np.linspace(8300, 8300, 500)
  694. y = np.linspace(2800, 500, 500)
  695. for i in range(len(x)):
  696. ox.append(x[i])
  697. oy.append(y[i])
  698. # x = np.linspace(4000, 1400, 500)
  699. # y = np.linspace(2900, 2900, 500)
  700. # for i in range(len(x)):
  701. # ox.append(x[i])
  702. # oy.append(y[i])
  703. # x = np.linspace(4000, 4000, 500)
  704. # y = np.linspace(1000, 2900, 500)
  705. # for i in range(len(x)):
  706. # ox.append(x[i])
  707. # oy.append(y[i])
  708. # x = np.linspace(4200, 5200, 500)
  709. # y = np.linspace(4300, 4300, 500)
  710. # for i in range(len(x)):
  711. # ox.append(x[i])
  712. # oy.append(y[i])
  713. C.XY_RESO = C.XY_RESO - 900
  714. plt.plot(ox, oy, ",k")
  715. plt.show()
  716. start = time.time()
  717. # 规划算法
  718. path = planner.hybrid_astar_planning(sx, sy, syaw0, gx, gy, gyaw0, ox, oy, C.XY_RESO, C.YAW_RESO)
  719. end = time.time()
  720. print(f"Time: {end-start}s")
  721. # 算法测试结果保存
  722. if not path:
  723. print("Searching failed!")
  724. return
  725. output_dit={
  726. "output_x":path.x,
  727. "output_y": path.y,
  728. "output_yaw": path.yaw,
  729. "output_dir": path.direction,
  730. }
  731. with open(f"./output/result_{map_path.split('/')[-1].split('.json')[0]}_{park}.json", "w") as file:
  732. json.dump(output_dit, file)
  733. # 仿真回放
  734. result_path = f"./output/result_{map_path.split('/')[-1].split('.json')[0]}_{park}.json"
  735. replay.replay(map_path, result_path)
  736. if __name__ == '__main__':
  737. main()