# 基于Python的Astar路径规划仿真 **Repository Path**: luhuigao/python-path-planning ## Basic Information - **Project Name**: 基于Python的Astar路径规划仿真 - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 1 - **Created**: 2025-07-21 - **Last Updated**: 2025-12-20 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # A*路径规划仿真项目 ## 项目概述 这是一个基于Python的A*路径规划仿真项目,实现了A*和Hybrid A*算法,支持车辆运动约束,并包含动态障碍物避障逻辑和DWA局部规划器。 ## 项目结构 - `main.py`: 主程序入口 - `path_planning/`: 路径规划算法实现 - `a_star.py`: A*算法实现 - `hybrid_a_star.py`: Hybrid A*算法实现 - `dwa_planner.py`: DWA局部规划器实现 - `visualization/`: 可视化模块 - `plotter.py`: Matplotlib可视化 - `simulator.py`: Pygame仿真界面 - `utils/`: 工具函数 - `grid_map.py`: 栅格地图生成 - `obstacle.py`: 障碍物管理 - `tests/`: 单元测试 - `requirements.txt`: 项目依赖 ## 项目创建流程 1. 创建项目目录 ```bash mkdir -p 基于Python的A*路径规划仿真/{path_planning,visualization,utils,tests} cd 基于Python的A*路径规划仿真 ``` 2. 创建依赖文件 ```bash echo "matplotlib==3.7.1 pygame==2.3.0 numpy==1.24.3 pytest==7.3.1" > requirements.txt ``` 3. 安装依赖 ```bash pip install -r requirements.txt ``` 4. 创建主要代码文件 按照项目结构创建相应的Python文件 ## 使用方法 1. 运行主程序 ```bash python main.py ``` 2. 运行测试 ```bash pytest tests/ ``` 具体见下文测试说明 ## 算法接口说明 ### A*算法接口 ```python class AStarPlanner: def __init__(self, grid_map, resolution=1.0, robot_radius=1.0): # 初始化A*规划器 # grid_map: 二维数组表示的栅格地图 # resolution: 栅格分辨率(m) # robot_radius: 机器人半径(m) def planning(self, start, goal): # 路径规划主函数 # start: [x, y] 起点世界坐标 # goal: [x, y] 终点世界坐标 # return: 路径点列表 [[x,y], ...] 或 None ``` ### Hybrid A*算法接口 ```python class HybridAStarPlanner: def __init__(self, grid_map, resolution=1.0, robot_radius=1.0, min_turning_radius=6.0): # 初始化Hybrid A*规划器 # min_turning_radius: 最小转弯半径(m) def planning(self, start, goal): # 路径规划主函数 # start: [x, y, theta] 起点世界坐标和角度 # goal: [x, y] 终点世界坐标 # return: 路径点列表 [[x,y,theta,curvature], ...] 或 None ``` ### DWA局部规划器接口 ```python class DWAPlanner: def __init__(self, max_speed=1.5, max_accel=0.5, max_yawrate=40.0*math.pi/180.0): # 初始化DWA规划器 # max_speed: 最大速度(m/s) # max_accel: 最大加速度(m/s²) # max_yawrate: 最大角速度(rad/s) def plan(self, current_state, goal, grid_map, dynamic_obstacles=[]): # 局部路径规划 # current_state: [x, y, yaw, v, yawrate] 当前状态 # goal: [x, y] 目标点 # dynamic_obstacles: 动态障碍物列表 # return: (最佳速度, 最佳角速度), 轨迹点列表 ``` ## 扩展方法 1. 添加新算法: 在path_planning目录下创建新的算法文件,实现Planning接口 2. 自定义代价函数: 继承现有规划器类,重写cost_function方法 3. 新地图类型: 在utils/grid_map.py中扩展GridMap类 ## 测试说明 项目使用pytest进行单元测试,测试文件位于tests目录下。 ### 运行测试 ```bash pytest tests/ -v # 详细模式运行所有测试 pytest tests/test_a_star.py -v # 单独测试A*算法 ``` ### 测试覆盖范围 - 算法正确性测试: 验证路径是否存在、是否碰撞 - 性能测试: 验证规划耗时是否<50ms - 边界条件测试: 起点/终点不可达、地图全障碍等场景