| config | ||
| docs | ||
| scripts | ||
| src | ||
| tests | ||
| tools | ||
| .clang-format | ||
| .clangd | ||
| .cursorignore | ||
| .cursorrules | ||
| .gitignore | ||
| CMakeLists.txt | ||
| compile_commands.json | ||
| README.md | ||
机场地面碰撞预警系统(测试平台)
项目简介
该系统用于监测和预警机场地面航空器与车辆之间的潜在碰撞风险。通过实时采集和分析位置数据,为机场运营提供安全保障。 本系统运行在机场测试平台中,用于测试和验证碰撞预警系统的功能可行性。
功能特性
- 实时数据采集:获取航空器和车辆的位置信息
- 碰撞风险检测:基于安全距离进行碰撞风险评估
- 运动参数计算:自动计算速度和航向信息
- 坐标转换:支持地理坐标和平面坐标转换
- 日志记录:详细的运行日志和警告信息
系统架构
- 数据采集模块:从数据源获取位置信息
- 碰撞检测模块:分析潜在的碰撞风险
- 坐标转换模块:处理不同坐标系统
- 核心数据类型:定义基础的数据结构
- 性能测试模块:使用 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
服务默认监听:
- HTTP 服务:http://localhost:8081
模拟场景
- 航空器:T7 -> T11,到达后返回起点
- 无人车1 (QN001):T1 -> T2 -> T4,到达后返回起点
- 无人车2 (QN002):T12 -> T8,到达后返回起点
- 特勤车 (TQ001):T4 -> T2 -> T3,到达后返回起点
红绿灯控制
- 西路口 (TL001):每10秒切换一次
- 东路口 (TL002):根据航空器位置自动控制
车辆控制指令优先级
- ALERT (5) - 告警指令
- RED (4) - 红灯指令
- WARNING (3) - 预警指令
- GREEN (2) - 绿灯状态
- RESUME (1) - 恢复指令