Giter Club home page Giter Club logo

rms's Introduction

RPi Meteor Station

Open source powered meteor station. We are currently using the Raspberry Pi 4 as the main development platform, and we use digital IP cameras. The code also works on Linux PCs, and everything but the detection works under Windows. We are slowly phasing out the support for analog cameras, but they should work well regardless. The software is still in the development phase, but here are the current features:

  1. Automated video capture - start at dusk, stop at dawn. IP cameras with resolution of up to 720p supported on the Pi 3 and 4, and up to 1080p on Linux PCs.
  2. Compressing 256-frame blocks into the Four-frame Temporal Pixel (FTP) format (see Jenniskens et al., 2011 CAMS paper for more info).
  3. Detecting bright fireballs in real time
  4. Detecting meteors on FTP compressed files
  5. Extracting stars from FTP compressed files
  6. Astrometry and photometry calibration
  7. Automatic recalibration of astrometry every night
  8. Automatic upload of calibrated detections to central server
  9. Manual reduction of fireballs/meteors

Please see our website for more info: https://globalmeteornetwork.org/ We are also selling Plug And Play meteor systems which run this code!

Finally, if you decide to build one system from scratch, we strongly encourage you to look at our Wiki page.

Table of Contents

  1. Requirements
  2. Setting Up
  3. Running the Code
  4. Citations

Requirements

This guide will assume basic knowledge of electronics, the Unix environment, and some minor experience with the Raspberry Pi platform itself.

Hardware

RPi control box

  1. Raspberry Pi 4 single-board computer.

  2. Class 10 microSD card, 64GB or higher. The recorded data takes up a lot of space, as much as several gigabytes per night. To be able to store at least one week of data on the system, a 64GB SD card is the minimum.

  3. 5V power supply for the RPi with the maximum current of at least 2.5A. The RPi will have to power the video digitizer, and sometimes run at almost 100% CPU utilization, which draws a lot of power. We recommend using the official RPi 5V/2.5A power supply. Remember, most of the issues people have with RPis are caused by a power supply that is not powerful enough.

  4. RPi case with a fan + heatsinks. You will need to use a RPi case with a fan, as the software will likely utilize the CPU close to 100% at some time during the night. Be careful to buy a case with a fan which will not interfere with the Real Time Clock module. We recommend buying a case which allows the fan to be mounted on the outside of the case.

  5. Real Time Clock module The RPi itself does not have a battery, so every time you turn it off, it loses the current time. The time then needs to be fetched from the Internet. If for some reason you do not have access to the Internet, or you network connection is down, it is a good idea to have the correct time as it is essential for meteor trajectory estimation. We recommend buying the DS3231 RTC module. See under Guides/rpi3_rtc_setup.md for information on installing this RTC module.

Camera

