meteor_detect/docs/design.md
2025-03-16 21:32:43 +08:00

173 lines
5.4 KiB
Markdown
Raw Permalink 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.

# 流星监控系统 - 设计文档
## 系统架构概述
流星监控系统是一个基于树莓派的嵌入式系统,专为实时监测和记录流星事件而设计。系统采用模块化设计,各组件间通过明确的接口进行通信,保证系统的可扩展性和可维护性。
## 系统架构图
```
+------------------------------------------+
| 应用层 (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. **安全默认值**: 默认配置优先考虑安全性