# uav-plan-planing-python-master **Repository Path**: duzicong/uav-plan-planing-python-master ## Basic Information - **Project Name**: uav-plan-planing-python-master - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-11-14 - **Last Updated**: 2025-11-14 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # UAV 路径规划服务 基于网格码(GeoSOT)的无人机三维路径规划系统,采用A*算法进行最优路径计算。 ## 项目简介 本项目是一个高性能的无人机路径规划服务,通过获取环境的网格码信息,构建三维权重图,使用A*算法进行智能路径规划。支持2D和3D路径规划,并提供多种导航模式以适应不同的飞行需求。 ### 核心特性 - 🛰️ **基于网格码技术**:使用GeoSOT网格编码系统,支持多层级网格精度 - 🎯 **A*路径规划算法**:实现高效的最短路径和最安全路径计算 - 🌐 **多维度路径规划**:支持2D平面规划和3D立体空间规划 - 🚀 **多种导航模式**:水域优先、绿地优先、道路上方优先等智能导航 - 📊 **权重图构建**:基于地形、建筑、水域等要素构建智能权重系统 - 🔧 **高性能C++引擎**:核心算法采用C++实现,提供跨平台支持 ## 系统架构 ``` uav-path-planing-python/ ├── config.json # 系统配置文件 ├── main.py # 主程序入口 ├── setup.py # 打包配置 ├── uavplan/ # 核心模块 │ ├── cpp/ # C++算法引擎 │ │ ├── plan_w_amd64.pyd # Windows AMD64版本 │ │ ├── plan_l_amd64.so # Linux AMD64版本 │ │ └── plan_l_aarch64.so# Linux ARM64版本 │ ├── router/ # API路由模块 │ │ ├── router_2d.py # 2D路径规划接口 │ │ ├── router_3d.py # 3D路径规划接口 │ │ ├── router_config.py # 配置管理接口 │ │ └── router_log.py # 日志管理接口 │ ├── server/ # 核心算法实现 │ │ ├── plan_2d.py # 2D路径规划逻辑 │ │ ├── plan_3d.py # 3D路径规划逻辑 │ │ └── plan_3d_multi.py # 多路径规划逻辑 │ └── utils/ # 工具模块 │ ├── barrier_env.py # 障碍物环境构建 │ ├── barrier_graph_arr.py # 权重图数组生成 │ ├── grid_engine.py # 网格引擎接口 │ ├── path.py # 路径优化算法 │ └── visual.py # 可视化工具 ├── test/ # 测试模块 └── result/ # 输出结果(shp格式) ``` ## 安装与配置 ### 环境要求 - Python 3.8+ - NumPy - SciPy - Robyn (高性能异步Web框架) - PyProj (坐标转换) - Shapely (几何计算) ### 安装依赖 ```bash pip install numpy scipy robyn pyproj shapely ``` ### 配置文件 编辑 `config.json` 配置网格引擎和系统参数: ```json { "gridengine": { "ip": "10.5.52.56", # 网格引擎服务器IP "port": 10006, # 网格引擎端口 "index_name": "nanshan", # 索引名称 "big_table_name": "障碍物" # 大表名称 }, "arr_2d_size": [1000, 1000], # 2D数组大小 "arr_3d_size": [50, 200, 200], # 3D数组大小 [高度层数, 行数, 列数] "barriers": { # 障碍物类型配置 "DEM": "DEM", "建筑": "建筑", "水域": "水面", "绿地": "绿地", "禁飞区": "禁飞区", "道路": "道路" } } ``` ## 使用方法 ### 启动服务 ```bash python main.py ``` 服务将在 `http://0.0.0.0:6667` 启动。 ### API接口 #### 1. 版本信息 ``` GET /path-planning/version ``` #### 2. 2D路径规划 ``` POST /path-planning/2d/plan ``` **参数:** - `start`: 起始点坐标 "经度,纬度" - `goal`: 终点坐标 "经度,纬度" - `height`: 飞行高度(米) - `epsg`: 输入坐标系(默认4326) - `target_epsg`: 输出坐标系(默认同输入) - `path_mode`: 路径模式(0=最短路径,1=最安全路径) - `node`: 网格节点(可选) - `big_table_names`: 大表名称(可选) #### 3. 3D路径规划 ``` POST /path-planning/3d/plan ``` **参数:** - `start`: 起始点坐标 "经度,纬度,高度" - `goal`: 终点坐标 "经度,纬度,高度" - `epsg`: 坐标系 - `path_mode`: 路径模式(0=最短,1=最安全,2=直线优先) - `nav_mode`: 导航模式(0=默认,1=水域优先,2=绿地优先,3=道路优先) #### 4. 多路径规划 ``` POST /path-planning/3d/multi-plan ``` 支持多个目标点的连续路径规划。 #### 5. 航点可达性检查 ``` POST /path-planning/3d/check-waypoints ``` 检查指定航点是否可通行。 ## 核心算法 ### 1. 网格码系统 - 基于GeoSOT全球网格系统 - 支持多层级网格精度(1m-128km) - 自适应选择最优网格层级 ### 2. 权重图构建 - **基础权重**:基于障碍物距离的欧几里得距离变换 - **导航权重**:根据用户选择的导航模式添加额外权重 - **安全权重**:建筑物周边设置低权重安全区域 ### 3. A*路径规划 - **最短路径**:基于欧几里得距离的最短路径 - **最安全路径**:综合考虑安全性的路径规划 - **直线优先**:在保证安全的前提下尽量保持直线飞行 ### 4. 路径优化 - **路径简化**:去除冗余路径点 - **路径平滑**:使用Bresenham算法优化路径 - **障碍物规避**:实时检测并规避障碍物 ## 导航模式 | 模式 | 说明 | 适用场景 | |------|------|----------| | 0 | 默认模式 | 通用路径规划 | | 1 | 水域优先 | 环保要求,减少对陆地干扰 | | 2 | 绿地优先 | 生态保护,避开敏感区域 | | 3 | 道路上方 | 城市环境,沿道路飞行 | ## 性能特点 - **高并发支持**:基于Robyn异步框架,支持高并发请求 - **跨平台支持**:提供Windows、Linux AMD64/ARM64版本 - **内存优化**:智能内存管理,避免内存泄漏 - **结果导出**:支持导出Shapefile格式的路径结果 ## 输出格式 路径规划结果包含: - **坐标序列**:经纬度坐标数组 - **高度信息**:三维路径包含高度数据 - **Shapefile文件**:可在GIS软件中直接使用 ## 开发与测试 ### 运行测试 ```bash python -m pytest test/ ``` ### 生成可执行文件 ```bash python setup.py build ``` ## 版本信息 当前版本:**3.1.7** ### 更新日志 - ✅ 更新为基于网格码系统 - ✅ 修复高度层级选择异常bug - ✅ 添加多种导航方式支持 - ✅ 新增查询飞行点可通行性功能 - ✅ 新增多路径送货接口 - ✅ 修复内存泄漏问题 - ✅ 修复API指定参数无法生效的问题 ## 许可证 本项目采用专有许可证,仅供内部使用。 ## 联系方式 如有问题或建议,请联系开发团队。 --- *本项目基于网格码技术,为无人机提供高精度、高性能的路径规划服务。*