What cameras are supported? Basically any cameras that can be read as video devices in Linux and all network IP cameras. Read the sections below for ways how to configure RMS to use different devices.

  1. IP camera Preferably an IMX291 IP camera. Contact us for more details!

  1. Security camera housing. The best place to mount a meteor camera is on the outside wall of your house. As this means that the camera will be exposed to the elements, you need a good camera housing. We recommend that you get a housing with a heater and a fan, which will keep it warm in the winter and cool in the summer. Also, be sure to buy a housing large enough to accomodate your camera. There is one important thing to note - security camera housings are not designed to look up at the sky. Most of them are designed to be under a roof and looking down. As your camera will be looking up, and most likely be without the protection of a roof, you will have to properly insulate it. Buy some silicone sealant and (after you fully assemble your camera and properly test everything), apply the sealant along all openings and joints, and most importantly, along the edges of the glass at the front. You want to keep the camera dry and prevent humidity from getting inside. If you have some humidity inside the camera, when the temperature hits the dew point, everything inside the housing will be wet. People have also found that putting alumininum foil on the glass, from the inside of the housing, prevents the humidity from forming (just be careful not to obstruct the view of your camera). A good idea is also to put some silica gels or dessicant inside the housing.

  2. Wiring You will probably need some cables and connectors to connect your camera to the digitizer, and to bring power to you camera. We recommend using a shielded coaxial cable for the video signal, and a simple copper pair wire for the power (although you might want to get a shielded cable for power if there's a lot of interference in the video signal).

Software

NOTE: We have an SD card image for the Pi with everything installed on it. See our Wiki page.


The code was designed to run on a RPi, but it will also run an some Linux distributions. We have tested it on Linux Mint 20 and Ubuntu 20 and 22.

The recording will not run on Windows, but most of other submodules will (astrometric calibration, viewing the data, manual reduction, etc.). The problem under Windows is that for some reason the logging module object cannot be pickled when parallelized by the multiprocessing library. We weren't able to solve this issue, but we invite people to try to take a stab at it.

Here we provide installation instructions for the RPi, but the procedure should be the same for any Debian-based Linux distribution: LINK

Alternatively, if you are using Anaconda Python on your Linux PC, you can install all libraries except OpenCV by running:

conda create --name rms python=3.9
conda activate rms 
conda install -y numpy scipy gitpython cython matplotlib
conda install -y -c conda-forge Pillow pyqtgraph'<=0.12.1'
conda install -y -c conda-forge ephem
conda install -y -c conda-forge imageio pandas
conda install -y -c conda-forge pygobject
conda install -y -c astropy astropy
conda install -y pyqt
pip install rawpy
pip install git+https://github.com/matejak/imreg_dft@master#egg=imreg_dft

If you want to use the machine for capture, you need to install OpenCV using the opencv4_install.sh script. This will build OpenCV with gstreamer and ffmpeg support. If you are not planning to run the capture but you are planning to use other RMS tool, you can install opencv using conda:

conda install -c conda-forge opencv

Setting up

Installing on Windows

The RMS code runs on Windows with the exception of meteor detection (I guess the most crucial part). I wasn't able to get the detection to work, but we encourage everybody to try!

Nevertheless, other RMS tools work well under Windows and you can follow these instructions to install it.

Setting the timezone to UTC

It is always a good idea to set the timezone to UTC when recording any data. This provides a common time reference among observatons, and more than once there have been issues when people were using different time zones. So, use your favorite search engine to find how to change the timezone on your RPi to UTC.

Enabling the watchdog service

A watchdog service is a service that occasionally checks if the RPi is responsive and if it's working fine. If the RPi hangs of freezes, it will reboot it. See under Guides/enabling_watchdog.md for more information.

Getting this code

First, find directory where you want to download the code. If you don't care, I presume the home directory /home/pi is fine. The simplest way of obtaining this code is by opening the terminal and running:

git clone https://github.com/CroatianMeteorNetwork/RMS.git

This will download the code in this repository in the RMS directory.

Running setup.py and compiling the Kernel-based Hough Transform module

Navigate with terminal to base git directory (e.g. /home/pi/RMS/), and run:

python setup.py install

This will compile the code in C++ which we are using as one of the processing steps in meteor detection. The method in question is called Kernel-based Hough Transform, and you can read more about it here: KHT

This will also install all Python libraries that you might need, except OpenCV. If you are on Windows, you can install OpenCV this way:

sudo apt-get install libopencv-dev python-opencv

If you are using an IP camera, you will need gstreamer support and then use the opencv4_install.sh script.

Checking video device and initializing proper settings - ANALOG CAMERAS ONLY!

Once you connect the EasyCap digitizer and the camera, you need to check if the video signal is being properly received.

If you have a NTSC camera (North American standard), run this in the terminal:

mplayer tv:// -tv driver=v4l2:device=/dev/video0:input=0:norm=NTSC -vo x11

If you have a PAL camera (Europe), enter the following:

mplayer tv:// -tv driver=v4l2:device=/dev/video0:input=0:norm=PAL -vo x11

Editing the configuration file

This is a very important step as all settings are read from the configuration file. The file in question is the .config file. Once you download this repository, start editing the file with your favorite editor.

[System]

Station ID

If you want to join our network of global cameras, please send me an e-mail and I will give you a station code. The codes are made up of the 2-letter ISO code of your country (e.g. DE for Germany), followed by a 4 character alphanumeric code starting at 0001 and ending with ZZZZ, giving a total number of 1.5 million unique combinations for every country. For testing purposes you might use XX0001.

GPS location

Edit the latitude, longitude and elevation of the location of your camera. This is used for automatically calculating the starting and ending time of the time of capture, as well as the astrometric plates. Try to be as precise as possible, use at least 5 decimal places for latitude and longitude, and the elevation to a precision of 1 meter. Measure the location of the camera with the GPS on your phone. This is extremely crucial and make sure to get a good location of the camera, otherwise the trajectories will be significantly off.

[Capture]

Capture cards, video devices

If you are using an analog camera or some other Linux video device, make sure you can see it as /dev/videoX, where X is the number of the video device. This will usually be 0. So if you want RMS to use /dev/video0 as the video source, specify the device in the config file as:

device: 0
IP cameras

Alternatively, if you are using IP cameras and use gstreamer for capture, you need to give it the full gstreamer string and the IP camera address (gstreamer should be installed during OpenCV installation with the provided script). Let's say that you're on the RPi, the RTSP protocol is used to read the video and the camera is at 192.168.42.10, then the device setting should look something like this (IMX291 camera specific):

device: rtspsrc location=rtsp://192.168.42.10:554/user=admin&password=&channel=1&stream=0.sdp ! rtph264depay ! queue ! h264parse ! omxh264dec ! queue ! videoconvert ! appsink sync=1

This string will make sure that the H.264 encoded video is decoded using the hardware decoding on the Pi (omxh264dec module).

If you are running on a PC, the string should look something like this:

device: rtspsrc location=rtsp://192.168.42.10:554/user=admin&password=&channel=1&stream=0.sdp ! rtph264depay ! h264parse ! decodebin ! videoconvert ! appsink sync=1

because the omxh264dec module is only available on the Pi. It's possible that some gstreamer libraries will be missing on some PC Linux distributions, you can install them by running:

sudo apt-get install gstreamer1.0-plugins-bad gstreamer1.0-libav

You can also preview the video directly in gstreamer. If you're on the Pi, run something like this:

gst-launch-1.0 rtspsrc location="rtsp://192.168.42.10:554/user=admin&password=&channel=1&stream=0.sdp" ! rtph264depay ! h264parse ! omxh264dec ! autovideosink

and this if you're on a Linux PC:

gst-launch-1.0 rtspsrc location="rtsp://192.168.42.10:554/user=admin&password=&channel=1&stream=0.sdp" ! rtph264depay ! h264parse ! decodebin ! autovideosink
Resolution and FPS

To be able to capture the video properly, you need to set up the right resolution and FPS (frames per second). For IP cameras, use the maximum resolution of 1280x720, as the Pi can't really handle 1080p, and such a high resolution produces enormous amounts of data.

Running the code

Capturing video and saving data

To start the video capture, navigate to the base folder (e.g. /home/pi/RMS) with the terminal and run:

python -m RMS.StartCapture

This command will automatically start capturing upon sunset, and stop capturing upon sunrise, do the detection automatically, do the astrometric recalibration (provided an initial astrometric plate was provided), and upload the detections to server.

If you want to start capture right away, for a specified duration, run this command with the argument -d HH.hh, where HH.hh is the number of hours you want to run the capture for. E.g. if you want to capture the video for 1 hour and 30 minutes, you would run:

python -m RMS.StartCapture -d 1.5

The data will be saved in /home/pi/RMS_data/CapturedFiles/YYYYMMDD_hhmmss_uuuuuu, where YYYYMMDD_hhmmss_uuuuuu is the timestamp of the time when the recording was started, which is used as a name for the directory where the data for the night will be stored. Once the automated detection and calibration is done, data will be extracted and archived to /home/pi/RMS_data/ArchivedFiles/YYYYMMDD_hhmmss_uuuuuu.

Live Stream

To test your camera with RMS configuration without a real capture - after certify it your camera is working properly - you can run the Live Stream module. Navigate with terminal to base project directory and run:

python -m Utils.ShowLiveStream

Don't trust the FPS it's reporting too much, the Pi is too slow to display a video on screen in real time, but it works well when the capture is done in the background.

Viewing FF bin files (compressed video data)

You can view the recorded data using the CMN_binViewer software. You can either run it off the Pi, or you can install it on Windows (builds are provided).

Viewing FR bin files (fireball detections)

You may notice that there are some FR files in the night directory (as opposed to FF, which are storing the compressed video data). The FR files are created by the fireball detector, which detects brighter meteors as well. To see the detection, run:

python -m Utils.FRbinViewer ~/RMS_data/YYYMMDD_hhmmss_uuuuuu

where YYYMMDD_hhmmss_uuuuuu is the name of the night directory.

Star extraction and meteor detection

This will be done automatically when StartCapture is run, but if for some reason you want to redo the detection, you can do it manually.

To extract the stars on recorded images, and detect meteors on them, run:

python -m RMS.DetectStarsAndMeteors ~/RMS_data/YYYMMDD_hhmmss_uuuuuu

where YYYMMDD_hhmmss_uuuuuu is the name of the night directory. This will take a while to run, and when it is done, it will generate a file called CALSTARS (which will hold information about detected stars on images), and FTPdetectinfo file which will hold information about detected meteors.

Citations

For academic use, please cite the paper:

Vida, D., Šegon, D., Gural, P.S., Brown, P.G., McIntyre, M.J., Dijkema, T.J., Pavletić, L., Kukić, P., Mazur, M.J., Eschman, P. and Roggemans, P., 2021. The Global Meteor Network–Methodology and first results. Monthly Notices of the Royal Astronomical Society, 506(4), pp.5046-5074.

rms's People

Contributors

adalava avatar aitov avatar anzharip avatar apevec avatar cbassa avatar cybis320 avatar dario-zubovic avatar dvida avatar edharman avatar fuzzy12 avatar g7gpr avatar gmomchilov avatar goodstuff11 avatar jenyak avatar markmac99 avatar mrprompt avatar murrayforbes avatar robagar avatar satmonkey avatar someegrets avatar tammojan avatar ytchenak avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

rms's Issues

Show skipped frames on the captured stack

As a user, I want to know if a meteor camera had “skipped frames” during the night (so that I can investigate and fix the problem).

Skipped frames occur when there is more than 9 seconds between chunks of 256 frames. Skipped frames can be caused by a number of issues (CPU throttling due to fan issues, camera connection issues, camera power issues, etc) and can result in meteors being missed.

Proposed solution: Use the time stamp in the .fit filenames to show visually on the “captured stack” image when a skipped frame has occurred.

For example, a coloured border could be placed around a frame when there is a gap of more than 9 seconds from the previous frame. In the attached (very rough) mockup 01, an orange border is used to show a small gap (maybe 10-30 seconds?) and a red border is used to show a large gap (maybe >30 seconds?).

Alternatively, a blank frame could be inserted where a gap of more than 9 seconds occurred. In the attached (very rough) mockup 02, an orange blank frame shows a small time gap and a red blank frame shows a large time gap.

Side note… It doesn’t have to be just “orange” or “red”… it could be a gradual colour shift from black (<=9 seconds) through orange to red.

Side note… There are manual ways to check for “skipped frames” (eg. watch the time lapse video or review the syslog files) but these require manual effort (which means that many people will forget or not bother). Also, showing the problem on the captured stack means that anyone can use Istrastream to quickly check anyone else’s camera on any date to see if a meteor was missed due to skipped frames.

Mockup #1

Mockup #2

Not issue, but question

What should I install to run your script? I'm explaining what I mean. Following this description - http://www.instructables.com/id/Raspberry-Pi-Meteor-Station/ - I came to the point where the script says to me:

ERROR: Astropy requires Python 3.5 or later

I'm not a linux guy, and I do not understand the coexistence of two Python (python2.7 and python3.5 on my raspbian) at the same time. The dependencies required for the RMS operation are for versions 2.7 and 3.5 or only in 2.7, for example - python-scipy, python-matplotliblibblas-dev, python-opencv python-imaging-tk? I do not understand this.
I will be happy for every clues:)

