281 lines
8.1 KiB
Markdown
281 lines
8.1 KiB
Markdown
# 2.4.1 交互式导航控件功能设计说明
|
||
|
||
## 2.4.1.1. 模块描述
|
||
|
||
交互式导航控件模块是交互式导航功能的核心模块,负责创建交互式导航控件,允许用户选择不同的起点和终点,动态生成路径。该模块提供直观友好的用户界面,使用户能够轻松地进行路径规划操作,并实时预览生成的路径结果。
|
||
|
||
该模块与NavigationMapGenerator、PathPlanningManager和WPF视图层紧密集成,提供完整的路径规划交互体验。
|
||
|
||
## 2.4.1.2. 功能
|
||
|
||
### 核心功能
|
||
1. **起点选择**:交互式选择路径起点
|
||
2. **终点选择**:交互式选择路径终点
|
||
3. **路径生成**:根据选择的起终点动态生成路径
|
||
4. **实时预览**:实时显示生成的路径
|
||
5. **路径调整**:支持调整路径参数重新生成
|
||
|
||
### 子功能
|
||
| 功能编号 | 功能名称 | 功能描述 |
|
||
|---------|---------|---------|
|
||
| 2.4.1.F1 | 起点设置 | 在三维视图中设置起点 |
|
||
| 2.4.1.F2 | 终点设置 | 在三维视图中设置终点 |
|
||
| 2.4.1.F3 | 路径计算 | 自动计算最优路径 |
|
||
| 2.4.1.F4 | 路径显示 | 在三维视图中显示路径 |
|
||
| 2.4.1.F5 | 参数调整 | 调整路径规划参数 |
|
||
| 2.4.1.F6 | 路径保存 | 保存生成的路径 |
|
||
| 2.4.1.F7 | 多点导航 | 支持多个途经点 |
|
||
| 2.4.1.F8 | 路径比较 | 比较不同路径方案 |
|
||
|
||
## 2.4.1.3. 性能
|
||
|
||
### 性能指标
|
||
| 指标名称 | 目标值 | 说明 |
|
||
|---------|-------|------|
|
||
| 路径生成响应 | < 2秒 | 从选择到生成路径的响应时间 |
|
||
| 界面响应时间 | < 100ms | 控件操作的响应时间 |
|
||
| 路径渲染时间 | < 500ms | 路径可视化渲染时间 |
|
||
| 支持并发操作 | 5个 | 同时处理的路径规划请求数 |
|
||
|
||
### 性能优化策略
|
||
1. 异步路径计算避免阻塞UI
|
||
2. 路径结果缓存
|
||
3. 增量渲染路径
|
||
|
||
## 2.4.1.4. 输入输出项
|
||
|
||
### 1. 字段输入输出
|
||
|
||
#### 输入字段
|
||
| 字段名 | 类型 | 必填 | 说明 |
|
||
|-------|------|-----|------|
|
||
| StartPoint | Point3D | 是 | 起点坐标 |
|
||
| EndPoint | Point3D | 是 | 终点坐标 |
|
||
| ViaPoints | List<Point3D> | 否 | 途经点列表 |
|
||
| ObjectSize | double | 否 | 物体尺寸(米) |
|
||
| Strategy | PathStrategy | 否 | 路径策略,默认Shortest |
|
||
|
||
#### 输出字段
|
||
| 字段名 | 类型 | 说明 |
|
||
|-------|------|------|
|
||
| GeneratedPath | PathRoute | 生成的路径对象 |
|
||
| PathLength | double | 路径长度(米) |
|
||
| EstimatedTime | double | 预估时间(秒) |
|
||
| PathPoints | List<Point3D> | 路径点列表 |
|
||
|
||
### 2. 界面交互输入输出
|
||
|
||
#### 界面输入
|
||
- 起点/终点选择按钮
|
||
- 途经点添加/删除
|
||
- 参数设置控件
|
||
- 路径生成按钮
|
||
|
||
#### 界面输出
|
||
- 起终点标记显示
|
||
- 路径连线显示
|
||
- 路径信息显示面板
|
||
- 操作提示信息
|
||
|
||
## 2.4.1.5. 算法
|
||
|
||
### 动态路径生成算法
|
||
```
|
||
算法:根据起终点动态生成路径
|
||
输入:起点,终点,途经点,参数
|
||
输出:生成的路径
|
||
|
||
1. 验证起终点有效性
|
||
2. 构建路径点序列
|
||
- 起点
|
||
- 途经点(如果有)
|
||
- 终点
|
||
3. 调用路径规划算法
|
||
4. 生成平滑路径
|
||
5. 计算路径长度和时间
|
||
6. 返回路径对象
|
||
```
|
||
|
||
### A*路径规划算法
|
||
```
|
||
算法:A*寻路算法
|
||
输入:起点,终点,网格地图
|
||
输出:最优路径
|
||
|
||
1. 初始化开放列表和关闭列表
|
||
2. 将起点加入开放列表
|
||
3. 当开放列表不为空:
|
||
4. 取出F值最小的节点
|
||
5. 如果是终点, reconstruct path
|
||
6. 移动到关闭列表
|
||
7. 遍历邻居节点:
|
||
8. 如果在关闭列表,跳过
|
||
9. 计算G、H、F值
|
||
10. 如果在开放列表,更新值
|
||
11. 否则加入开放列表
|
||
12. 返回路径
|
||
```
|
||
|
||
## 2.4.1.6. 流程逻辑
|
||
|
||
```
|
||
开始
|
||
│
|
||
▼
|
||
┌─────────────────┐
|
||
│ 打开导航控件 │
|
||
└────────┬────────┘
|
||
│
|
||
▼
|
||
┌─────────────────┐
|
||
│ 选择起点 │
|
||
└────────┬────────┘
|
||
│
|
||
▼
|
||
┌─────────────────┐
|
||
│ 选择终点 │
|
||
└────────┬────────┘
|
||
│
|
||
▼
|
||
┌─────────────────┐ 是
|
||
│ 添加途经点? │──────────┐
|
||
└────────┬────────┘ │
|
||
│否 │
|
||
▼ │
|
||
┌─────────────────┐ │
|
||
│ 设置规划参数 │ │
|
||
└────────┬────────┘ │
|
||
│ │
|
||
▼ │
|
||
┌─────────────────┐ │
|
||
│ 点击生成路径 │ │
|
||
└────────┬────────┘ │
|
||
│ │
|
||
▼ │
|
||
┌─────────────────┐ │
|
||
│ 执行路径计算 │ │
|
||
└────────┬────────┘ │
|
||
│ │
|
||
▼ │
|
||
┌─────────────────┐ │
|
||
│ 显示路径结果 │◄─────────┘
|
||
└────────┬────────┘
|
||
│
|
||
┌────┴────┐
|
||
▼ ▼
|
||
┌────────┐ ┌────────┐
|
||
│调整参数│ │保存路径│
|
||
└───┬────┘ └───┬────┘
|
||
│ │
|
||
└─────┬─────┘
|
||
│
|
||
▼
|
||
结束
|
||
```
|
||
|
||
## 2.4.1.7. 接口
|
||
|
||
### 公共接口
|
||
```csharp
|
||
/// <summary>
|
||
/// 导航地图生成器
|
||
/// </summary>
|
||
public class NavigationMapGenerator
|
||
{
|
||
/// <summary>
|
||
/// 生成导航路径
|
||
/// </summary>
|
||
/// <param name="startPoint">起点</param>
|
||
/// <param name="endPoint">终点</param>
|
||
/// <param name="parameters">路径参数</param>
|
||
/// <returns>生成的路径</returns>
|
||
public PathRoute GenerateNavigationPath(Point3D startPoint, Point3D endPoint, PathParameters parameters);
|
||
|
||
/// <summary>
|
||
/// 添加途经点
|
||
/// </summary>
|
||
public void AddViaPoint(Point3D point);
|
||
|
||
/// <summary>
|
||
/// 清除途经点
|
||
/// </summary>
|
||
public void ClearViaPoints();
|
||
|
||
/// <summary>
|
||
/// 设置路径策略
|
||
/// </summary>
|
||
public void SetPathStrategy(PathStrategy strategy);
|
||
}
|
||
|
||
/// <summary>
|
||
/// 路径参数
|
||
/// </summary>
|
||
public class PathParameters
|
||
{
|
||
public double ObjectLength { get; set; }
|
||
public double ObjectWidth { get; set; }
|
||
public double ObjectHeight { get; set; }
|
||
public double SafetyMargin { get; set; }
|
||
public PathStrategy Strategy { get; set; }
|
||
}
|
||
```
|
||
|
||
## 2.4.1.8. 注释设计
|
||
|
||
### 代码注释规范
|
||
```csharp
|
||
/// <summary>
|
||
/// 路径策略枚举
|
||
/// </summary>
|
||
public enum PathStrategy
|
||
{
|
||
/// <summary>
|
||
/// 最短路径
|
||
/// </summary>
|
||
Shortest,
|
||
|
||
/// <summary>
|
||
/// 最快路径
|
||
/// </summary>
|
||
Fastest,
|
||
|
||
/// <summary>
|
||
/// 最安全路径(避开障碍物)
|
||
/// </summary>
|
||
Safest,
|
||
|
||
/// <summary>
|
||
/// 平衡路径
|
||
/// </summary>
|
||
Balanced
|
||
}
|
||
```
|
||
|
||
## 2.4.1.9. 数据结构
|
||
|
||
### PathParameters 结构
|
||
| 字段名 | 类型 | 说明 |
|
||
|-------|------|------|
|
||
| ObjectLength | double | 物体长度(米) |
|
||
| ObjectWidth | double | 物体宽度(米) |
|
||
| ObjectHeight | double | 物体高度(米) |
|
||
| SafetyMargin | double | 安全间隙(米) |
|
||
| Strategy | PathStrategy | 路径策略 |
|
||
| MaxSlope | double | 最大坡度(度) |
|
||
|
||
### PathStrategy 枚举
|
||
| 值 | 说明 |
|
||
|---|------|
|
||
| Shortest | 优先最短距离 |
|
||
| Fastest | 优先最快速度 |
|
||
| Safest | 优先最安全 |
|
||
| Balanced | 平衡考虑 |
|
||
|
||
### NavigationResult 结构
|
||
| 字段名 | 类型 | 说明 |
|
||
|-------|------|------|
|
||
| Path | PathRoute | 生成的路径 |
|
||
| Success | bool | 是否成功 |
|
||
| Message | string | 结果消息 |
|
||
| CalculationTime | TimeSpan | 计算耗时 |
|