QAUP_Management/doc/design/speed_calculation.md
Tian jianyong 5e1e9f4507 统一了前后端到一个项目,实现了无人车的位置和超速检测,并发送到前端。
管理端在 Ruoyi 框架的基础上,对菜单进行了修改,并添加了司机信息、车辆信息和车辆类型管理。
2025-07-08 20:04:14 +08:00

142 lines
3.5 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 速度计算系统设计文档
## 1. 数据结构分析
### 1.1 当前数据结构
目前系统中已实现的数据结构如下:
#### MovementState运动状态
```java
public class MovementState {
public GeoPosition position; // 位置信息
public Velocity velocity; // 速度信息
public double heading; // 航向(度)
public long timestamp; // 时间戳(毫秒)
}
```
#### MovingObject移动对象基类
```java
public abstract class MovingObject {
public GeoPosition currentPosition; // 当前位置
public Velocity velocity; // 速度
public double heading; // 航向(度)
public long timestamp; // 时间戳(毫秒)
public Deque<MovementState> stateHistory; // 历史状态队列
public int MAX_HISTORY = 10; // 最大历史记录数
public double maxSpeed; // 最大速度
public MovingObjectType type; // 类型枚举
}
```
### 1.2 数据结构评估
当前数据结构基本合理,但需要考虑以下几点优化:
1. **历史状态队列**
- 当前MAX_HISTORY=10可能不足以支持平滑的速度计算
- 建议增加到30-60以支持更长时间窗口的数据分析
2. **速度计算相关字段**
- 需要在Velocity类中添加速度计算的置信度字段
- 考虑添加加速度计算结果的缓存字段
3. **数据质量标记**
- 建议在MovementState中添加数据质量标记字段
- 用于标识原始数据是否可靠
## 2. 速度计算方案
### 2.1 基本思路
1. **数据预处理**
- 对原始位置数据进行异常值检测
- 使用卡尔曼滤波进行数据平滑
2. **速度计算方法**
- 使用滑动窗口计算平均速度
- 根据飞机状态(起飞/降落)调整计算参数
### 2.2 具体实现方案
#### 2.2.1 数据预处理
1. **异常值检测**
```java
// 检测标准:
- 位置跳变:相邻两点间距离超过合理范围
- 时间异常:时间戳倒退或跳变
- 速度异常:计算得到的速度超过最大限制
```
2. **卡尔曼滤波**
- 状态向量:[x, y, vx, vy]
- 观测向量:[x, y]
- 考虑加速度作为系统噪声
#### 2.2.2 速度计算
1. **滑动窗口计算**
```java
// 窗口大小:
- 起飞状态5-10秒
- 降落状态3-5秒
```
2. **加速度约束**
```java
// 合理加速度范围:
- 起飞0.5-2.5 m/s²
- 降落:-2.0-0 m/s²
```
### 2.3 状态判断
1. **起飞状态判断**
- 速度持续增加
- 高度持续增加
- 位置相对跑道起点的距离增加
2. **降落状态判断**
- 速度持续减小
- 高度持续减小
- 位置接近跑道
## 3. 实现步骤
1. 更新数据结构:
- 修改MAX_HISTORY值
- 添加数据质量字段
- 添加速度计算置信度字段
2. 实现数据预处理:
- 异常值检测
- 卡尔曼滤波
3. 实现速度计算:
- 滑动窗口机制
- 状态判断
- 加速度约束
4. 添加数据质量监控:
- 记录异常数据比例
- 监控速度计算置信度
## 4. 注意事项
1. **数据同步**
- 确保位置数据的时间戳准确
- 处理数据延迟和丢失情况
2. **计算效率**
- 优化卡尔曼滤波计算
- 合理设置滑动窗口大小
3. **异常处理**
- 定义清晰的异常处理流程
- 保存异常数据用于分析
4. **参数调优**
- 根据实际运行数据调整参数
- 建立参数自适应机制