2025-05-03 22:30:48 +08:00
2025-04-05 23:37:03 +08:00
2025-04-22 01:46:51 +08:00
2025-04-05 01:04:52 +08:00

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

快速开始

安装依赖

使用我们的安装脚本一键安装所有依赖:

./build.sh setup

或手动安装:

# 安装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

编译项目

# 调试版本
./build.sh build

# 发布版本(优化性能)
./build.sh build-release

配置系统

# 创建默认配置
./build.sh create-config

# 编辑配置文件
nano ~/.config/meteor_detect/config.toml

运行系统

# 使用构建脚本
./build.sh run

# 或直接运行
cargo run --release

运行演示程序

系统包含多个演示程序,用于测试特定功能:

# 运行摄像头演示
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.tomlconfig-file-input.toml文件。

文件输入模式

系统支持使用预先录制的视频文件代替实时摄像头,便于开发和测试:

[camera]
# 启用文件输入模式
file_input_mode = true
# 视频文件路径
input_file_path = "/path/to/your/starsky_video.mp4"
# 是否循环播放视频
loop_video = true

更多信息请参阅文件输入模式文档

星图解算功能

系统可以使用astrometry.net工具自动识别和解算当前画面中的星星显示星图叠加层

[star_chart]
# 启用星图叠加
enabled = true
# astrometry.net工具路径
solve_field_path = "/usr/local/bin/solve-field"
# 更新频率(秒)
update_frequency = 30.0

更多信息请参阅星图功能文档

开发指南

  • 使用cargo test运行测试
  • 使用./build.sh clean清理构建文件
  • 查看设计文档了解系统架构
  • 使用文件输入模式进行开发和测试

许可证

MIT License

Description
No description provided
Readme 432 MiB
Languages
Rust 98.7%
Shell 1.3%