CollisionAvoidanceSystem/doc/design_document.md

5.6 KiB
Raw Blame History

碰撞避免系统数据结构设计文档

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 队列,用于存储历史状态:

  1. 当对象位置或速度更新时,系统创建新的 MovementState 对象
  2. 新的状态对象被添加到 stateHistory 队列
  3. 如果队列长度超过 MAX_HISTORY默认30最旧的记录会被移除
  4. 历史记录用于轨迹分析、异常检测和预测计算
sequenceDiagram
    participant 系统
    participant MovingObject
    participant stateHistory队列
    
    系统->>MovingObject: 更新位置和速度
    MovingObject->>MovingObject: 创建MovementState对象
    MovingObject->>stateHistory队列: 添加新状态记录
    
    alt 队列长度 > MAX_HISTORY
        stateHistory队列->>stateHistory队列: 移除最旧记录
    end