197 lines
5.6 KiB
Markdown
197 lines
5.6 KiB
Markdown
# 流星监控系统 (Meteor Detection System)
|
||
|
||
一个基于树莓派的实时流星监测系统,使用星光级摄像头进行捕获和分析。
|
||
|
||
## 功能特点
|
||
|
||
- **实时视频捕获**:支持星光级摄像头,可动态调整参数
|
||
- **视频文件输入**:支持使用预先录制的视频文件进行测试和开发
|
||
- **自动流星检测**:使用计算机视觉算法分析视频帧
|
||
- **星图自动解算**:使用astrometry.net实时计算当前视野中的星图
|
||
- **GPS时间与位置同步**:提供精确的事件元数据
|
||
- **本地环形缓存存储**:持续记录最近视频
|
||
- **检测事件云端上传**:包含元数据的事件片段上传
|
||
- **远程控制接口**:通过REST API和MQTT协议
|
||
- **系统健康监控**:自动恢复和故障处理
|
||
|
||
## 项目结构
|
||
|
||
```
|
||
meteor_detect/
|
||
├── src/
|
||
│ ├── camera/ # 摄像头控制与视频采集
|
||
│ │ ├── controller.rs # 摄像头控制器
|
||
│ │ ├── frame_buffer.rs # 视频帧缓冲区
|
||
│ │ └── opencv.rs # OpenCV摄像头驱动
|
||
│ ├── gps/ # GPS和时间同步
|
||
│ │ ├── controller.rs # GPS控制器
|
||
│ │ └── nmea.rs # NMEA解析器
|
||
│ ├── sensors/ # 环境传感器
|
||
│ │ ├── controller.rs # 传感器控制器
|
||
│ │ └── dht22.rs # 温湿度传感器驱动
|
||
│ ├── detection/ # 流星检测算法
|
||
│ ├── overlay/ # 视频叠加层
|
||
│ │ ├── watermark.rs # 水印叠加
|
||
│ │ └── star_chart.rs # 星图叠加
|
||
│ ├── storage/ # 数据存储管理
|
||
│ ├── communication/ # 通信与远程控制
|
||
│ ├── monitoring/ # 系统监控
|
||
│ ├── config.rs # 配置管理
|
||
│ └── main.rs # 应用程序入口
|
||
├── demos/ # 演示程序
|
||
│ ├── camera_demo.rs # 摄像头演示
|
||
│ ├── watermark_demo.rs # 水印叠加演示
|
||
│ └── file_input_demo.rs # 文件输入演示
|
||
├── docs/ # 文档
|
||
│ ├── design.md # 设计文档
|
||
│ ├── star_chart.md # 星图功能文档
|
||
│ └── file_input.md # 文件输入模式文档
|
||
├── Cargo.toml # 项目配置与依赖
|
||
├── config-example.toml # 配置文件示例
|
||
├── config-file-input.toml # 文件输入模式配置示例
|
||
├── build.sh # 构建脚本
|
||
└── README.md # 项目文档
|
||
```
|
||
|
||
## 硬件要求
|
||
|
||
- **树莓派**:3B+/4B/5 (推荐)
|
||
- **星光级摄像头**:支持IMX477/IMX462传感器
|
||
- **GPS模块**:支持PPS信号输出(精确授时)
|
||
- **可选传感器**:温湿度(DHT22)、光敏传感器
|
||
- **存储**:32GB+高速microSD卡
|
||
|
||
## 软件依赖
|
||
|
||
- **Rust 1.70+** (2021 edition)
|
||
- **OpenCV 4.x**
|
||
- **Astrometry.net** 星图解算工具
|
||
- **V4L2** 摄像头工具
|
||
- **SQLite 3**
|
||
|
||
## 快速开始
|
||
|
||
### 安装依赖
|
||
|
||
使用我们的安装脚本一键安装所有依赖:
|
||
|
||
```bash
|
||
./build.sh setup
|
||
```
|
||
|
||
或手动安装:
|
||
|
||
```bash
|
||
# 安装Rust
|
||
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
|
||
|
||
# 安装系统依赖
|
||
sudo apt update
|
||
sudo apt install -y git curl build-essential pkg-config \
|
||
libssl-dev libv4l-dev v4l-utils \
|
||
libopencv-dev libsqlite3-dev \
|
||
astrometry.net astrometry-data-tycho2
|
||
```
|
||
|
||
### 编译项目
|
||
|
||
```bash
|
||
# 调试版本
|
||
./build.sh build
|
||
|
||
# 发布版本(优化性能)
|
||
./build.sh build-release
|
||
```
|
||
|
||
### 配置系统
|
||
|
||
```bash
|
||
# 创建默认配置
|
||
./build.sh create-config
|
||
|
||
# 编辑配置文件
|
||
nano ~/.config/meteor_detect/config.toml
|
||
```
|
||
|
||
### 运行系统
|
||
|
||
```bash
|
||
# 使用构建脚本
|
||
./build.sh run
|
||
|
||
# 或直接运行
|
||
cargo run --release
|
||
```
|
||
|
||
### 运行演示程序
|
||
|
||
系统包含多个演示程序,用于测试特定功能:
|
||
|
||
```bash
|
||
# 运行摄像头演示
|
||
cargo run --bin camera_demo
|
||
|
||
# 运行水印叠加演示
|
||
cargo run --bin watermark_demo
|
||
|
||
# 运行文件输入演示(使用视频文件代替摄像头)
|
||
cargo run --bin file_input_demo
|
||
```
|
||
|
||
## 配置选项
|
||
|
||
配置文件位于`~/.config/meteor_detect/config.toml`,包含以下主要配置项:
|
||
|
||
- **摄像头参数**:分辨率、曝光、增益
|
||
- **文件输入设置**:启用文件输入模式、视频文件路径
|
||
- **星图解算**:astrometry.net路径、更新频率、显示选项
|
||
- **GPS设置**:端口、波特率、PPS配置
|
||
- **检测参数**:灵敏度、触发阈值
|
||
- **存储策略**:保留时间、压缩设置
|
||
- **通信选项**:MQTT服务器、API配置
|
||
|
||
详细配置示例请参考`config-example.toml`和`config-file-input.toml`文件。
|
||
|
||
## 文件输入模式
|
||
|
||
系统支持使用预先录制的视频文件代替实时摄像头,便于开发和测试:
|
||
|
||
```toml
|
||
[camera]
|
||
# 启用文件输入模式
|
||
file_input_mode = true
|
||
# 视频文件路径
|
||
input_file_path = "/path/to/your/starsky_video.mp4"
|
||
# 是否循环播放视频
|
||
loop_video = true
|
||
```
|
||
|
||
更多信息请参阅[文件输入模式文档](docs/file_input.md)。
|
||
|
||
## 星图解算功能
|
||
|
||
系统可以使用astrometry.net工具自动识别和解算当前画面中的星星,显示星图叠加层:
|
||
|
||
```toml
|
||
[star_chart]
|
||
# 启用星图叠加
|
||
enabled = true
|
||
# astrometry.net工具路径
|
||
solve_field_path = "/usr/local/bin/solve-field"
|
||
# 更新频率(秒)
|
||
update_frequency = 30.0
|
||
```
|
||
|
||
更多信息请参阅[星图功能文档](docs/star_chart.md)。
|
||
|
||
## 开发指南
|
||
|
||
- 使用`cargo test`运行测试
|
||
- 使用`./build.sh clean`清理构建文件
|
||
- 查看[设计文档](docs/design.md)了解系统架构
|
||
- 使用[文件输入模式](docs/file_input.md)进行开发和测试
|
||
|
||
## 许可证
|
||
|
||
MIT License
|