# 流星监控系统 (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