5.6 KiB
5.6 KiB
碰撞避免系统数据结构设计文档
1. 数据结构概述
本文档描述碰撞避免系统中的核心数据结构设计及其关系。系统采用面向对象设计方法,通过继承和组合实现不同移动物体类型的统一管理。
2. 核心数据结构设计
2.1 类图
classDiagram
class MovingObject {
+GeoPosition currentPosition
+Velocity velocity
+double heading
+long timestamp
+Deque~MovementState~ stateHistory
+int MAX_HISTORY
+double maxSpeed
+MovingObjectType type
}
class Aircraft {
+String flightNo
+Long trackNumber
}
class SpecialVehicle {
+String vehicleNo
}
class UnmannedVehicle {
+String transId
+String vehicleId
}
class GeoPosition {
+double latitude
+double longitude
+double altitude
}
class Velocity {
+double x, y, z
+double vx, vy, vz
+double confidence
+double cachedAcceleration
+getSpeed()
}
class MovementState {
+GeoPosition position
+Velocity velocity
+double heading
+long timestamp
+DataQuality dataQuality
}
class MovingObjectType {
<<enumeration>>
AIRCRAFT
SPECIAL_VEHICLE
UNMANNED_VEHICLE
}
MovingObject <|-- Aircraft
MovingObject <|-- SpecialVehicle
MovingObject <|-- UnmannedVehicle
MovingObject "1" *-- "1" GeoPosition
MovingObject "1" *-- "1" Velocity
MovingObject "1" *-- "0..*" MovementState
MovingObject "1" *-- "1" MovingObjectType
MovementState "1" *-- "1" GeoPosition
MovementState "1" *-- "1" Velocity
3. 数据结构详解
3.1 基础抽象类 - MovingObject
MovingObject 是系统中所有移动物体的基类,定义了共有属性:
- currentPosition: 当前地理位置,使用
GeoPosition类表示,包含经度、纬度和高度信息 - velocity: 局部坐标系位置消息(xy坐标、速度等等),使用
Velocity类表示,包含三维速度向量 - heading: 航向角度,以度为单位
- timestamp: 时间戳,表示数据最后更新时间
- stateHistory: 历史状态队列,存储
MovementState对象,用于轨迹分析 - MAX_HISTORY: 历史记录最大保存数量,默认为30
- maxSpeed: 最大速度限制
- type: 移动物体类型,使用
MovingObjectType枚举
3.2 具体移动物体类型
系统实现了三种具体的移动物体类型,它们都继承自 MovingObject 抽象类:
3.2.1 航空器 (Aircraft)
航空器特有属性:
- flightNo: 航班号,字符串类型,用于唯一标识航班
- trackNumber: 航迹号,长整型,用于雷达跟踪标识
构造函数接收位置参数(纬度、经度、高度)和时间戳,初始化基类属性。
3.2.2 特勤车辆 (SpecialVehicle)
特勤车辆特有属性:
- vehicleNo: 车牌号,字符串类型,用于唯一标识车辆
构造函数接收位置参数(纬度、经度)、时间戳、速度和方向,并据此计算速度向量。特勤车辆被标记为"不可控"对象,表示系统只能监控而不能控制其行为。
3.2.3 无人车 (UnmannedVehicle)
无人车特有属性:
- transId: 消息唯一ID,用于消息跟踪
- vehicleId: 车辆ID,用于唯一标识无人车
构造函数接收位置参数(经度、纬度)、航向和速度,并据此计算速度向量。无人车被标记为"可控"对象,表示系统可以向其发送控制指令。
3.3 辅助数据结构
3.3.1 地理位置 - GeoPosition
GeoPosition 表示三维空间中的位置:
- latitude: 纬度,单位为度
- longitude: 经度,单位为度
- altitude: 高度,单位为米
3.3.2 速度 - Velocity
Velocity 描述局部坐标系的位置消息:
- x, y, z: 三维坐标系中的位置
- vx, vy, vz: 三个方向上的速度分量,单位为米/秒
- confidence: 速度计算置信度,取值范围0-1
- cachedAcceleration: 加速度计算结果缓存
- getSpeed(): 计算速度标量的方法
3.3.3 运动状态 - MovementState
MovementState 封装了移动物体在特定时刻的完整状态:
- position: 地理位置,GeoPosition类型
- velocity: 局部坐标系的位置消息,Velocity类型
- heading: 航向,度数
- timestamp: 时间戳
- dataQuality: 数据质量枚举,表示数据可靠性
3.3.4 移动物体类型 - MovingObjectType
MovingObjectType 是一个枚举类型,定义了系统支持的移动物体类型:
- AIRCRAFT: 航空器(飞机)
- SPECIAL_VEHICLE: 特勤车辆(不可控)
- UNMANNED_VEHICLE: 无人车(可控)
4. 数据流转机制
4.1 历史状态存储机制
每个 MovingObject 对象维护一个 stateHistory 队列,用于存储历史状态:
- 当对象位置或速度更新时,系统创建新的
MovementState对象 - 新的状态对象被添加到
stateHistory队列 - 如果队列长度超过
MAX_HISTORY(默认30),最旧的记录会被移除 - 历史记录用于轨迹分析、异常检测和预测计算
sequenceDiagram
participant 系统
participant MovingObject
participant stateHistory队列
系统->>MovingObject: 更新位置和速度
MovingObject->>MovingObject: 创建MovementState对象
MovingObject->>stateHistory队列: 添加新状态记录
alt 队列长度 > MAX_HISTORY
stateHistory队列->>stateHistory队列: 移除最旧记录
end