Bug in DownloadPlatepar.py

A recent update has introduced a bug in DownloadPlatepar.py.
File "/home/pi/source/RMS/RMS/DownloadPlatepar.py", line 75, in downloadNewPlatepar
sftp.get(remote_platepar, os.path.join(config.config_file_path, config.platepar_name))
NameError: name 'os' is not defined

DOC: Creating Platepar files

mine info off YT video

also note MM's recommendation (for southern sky, at least)
my "top tip" for platepars is to switch to the BSC5 catalogue. The default GAIA catalogue doesn't include bright stars which makes it tricky to recognise constellations even if you do know the sky!

Fix limited dynamic range in 8bit FF frames

The FF frames are stored as 8bit FITS extensions. For the MAXPIXEL, MAXFRAME and AVEPIXEL extensions this is not an issue, but for the STDPIXEL frame the use of 8bits reduces the sensitivity, as the majority of STDPIXEL values are 1, with long tail to values of about 40 (out of 255). As a result, computing significance through (MAXPIXEL - AVEPIXEL) / STDPIXEL adds noise due to the lack of dynamic range in the STDPIXEL frame.

The FITS standard offers the BSCALE and BZERO keywords to apply a scaling and offset factor to scale the 8bit data. In astropy, the presence of these keywords in the extension header will be applied when reading the data of the extension, converting the 8bit data to floating point on the fly. For more information, see https://docs.astropy.org/en/stable/io/fits/usage/image.html.

For example for RMS, you could already get a factor of 10 more dynamic range by setting BSCALE to 0.1 in the STDPIXEL frame.

Request to update iStream.sh to produce report_astrometry.jpg

The current iStream.sh script does not produce a report_astrometry.jpg file:

