CollisionAvoidance/README.md

209 lines
4.6 KiB
Markdown
Raw 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.

# 机场地面碰撞预警系统(测试平台)
## 项目简介
该系统用于监测和预警机场地面航空器与车辆之间的潜在碰撞风险。通过实时采集和分析位置数据,为机场运营提供安全保障。
本系统运行在机场测试平台中,用于测试和验证碰撞预警系统的功能可行性。
## 功能特性
- 实时数据采集:获取航空器和车辆的位置信息
- 碰撞风险检测:基于安全距离进行碰撞风险评估
- 运动参数计算:自动计算速度和航向信息
- 坐标转换:支持地理坐标和平面坐标转换
- 日志记录:详细的运行日志和警告信息
## 系统架构
- 数据采集模块:从数据源获取位置信息
- 碰撞检测模块:分析潜在的碰撞风险
- 坐标转换模块:处理不同坐标系统
- 核心数据类型:定义基础的数据结构
- 性能测试模块:使用 Google Benchmark 进行性能评估
## 开发环境
- C++17
- CMake 3.14+
- Boost 1.86.0
- nlohmann_json 3.11.3
- Google Test
- Google Mock
- Google Benchmark
## 构建说明
```bash
# 创建构建目录
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 数据源
- 性能基准测试
## 目录结构
```mermaid
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 模块管理第三方依赖:
```cmake
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 - 发送车辆控制指令
### 运行方式
```bash
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):根据航空器位置自动控制
### 车辆控制指令优先级
1. ALERT (5) - 告警指令
2. RED (4) - 红灯指令
3. WARNING (3) - 预警指令
4. GREEN (2) - 绿灯状态
5. RESUME (1) - 恢复指令