HPP4Unstructured (Hierarchical Path Planning for Unstructured Roads) 是论文《基于多算法融合分层优化的非结构化道路无人车路径规划研究》的代码实现。本项目旨在研究和实现一个适用于非结构化道路环境的、采用多算法融合与分层优化策略的无人车路径规划框架。
- 分层优化框架: 采用分层的设计思想,将路径规划任务分解为全局规划和局部规划等层次。
- 多算法融合: 集成了多种路径规划算法,包括A*、Dijkstra、D*、RRT等用于全局规划,APF(人工势场法)、DWA(动态窗口法)等用于局部规划与避障。
- 非结构化道路聚焦: 针对非结构化道路(缺乏清晰车道线、存在不规则障碍物、复杂地形)环境进行设计与优化。
- 模块化设计: 代码结构清晰,各模块功能明确,便于理解、测试与扩展。
- MATLAB实现: 项目主要采用MATLAB进行开发与仿真。
HPP4Unstructured/
├── code/ # 主要代码目录
│ ├── controller/ # 运动控制层(待完善)
│ ├── environment/ # 环境生成与建模
│ │ ├── generate_dynamic_obstacles.m # 生成动态障碍物
│ │ ├── generate_layered_map.m # 生成分层地图
│ │ ├── generate_random_map.m # 生成随机地图
│ │ └── generate_valid_environment.m # 生成有效环境
│ ├── global_planner/ # 全局路径规划层
│ │ ├── astar.m # A*算法
│ │ ├── dijkstra.m # Dijkstra算法
│ │ ├── dstar.m # D*算法
│ │ └── rrt.m # RRT算法
│ ├── local_planner/ # 局部路径规划层
│ │ ├── apf.m # 人工势场法(APF)
│ │ └── dwa.m # 动态窗口法(DWA)
│ ├── metrics/ # 路径评估指标计算 (例如路径长度、转向点等)
│ ├── utils/ # 通用工具函数
│ │ ├── generate_start_goal.m # 生成起点和目标点
│ │ ├── get_planner.m # 获取规划器
│ │ └── stitch_paths.m # 路径拼接
│ ├── visualization/ # 可视化相关函数
│ │ ├── execute_visualization.m # 执行可视化
│ │ ├── visualize_combined.m # 组合可视化
│ │ ├── visualize_obstacle_distances.m # 障碍物距离可视化
│ │ └── visualize_turning_points.m # 转向点可视化
│ ├── config.m # 参数配置文件
│ ├── example.mlx # MATLAB Live Script示例
│ └── main.m # 主运行脚本
├── data/ # 数据目录 (用于存放地图、日志等数据)
├── docs/ # 项目文档
├── results/ # 结果输出目录 (存放仿真结果、图片等)
├── tests/ # 单元测试 (待创建和完善)
├── HPP4Unstructured.prj # MATLAB Project文件
└── README.md # 项目说明文件
-
环境要求
- 需要安装 MATLAB (推荐较新版本,如 R2021a 或更高版本)。
-
获取项目
- 克隆或下载本项目代码到本地。
git clone https://github.com/KindKeeper/HPP4Unstructured.git
-
运行项目
- 打开MATLAB,并通过双击
HPP4Unstructured.prj文件打开MATLAB Project,确保所有路径已正确添加。 - 运行
main.m主脚本以启动整个仿真流程。 - 或运行
example.mlx查看示例和学习如何使用特定功能。
- 打开MATLAB,并通过双击
-
配置与参数
- 主要的算法参数、环境参数和车辆模型参数等在
code/config.m文件中进行设置和调整。修改此文件以适配不同的场景或算法组合。
- 主要的算法参数、环境参数和车辆模型参数等在
本项目目前处于持续开发与完善阶段。
- 已实现: 多种全局和局部路径规划算法的基本实现、基础的环境生成模块、初步的可视化功能。
- 待完善: 运动控制层(
controller/)尚未充实;metrics/目录下的性能评估指标有待进一步整合与应用;完整的算法融合逻辑与分层优化框架需要更深度的集成;测试体系(tests/)需要建立。 - 如何使用: 您可以通过运行
main.m来执行一个预设的完整规划流程,或参考example.mlx来交互式地了解如何使用特定的规划算法和环境。
项目运行后,结果(如图片、轨迹数据)默认会保存在 results/ 目录下。可以通过修改 config.m 中的相关配置项来指定保存路径和格式。目前的可视化函数可以绘制路径、障碍物、转向点等。
欢迎对代码进行改进或提出建议!目前主要的完善方向包括:
- 充实控制层算法。
- 增加更多评估指标。
- 优化算法融合策略。
- 编写更详细的单元测试。
- 补充项目文档。