function upload_report_astrometry {
	REPORT_ASTROMETRY_FILE="$(ls $CAPTURED_DIR_NAME/*.jpg | grep 'report_astrometry.jpg')"
	if [ -f "$REPORT_ASTROMETRY_FILE" ]; then			
		curl --user-agent $AGENT -F"operation=upload" -F"file=@$REPORT_ASTROMETRY_FILE" "$SERVER/$SYSTEM/?station_id=$STATION_ID&type=report_astrometry&action=upload&level=$ACTIVE_LEVEL"
	else
		curl --user-agent $AGENT "$SERVER/$SYSTEM/?station_id=$STATION_ID&type=no_report_astrometry&action=upload&level=$ACTIVE_LEVEL"
	fi

I would suggest to change it to:

function upload_report_astrometry {
	REPORT_ASTROMETRY_FILE="$(ls $CAPTURED_DIR_NAME/*.jpg | grep 'report_astrometry.jpg')"
	TMP_REPORT_ASTROMETRY_FILE="$CAPTURED_DIR_NAME/report_astrometry.jpg"
	if [ -f "$REPORT_ASTROMETRY_FILE" ]; then			
		convert $REPORT_ASTROMETRY_FILE $TMP_REPORT_ASTROMETRY_FILE	
		curl --user-agent $AGENT -F"operation=upload" -F"file=@$REPORT_ASTROMETRY_FILE" "$SERVER/$SYSTEM/?station_id=$STATION_ID&type=report_astrometry&action=upload&level=$ACTIVE_LEVEL"
	else
		curl --user-agent $AGENT "$SERVER/$SYSTEM/?station_id=$STATION_ID&type=no_report_astrometry&action=upload&level=$ACTIVE_LEVEL"
	fi

SkyFit2 does not put image name in ECSV

SkyFit2 is not correctly filling the image_file attribute in the ECSV fle (its blank). This is causing an inconsistency downstream when processing in WMPL since trajectories calculated from FTPdetect files contain the image name in the comment field, whereas orbits calculated from ECSV files do not.

Its a simple fix: add the below at line 5262, and then change meta_dict to use ff_name for the image_file attribute. I've tested this for multiple fireballs during December, all looks good.

    if self.img_handle.input_type == 'ff':
        ff_name = self.img_handle.current_ff_file
    else:
        ff_name = "FF_{:s}_".format(self.platepar.station_code) \
                      + self.img_handle.beginning_datetime.strftime("%Y%m%d_%H%M%S_") \
                      + "{:03d}".format(int(self.img_handle.beginning_datetime.microsecond//1000)) \
                      + "_0000000.fits"

.config camera device

It might be handy to give a few options for cameras in the .config file. It took me a while to figure out I just had to put a 0 to replace this line for a CCTV analog camera.

#analog camera
device: 0

#IP camera
#device: rtspsrc location=rtsp://192.168.42.10:554/user=admin&password=&channel=1&stream=0.sdp ! rtph264depay ! queue ! h264parse ! omxh264dec ! queue ! videoconvert ! appsink sync=1 ; device id

reboot_try in range(4*60) causing failure to reboot

for reboot_try in range(4*60):

Commit e0f2b02 made target of RunExternalScript an external process.

I think this means that the 4 hour timer starts running from the end of the observation, rather than the end of RunExternalScript.

On (only) one occasion the external script took a very long time, about 6 hours. This happened on at least two separate systems, both with good internet connections. I believe that the iStraStream server was not accepting connections, and the 6 hours was the accumulated timeout of each stage of the iStraStream script.

Can you make the timer longer, so that a failed external script does not block the reboot. My fear is that if iStraStream was down for an extended period of time, it would prevent any automatic updates of the code until operator intervention.

An ideal length for the timer would be so that it timed out a defined number of minutes before observation start, killed the external script, and then behave as though the external script had run to completion.

What camera hardware is supported?

Could documentation somewhere explain how the software is connecting to a camera and what someone needs to watch for when buying a camera to make sure it is compatible with the software? I only noticed the ReadMe mention recommended sony sensors to use but it was not clear what "driver" is being used to talk to the camera. I assume it is something to do with the OpenCV gstreamer but further details explaining how this works would be helpful.

Ubuntu 20.04.2 LTS Install error

Hello,

I'm trying to get this up and running on Ubuntu 20.04.2 LTS and get the following error:

gcc-5 -pthread -Wno-unused-result -Wsign-compare -DNDEBUG -g -O3 -Wall -fPIC -INative/Hough/ -I/home/linuxbrew/.linuxbrew/include -I/home/linuxbrew/.linuxbrew/opt/[email protected]/include -I/home/linuxbrew/.linuxbrew/opt/sqlite/include -I/home/linuxbrew/.linuxbrew/Cellar/[email protected]/3.9.2_5/include/python3.9 -c Native/Hough/buffer_2d.cpp -o build/temp.linux-x86_64-3.9/Native/Hough/buffer_2d.o -O3 -Wall
error: command 'gcc-5' failed: No such file or directory

Any ideas? Here is the full output from the install script:

archon@HP-Elite:~/Development/RMS$ python3 setup.py install
Compiling RMS/Astrometry/CyFunctions.pyx because it changed.
Compiling RMS/Routines/BinImageCy.pyx because it changed.
Compiling RMS/Routines/DynamicFTPCompressionCy.pyx because it changed.
Compiling RMS/Routines/Grouping3Dcy.pyx because it changed.
Compiling RMS/Routines/MorphCy.pyx because it changed.
Compiling RMS/CompressionCy.pyx because it changed.
Compiling Utils/SaturationTools.pyx because it changed.
[1/7] Cythonizing RMS/Astrometry/CyFunctions.pyx
[2/7] Cythonizing RMS/CompressionCy.pyx
/home/linuxbrew/.linuxbrew/Cellar/[email protected]/3.9.2_5/lib/python3.9/site-packages/Cython/Compiler/Main.py:369: FutureWarning: Cython directive 'language_level' not set, using 2 for now (Py2). This will change in a later release! File: /home/archon/Development/RMS/RMS/CompressionCy.pyx
  tree = Parsing.p_module(s, pxd, full_module_name)
[3/7] Cythonizing RMS/Routines/BinImageCy.pyx
/home/linuxbrew/.linuxbrew/Cellar/[email protected]/3.9.2_5/lib/python3.9/site-packages/Cython/Compiler/Main.py:369: FutureWarning: Cython directive 'language_level' not set, using 2 for now (Py2). This will change in a later release! File: /home/archon/Development/RMS/RMS/Routines/BinImageCy.pyx
  tree = Parsing.p_module(s, pxd, full_module_name)
[4/7] Cythonizing RMS/Routines/DynamicFTPCompressionCy.pyx
/home/linuxbrew/.linuxbrew/Cellar/[email protected]/3.9.2_5/lib/python3.9/site-packages/Cython/Compiler/Main.py:369: FutureWarning: Cython directive 'language_level' not set, using 2 for now (Py2). This will change in a later release! File: /home/archon/Development/RMS/RMS/Routines/DynamicFTPCompressionCy.pyx
  tree = Parsing.p_module(s, pxd, full_module_name)
[5/7] Cythonizing RMS/Routines/Grouping3Dcy.pyx
/home/linuxbrew/.linuxbrew/Cellar/[email protected]/3.9.2_5/lib/python3.9/site-packages/Cython/Compiler/Main.py:369: FutureWarning: Cython directive 'language_level' not set, using 2 for now (Py2). This will change in a later release! File: /home/archon/Development/RMS/RMS/Routines/Grouping3Dcy.pyx
  tree = Parsing.p_module(s, pxd, full_module_name)
[6/7] Cythonizing RMS/Routines/MorphCy.pyx
/home/linuxbrew/.linuxbrew/Cellar/[email protected]/3.9.2_5/lib/python3.9/site-packages/Cython/Compiler/Main.py:369: FutureWarning: Cython directive 'language_level' not set, using 2 for now (Py2). This will change in a later release! File: /home/archon/Development/RMS/RMS/Routines/MorphCy.pyx
  tree = Parsing.p_module(s, pxd, full_module_name)
[7/7] Cythonizing Utils/SaturationTools.pyx
/home/linuxbrew/.linuxbrew/Cellar/[email protected]/3.9.2_5/lib/python3.9/site-packages/Cython/Compiler/Main.py:369: FutureWarning: Cython directive 'language_level' not set, using 2 for now (Py2). This will change in a later release! File: /home/archon/Development/RMS/Utils/SaturationTools.pyx
  tree = Parsing.p_module(s, pxd, full_module_name)
running install
running bdist_egg
running egg_info
creating RMS.egg-info
writing RMS.egg-info/PKG-INFO
writing dependency_links to RMS.egg-info/dependency_links.txt
writing requirements to RMS.egg-info/requires.txt
writing top-level names to RMS.egg-info/top_level.txt
writing manifest file 'RMS.egg-info/SOURCES.txt'
reading manifest file 'RMS.egg-info/SOURCES.txt'
writing manifest file 'RMS.egg-info/SOURCES.txt'
installing library code to build/bdist.linux-x86_64/egg
running install_lib
running build_py
creating build
creating build/lib.linux-x86_64-3.9
creating build/lib.linux-x86_64-3.9/RMS
copying RMS/Math.py -> build/lib.linux-x86_64-3.9/RMS
copying RMS/UploadManager.py -> build/lib.linux-x86_64-3.9/RMS
copying RMS/StartCapture.py -> build/lib.linux-x86_64-3.9/RMS
copying RMS/Misc.py -> build/lib.linux-x86_64-3.9/RMS
copying RMS/VideoExtraction.py -> build/lib.linux-x86_64-3.9/RMS
copying RMS/DownloadPlatepar.py -> build/lib.linux-x86_64-3.9/RMS
copying RMS/ArchiveDetections.py -> build/lib.linux-x86_64-3.9/RMS
copying RMS/Compression.py -> build/lib.linux-x86_64-3.9/RMS
copying RMS/Pickling.py -> build/lib.linux-x86_64-3.9/RMS
copying RMS/DeleteOldObservations.py -> build/lib.linux-x86_64-3.9/RMS
copying RMS/Reprocess.py -> build/lib.linux-x86_64-3.9/RMS
copying RMS/ExtractStars.py -> build/lib.linux-x86_64-3.9/RMS
copying RMS/ImgurUpload.py -> build/lib.linux-x86_64-3.9/RMS
copying RMS/Decorators.py -> build/lib.linux-x86_64-3.9/RMS
copying RMS/GeoidHeightEGM96.py -> build/lib.linux-x86_64-3.9/RMS
copying RMS/BufferedCapture.py -> build/lib.linux-x86_64-3.9/RMS
copying RMS/Detection.py -> build/lib.linux-x86_64-3.9/RMS
copying RMS/__init__.py -> build/lib.linux-x86_64-3.9/RMS
copying RMS/CaptureDuration.py -> build/lib.linux-x86_64-3.9/RMS
copying RMS/Logger.py -> build/lib.linux-x86_64-3.9/RMS
copying RMS/DetectionTools.py -> build/lib.linux-x86_64-3.9/RMS
copying RMS/RunExternalScript.py -> build/lib.linux-x86_64-3.9/RMS
copying RMS/ConfigReader.py -> build/lib.linux-x86_64-3.9/RMS
copying RMS/QueuedPool.py -> build/lib.linux-x86_64-3.9/RMS
copying RMS/DetectStarsAndMeteors.py -> build/lib.linux-x86_64-3.9/RMS
creating build/lib.linux-x86_64-3.9/Utils
copying Utils/PlotFieldsums.py -> build/lib.linux-x86_64-3.9/Utils
copying Utils/FOVKML.py -> build/lib.linux-x86_64-3.9/Utils
copying Utils/ShowerAssociation.py -> build/lib.linux-x86_64-3.9/Utils
copying Utils/Flux.py -> build/lib.linux-x86_64-3.9/Utils
copying Utils/SaturationCorrection.py -> build/lib.linux-x86_64-3.9/Utils
copying Utils/SetCameraAddress.py -> build/lib.linux-x86_64-3.9/Utils
copying Utils/Vidchop.py -> build/lib.linux-x86_64-3.9/Utils
copying Utils/ShowThresholdLevels.py -> build/lib.linux-x86_64-3.9/Utils
copying Utils/GenerateTimelapse.py -> build/lib.linux-x86_64-3.9/Utils
copying Utils/StackFFs.py -> build/lib.linux-x86_64-3.9/Utils
copying Utils/PlotMeteorPSFProfile.py -> build/lib.linux-x86_64-3.9/Utils
copying Utils/FRbinViewer.py -> build/lib.linux-x86_64-3.9/Utils
copying Utils/BatchFFtoImage.py -> build/lib.linux-x86_64-3.9/Utils
copying Utils/RetroactiveFixup.py -> build/lib.linux-x86_64-3.9/Utils
copying Utils/Grouping3DRunner.py -> build/lib.linux-x86_64-3.9/Utils
copying Utils/RMS2UFO.py -> build/lib.linux-x86_64-3.9/Utils
copying Utils/ShowLiveStream.py -> build/lib.linux-x86_64-3.9/Utils
copying Utils/ManualReduction.py -> build/lib.linux-x86_64-3.9/Utils
copying Utils/GenerateMP4s.py -> build/lib.linux-x86_64-3.9/Utils
copying Utils/FieldSumToTxt.py -> build/lib.linux-x86_64-3.9/Utils
copying Utils/MakeFlat.py -> build/lib.linux-x86_64-3.9/Utils
copying Utils/SkyFit2.py -> build/lib.linux-x86_64-3.9/Utils
copying Utils/CameraControl.py -> build/lib.linux-x86_64-3.9/Utils
copying Utils/CheckNight.py -> build/lib.linux-x86_64-3.9/Utils
copying Utils/PointsViewer.py -> build/lib.linux-x86_64-3.9/Utils
copying Utils/SaturationSimulation.py -> build/lib.linux-x86_64-3.9/Utils
copying Utils/TrackStack.py -> build/lib.linux-x86_64-3.9/Utils
copying Utils/LiveViewer.py -> build/lib.linux-x86_64-3.9/Utils
copying Utils/StackImgs.py -> build/lib.linux-x86_64-3.9/Utils
copying Utils/__init__.py -> build/lib.linux-x86_64-3.9/Utils
copying Utils/CalibrationReport.py -> build/lib.linux-x86_64-3.9/Utils
copying Utils/FRbinMosaic.py -> build/lib.linux-x86_64-3.9/Utils
copying Utils/CameraControl27.py -> build/lib.linux-x86_64-3.9/Utils
copying Utils/FFtoFrames.py -> build/lib.linux-x86_64-3.9/Utils
copying Utils/GenerateThumbnails.py -> build/lib.linux-x86_64-3.9/Utils
creating build/lib.linux-x86_64-3.9/Tests
copying Tests/CompressSimulatedMeteor.py -> build/lib.linux-x86_64-3.9/Tests
copying Tests/CompressionTimings.py -> build/lib.linux-x86_64-3.9/Tests
copying Tests/MorphCyTest.py -> build/lib.linux-x86_64-3.9/Tests
copying Tests/__init__.py -> build/lib.linux-x86_64-3.9/Tests
copying Tests/CompressionGaussTest.py -> build/lib.linux-x86_64-3.9/Tests
creating build/lib.linux-x86_64-3.9/RMS/Astrometry
copying RMS/Astrometry/FFTalign.py -> build/lib.linux-x86_64-3.9/RMS/Astrometry
copying RMS/Astrometry/SkyFit.py -> build/lib.linux-x86_64-3.9/RMS/Astrometry
copying RMS/Astrometry/ApplyRecalibrate.py -> build/lib.linux-x86_64-3.9/RMS/Astrometry
copying RMS/Astrometry/AstrometryNetNova.py -> build/lib.linux-x86_64-3.9/RMS/Astrometry
copying RMS/Astrometry/__init__.py -> build/lib.linux-x86_64-3.9/RMS/Astrometry
copying RMS/Astrometry/ApplyAstrometry.py -> build/lib.linux-x86_64-3.9/RMS/Astrometry
copying RMS/Astrometry/CheckFit.py -> build/lib.linux-x86_64-3.9/RMS/Astrometry
copying RMS/Astrometry/Conversions.py -> build/lib.linux-x86_64-3.9/RMS/Astrometry
copying RMS/Astrometry/AtmosphericExtinction.py -> build/lib.linux-x86_64-3.9/RMS/Astrometry
creating build/lib.linux-x86_64-3.9/RMS/Formats
copying RMS/Formats/AllskyPlate.py -> build/lib.linux-x86_64-3.9/RMS/Formats
copying RMS/Formats/FrameInterface.py -> build/lib.linux-x86_64-3.9/RMS/Formats
copying RMS/Formats/FRbin.py -> build/lib.linux-x86_64-3.9/RMS/Formats
copying RMS/Formats/FieldIntensities.py -> build/lib.linux-x86_64-3.9/RMS/Formats
copying RMS/Formats/CALSTARS.py -> build/lib.linux-x86_64-3.9/RMS/Formats
copying RMS/Formats/AST.py -> build/lib.linux-x86_64-3.9/RMS/Formats
copying RMS/Formats/FFStruct.py -> build/lib.linux-x86_64-3.9/RMS/Formats
copying RMS/Formats/FFfits.py -> build/lib.linux-x86_64-3.9/RMS/Formats
copying RMS/Formats/StarCatalog.py -> build/lib.linux-x86_64-3.9/RMS/Formats
copying RMS/Formats/FFbin.py -> build/lib.linux-x86_64-3.9/RMS/Formats
copying RMS/Formats/FTPdetectinfo.py -> build/lib.linux-x86_64-3.9/RMS/Formats
copying RMS/Formats/AsgardEv.py -> build/lib.linux-x86_64-3.9/RMS/Formats
copying RMS/Formats/Showers.py -> build/lib.linux-x86_64-3.9/RMS/Formats
copying RMS/Formats/__init__.py -> build/lib.linux-x86_64-3.9/RMS/Formats
copying RMS/Formats/FFfile.py -> build/lib.linux-x86_64-3.9/RMS/Formats
copying RMS/Formats/Vid.py -> build/lib.linux-x86_64-3.9/RMS/Formats
copying RMS/Formats/CAL.py -> build/lib.linux-x86_64-3.9/RMS/Formats
copying RMS/Formats/Platepar.py -> build/lib.linux-x86_64-3.9/RMS/Formats
copying RMS/Formats/UFOOrbit.py -> build/lib.linux-x86_64-3.9/RMS/Formats
creating build/lib.linux-x86_64-3.9/RMS/Routines
copying RMS/Routines/DebruijnSequence.py -> build/lib.linux-x86_64-3.9/RMS/Routines
copying RMS/Routines/FOVArea.py -> build/lib.linux-x86_64-3.9/RMS/Routines
copying RMS/Routines/AllskyPlot.py -> build/lib.linux-x86_64-3.9/RMS/Routines
copying RMS/Routines/Grouping3D.py -> build/lib.linux-x86_64-3.9/RMS/Routines
copying RMS/Routines/Image.py -> build/lib.linux-x86_64-3.9/RMS/Routines
copying RMS/Routines/RollingShutterCorrection.py -> build/lib.linux-x86_64-3.9/RMS/Routines
copying RMS/Routines/CompareLines.py -> build/lib.linux-x86_64-3.9/RMS/Routines
copying RMS/Routines/GreatCircle.py -> build/lib.linux-x86_64-3.9/RMS/Routines
copying RMS/Routines/AddCelestialGrid.py -> build/lib.linux-x86_64-3.9/RMS/Routines
copying RMS/Routines/CustomPyqtgraphClasses.py -> build/lib.linux-x86_64-3.9/RMS/Routines
copying RMS/Routines/__init__.py -> build/lib.linux-x86_64-3.9/RMS/Routines
copying RMS/Routines/MaskImage.py -> build/lib.linux-x86_64-3.9/RMS/Routines
copying RMS/Routines/SolarLongitude.py -> build/lib.linux-x86_64-3.9/RMS/Routines
copying RMS/CompressionCy.c -> build/lib.linux-x86_64-3.9/RMS
copying Utils/SaturationTools.c -> build/lib.linux-x86_64-3.9/Utils
copying RMS/Astrometry/CyFunctions.c -> build/lib.linux-x86_64-3.9/RMS/Astrometry
copying RMS/Routines/BinImageCy.c -> build/lib.linux-x86_64-3.9/RMS/Routines
copying RMS/Routines/DynamicFTPCompressionCy.c -> build/lib.linux-x86_64-3.9/RMS/Routines
copying RMS/Routines/Grouping3Dcy.c -> build/lib.linux-x86_64-3.9/RMS/Routines
copying RMS/Routines/MorphCy.c -> build/lib.linux-x86_64-3.9/RMS/Routines
running build_ext
building 'kht_module' extension
creating build/temp.linux-x86_64-3.9
creating build/temp.linux-x86_64-3.9/Native
creating build/temp.linux-x86_64-3.9/Native/Hough
gcc-5 -pthread -Wno-unused-result -Wsign-compare -DNDEBUG -g -O3 -Wall -fPIC -INative/Hough/ -I/home/linuxbrew/.linuxbrew/include -I/home/linuxbrew/.linuxbrew/opt/[email protected]/include -I/home/linuxbrew/.linuxbrew/opt/sqlite/include -I/home/linuxbrew/.linuxbrew/Cellar/[email protected]/3.9.2_5/include/python3.9 -c Native/Hough/buffer_2d.cpp -o build/temp.linux-x86_64-3.9/Native/Hough/buffer_2d.o -O3 -Wall
error: command 'gcc-5' failed: No such file or directory

[OUTPUT format] How do I get colorful outputs?

When there is a thunder storm whether. I wish RMS system could capture the red elf (red jet / blue jet) in the sky.
So, color images are necessary. Or else only the grey elf is captured

Support for cameras that have a password set by the vendor

New joiners in the UK are reporting that some camera modules are now being shipped with a different hardcoded admin password. Previously the password was blank. The DVR-IP module assumes a blank password, and doesn't allow us to easily pass any value in. However i already wanted to make changes to this lib to support Python 2.7 so at the same time i will investigate support for password protected cameras.

Problem using SkyFit2

Built RMS on Windows and then Ubuntu to instructions to run SkyFit2 using python -m Utils.SkyFit2 C:\Users\sholbeche\Downloads\20210807_UK0038\UK0038_20210807_202419_529241 --config .

Both instances run but fits images are not shown in SkyFit2 but histogram shows light detected. Using python -m RMS.Astrometry.SkyFit C:\Users\sholbeche\Downloads\20210807_UK0038\UK0038_20210807_202419_529241 --config .
images are shown ok

The error in SkyFit2 on each screen refresh is:

Traceback (most recent call last):
  File "C:\Users\sholbeche\Anaconda3\envs\rms\lib\site-packages\pyqtgraph\graphicsItems\ImageItem.py", line 834, in paint
    self.render()
  File "C:\Users\sholbeche\Workspace\Meteors\RMS\RMS\Routines\CustomPyqtgraphClasses.py", line 644, in render
    efflut = pg.fn.rescaleData(ind, scale=255./levdiff,
AttributeError: module 'pyqtgraph' has no attribute 'fn'

delete old log files

The files on log directory aren't deleted automatically. Need to implement a logic to avoid folder from growing indefinitely.

platepar

I got the following issues when running RMS:

2020/05/21 15:58:28-INFO-DownloadPlatepar-line:23 - Checking for new platepar on the server... 2020/05/21 15:58:28-DEBUG-DownloadPlatepar-line:24 - Establishing SSH connection to: gmn.uwo.ca:22... 2020/05/21 15:58:29-ERROR-UploadManager-line:51 - Failed loading /root/.ssh/id_rsa[Errno 2] No such file or directory: u'/root/.ssh/id_rsa' 2020/05/21 15:58:29-INFO-Reprocess-line:80 - No platepar file found!

Any help to this?

Can we switch to non-dev branch of pyqtgraph

The setup/requirements are using a development branch of pyqtgraph. Thats quite risky as it means that we could pick up untested changes, or RMS might be disabled if a bad checkin is made by one of the QT developers.
I will test if we can switch to the production branch
Also, we don't need a special build of python-dvr any more, this is now in pypi so I'll switch RMS over to that. I've been using it on several of my machines for months. This will remove two special-cases from the environment

New distortion type crashes CAMS-compatible cameras

Since the CAL-format doesn't (yet?) understand the new radial distortion types, there is a crash in RMS:

2021/05/21 02:43:57-INFO-Reprocess-line:320 - Flat saved to: /home/pi/RMS_data/CapturedFiles/NL000E_20210520_202414_904810/flat.bmp
2021/05/21 02:43:57-INFO-Reprocess-line:401 - Generating a CAMS FTPdetectinfo file...
Traceback (most recent call last):
  File "RMS/StartCapture.py", line 947, in <module>
    upload_manager=upload_manager, detect_end=cml_args.detectend, resume_capture=cml_args.resume)
  File "RMS/StartCapture.py", line 448, in runCapture
    detection_results=detection_results, nodetect=nodetect)
  File "/home/pi/vRMS/lib/python3.7/site-packages/RMS-0.1-py3.7-linux-armv7l.egg/RMS/Reprocess.py", line 404, in processNight
    cal_file_name = writeCAL(night_data_dir, config, platepar)
  File "/home/pi/vRMS/lib/python3.7/site-packages/RMS-0.1-py3.7-linux-armv7l.egg/RMS/Formats/CAL.py", line 58, in writeCAL
    platepar.y_poly_fwd[11], platepar.y_poly_fwd[10] = platepar.y_poly_fwd[10], platepar.y_poly_fwd[11]
IndexError: index 10 is out of bounds for axis 0 with size 7

This also aborts any uploads.

[Feature] could RMS system capture the Lightning Elf

ELVES — ELVES (Emission of Light and Very Low Frequency perturbations due to Electromagnetic Pulse Sources) often appear as a dim, flattened, expanding glow.

The software UFOCaptureHD2 can capture this event. So will you Develep this new feature?

SkyFit2 error message: ModuleNotFoundError: No module named 'pyqtgraph'

I installed RMS from scratch on my Ubuntu Mate (Release 22.04.2 LTS (Jammy Jellyfish) 64-bit). Installation took around 70 - 80 minutes. The I tried to run skyfit2 using command "python -m Utils.SkyFit2 &". Then I got the error message "ModuleNotFoundError: No module named 'pyqtgraph'". Then I installed the module using "pip install pyqtgraph".

Specify latest py2 compatible astropy

Reported by Maciej in https://groups.io/g/globalmeteornetwork/message/468

Processing dependencies for RMS==0.1
Searching for astropy>=2.0.3
Reading https://pypi.org/simple/astropy/
Downloading https://files.pythonhosted.org/packages/ea/63/02ada19599c7ad34b4984e797c555cacf2c358d48824ffe331e029574a2c/astropy-3.2.2.tar.gz#sha256=8553f4a95e9938a0c7ae520633f7172356824b8eb324dd967fca6baf00ac19bf
Best match: astropy 3.2.2
Processing astropy-3.2.2.tar.gz
Writing /tmp/easy_install-khgwDY/astropy-3.2.2/setup.cfg
Running astropy-3.2.2/setup.py -q bdist_egg --dist-dir /tmp/easy_install-khgwDY/astropy-3.2.2/egg-dist-tmp-YUOEAh
ERROR: Python >=3.5 is required by astropy

When input device is file, processing loops indefinitely (until disk full)

This happens because the end of the file is reached, which is interpreted as a device disconnection.

https://github.com/CroatianMeteorNetwork/RMS/blob/master/RMS/BufferedCapture.py#L291

I've solved it by only trying to reconnect if video_file is not set:

# If the video device was disconnected, wait for reconnection
                if (not ret) and (self.video_file is None):

(However a better fix might be to move this if block just below the one that's currently after it, which checks for the end of the video file)

Adding a human friendly place name to the .config file

Web services that provide a view of the gmn data have to maintain a mapping of station idents to place names.

Adding an extra field into the .config file with a place name (i.e. Baldivis, Western Australia) would reduce the admin burden on the web service.

Python 3.8

I got this error during installation on python 3.8.5

$ sudo python3 setup.py install
running install
running bdist_egg
running egg_info
writing RMS.egg-info/PKG-INFO
writing dependency_links to RMS.egg-info/dependency_links.txt
writing requirements to RMS.egg-info/requires.txt
writing top-level names to RMS.egg-info/top_level.txt
reading manifest file 'RMS.egg-info/SOURCES.txt'
writing manifest file 'RMS.egg-info/SOURCES.txt'
installing library code to build/bdist.linux-x86_64/egg
running install_lib
running build_py
running build_ext
building 'RMS.Astrometry.CyFunctions' extension
x86_64-linux-gnu-gcc -pthread -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O2 -Wall -g -fstack-protector-strong -Wformat -Werror=format-security -g -fwrapv -O2 -g -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -fPIC -I/usr/lib/python3/dist-packages/numpy/core/include -I/usr/lib/python3/dist-packages/numpy/core/include -I/usr/include/python3.8 -c RMS/Astrometry/CyFunctions.c -o build/temp.linux-x86_64-3.8/RMS/Astrometry/CyFunctions.o
In file included from /usr/lib/python3/dist-packages/numpy/core/include/numpy/ndarraytypes.h:1822,
                 from /usr/lib/python3/dist-packages/numpy/core/include/numpy/ndarrayobject.h:12,
                 from /usr/lib/python3/dist-packages/numpy/core/include/numpy/arrayobject.h:4,
                 from RMS/Astrometry/CyFunctions.c:614:
/usr/lib/python3/dist-packages/numpy/core/include/numpy/npy_1_7_deprecated_api.h:17:2: warning: #warning "Using deprecated NumPy API, disable it with " "#define NPY_NO_DEPRECATED_API NPY_1_7_API_VERSION" [-Wcpp]
   17 | #warning "Using deprecated NumPy API, disable it with " \
      |  ^~~~~~~
RMS/Astrometry/CyFunctions.c: In function ‘__Pyx_InitCachedConstants’:
RMS/Astrometry/CyFunctions.c:8392:290: error: macro "__Pyx_PyCode_New" requires 16 arguments, but only 15 given
 8392 | yx_empty_tuple, __pyx_tuple__8, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_RMS_Astrometry_CyFunctions_pyx, __pyx_n_s_subsetCatalog, 70, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__9)) __PYX_ERR(0, 70, __pyx_L1_error)
      |                                                                                                                                                                ^

RMS/Astrometry/CyFunctions.c:330: note: macro "__Pyx_PyCode_New" defined here
  330 |   #define __Pyx_PyCode_New(a, p, k, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos)\
      | 
RMS/Astrometry/CyFunctions.c:8392:33: error: ‘__Pyx_PyCode_New’ undeclared (first use in this function); did you mean ‘PyCode_New’?
 8392 |   __pyx_codeobj__9 = (PyObject*)__Pyx_PyCode_New(5, 0, 14, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__8, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_RMS_Astrometry_CyFunctions_pyx, __pyx_n_s_subsetCatalog, 70, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__9)) __PYX_ERR(0, 70, __pyx_L1_error)
      |                                 ^~~~~~~~~~~~~~~~
      |                                 PyCode_New
RMS/Astrometry/CyFunctions.c:8392:33: note: each undeclared identifier is reported only once for each function it appears in
RMS/Astrometry/CyFunctions.c:8404:290: error: macro "__Pyx_PyCode_New" requires 16 arguments, but only 15 given
 8404 | pyx_empty_tuple, __pyx_tuple__10, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_RMS_Astrometry_CyFunctions_pyx, __pyx_n_s_matchStars, 138, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__11)) __PYX_ERR(0, 138, __pyx_L1_error)
      |                                                                                                                                                                ^

