基于树莓派的流星雨监测系统(RMS)的搭建

简介: 该文介绍了基于树莓派的流星雨监测系统的改造系列,包括改造的第二和第三部分。作者分享了选用索尼IMX291 USB摄像头和大光圈镜头的设备选型,并提供了树莓派的固定及防反光处理方法。文章简化了RMS安装过程,强调了针对USB摄像头用户的安装步骤,通过创建venv、安装依赖库和脚本实现开机自动运行。此外,还调整了系统参数以适应城市光污染环境,并修改了监测时间以避免室内灯光干扰。



本系列第二篇文章:基于树莓派的流星雨监测系统(RMS)的进一步改造(1)_delacroix_xu的专栏-CSDN博客


本系列第三篇文章:基于树莓派的流星雨监测系统(RMS)的进一步改造(2)_delacroix_xu的专栏-CSDN博客


背景:

近期开始使用一个开源项目,在树莓派4B上玩耍。监测流星雨并存储下来。


GitHub - CroatianMeteorNetwork/RMS: RPi Meteor Station


但官方文档略显复杂,此文章比较适用于试用USB摄像头的用户。如果您使用IP cemera rtsp方式接入,则需要参照官方文档进行。


设备选型

按照官方建议,选择索尼IMX291作为基础的摄像头了,某宝搜索,可以看到很多。选择一个USB3.0接口的。不贵,大概200多RMB


接下来要选择镜头,某宝购买摄像头会自带一个广角镜头,一般是光圈不大的。建议再购买大光圈的镜头。比如F1.2或F1.0的黑光镜头。M12接口即可。


接下来要选择树莓派,官方推荐树莓派4b。原因是三个进程合起来要试用2GB左右的内存,树莓派3b已经无法满足需求。至少要树莓派4b。


第一步,树莓派固定在墙上。用3M双面胶


image.png


摄像头用透明胶固定在玻璃上


image.png


最后关键一步,需要用几张纸给改起来,免得有玻璃反光。都是经验所得。楼下汽车路过,会有强光,之前有透明胶附着在摄像头周边,透明胶反光,会被误认为是火流星。


image.png


RMS安装过程

官方文档略显复杂,这里简化一下,对于需要使用IP camera  rtsp方式推流的,可以使用 insall_opencv4.sh进行安装。 对于我,则可以简化,不需要编译opencv。


仅仅需要安装所需的 python库,就够了


第一步,创建venv


参考: 关于Python3中venv虚拟环境 - syncd - 博客园


第二步,激活venv


source /home/pi/your_venv/bin/activate


第三部,安装各种依赖库


python -m pip install xxxxxxx  


由于GFW的原因,访问python官方pypi比较慢,这里推荐aliyun的国内镜像。


参考: python pip 切换阿里云镜像 - 静静别跑 - 博客园


参照官方文档,安装各种库


numpy scipy gitpython cython matplotlib 等


安装好依赖库后,再安装 setup.py


python setup.py install


这样RMS作为一个库,被安装到venv下


运行

python -m RMS.StartCapture


写个脚本, 开机自动启动

#!/bin/sh
set -x
. /home/pi/py37env/bin/activate
cnt=`ps aux| grep python | grep StartCapture | wc -l`
if [ $cnt -eq 0 ];then
  rm -f 1.txt
  nohup python -m RMS.StartCapture 1>1.txt 2>&1 &
fi

加入crontab 自动运行


*/10 * * * * cd /home/pi/Desktop/RMS/RMS_new && sh start_by_cron.sh > start.log 2>&1


修改参数适配大城市光污染

配置文件在RMS根目录下,文件名叫 .config


vim编辑 .config


修改的diff如下:

; Enable/disable saving a live.jpg file in the data directory with the latest image
-live_jpg: false
+live_jpg: true
 ; Enable/disable showing a slideshow of last night's meteor detections on the screen during the day
 slideshow_enable: false
@@ -114,7 +117,7 @@ win_pc_weave: -Wall
 [Upload]
 ; Flag for enabling/disabling upload to server
-upload_enabled: true 
+upload_enabled: false
 ; Delay upload for the given number of minutes
 upload_delay: 0
 ; Server address
@@ -190,7 +193,7 @@ distance_threshold: 70
 ; Maximum allowed gap between points
 gap_threshold: 150 
 ; Minimum range of frames that a line should cover (eliminates flash detections)
-line_minimum_frame_range: 6 
+line_minimum_frame_range: 2 
 ; Constant that determines the influence of average point distance on the line quality
 line_distance_const: 4 
 ; Ratio of how many points must be close to the line before considering searching for another line
@@ -202,7 +205,7 @@ max_lines: 5
 [MeteorDetection]
 ; Minimum number of stars required in order to run the detection
-ff_min_stars = 20 
+ff_min_stars = 1 
 ; Binning (only supported for videos, images, and vid files, but no FF files!)
 ; -------
@@ -252,7 +255,7 @@ gap_threshold_det: 50
 ; Minimum number of pixels in a strip
 min_pixels_det: 10 
 ; Minimum number of frames per one detection
-line_minimum_frame_range_det: 4 
+line_minimum_frame_range_det: 2 
 ; Constant that determines the influence of average point distance on the line quality
 line_distance_const_det: 4 
 ; Maximum time in seconds for which line finding algorithm can run
