当前位置:   article > 正文

机器人路径规划:基于A*算法的机器人路径规划(提供Python代码)_a formal basis for the heuristic determination of

a formal basis for the heuristic determination of minimum cost paths in grap

一、A*算法简介

A*算法最早可追溯到1968年,在IEEE Transactions on Systems Science and Cybernetics中的论文A Formal Basis for the Heuristic Determination of Minimum Cost Paths中首次提出。正如本文的摘要所说,A*算法是把启发式方法(heuristic approaches)如BFS(完全使用贪心策略),和常规方法如Dijsktra算法结合在一起的算法。有点不同的是,类似BFS的启发式方法经常给出一个近似解而不是保证最佳解。然而,尽管A*算法基于无法保证最佳解的启发式方法,A*算法却能保证找到一条最短路径

参考文献:

[1]张海涛,程荫杭.基于A*算法的全局路径搜索[J].微计算机信息, 2007(17):3.DOI:10.3969/j.issn.1008-0570.2007.17.095.

[2]张红梅,李明龙,杨乐.基于改进A*算法的移动机器人安全路径规划[J].计算机仿真, 2018, 35(4): 319-324.

二、部分代码

  1. import math
  2. import matplotlib.pyplot as plt
  3. show_animation = True
  4. class AStarPlanner:
  5. def __init__(self, ox, oy, resolution, rr):
  6. """
  7. Initialize grid map for a star planning
  8. ox: x position list of Obstacles [m]
  9. oy: y position list of Obstacles [m]
  10. resolution: grid resolution [m]
  11. rr: robot radius[m]
  12. """
  13. self.resolution = resolution
  14. self.rr = rr
  15. self.min_x, self.min_y = 0, 0
  16. self.max_x, self.max_y = 0, 0
  17. self.obstacle_map = None
  18. self.x_width, self.y_width = 0, 0
  19. self.motion = self.get_motion_model()
  20. self.calc_obstacle_map(ox, oy)
  21. class Node:
  22. def __init__(self, x, y, cost, parent_index):
  23. self.x = x # index of grid
  24. self.y = y # index of grid
  25. self.cost = cost
  26. self.parent_index = parent_index
  27. def __str__(self):
  28. return str(self.x) + "," + str(self.y) + "," + str(
  29. self.cost) + "," + str(self.parent_index)

三、部分结果

四、完整Python代码

见下方联系方式

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/weixin_40725706/article/detail/526118
推荐阅读
相关标签
  

闽ICP备14008679号