免费项目
3D城市环境无人机运动规划 Python 实现|A*搜索+路径修剪+FCND仿真|免费项目
基于 A* 算法的 3D 城市环境无人机运动规划系统。支持 2.5D 障碍物地图加载、对角线移动、共线性路径修剪。包含完整代码、详细文档和 FCND 仿真集成。
项目说明
本项目实现了在城市环境中规划无人机飞行路径的完整系统,使用 A* 搜索算法和路径优化技术。
**主要功能**
- 2.5D 障碍物地图加载(从 CSV 文件)
- 网格或图表示的环境离散化
- A* 搜索算法路径规划
- 共线性测试路径修剪
- 全局坐标到局部坐标转换
- FCND 模拟器集成
**核心算法**
*A* 搜索* - 结合 Dijkstra 算法和广度优先搜索优势,使用启发式函数引导搜索,支持对角线移动(成本 √2),保证找到最优路径
*路径修剪* - 共线性测试移除冗余航点,减少中间停靠点,优化飞行平滑度,降低控制复杂度
**运行环境**
- Python 3.x
- 依赖:numpy, matplotlib, msgpack, udacidrone
- 可选:FCND 模拟器
- 系统:Windows, Linux, macOS
**核心文件**
- motion_planning.py - 运动规划主程序(状态机和回调)
- planning_utils.py - 规划工具函数(A* 算法、路径修剪)
- MotionPlanning.pdf - 项目文档(5.5MB)
- writeup_motion_planning.md - 实现说明
- LICENSE - MIT 许可证
**工作流程**
1. 读取 colliders.csv 障碍物地图
2. 设置全局起始位置(纬度/经度)
3. 将当前位置转换为局部坐标(NED)
4. 从障碍物地图生成网格
5. 运行 A* 算法计算路径
6. 使用路径修剪优化航点
7. 转换为航点列表并发送到模拟器
**适用场景**
- 自主无人机导航研究
- 城市环境路径规划
- 飞行器运动规划学习
- FCND 课程项目参考
- 路径优化算法研究
**技术特点**
- 完整的状态机实现(手动、武装、起飞、规划、航点、降落)
- 回调函数处理位置和速度更新
- 对角线移动支持(Manhattan 距离)
- 路径修剪减少航点数量
- 可配置的安全距离和目标高度
**许可证**
MIT License - 允许自由使用、修改和分发,需保留原作者版权声明。