@@ -279,7 +282,7 @@ ang_vel_max: 51.0 ; deg/s
 ; Filtering by intensity
 ; By default the peak of the meteor should be at least 16x brighter than the background. This is the 
 ; multiplier that scales this number (1.0 = 16x).
-min_patch_intensity_multiplier: 2.5
+min_patch_intensity_multiplier: 0.25

说明:


line_minimum_frame_range是一个过滤规则,流星轨迹至少要持续多少frame,这里从原来的6帧,改为2帧


ff_min_start是一个过滤规则,不能达到识别到20颗行,就不会执行流星检测逻辑。这里改为1,只要画面里识别到一颗星,就会进行流星监测。


line_minimum_frame_range_det:这个参数,也是一个过滤器,由4改为2,至少4帧改为至少2帧


min_path_intensity_multiplier:这个参数,也是一个过滤器,要求流星要比背景亮多少倍才算流星,否则就不算流星。这里从原来的2.5修改为0.25。原因是大城市光污染大,背景比较亮


监测时间的修改

监测时间改为晚上11点以后,等屋子的等确定不亮了再开始。否则会引来很多飞虫,飞虫的轨迹,会被误判为火流星。



相关文章
|
6月前
|
存储 缓存 人工智能
重构高端存储新范式-RDMA+NVMe-oF
`sendfile` 是 Linux 系统中用于高效传输数据的系统调用,支持文件到网络套接字的零拷贝传输,减少 CPU 和内存的开销。它通过建立两个文件描述符之间的传输通道,避免了传统 `read/write` 或 `mmap/write` 方式中的多次数据拷贝和上下文切换。文章探讨了 `sendfile` 的实现原理、性能优势及其在不同存储设备(如 SSD 和 NVMe)下的应用挑战,同时分析了 DMA 技术在数据传输中的作用及限制。此外,还介绍了 NVMe 和 RDMA 等新技术对网络存储架构的影响,展示了现代高性能存储与网络的深度融合趋势。
292 0
|
JavaScript 前端开发 Python
PIP常用命令-No module named ‘lxml‘
PIP常用命令-No module named ‘lxml‘
337 0
|
10月前
|
数据采集 自然语言处理 JavaScript
Playwright多语言生态:跨Python/Java/.NET的统一采集方案
随着数据采集需求的增加,传统爬虫工具如Selenium、Jsoup等因语言割裂、JS渲染困难及代理兼容性差等问题,难以满足现代网站抓取需求。微软推出的Playwright框架,凭借多语言支持(Python/Java/.NET/Node.js)、统一API接口和优异的JS兼容性,解决了跨语言协作、动态页面解析和身份伪装等痛点。其性能优于Selenium与Puppeteer,在学术数据库(如Scopus)抓取中表现出色。行业应用广泛,涵盖高校科研、大型数据公司及AI初创团队,助力构建高效稳定的爬虫系统。
614 2
Playwright多语言生态:跨Python/Java/.NET的统一采集方案
|
监控 Linux Python
python自研流星监控系统meteor_monitor(第二篇)
该文介绍了替代流星监控软件UFOcaptureHD2的新方案,强调了原软件的性能消耗大和收费问题。文中提供了一个GitHub链接以获取最新代码。推荐使用配备Windows 10/11、2.4GHz四核CPU的主机,搭配索尼MX291摄像头进行监控。程序基于ffmpeg,支持不同编码器,如mjpeg、h264_qsv等,具体编码器选择取决于硬件环境。安装涉及创建虚拟环境、安装Python 3.10+及依赖项,并提供了Windows和Linux的详细步骤。此外,程序通过帧差法进行运动检测,然后过滤掉非流星目标,最后使用ffmpeg对原始视频切片并存储。
python自研流星监控系统meteor_monitor(第二篇)
|
11月前
|
开发者 容器
小白必看 HarmonyOS Next HMRouter 轻松上手秘籍
本文详细介绍了HarmonyOS页面跳转解决方案——HMRouter的使用方法,帮助开发者快速上手。HMRouter封装了系统Navigation能力,提供路由拦截、页面生命周期管理、自定义转场动画等功能,简化开发流程。文章通过具体示例讲解模块内及跨模块页面跳转、路由传参、自定义动画、拦截器和生命周期管理等核心功能。同时,提供了丰富的资源链接,包括接口文档、高级动画教程和常见问题解答,适合初学者系统学习HMRouter的使用与原理。
790 9
小白必看 HarmonyOS Next HMRouter 轻松上手秘籍
|
Python
实例3:树莓派呼吸灯
本文是一个关于树莓派制作呼吸灯的实验教程,介绍了PWM(脉冲宽度调制)技术的原理和应用,详细讲解了如何通过RPi.GPIO库使用Python编程控制LED灯实现呼吸效果,包括实验目的、要求、相关知识点和完整的实验步骤。
374 1
实例3:树莓派呼吸灯
|
设计模式 JavaScript 前端开发
Vue之Mixin【一种代码重用机制】
Vue之Mixin【一种代码重用机制】
296 0
|
小程序 前端开发 开发者
TDesign电商小程序模板解析01-自定义底部导航栏
TDesign电商小程序模板解析01-自定义底部导航栏
|
编解码 固态存储 数据挖掘
通俗解读人脸检测框架-RetinaFace
通俗解读人脸检测框架-RetinaFace
617 2