基于树莓派的流星雨监测系统(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点以后,等屋子的等确定不亮了再开始。否则会引来很多飞虫,飞虫的轨迹,会被误判为火流星。



相关文章
|
JavaScript 前端开发 Python
PIP常用命令-No module named ‘lxml‘
PIP常用命令-No module named ‘lxml‘
307 0
|
监控 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(第二篇)
|
8月前
|
数据采集 自然语言处理 JavaScript
Playwright多语言生态:跨Python/Java/.NET的统一采集方案
随着数据采集需求的增加,传统爬虫工具如Selenium、Jsoup等因语言割裂、JS渲染困难及代理兼容性差等问题,难以满足现代网站抓取需求。微软推出的Playwright框架,凭借多语言支持(Python/Java/.NET/Node.js)、统一API接口和优异的JS兼容性,解决了跨语言协作、动态页面解析和身份伪装等痛点。其性能优于Selenium与Puppeteer,在学术数据库(如Scopus)抓取中表现出色。行业应用广泛,涵盖高校科研、大型数据公司及AI初创团队,助力构建高效稳定的爬虫系统。
472 2
Playwright多语言生态:跨Python/Java/.NET的统一采集方案
|
Python
实例3:树莓派呼吸灯
本文是一个关于树莓派制作呼吸灯的实验教程,介绍了PWM(脉冲宽度调制)技术的原理和应用,详细讲解了如何通过RPi.GPIO库使用Python编程控制LED灯实现呼吸效果,包括实验目的、要求、相关知识点和完整的实验步骤。
302 1
实例3:树莓派呼吸灯
|
数据可视化 前端开发 JavaScript
Java中的数据可视化与图表库选择
Java中的数据可视化与图表库选择
基于树莓派的流星雨监测系统(RMS)——一些收货
该文是一个关于流星雨监测系统的系列文章汇总,包括搭建和改造两个部分,详细链接已提供。作者在英仙座流星雨期间使用该系统,捕捉到了几颗流星,并分享了因亮度不足未被程序识别的事件。此外,作者还发现了短暂而超级亮的未知闪光现象,怀疑可能是奇特天文事件,但无法解释,期望得到天文爱好者的帮助。文章附有多张闪光和普通流星的图片作为对比。
|
监控 算法 调度
asyncio的使用和原理
【5月更文挑战第6天】探索Python的asyncio模块:异步编程基础与实践。asyncio提供事件循环和协程,实现非阻塞I/O,提升并发性能。本文涵盖异步编程概念、async/await关键字、事件循环原理,通过示例展示并发任务处理,并讨论优化策略、挑战与未来趋势。学习asyncio,优化你的Python应用程序。
|
Ubuntu C语言
【Ubuntu20.04】安装gcc11 g++11, Ubuntu18.04
以上就是在Ubuntu 20.04和Ubuntu 18.04上安装gcc11和g++11的步骤。
2666 0
|
存储 网络安全 数据安全/隐私保护
【专栏】Python 网络设备管理中,`ConnectHandler`(Paramiko库)和`telnetlib`模块常用于设备交互。
【4月更文挑战第28天】Python 网络设备管理中,`ConnectHandler`(Paramiko库)和`telnetlib`模块常用于设备交互。`ConnectHandler`简化SSH连接,便于与网络设备交互,而`telnetlib`是Python内置模块,支持Telnet协议的远程登录操作。两者都提供命令执行和响应接收功能。示例代码展示了如何使用它们获取防火墙设备的版本信息,降低了代码复杂度,提高了可读性和维护性。
478 0
|
小程序 前端开发 开发者
TDesign电商小程序模板解析01-自定义底部导航栏
TDesign电商小程序模板解析01-自定义底部导航栏