RMS/Astrometry/CyFunctions.c:330: note: macro "__Pyx_PyCode_New" defined here
  330 |   #define __Pyx_PyCode_New(a, p, k, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos)\
      | 
RMS/Astrometry/CyFunctions.c:8416:292: error: macro "__Pyx_PyCode_New" requires 16 arguments, but only 15 given
 8416 | yx_empty_tuple, __pyx_tuple__12, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_RMS_Astrometry_CyFunctions_pyx, __pyx_n_s_cyraDecToXY, 211, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__13)) __PYX_ERR(0, 211, __pyx_L1_error)
      |                                                                                                                                                                ^

RMS/Astrometry/CyFunctions.c:330: note: macro "__Pyx_PyCode_New" defined here
  330 |   #define __Pyx_PyCode_New(a, p, k, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos)\
      | 
RMS/Astrometry/CyFunctions.c:8428:292: error: macro "__Pyx_PyCode_New" requires 16 arguments, but only 15 given
 8428 | yx_empty_tuple, __pyx_tuple__14, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_RMS_Astrometry_CyFunctions_pyx, __pyx_n_s_cyXYToRADec, 334, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__15)) __PYX_ERR(0, 334, __pyx_L1_error)
      |                                                                                                                                                                ^

RMS/Astrometry/CyFunctions.c:330: note: macro "__Pyx_PyCode_New" defined here
  330 |   #define __Pyx_PyCode_New(a, p, k, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos)\
      | 
