• 机器人路径规划:基于A*算法的机器人路径规划(提供Python代码)


    一、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代码

    见下方联系方式

  • 相关阅读:
    Java的Class类讲解之Class对象的产生
    STL 应用 —— set / multiset
    STM32开发从零开始(1)---手把手教你点亮一个LED灯
    100天精通Python——第39天:操作MySQL和SqlServer
    10个必备的 async/await 工具函数
    Mybatis的二级缓存 (Redis方式)
    合并两个非降数组
    3分钟轻松实现网关网口远程监控安川PLC
    GENERALIZATION THROUGH MEMORIZATION: NEAREST NEIGHBOR LANGUAGE MODELS
    攻防世界Running
  • 原文地址:https://blog.csdn.net/weixin_46204734/article/details/136790525