|
|
|
|
@ -1,749 +0,0 @@
|
|
|
|
|
# "智途投送"软件开发方案
|
|
|
|
|
|
|
|
|
|
> 本文档基于《最后一公里软件构想》编写,为"智途投送"软件系统的开发实施方案。
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
## 一、项目概述
|
|
|
|
|
|
|
|
|
|
### 1.1 项目背景
|
|
|
|
|
|
|
|
|
|
"智途投送"软件系统是针对城市作战环境下"最后一公里"末端补给难题而设计的智能化物资投送系统。系统通过无人机替代有人运输,结合智能路径规划、动态避障和实时目标调整等功能,实现战场物资的安全、精准投送。
|
|
|
|
|
|
|
|
|
|
### 1.2 系统组成
|
|
|
|
|
|
|
|
|
|
本系统由三大核心子系统构成:
|
|
|
|
|
|
|
|
|
|
| 子系统 | 主要功能 | 部署位置 |
|
|
|
|
|
|--------|----------|----------|
|
|
|
|
|
| 单兵终端系统 | 需求上报、策略选择、位置同步 | 前线士兵随身携带 |
|
|
|
|
|
| 无人机软件系统 | 自主飞行、路径规划、动态避障 | 无人机机载 |
|
|
|
|
|
| 后勤保障系统 | 任务调度、资源管理、状态监控 | 后方指挥所 |
|
|
|
|
|
|
|
|
|
|
### 1.3 开发目标
|
|
|
|
|
|
|
|
|
|
- 实现前线士兵物资需求的实时上报与处理
|
|
|
|
|
- 实现无人机自主路径规划与动态避障
|
|
|
|
|
- 支持多种路径策略选择(最快、最安全、最省能耗)
|
|
|
|
|
- 支持动态目标调整与实时位置同步
|
|
|
|
|
- 构建完整的后勤调度与监控平台
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
## 二、技术选型
|
|
|
|
|
|
|
|
|
|
### 2.1 技术栈总览
|
|
|
|
|
|
|
|
|
|
| 层次 | 技术选型 | 说明 |
|
|
|
|
|
|------|----------|------|
|
|
|
|
|
| 后勤保障系统 | Python + Flask/FastAPI | 快速开发,便于算法集成 |
|
|
|
|
|
| 数据库 | SQLite / PostgreSQL | 轻量级或企业级可选 |
|
|
|
|
|
| 单兵终端APP | Flutter 或 Android (Kotlin) | 跨平台或原生开发 |
|
|
|
|
|
| 无人机控制 | Python + MAVSDK / PX4 | 开源飞控生态完善 |
|
|
|
|
|
| 静态路径规划 | Python (NetworkX, OMPL) | 图算法库,用于全局路径计算 |
|
|
|
|
|
| 视觉导航与图像分析 | Python + OpenCV | 成熟的图像处理工具链,支持枪口火光检测、障碍物识别 |
|
|
|
|
|
| 热成像分析 | Python + OpenCV + PyTorch | 红外图像处理,热异常检测,温度阈值判定 |
|
|
|
|
|
| 声源分析与定位 | Python + librosa + NumPy | 声学特征提取,枪炮声分类,麦克风阵列声源定位(GCC-PHAT) |
|
|
|
|
|
| 多模态融合 | Python + NumPy | 多源威胁信息融合,实时威胁地图生成 |
|
|
|
|
|
| 仿真环境 | Gazebo / AirSim | 无人机仿真验证,支持传感器模拟 |
|
|
|
|
|
| 地图服务 | Leaflet / Mapbox | Web地图可视化 |
|
|
|
|
|
|
|
|
|
|
### 2.2 技术选型理由
|
|
|
|
|
|
|
|
|
|
#### 2.2.1 后勤保障系统
|
|
|
|
|
|
|
|
|
|
**选择 Python + Flask/FastAPI 的理由:**
|
|
|
|
|
- Python 拥有丰富的科学计算和算法库(NumPy、SciPy、NetworkX)
|
|
|
|
|
- Flask/FastAPI 轻量级框架,便于快速构建 RESTful API
|
|
|
|
|
- 与路径规划算法、视觉算法无缝集成
|
|
|
|
|
- 团队熟悉 Python 开发
|
|
|
|
|
|
|
|
|
|
#### 2.2.2 单兵终端APP
|
|
|
|
|
|
|
|
|
|
**选择 Flutter 或 Android (Kotlin) 的理由:**
|
|
|
|
|
- Flutter:一套代码支持 Android/iOS,开发效率高
|
|
|
|
|
- Android (Kotlin):原生性能好,硬件调用方便
|
|
|
|
|
- 均支持地图SDK集成、网络通信、消息推送
|
|
|
|
|
|
|
|
|
|
#### 2.2.3 无人机软件
|
|
|
|
|
|
|
|
|
|
**选择 MAVSDK/PX4 的理由:**
|
|
|
|
|
- PX4 是成熟的开源飞控系统
|
|
|
|
|
- MAVSDK 提供Python API,便于二次开发
|
|
|
|
|
- 支持航线规划、状态监控、自主飞行
|
|
|
|
|
- 社区活跃,文档完善
|
|
|
|
|
|
|
|
|
|
#### 2.2.4 仿真环境
|
|
|
|
|
|
|
|
|
|
**选择 Gazebo/AirSim 的理由:**
|
|
|
|
|
- Gazebo:开源机器人仿真,支持PX4集成
|
|
|
|
|
- AirSim:微软开源,提供逼真的城市环境
|
|
|
|
|
- 均支持传感器模拟(摄像头、IMU、GPS)
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
## 三、开发阶段规划
|
|
|
|
|
|
|
|
|
|
采用分阶段迭代开发策略,总周期约 **12-16周**。
|
|
|
|
|
|
|
|
|
|
### 3.1 阶段一:核心算法验证(3-4周)
|
|
|
|
|
|
|
|
|
|
#### 目标
|
|
|
|
|
验证路径规划算法、多模态感知算法和避障算法的可行性,为后续系统集成奠定基础。
|
|
|
|
|
|
|
|
|
|
#### 任务分解
|
|
|
|
|
|
|
|
|
|
| 任务 | 描述 | 产出物 |
|
|
|
|
|
|------|------|--------|
|
|
|
|
|
| 搭建仿真环境 | 安装配置 AirSim 或 Gazebo,创建简化城市模型 | 可运行的仿真环境 |
|
|
|
|
|
| 静态路径规划 | 实现 A* 算法,基于城市地图、燃料约束、安全点标注等因素计算初始路径 | 静态路径规划模块 |
|
|
|
|
|
| 局部避障算法 | 实现 RRT 或 RRT* 算法,动态避开障碍物 | 避障算法模块 |
|
|
|
|
|
| 策略切换机制 | 实现三种策略(最快、最安全、最省能耗)的切换逻辑 | 策略选择模块 |
|
|
|
|
|
| 视觉识别原型 | 使用 OpenCV 实现墙体/障碍物边缘检测 | 视觉识别原型 |
|
|
|
|
|
| 热成像分析原型 | 实现红外图像热异常检测算法,包括枪管过热检测和枪口火焰热残留检测 | 热成像分析模块 |
|
|
|
|
|
| 相机图像分析原型 | 实现枪口火光检测算法(帧间差分+运动目标检测)和战场态势评估 | 相机图像分析模块 |
|
|
|
|
|
| 声源分析原型 | 实现枪炮声识别分类模型和麦克风阵列声源定位算法(GCC-PHAT) | 声源分析模块 |
|
|
|
|
|
| 多模态融合原型 | 实现三种感知结果融合逻辑,生成实时威胁地图 | 多模态融合模块 |
|
|
|
|
|
|
|
|
|
|
#### 技术要点
|
|
|
|
|
|
|
|
|
|
```python
|
|
|
|
|
# 静态路径规划算法示例架构
|
|
|
|
|
class StaticPathPlanner:
|
|
|
|
|
def __init__(self, city_map, threat_zones):
|
|
|
|
|
self.city_map = city_map
|
|
|
|
|
self.threat_zones = threat_zones
|
|
|
|
|
|
|
|
|
|
def plan(self, start, goal, strategy='safest', fuel_constraint=None,
|
|
|
|
|
safe_points=None, urgency='normal'):
|
|
|
|
|
"""
|
|
|
|
|
strategy: 'fastest' / 'safest' / 'energy_efficient'
|
|
|
|
|
fuel_constraint: 剩余电量约束
|
|
|
|
|
safe_points: 士兵标注的安全区域
|
|
|
|
|
urgency: 物资紧急程度
|
|
|
|
|
"""
|
|
|
|
|
pass
|
|
|
|
|
|
|
|
|
|
# 动态威胁检测示例架构
|
|
|
|
|
class DynamicThreatDetector:
|
|
|
|
|
def __init__(self):
|
|
|
|
|
self.thermal_analyzer = ThermalAnalyzer() # 热成像分析
|
|
|
|
|
self.camera_analyzer = CameraAnalyzer() # 相机图像分析
|
|
|
|
|
self.acoustic_analyzer = AcousticAnalyzer() # 声源分析
|
|
|
|
|
|
|
|
|
|
def detect_and_fuse(self, thermal_frame, camera_frame, audio_data):
|
|
|
|
|
"""融合三种感知结果,生成威胁地图"""
|
|
|
|
|
thermal_threats = self.thermal_analyzer.detect(thermal_frame)
|
|
|
|
|
visual_threats = self.camera_analyzer.detect(camera_frame)
|
|
|
|
|
acoustic_threats = self.acoustic_analyzer.detect(audio_data)
|
|
|
|
|
return self._fuse(thermal_threats, visual_threats, acoustic_threats)
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
#### 验收标准
|
|
|
|
|
- [ ] 仿真环境中无人机能够按规划路径飞行
|
|
|
|
|
- [ ] 能够成功避开预设的障碍物
|
|
|
|
|
- [ ] 三种策略能够正确切换并产生不同路径
|
|
|
|
|
- [ ] 热成像模块能检测到模拟的热异常点
|
|
|
|
|
- [ ] 相机模块能识别模拟的枪口火光闪烁
|
|
|
|
|
- [ ] 声源模块能区分枪炮声与环境噪声并估计声源方向
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
### 3.2 阶段二:后勤保障系统开发(3-4周)
|
|
|
|
|
|
|
|
|
|
#### 目标
|
|
|
|
|
构建后端服务、数据库和可视化监控界面,实现任务调度和资源管理。
|
|
|
|
|
|
|
|
|
|
#### 任务分解
|
|
|
|
|
|
|
|
|
|
| 任务 | 描述 | 产出物 |
|
|
|
|
|
|------|------|--------|
|
|
|
|
|
| 数据库设计 | 设计物资、无人机、任务、用户等数据表 | 数据库Schema |
|
|
|
|
|
| 后端API开发 | 实现需求上报、任务调度、状态查询等接口 | RESTful API |
|
|
|
|
|
| 任务调度模块 | 实现无人机分配、任务状态管理逻辑 | 调度服务 |
|
|
|
|
|
| 可视化监控界面 | 开发Web界面,显示地图、无人机位置、任务状态 | Web前端 |
|
|
|
|
|
| 通信服务模块 | 实现与终端APP、无人机的数据收发 | 通信服务 |
|
|
|
|
|
|
|
|
|
|
#### 数据库设计
|
|
|
|
|
|
|
|
|
|
##### E-R 图概念模型
|
|
|
|
|
|
|
|
|
|
```
|
|
|
|
|
┌─────────────┐ ┌─────────────┐ ┌─────────────┐
|
|
|
|
|
│ Soldier │ │ Task │ │ Drone │
|
|
|
|
|
│ (前线士兵) │ │ (任务) │ │ (无人机) │
|
|
|
|
|
├─────────────┤ ├─────────────┤ ├─────────────┤
|
|
|
|
|
│ soldier_id │──┐ │ task_id │ ┌──│ drone_id │
|
|
|
|
|
│ name │ │ │ type │ │ │ name │
|
|
|
|
|
│ position │ │ │ priority │ │ │ status │
|
|
|
|
|
│ unit │ │ │ strategy │ │ │ battery │
|
|
|
|
|
└─────────────┘ │ │ status │ │ │ position │
|
|
|
|
|
│ │ create_time │ │ └─────────────┘
|
|
|
|
|
│ └─────────────┘ │
|
|
|
|
|
│ │ │
|
|
|
|
|
│ ▼ │
|
|
|
|
|
│ ┌─────────────┐ │
|
|
|
|
|
│ │ Delivery │───┘
|
|
|
|
|
│ │ (配送记录) │
|
|
|
|
|
│ ├─────────────┤
|
|
|
|
|
└───▶│ delivery_id │
|
|
|
|
|
│ task_id │
|
|
|
|
|
│ drone_id │
|
|
|
|
|
│ soldier_id │
|
|
|
|
|
│ pickup_loc │
|
|
|
|
|
│ dropoff_loc │
|
|
|
|
|
│ start_time │
|
|
|
|
|
│ end_time │
|
|
|
|
|
└─────────────┘
|
|
|
|
|
│
|
|
|
|
|
▼
|
|
|
|
|
┌─────────────┐
|
|
|
|
|
│ Material │
|
|
|
|
|
│ (物资) │
|
|
|
|
|
├─────────────┤
|
|
|
|
|
│ material_id │
|
|
|
|
|
│ name │
|
|
|
|
|
│ quantity │
|
|
|
|
|
│ location │
|
|
|
|
|
└─────────────┘
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
##### 数据表定义
|
|
|
|
|
|
|
|
|
|
**士兵表 (soldiers)**
|
|
|
|
|
| 字段名 | 类型 | 说明 |
|
|
|
|
|
|--------|------|------|
|
|
|
|
|
| soldier_id | VARCHAR(32) | 主键,士兵ID |
|
|
|
|
|
| name | VARCHAR(64) | 姓名 |
|
|
|
|
|
| unit | VARCHAR(64) | 所属单位 |
|
|
|
|
|
| position_lat | FLOAT | 纬度 |
|
|
|
|
|
| position_lng | FLOAT | 经度 |
|
|
|
|
|
| status | VARCHAR(16) | 状态(active/inactive) |
|
|
|
|
|
| create_time | DATETIME | 创建时间 |
|
|
|
|
|
|
|
|
|
|
**无人机表 (drones)**
|
|
|
|
|
| 字段名 | 类型 | 说明 |
|
|
|
|
|
|--------|------|------|
|
|
|
|
|
| drone_id | VARCHAR(32) | 主键,无人机ID |
|
|
|
|
|
| name | VARCHAR(64) | 名称 |
|
|
|
|
|
| status | VARCHAR(16) | 状态(idle/flying/returning/maintenance) |
|
|
|
|
|
| battery | INT | 电量百分比 |
|
|
|
|
|
| position_lat | FLOAT | 当前纬度 |
|
|
|
|
|
| position_lng | FLOAT | 当前经度 |
|
|
|
|
|
| max_payload | FLOAT | 最大载重(kg) |
|
|
|
|
|
|
|
|
|
|
**任务表 (tasks)**
|
|
|
|
|
| 字段名 | 类型 | 说明 |
|
|
|
|
|
|--------|------|------|
|
|
|
|
|
| task_id | VARCHAR(32) | 主键,任务ID |
|
|
|
|
|
| soldier_id | VARCHAR(32) | 外键,请求士兵 |
|
|
|
|
|
| strategy | VARCHAR(16) | 路径策略(fastest/safest/energy_efficient) |
|
|
|
|
|
| priority | VARCHAR(16) | 优先级(low/medium/high/urgent) |
|
|
|
|
|
| status | VARCHAR(16) | 状态(pending/assigned/in_flight/completed/cancelled) |
|
|
|
|
|
| create_time | DATETIME | 创建时间 |
|
|
|
|
|
| assign_time | DATETIME | 分配时间 |
|
|
|
|
|
| complete_time | DATETIME | 完成时间 |
|
|
|
|
|
|
|
|
|
|
**配送记录表 (deliveries)**
|
|
|
|
|
| 字段名 | 类型 | 说明 |
|
|
|
|
|
|--------|------|------|
|
|
|
|
|
| delivery_id | VARCHAR(32) | 主键 |
|
|
|
|
|
| task_id | VARCHAR(32) | 外键,关联任务 |
|
|
|
|
|
| drone_id | VARCHAR(32) | 外键,执行无人机 |
|
|
|
|
|
| pickup_lat | FLOAT | 取货点纬度 |
|
|
|
|
|
| pickup_lng | FLOAT | 取货点经度 |
|
|
|
|
|
| dropoff_lat | FLOAT | 投放点纬度 |
|
|
|
|
|
| dropoff_lng | FLOAT | 投放点经点 |
|
|
|
|
|
| start_time | DATETIME | 开始时间 |
|
|
|
|
|
| end_time | DATETIME | 结束时间 |
|
|
|
|
|
|
|
|
|
|
**物资表 (materials)**
|
|
|
|
|
| 字段名 | 类型 | 说明 |
|
|
|
|
|
|--------|------|------|
|
|
|
|
|
| material_id | VARCHAR(32) | 主键 |
|
|
|
|
|
| name | VARCHAR(64) | 物资名称 |
|
|
|
|
|
| category | VARCHAR(32) | 类别(ammo/food/medicine/equipment) |
|
|
|
|
|
| quantity | INT | 库存数量 |
|
|
|
|
|
| weight | FLOAT | 单件重量(kg) |
|
|
|
|
|
| location | VARCHAR(64) | 存放位置 |
|
|
|
|
|
|
|
|
|
|
#### API 接口设计
|
|
|
|
|
|
|
|
|
|
**基础URL**: `http://<server>:<port>/api/v1`
|
|
|
|
|
|
|
|
|
|
| 接口 | 方法 | 描述 |
|
|
|
|
|
|------|------|------|
|
|
|
|
|
| `/soldiers/{id}/position` | PUT | 更新士兵位置 |
|
|
|
|
|
| `/materials` | GET | 查询物资库存 |
|
|
|
|
|
| `/tasks` | POST | 创建物资需求任务 |
|
|
|
|
|
| `/tasks/{id}` | GET | 查询任务状态 |
|
|
|
|
|
| `/tasks/{id}/strategy` | PUT | 更新路径策略 |
|
|
|
|
|
| `/tasks/{id}/dropoff` | PUT | 更新投放点 |
|
|
|
|
|
| `/drones` | GET | 查询无人机列表 |
|
|
|
|
|
| `/drones/{id}/status` | POST | 无人机状态上报 |
|
|
|
|
|
| `/deliveries` | GET | 查询配送记录 |
|
|
|
|
|
|
|
|
|
|
#### 验收标准
|
|
|
|
|
- [ ] 数据库表创建完成,可正常读写
|
|
|
|
|
- [ ] 所有API接口可通过Postman测试
|
|
|
|
|
- [ ] Web界面可显示地图和无人机位置
|
|
|
|
|
- [ ] 任务创建到完成的完整流程可跑通
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
### 3.3 阶段三:单兵终端APP开发(2-3周)
|
|
|
|
|
|
|
|
|
|
#### 目标
|
|
|
|
|
开发前线士兵使用的移动应用,实现需求上报、策略选择、消息接收等功能。
|
|
|
|
|
|
|
|
|
|
#### 任务分解
|
|
|
|
|
|
|
|
|
|
| 任务 | 描述 | 产出物 |
|
|
|
|
|
|------|------|--------|
|
|
|
|
|
| 项目框架搭建 | 创建Flutter/Android项目,配置依赖 | 项目骨架 |
|
|
|
|
|
| 登录认证模块 | 实现士兵身份认证 | 登录界面 |
|
|
|
|
|
| 需求上报界面 | 物资类型、数量、紧急程度选择与提交 | 上报界面 |
|
|
|
|
|
| 策略选择界面 | 三种路径策略的选择交互 | 策略界面 |
|
|
|
|
|
| 地图显示模块 | 集成地图SDK,显示投放点位置 | 地图模块 |
|
|
|
|
|
| 消息推送模块 | 接收后勤系统的通知消息 | 推送模块 |
|
|
|
|
|
| 位置上报服务 | 后台定时上报士兵位置 | 位置服务 |
|
|
|
|
|
|
|
|
|
|
#### 界面设计
|
|
|
|
|
|
|
|
|
|
```
|
|
|
|
|
┌─────────────────────────────────────┐
|
|
|
|
|
│ 智途投送 - 单兵终端 │
|
|
|
|
|
├─────────────────────────────────────┤
|
|
|
|
|
│ ┌─────────────────────────────────┐│
|
|
|
|
|
│ │ ││
|
|
|
|
|
│ │ [ 地图显示区域 ] ││
|
|
|
|
|
│ │ 显示当前位置 ││
|
|
|
|
|
│ │ 显示投放点位置 ││
|
|
|
|
|
│ │ ││
|
|
|
|
|
│ └─────────────────────────────────┘│
|
|
|
|
|
├─────────────────────────────────────┤
|
|
|
|
|
│ 快捷操作 │
|
|
|
|
|
│ ┌─────────┐ ┌─────────┐ │
|
|
|
|
|
│ │ 申请物资 │ │ 查看任务 │ │
|
|
|
|
|
│ └─────────┘ └─────────┘ │
|
|
|
|
|
│ ┌─────────┐ ┌─────────┐ │
|
|
|
|
|
│ │ 库存查询 │ │ 消息中心 │ │
|
|
|
|
|
│ └─────────┘ └─────────┘ │
|
|
|
|
|
├─────────────────────────────────────┤
|
|
|
|
|
│ 当前任务:等待中 │
|
|
|
|
|
│ 任务ID: T-2024001 │
|
|
|
|
|
│ 物资: 急救药品 x5 │
|
|
|
|
|
│ 状态: 无人机已起飞 │
|
|
|
|
|
│ 预计到达: 14:35 │
|
|
|
|
|
└─────────────────────────────────────┘
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
#### 验收标准
|
|
|
|
|
- [ ] APP可正常安装运行
|
|
|
|
|
- [ ] 可成功提交物资需求
|
|
|
|
|
- [ ] 可选择路径策略
|
|
|
|
|
- [ ] 可接收投放点通知
|
|
|
|
|
- [ ] 位置可实时上报
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
### 3.4 阶段四:无人机系统集成(3-4周)
|
|
|
|
|
|
|
|
|
|
#### 目标
|
|
|
|
|
实现无人机自主飞行、路径规划、动态避障等核心能力。
|
|
|
|
|
|
|
|
|
|
#### 任务分解
|
|
|
|
|
|
|
|
|
|
| 任务 | 描述 | 产出物 |
|
|
|
|
|
|------|------|--------|
|
|
|
|
|
| 飞控平台选型 | 选择无人机平台,配置开发环境 | 开发环境 |
|
|
|
|
|
| 航点飞行控制 | 实现按航点序列飞行的能力 | 飞控模块 |
|
|
|
|
|
| 状态回传模块 | 定时上报位置、电量、任务状态 | 状态模块 |
|
|
|
|
|
| 静态路径规划集成 | 集成阶段一开发的静态路径规划算法,综合考虑燃料、安全点、紧急程度等约束 | 静态规划模块 |
|
|
|
|
|
| 视觉避障模块 | 集成视觉识别,实现动态避障 | 避障模块 |
|
|
|
|
|
| 热成像感知模块 | 集成红外热成像传感器驱动与分析算法,实现枪管过热和火焰热残留检测 | 热成像模块 |
|
|
|
|
|
| 相机图像分析模块 | 集成可见光相机驱动与火光检测算法,实现枪口火光识别和战场态势评估 | 图像分析模块 |
|
|
|
|
|
| 声源感知模块 | 集成麦克风阵列驱动与声学分析算法,实现枪炮声识别和声源定位 | 声源分析模块 |
|
|
|
|
|
| 多模态融合模块 | 融合热成像、相机、声源三种感知结果,生成威胁地图并驱动动态航线调整 | 融合规划模块 |
|
|
|
|
|
| 通信模块 | 与后勤系统的数据收发 | 通信模块 |
|
|
|
|
|
| 应急处理模块 | 通信中断、电量不足等异常处理 | 应急模块 |
|
|
|
|
|
|
|
|
|
|
#### 软件架构
|
|
|
|
|
|
|
|
|
|
```
|
|
|
|
|
┌──────────────────────────────────────────────────────────────────┐
|
|
|
|
|
│ 无人机软件系统 │
|
|
|
|
|
├──────────────────────────────────────────────────────────────────┤
|
|
|
|
|
│ ┌───────────┐ ┌───────────┐ ┌───────────┐ ┌─────────────┐ │
|
|
|
|
|
│ │ 通信模块 │ │ 飞控模块 │ │静态路径规划│ │多模态融合 │ │
|
|
|
|
|
│ │ │ │ │ │ │ │与动态规划 │ │
|
|
|
|
|
│ │- 指令接收 │ │- 航点飞行 │ │- 地图规划 │ │ │ │
|
|
|
|
|
│ │- 状态回传 │ │- 悬停控制 │ │- 燃料约束 │ │- 威胁融合 │ │
|
|
|
|
|
│ │- 加密传输 │ │- 返航逻辑 │ │- 安全标注 │ │- 威胁地图 │ │
|
|
|
|
|
│ └─────┬─────┘ └─────┬─────┘ │- 策略切换 │ │- 动态绕行 │ │
|
|
|
|
|
│ │ │ └─────┬─────┘ └──────┬──────┘ │
|
|
|
|
|
│ │ │ │ │ │
|
|
|
|
|
│ └──────────────┴──────────────┴───────────────┘ │
|
|
|
|
|
│ │ │
|
|
|
|
|
│ ┌───────────┐ ┌───────────┐ ┌───────────┐ ┌───────────┐ │
|
|
|
|
|
│ │热成像分析 │ │相机图像分析│ │ 声源分析 │ │ 任务管理器 │ │
|
|
|
|
|
│ │ │ │ │ │ │ │ │ │
|
|
|
|
|
│ │- 枪管过热 │ │- 枪口火光 │ │- 枪炮识别 │ │- 任务执行 │ │
|
|
|
|
|
│ │- 热残留 │ │- 态势感知 │ │- 声源定位 │ │- 策略切换 │ │
|
|
|
|
|
│ │- 温度检测 │ │- 危险评估 │ │- 火力评估 │ │- 应急处理 │ │
|
|
|
|
|
│ └───────────┘ └───────────┘ └───────────┘ └───────────┘ │
|
|
|
|
|
├──────────────────────────────────────────────────────────────────┤
|
|
|
|
|
│ 硬件接口层 │
|
|
|
|
|
│ ┌──────┐ ┌──────┐ ┌──────┐ ┌──────┐ ┌──────┐ ┌──────┐ │
|
|
|
|
|
│ │ 飞控 ││摄像头│ │热成像│ │麦克风│ │ IMU │ │ GPS │ │
|
|
|
|
|
│ └──────┘ └──────┘ └──────┘ └──────┘ └──────┘ └──────┘ │
|
|
|
|
|
└──────────────────────────────────────────────────────────────────┘
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
#### 状态机设计
|
|
|
|
|
|
|
|
|
|
```
|
|
|
|
|
┌─────────────┐
|
|
|
|
|
│ IDLE │
|
|
|
|
|
│ (待机) │
|
|
|
|
|
└──────┬──────┘
|
|
|
|
|
│ 收到任务
|
|
|
|
|
▼
|
|
|
|
|
┌─────────────┐
|
|
|
|
|
│ PLANNING │
|
|
|
|
|
│ (路径规划) │
|
|
|
|
|
└──────┬──────┘
|
|
|
|
|
│ 规划完成
|
|
|
|
|
▼
|
|
|
|
|
┌─────────────┐
|
|
|
|
|
┌─────│ FLYING │─────┐
|
|
|
|
|
│ │ (飞行中) │ │
|
|
|
|
|
│ └─────────────┘ │
|
|
|
|
|
│ │ │
|
|
|
|
|
避障触发│ │到达目标 │电量不足
|
|
|
|
|
│ │ │
|
|
|
|
|
▼ ▼ ▼
|
|
|
|
|
┌───────────┐ ┌───────────┐ ┌───────────┐
|
|
|
|
|
│ AVOIDING │ │ HOVERING │ │ RETURNING │
|
|
|
|
|
│ (避障中) │ │ (悬停) │ │ (返航) │
|
|
|
|
|
└─────┬─────┘ └─────┬─────┘ └─────┬─────┘
|
|
|
|
|
│ │ │
|
|
|
|
|
└─────────────┴─────────────┘
|
|
|
|
|
│
|
|
|
|
|
▼
|
|
|
|
|
┌─────────────┐
|
|
|
|
|
│ COMPLETED │
|
|
|
|
|
│ (完成) │
|
|
|
|
|
└─────────────┘
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
#### 验收标准
|
|
|
|
|
- [ ] 无人机可接收后勤系统下发的任务
|
|
|
|
|
- [ ] 可按规划路径自主飞行
|
|
|
|
|
- [ ] 可识别障碍物并自主避让
|
|
|
|
|
- [ ] 状态可实时回传后勤系统
|
|
|
|
|
- [ ] 通信中断时可自动返航
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
### 3.5 阶段五:系统集成测试(2周)
|
|
|
|
|
|
|
|
|
|
#### 目标
|
|
|
|
|
完成各子系统的联调测试,验证端到端功能。
|
|
|
|
|
|
|
|
|
|
#### 任务分解
|
|
|
|
|
|
|
|
|
|
| 任务 | 描述 | 产出物 |
|
|
|
|
|
|------|------|--------|
|
|
|
|
|
| 接口联调测试 | 验证各子系统间的通信接口 | 测试报告 |
|
|
|
|
|
| 端到端流程测试 | 完整任务流程测试 | 测试报告 |
|
|
|
|
|
| 异常场景测试 | 通信中断、电量不足等异常测试 | 测试报告 |
|
|
|
|
|
| 性能测试 | 并发任务、响应时间测试 | 测试报告 |
|
|
|
|
|
| 用户验收测试 | 模拟真实使用场景测试 | 验收报告 |
|
|
|
|
|
|
|
|
|
|
#### 测试用例
|
|
|
|
|
|
|
|
|
|
| 编号 | 测试场景 | 预期结果 |
|
|
|
|
|
|------|----------|----------|
|
|
|
|
|
| TC001 | 士兵提交物资需求 | 后勤系统收到请求,分配无人机 |
|
|
|
|
|
| TC002 | 选择"最快"策略 | 路径优先考虑时间最短 |
|
|
|
|
|
| TC003 | 选择"最安全"策略 | 路径避开威胁区域 |
|
|
|
|
|
| TC004 | 动态调整投放点 | 无人机更新航线 |
|
|
|
|
|
| TC005 | 通信中断 | 无人机自动返航 |
|
|
|
|
|
| TC006 | 电量不足 | 无人机中止任务返航 |
|
|
|
|
|
| TC007 | 多任务并发调度 | 系统正确分配资源 |
|
|
|
|
|
| TC008 | 视觉避障测试 | 无人机成功绕过障碍物 |
|
|
|
|
|
| TC009 | 热成像枪管过热检测 | 检测到模拟热源,标记为威胁区域 |
|
|
|
|
|
| TC010 | 相机枪口火光检测 | 识别到模拟火光闪烁,区分环境光源 |
|
|
|
|
|
| TC011 | 声源枪炮声识别 | 正确区分枪声、炮声与环境噪声 |
|
|
|
|
|
| TC012 | 声源定位准确性 | 声源方向估计误差在可接受范围内 |
|
|
|
|
|
| TC013 | 多模态融合威胁检测 | 三种感知结果融合后生成一致的威胁地图 |
|
|
|
|
|
| TC014 | 动态威胁规避 | 检测到交火威胁后无人机自动绕行 |
|
|
|
|
|
|
|
|
|
|
#### 验收标准
|
|
|
|
|
- [ ] 所有测试用例通过
|
|
|
|
|
- [ ] 端到端流程完整可运行
|
|
|
|
|
- [ ] 异常场景处理正确
|
|
|
|
|
- [ ] 系统响应时间满足要求
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
## 四、项目结构
|
|
|
|
|
|
|
|
|
|
### 4.1 目录结构
|
|
|
|
|
|
|
|
|
|
```
|
|
|
|
|
ZhiTuTouSong/
|
|
|
|
|
│
|
|
|
|
|
├── docs/ # 项目文档
|
|
|
|
|
│ ├── 需求规格说明书.md
|
|
|
|
|
│ ├── 系统设计文档.md
|
|
|
|
|
│ ├── 接口设计文档.md
|
|
|
|
|
│ ├── 测试报告.md
|
|
|
|
|
│ └── 用户手册.md
|
|
|
|
|
│
|
|
|
|
|
├── backend/ # 后勤保障系统
|
|
|
|
|
│ ├── README.md
|
|
|
|
|
│ ├── requirements.txt # Python依赖
|
|
|
|
|
│ ├── config/ # 配置文件
|
|
|
|
|
│ │ ├── __init__.py
|
|
|
|
|
│ │ ├── settings.py
|
|
|
|
|
│ │ └── logging.conf
|
|
|
|
|
│ ├── api/ # API接口
|
|
|
|
|
│ │ ├── __init__.py
|
|
|
|
|
│ │ ├── routes/
|
|
|
|
|
│ │ │ ├── __init__.py
|
|
|
|
|
│ │ │ ├── soldiers.py
|
|
|
|
|
│ │ │ ├── tasks.py
|
|
|
|
|
│ │ │ ├── drones.py
|
|
|
|
|
│ │ │ └── materials.py
|
|
|
|
|
│ │ └── schemas/
|
|
|
|
|
│ │ ├── __init__.py
|
|
|
|
|
│ │ ├── task.py
|
|
|
|
|
│ │ └── drone.py
|
|
|
|
|
│ ├── models/ # 数据模型
|
|
|
|
|
│ │ ├── __init__.py
|
|
|
|
|
│ │ ├── soldier.py
|
|
|
|
|
│ │ ├── task.py
|
|
|
|
|
│ │ ├── drone.py
|
|
|
|
|
│ │ └── material.py
|
|
|
|
|
│ ├── services/ # 业务逻辑
|
|
|
|
|
│ │ ├── __init__.py
|
|
|
|
|
│ │ ├── task_service.py
|
|
|
|
|
│ │ ├── drone_service.py
|
|
|
|
|
│ │ └── notification_service.py
|
|
|
|
|
│ ├── algorithms/ # 算法模块
|
|
|
|
|
│ │ ├── __init__.py
|
|
|
|
|
│ │ ├── path_planner.py
|
|
|
|
|
│ │ ├── obstacle_detector.py
|
|
|
|
|
│ │ └── strategy_selector.py
|
|
|
|
|
│ ├── database/ # 数据库
|
|
|
|
|
│ │ ├── __init__.py
|
|
|
|
|
│ │ ├── connection.py
|
|
|
|
|
│ │ └── migrations/
|
|
|
|
|
│ └── main.py # 入口文件
|
|
|
|
|
│
|
|
|
|
|
├── mobile-app/ # 单兵终端APP
|
|
|
|
|
│ ├── README.md
|
|
|
|
|
│ ├── lib/
|
|
|
|
|
│ │ ├── main.dart
|
|
|
|
|
│ │ ├── models/
|
|
|
|
|
│ │ ├── views/
|
|
|
|
|
│ │ │ ├── home_view.dart
|
|
|
|
|
│ │ │ ├── task_view.dart
|
|
|
|
|
│ │ │ └── map_view.dart
|
|
|
|
|
│ │ ├── viewmodels/
|
|
|
|
|
│ │ ├── services/
|
|
|
|
|
│ │ │ ├── api_service.dart
|
|
|
|
|
│ │ │ ├── location_service.dart
|
|
|
|
|
│ │ │ └── notification_service.dart
|
|
|
|
|
│ │ └── utils/
|
|
|
|
|
│ ├── assets/
|
|
|
|
|
│ ├── pubspec.yaml
|
|
|
|
|
│ └── android/
|
|
|
|
|
│
|
|
|
|
|
├── drone-software/ # 无人机软件
|
|
|
|
|
│ ├── README.md
|
|
|
|
|
│ ├── requirements.txt
|
|
|
|
|
│ ├── src/
|
|
|
|
|
│ │ ├── __init__.py
|
|
|
|
|
│ │ ├── main.py
|
|
|
|
|
│ │ ├── flight_control/
|
|
|
|
|
│ │ │ ├── __init__.py
|
|
|
|
|
│ │ │ ├── drone_controller.py
|
|
|
|
|
│ │ │ └── waypoint_manager.py
|
|
|
|
|
│ │ ├── vision/
|
|
|
|
|
│ │ │ ├── __init__.py
|
|
|
|
|
│ │ │ ├── camera.py
|
|
|
|
|
│ │ │ ├── obstacle_detector.py
|
|
|
|
|
│ │ │ ├── muzzle_flash_detector.py
|
|
|
|
|
│ │ │ └── visual_odometry.py
|
|
|
|
|
│ │ ├── thermal/
|
|
|
|
|
│ │ │ ├── __init__.py
|
|
|
|
|
│ │ │ ├── thermal_sensor.py # 红外热成像传感器驱动
|
|
|
|
|
│ │ │ ├── heat_anomaly_detector.py # 热异常检测(枪管过热/火焰热残留)
|
|
|
|
|
│ │ │ └── temperature_processor.py # 温度数据处理与阈值判定
|
|
|
|
|
│ │ ├── acoustic/
|
|
|
|
|
│ │ │ ├── __init__.py
|
|
|
|
|
│ │ │ ├── microphone_array.py # 麦克风阵列驱动
|
|
|
|
|
│ │ │ ├── gunshot_classifier.py # 枪炮声分类识别
|
|
|
|
|
│ │ │ ├── sound_localizer.py # 声源定位(GCC-PHAT)
|
|
|
|
|
│ │ │ └── noise_filter.py # 风噪滤波预处理
|
|
|
|
|
│ │ ├── communication/
|
|
|
|
|
│ │ │ ├── __init__.py
|
|
|
|
|
│ │ │ ├── radio_link.py
|
|
|
|
|
│ │ │ └── message_protocol.py
|
|
|
|
|
│ │ ├── planning/
|
|
|
|
|
│ │ │ ├── __init__.py
|
|
|
|
|
│ │ │ ├── global_planner.py # 静态路径规划(A*等)
|
|
|
|
|
│ │ │ ├── local_planner.py # 局部避障规划
|
|
|
|
|
│ │ │ └── dynamic_planner.py # 多模态融合动态路径规划
|
|
|
|
|
│ │ └── mission/
|
|
|
|
|
│ │ ├── __init__.py
|
|
|
|
|
│ │ ├── mission_manager.py
|
|
|
|
|
│ │ └── emergency_handler.py
|
|
|
|
|
│ └── config/
|
|
|
|
|
│ └── drone_config.yaml
|
|
|
|
|
│
|
|
|
|
|
├── simulation/ # 仿真环境
|
|
|
|
|
│ ├── README.md
|
|
|
|
|
│ ├── city_model/ # 城市模型
|
|
|
|
|
│ │ ├── buildings.json
|
|
|
|
|
│ │ └── terrain.json
|
|
|
|
|
│ ├── scenarios/ # 测试场景
|
|
|
|
|
│ │ ├── scenario_1.json
|
|
|
|
|
│ │ └── scenario_2.json
|
|
|
|
|
│ └── scripts/
|
|
|
|
|
│ ├── setup_simulation.py
|
|
|
|
|
│ └── run_test.py
|
|
|
|
|
│
|
|
|
|
|
├── tests/ # 集成测试
|
|
|
|
|
│ ├── integration/
|
|
|
|
|
│ ├── e2e/
|
|
|
|
|
│ └── performance/
|
|
|
|
|
│
|
|
|
|
|
├── scripts/ # 工具脚本
|
|
|
|
|
│ ├── setup.sh
|
|
|
|
|
│ ├── run_backend.sh
|
|
|
|
|
│ └── deploy.sh
|
|
|
|
|
│
|
|
|
|
|
├── .gitignore
|
|
|
|
|
├── LICENSE
|
|
|
|
|
└── README.md
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
### 4.2 模块职责说明
|
|
|
|
|
|
|
|
|
|
| 模块 | 职责 | 所属子系统 |
|
|
|
|
|
|------|------|------------|
|
|
|
|
|
| api/ | RESTful API接口定义 | 后勤保障系统 |
|
|
|
|
|
| models/ | 数据模型定义 | 后勤保障系统 |
|
|
|
|
|
| services/ | 业务逻辑处理 | 后勤保障系统 |
|
|
|
|
|
| algorithms/ | 路径规划与避障算法 | 后勤保障系统 |
|
|
|
|
|
| flight_control/ | 飞行控制逻辑 | 无人机软件 |
|
|
|
|
|
| vision/ | 视觉识别、枪口火光检测与导航 | 无人机软件 |
|
|
|
|
|
| thermal/ | 红外热成像分析、枪管过热检测 | 无人机软件 |
|
|
|
|
|
| acoustic/ | 声源分析、枪炮声识别与声源定位 | 无人机软件 |
|
|
|
|
|
| planning/ | 静态路径规划与多模态融合动态规划 | 无人机软件 |
|
|
|
|
|
| communication/ | 通信协议与数据传输 | 无人机软件 |
|
|
|
|
|
| views/ | 移动端界面 | 单兵终端APP |
|
|
|
|
|
| services/ | 移动端服务(API调用、位置上报) | 单兵终端APP |
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
## 五、开发规范
|
|
|
|
|
|
|
|
|
|
### 5.1 代码规范
|
|
|
|
|
|
|
|
|
|
- **Python**: 遵循 PEP 8 规范,使用 Black 格式化
|
|
|
|
|
- **Dart/Flutter**: 遵循 Dart 官方风格指南
|
|
|
|
|
- **文档**: 使用中文注释,函数需添加文档字符串
|
|
|
|
|
|
|
|
|
|
### 5.2 Git 分支管理
|
|
|
|
|
|
|
|
|
|
```
|
|
|
|
|
main # 主分支,稳定版本
|
|
|
|
|
├── develop # 开发分支
|
|
|
|
|
│ ├── feature/backend-task-service # 功能分支
|
|
|
|
|
│ ├── feature/mobile-home-view # 功能分支
|
|
|
|
|
│ └── feature/drone-flight-control # 功能分支
|
|
|
|
|
└── release/v1.0 # 发布分支
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
### 5.3 提交信息规范
|
|
|
|
|
|
|
|
|
|
```
|
|
|
|
|
<type>(<scope>): <subject>
|
|
|
|
|
|
|
|
|
|
# 示例
|
|
|
|
|
feat(backend): 添加任务调度API接口
|
|
|
|
|
fix(drone): 修复通信中断后无法返航的问题
|
|
|
|
|
docs(readme): 更新项目说明文档
|
|
|
|
|
test(backend): 添加路径规划算法单元测试
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
**Type 类型**:
|
|
|
|
|
- `feat`: 新功能
|
|
|
|
|
- `fix`: 修复bug
|
|
|
|
|
- `docs`: 文档更新
|
|
|
|
|
- `test`: 测试相关
|
|
|
|
|
- `refactor`: 代码重构
|
|
|
|
|
- `style`: 代码格式调整
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
## 六、风险管理
|
|
|
|
|
|
|
|
|
|
### 6.1 技术风险
|
|
|
|
|
|
|
|
|
|
| 风险 | 概率 | 影响 | 应对措施 |
|
|
|
|
|
|------|------|------|----------|
|
|
|
|
|
| 路径规划算法性能不足 | 中 | 高 | 采用分层规划,全局离线+局部实时 |
|
|
|
|
|
| 视觉避障可靠性低 | 高 | 高 | 多传感器融合,设置置信度阈值 |
|
|
|
|
|
| 通信链路不稳定 | 高 | 中 | 设计通信中断应急机制 |
|
|
|
|
|
| GPS信号丢失 | 中 | 中 | 视觉导航辅助定位 |
|
|
|
|
|
|
|
|
|
|
### 6.2 项目风险
|
|
|
|
|
|
|
|
|
|
| 风险 | 概率 | 影响 | 应对措施 |
|
|
|
|
|
|------|------|------|----------|
|
|
|
|
|
| 开发周期延期 | 中 | 高 | 分阶段交付,优先核心功能 |
|
|
|
|
|
| 无人机硬件获取困难 | 中 | 高 | 使用仿真环境替代实物测试 |
|
|
|
|
|
| 团队成员变动 | 低 | 中 | 代码规范,文档完善 |
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
## 七、里程碑计划
|
|
|
|
|
|
|
|
|
|
| 里程碑 | 时间节点 | 交付物 |
|
|
|
|
|
|--------|----------|--------|
|
|
|
|
|
| M1: 算法验证完成 | 第3周 | 路径规划仿真演示 |
|
|
|
|
|
| M2: 后勤系统可用 | 第7周 | 可运行的后端服务+Web界面 |
|
|
|
|
|
| M3: 终端APP可用 | 第10周 | 可安装的移动应用 |
|
|
|
|
|
| M4: 无人机集成完成 | 第14周 | 无人机自主飞行演示 |
|
|
|
|
|
| M5: 系统验收 | 第16周 | 完整系统演示+文档 |
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
## 八、附录
|
|
|
|
|
|
|
|
|
|
### 8.1 参考资料
|
|
|
|
|
|
|
|
|
|
- PX4 开发指南: https://docs.px4.io/
|
|
|
|
|
- MAVSDK Python: https://mavsdk.mavlink.io/
|
|
|
|
|
- AirSim 文档: https://microsoft.github.io/AirSim/
|
|
|
|
|
- OpenCV 官方文档: https://docs.opencv.org/
|
|
|
|
|
- Flutter 开发文档: https://flutter.dev/docs
|
|
|
|
|
|
|
|
|
|
### 8.2 开发工具
|
|
|
|
|
|
|
|
|
|
- IDE: VS Code / PyCharm / Android Studio
|
|
|
|
|
- 版本控制: Git
|
|
|
|
|
- 项目管理: GitHub Projects / 禅道
|
|
|
|
|
- API测试: Postman
|
|
|
|
|
- 数据库工具: DBeaver
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
*文档版本: v1.0*
|
|
|
|
|
*创建日期: 2026年4月*
|