Go to file
2025-01-14 11:21:52 +08:00
config 修改了位置接口和日志级别控制 2024-12-27 15:56:09 +08:00
docs 红绿灯信号,增加了黄灯 2025-01-14 11:21:52 +08:00
scripts 修改 mock_server.py 和 HTTPDataSource.cpp 文件,匹配机场位置接口 2024-12-31 18:28:06 +08:00
src 红绿灯信号,增加了黄灯 2025-01-14 11:21:52 +08:00
tests 修改了无人车的控制 API 2025-01-10 11:56:30 +08:00
tools 修改了无人车的控制 API 2025-01-10 11:56:30 +08:00
.clangd 初步建立了一个框架,并添加了HTTP数据源和一个模拟服务器 2024-11-13 19:05:55 +08:00
.cursorignore 更新依赖库到最新版本,C++ 标准升级到 C++20 2024-11-17 01:37:34 +08:00
.cursorrules 修改碰撞逻辑以圆形为基础 2024-12-14 17:32:24 +08:00
.gitignore 将 C++版本 改为 17 2024-12-20 12:41:33 +08:00
CMakeLists.txt 增加了用户认证接口 2024-12-24 09:58:56 +08:00
compile_commands.json 初步建立了一个框架,并添加了HTTP数据源和一个模拟服务器 2024-11-13 19:05:55 +08:00
README.md 修改文档 2024-12-30 09:41:17 +08:00

机场地面碰撞预警系统

项目简介

该系统用于监测和预警机场地面航空器与车辆之间的潜在碰撞风险。通过实时采集和分析位置数据,为机场运营提供安全保障。

功能特性

  • 实时数据采集:获取航空器和车辆的位置信息
  • 碰撞风险检测:基于安全距离进行碰撞风险评估
  • 运动参数计算:自动计算速度和航向信息
  • 坐标转换:支持地理坐标和平面坐标转换
  • 日志记录:详细的运行日志和警告信息

系统架构

  • 数据采集模块:从数据源获取位置信息
  • 碰撞检测模块:分析潜在的碰撞风险
  • 坐标转换模块:处理不同坐标系统
  • 核心数据类型:定义基础的数据结构
  • 性能测试模块:使用 Google Benchmark 进行性能评估

开发环境

  • C++17
  • CMake 3.14+
  • Boost 1.86.0
  • nlohmann_json 3.11.3
  • Google Test
  • Google Mock
  • Google Benchmark

构建说明

# 创建构建目录
mkdir build && cd build

# 配置项目(启用测试)
cmake -DBUILD_TESTING=ON ..

# 编译
cmake --build .

# 运行单元测试
ctest --output-on-failure

# 运行性能测试
./bin/benchmark_tests

测试框架

  • 单元测试:使用 Google Test 框架
  • Mock 测试:使用 Google Mock 进行模拟
  • 性能测试:使用 Google Benchmark
  • 测试覆盖:
    • 基础数据类型
    • 碰撞检测逻辑
    • 数据采集功能
    • HTTP 数据源
    • 性能基准测试

目录结构

graph TD
    A[CollisionAvoidance] --> B[src]
    A --> C[tests]
    A --> D[tools]
    A --> E[docs]
    A --> F[build]
    A --> G[benchmarks]
    
    B --> BA[collector]
    B --> BB[detector]
    B --> BC[network]
    B --> BD[spatial]
    B --> BE[types]
    B --> BF[utils]
    B --> BG[core]
    
    BA --> BAA[DataCollector.h/cpp]
    BA --> BAB[DataSource.h]
    
    BB --> BBA[CollisionDetector.h/cpp]
    
    BC --> BCA[HTTPDataSource.h/cpp]
    BC --> BCB[ConnectionConfig.h]
    
    BD --> BDA[CoordinateConverter.h/cpp]
    
    BE --> BEA[BasicTypes.h/cpp]
    
    BF --> BFA[Logger.h/cpp]
    
    BG --> BGA[System.h/cpp]
    
    C --> CA[BasicTypesTest.cpp]
    C --> CB[CollisionDetectorTest.cpp]
    C --> CC[DataCollectorTest.cpp]
    C --> CD[HTTPDataSourceTest.cpp]
    
    G --> GA[CollisionDetectorBenchmark.cpp]
    G --> GB[CoordinateConverterBenchmark.cpp]
    
    D --> DA[mock_server.py]

依赖管理

项目使用 CMake 的 FetchContent 模块管理第三方依赖:

include(FetchContent)

FetchContent_Declare(
    json
    URL https://github.com/nlohmann/json/releases/download/v3.11.3/json.tar.xz
)
FetchContent_MakeAvailable(json)

配置说明

  • 数据源配置:

    • 主机localhost
    • 端口8081
    • API路径
      • /api/getCurrentFlightPositions
      • /api/getCurrentVehiclePositions
  • 安全参数:

    • 水平安全距离50米
    • 垂直安全距离50米
    • 最大速度限制:
      • 航空器100米/秒
      • 车辆30米/秒

开发团队

  • 项目负责人:[田建勇]
  • 开发人员:[赵豪、陈横、刘青宇]

许可证

[License Type]

版本历史

  • v1.1.0 (2024-03-20)

    • 添加 Google Benchmark 性能测试
    • 升级 CMake 最低版本至 3.14
    • 规范化第三方库版本管理
    • 添加 FetchContent 依赖管理
  • v1.0.0 (2024-11-15)

    • 初始版本发布
    • 基本功能实现
    • 单元测试框架搭建

Mock 服务

用于模拟机场场面的移动物体(航空器和车辆),提供以下功能:

  • 航空器位置更新
  • 车辆位置更新
  • 红绿灯状态更新
  • 车辆控制指令响应

API 接口

  • GET /api/getCurrentFlightPositions - 获取航空器位置
  • GET /api/getCurrentVehiclePositions - 获取车辆位置
  • GET /api/getTrafficLightSignals - 获取红绿灯状态
  • POST /api/vehicle/command - 发送车辆控制指令

运行方式

cd tools
python mock_server.py

服务默认监听:

模拟场景

  • 航空器T7 -> T11到达后返回起点
  • 无人车1 (QN001)T1 -> T2 -> T4到达后返回起点
  • 无人车2 (QN002)T12 -> T8到达后返回起点
  • 特勤车 (TQ001)T4 -> T2 -> T3到达后返回起点

红绿灯控制

  • 西路口 (TL001)每10秒切换一次
  • 东路口 (TL002):根据航空器位置自动控制

车辆控制指令优先级

  1. ALERT (5) - 告警指令
  2. RED (4) - 红灯指令
  3. WARNING (3) - 预警指令
  4. GREEN (2) - 绿灯状态
  5. RESUME (1) - 恢复指令