RMS/Astrometry/CyFunctions.c: In function ‘__Pyx_CreateCodeObjectForTraceback’:
RMS/Astrometry/CyFunctions.c:10774:5: error: macro "__Pyx_PyCode_New" requires 16 arguments, but only 15 given
10774 |     );
      |     ^
RMS/Astrometry/CyFunctions.c:330: note: macro "__Pyx_PyCode_New" defined here
  330 |   #define __Pyx_PyCode_New(a, p, k, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos)\
      | 
RMS/Astrometry/CyFunctions.c:10758:15: error: ‘__Pyx_PyCode_New’ undeclared (first use in this function); did you mean ‘PyCode_New’?
10758 |     py_code = __Pyx_PyCode_New(
      |               ^~~~~~~~~~~~~~~~
      |               PyCode_New
error: command 'x86_64-linux-gnu-gcc' failed with exit status 1

SD Image

README file mencionate a SD Image, but it's haven't a link.

Camera timing offset in the config file

The IMX291 cameras have a timing offset of about 2.2 seconds from real-time, and this is taken into account during the trajectory computation procedure. But if other types of cameras are used, e.g. MIPI cams, there is virtually no delay.

Add sample config files for different lenses

It would be handy to have sample config files for the supported lenses added to the standard distributions. The 4mm lens seems the most popular, so leave that as the default. But also add an 8mm.config and a 16mm.config.

[Feature request] more analyze on meteor

Hi
Can we do more analyze on the meteor after detected ? Just like UFOAnalyzer
do. For example, which group is the meteor from , multi site data analyze for orbit of the meteor.

Or, just generate the files which UFOAnalyzer need and analyze them in UFOAnalyzer.

Bad quality preview with SCB-2000

On the lasts updates, the quality of preview image is very bad in my two stations.
My actual scenario is:

  • Raspberry pi 3
  • EasyCap USB Video capture
  • SCB-2000 Cam

Here is the link with the images captured.

Update

Opening FITS file with PixInsight, I see the same image in four formats:

  • MAXPIXEL (the same on preview window)
  • MAXFRAME
  • AVEPIXEL (best quality view)
  • STDPIXEL (all black)

This same cameras and USB capture devices was tested with UFOCapture2 on other machine and works fine. Any idea?

KML issue in New Zealand

Apparently there is a longitude-wrapping problem in New Zealand. This shows up in the following KML file: https://globalmeteornetwork.org/data/kml_fov/NZ0004-100km.kml . An extract of the coordinates:

                    178.805081,-35.549552,100129
                    178.890471,-35.580602,100128
                    179.849450,-35.997326,100109
                    -179.750951,-36.982378,100071
                    -179.180944,-37.674392,100049
                    -178.458167,-38.279164,100034
                    -177.437295,-38.874397,100021
                    -176.775249,-39.804837,100008
                    -177.956414,-40.069974,100005
                    179.393763,-40.643710,100001
                    178.194782,-40.913399,100000

I haven't looked into the code yet, opening an issue to do so later.

Minimum FPS?

What is the minimum FPS that the software will still work at detecting meteors? Is it required to have multiple images with the same meteor in it or can it detect a meteor in a single long exposure?

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.