173 lines
5.4 KiB
Markdown
173 lines
5.4 KiB
Markdown
# 流星监控系统 - 设计文档
|
||
|
||
## 系统架构概述
|
||
|
||
流星监控系统是一个基于树莓派的嵌入式系统,专为实时监测和记录流星事件而设计。系统采用模块化设计,各组件间通过明确的接口进行通信,保证系统的可扩展性和可维护性。
|
||
|
||
## 系统架构图
|
||
|
||
```
|
||
+------------------------------------------+
|
||
| 应用层 (Application) |
|
||
+------------------------------------------+
|
||
| | | |
|
||
v v v v
|
||
+------------+ +------------+ +-----------+ +-----------+
|
||
| 检测算法模块 | | 数据存储模块 | | 通信模块 | | 监控模块 |
|
||
+------------+ +------------+ +-----------+ +-----------+
|
||
| | | |
|
||
v v v v
|
||
+------------------------------------------+
|
||
| 硬件抽象层 (HAL) |
|
||
+------------------------------------------+
|
||
| | | |
|
||
v v v v
|
||
+------------+ +------------+ +-----------+
|
||
| 摄像头控制 | | GPS模块 | | 传感器模块 |
|
||
+------------+ +------------+ +-----------+
|
||
| | |
|
||
v v v
|
||
+------------------------------------------+
|
||
| 硬件 (Hardware) |
|
||
+------------------------------------------+
|
||
```
|
||
|
||
## 模块详细说明
|
||
|
||
### 1. 硬件抽象层 (HAL)
|
||
|
||
#### 1.1 摄像头模块 (Camera)
|
||
|
||
摄像头模块负责与星光级摄像头进行交互,提供以下功能:
|
||
|
||
- 摄像头初始化与参数设置
|
||
- 视频流采集与帧缓存管理
|
||
- 视频质量控制与自动参数调整
|
||
|
||
主要组件:
|
||
- `CameraController`: 摄像头控制器,管理摄像头生命周期和操作
|
||
- `FrameBuffer`: 帧缓冲区,管理环形视频缓存
|
||
- `V4L2Driver`: 底层摄像头驱动,通过V4L2与硬件交互
|
||
|
||
#### 1.2 GPS模块 (GPS)
|
||
|
||
GPS模块负责获取精确的时间和位置信息:
|
||
|
||
- NMEA数据解析
|
||
- PPS信号处理提供精确授时
|
||
- 摄像头指向信息存储
|
||
|
||
主要组件:
|
||
- `GpsController`: GPS控制器,管理GPS设备和数据处理
|
||
- `NmeaParser`: NMEA协议解析器,解析GPS原始数据
|
||
|
||
#### 1.3 传感器模块 (Sensors)
|
||
|
||
传感器模块负责采集环境数据:
|
||
|
||
- 温湿度信息采集
|
||
- 光照强度测量
|
||
- 传感器数据同步与缓存
|
||
|
||
主要组件:
|
||
- `SensorController`: 传感器控制器,统一管理各类传感器
|
||
- `Dht22Sensor`: DHT22温湿度传感器驱动
|
||
- `LightSensor`: 光照强度传感器(基于摄像头或独立传感器)
|
||
|
||
### 2. 应用层 (Application)
|
||
|
||
#### 2.1 检测算法模块 (Detection)
|
||
|
||
基于计算机视觉的流星检测算法:
|
||
|
||
- 背景建模与帧差分析
|
||
- 亮度变化检测
|
||
- 运动轨迹提取与分析
|
||
- 事件触发与分类
|
||
|
||
主要组件:
|
||
- `DetectionPipeline`: 检测流水线,协调检测过程
|
||
- `BackgroundSubtractionDetector`: 基于背景差分的检测器
|
||
- `MeteorTracker`: 流星轨迹跟踪器
|
||
|
||
#### 2.2 数据存储模块 (Storage)
|
||
|
||
管理本地和远程数据存储:
|
||
|
||
- 原始视频环形缓存
|
||
- 事件视频片段存储
|
||
- 元数据管理与数据库操作
|
||
- 存储空间管理与清理
|
||
|
||
主要组件:
|
||
- `StorageManager`: 存储管理器,协调各种存储操作
|
||
|
||
#### 2.3 通信模块 (Communication)
|
||
|
||
提供远程控制和数据传输功能:
|
||
|
||
- MQTT事件发布与订阅
|
||
- HTTP REST API接口
|
||
- 远程配置与状态查询
|
||
|
||
主要组件:
|
||
- `CommunicationManager`: 通信管理器,协调各种通信方式
|
||
|
||
#### 2.4 系统监控模块 (Monitoring)
|
||
|
||
监控系统健康状态和资源使用:
|
||
|
||
- CPU/内存/存储监控
|
||
- 温度监控与过热保护
|
||
- 日志管理与错误报告
|
||
- 故障自愈机制
|
||
|
||
主要组件:
|
||
- `SystemMonitor`: 系统监控器,收集和分析系统状态
|
||
|
||
### 3. 配置管理 (Configuration)
|
||
|
||
统一的配置管理系统:
|
||
|
||
- 基于TOML的配置文件
|
||
- 配置验证与默认值处理
|
||
- 运行时配置更新
|
||
|
||
主要组件:
|
||
- `Config`: 配置结构体,包含所有系统配置
|
||
|
||
## 数据流
|
||
|
||
1. **采集流**: 摄像头 -> 帧缓冲区 -> 检测算法 -> 事件检测
|
||
2. **存储流**: 事件检测 -> 视频片段提取 -> 本地存储 -> 云端上传
|
||
3. **通知流**: 事件检测 -> MQTT发布 -> 云端服务/移动应用
|
||
4. **控制流**: REST API -> 配置更新 -> 各模块应用配置
|
||
|
||
## 错误处理与恢复策略
|
||
|
||
1. **分层错误处理**: 每个模块内部处理自身错误,不影响系统整体运行
|
||
2. **优雅降级**: 核心功能优先保证,次要功能在资源受限时自动降级
|
||
3. **自动重启**: 关键组件故障时自动重启
|
||
4. **故障隔离**: 组件间通过消息传递通信,避免故障传播
|
||
|
||
## 性能考量
|
||
|
||
1. **实时性**: 检测流水线延迟控制在100ms以内
|
||
2. **资源使用**: 针对树莓派有限资源优化,控制内存和CPU使用
|
||
3. **存储效率**: 自动管理存储空间,防止磁盘占满
|
||
4. **功耗控制**: 根据电源状态调整性能和功能
|
||
|
||
## 扩展性
|
||
|
||
1. **模块化设计**: 各功能模块可独立更新和替换
|
||
2. **插件架构**: 检测算法支持插件式扩展
|
||
3. **配置驱动**: 大部分功能通过配置启用/禁用,无需修改代码
|
||
4. **API优先**: 所有功能都通过内部API访问,便于扩展
|
||
|
||
## 安全性考虑
|
||
|
||
1. **通信加密**: 所有外部通信使用TLS加密
|
||
2. **访问控制**: API访问需要认证和授权
|
||
3. **固件签名**: 系统更新包通过数字签名验证
|
||
4. **安全默认值**: 默认配置优先考虑安全性
|