Develop custom capture software for the ZWO ASI178MC camera using the manufacturer's C/C++ SDK. For now this will be a separate program from the track Python package. In the future we may want a higher level of integration with the existing software in the track package so this should be taken into account when developing the software architecture.
Urgent must-have features include:
[x] Configuration of critical camera settings. Non-critical values can be left as defined in ASIConfig.xml.
[x] Capture video to disk in raw format.
[x] Adaptive gain/exposure control in software to avoid over/under exposure. This is especially important for tracking satellites since the apparent brightness predictions are not perfect and the brightness changes dynamically over the course of a pass. The built-in ZWO auto gain/exposure control does not seem to do a good enough job of preventing overexposure.
Less urgent features that are still considered essential:
[x] Live preview: This is essential for aligning the cameras during hardware setup. It is not absolutely necessary to support live preview while capturing to disk but this would be nice to have. The frame rate of the live preview does not need to be full rate, in fact ideally the live preview should adapt its framerate on the fly and drop frames as necessary as system resources allow.
[ ] Basic statistics on capture performance such as dropped frame counters, instantaneous frame rate, etc. TBD whether these should be displayed in real time, written to the InfluxDB telemetry database, or written as some kind of metadata that gets saved to disk along with the raw imagery file.
Auto-detect object and auto-set ROI to conserve USB bandwidth, CPU, and disk space. (Unclear if this is feasible or worth the added complexity.)
Ability to change settings at runtime
Any other GUI features
Integration or interfaces with other software such as track
Background: We are using the ZWO ASI178MC as the primary video capture camera for satellite pass imaging. There is a limited selection of capture software for Linux. Of the available options Planetary Imager is my favorite as it sports a clean interface and is easy to use. Unfortunately it has the following limitations:
Can't seem to achieve the camera's advertised 60 FPS with full resolution and 10 bit ADC on Linux. Full frame rate can be achieved on Windows. Not sure if this is due to Planetary Imager itself, the ZWO driver, or some combination.
Can't disable preview, even when recording. Can only limit the frame rate of the preview. Would prefer to be able to turn off preview to save CPU.
Only choices for auto gain/exposure control are use of the camera's internal auto mode for these controls. However when these are enabled the camera seems to allow the image to be overexposed in some cases.
Planetary Imager is open source GPL so if it makes sense we can consider forking it to try to fix these issues rather than start from scratch. https://github.com/GuLinux/PlanetaryImager
In hindsight the scope of this issue was too large. The bulk of the work has been completed and we now have working capture software. Remaining open work will be captured on separate issues.
Develop custom capture software for the ZWO ASI178MC camera using the manufacturer's C/C++ SDK. For now this will be a separate program from the track Python package. In the future we may want a higher level of integration with the existing software in the track package so this should be taken into account when developing the software architecture.
Urgent must-have features include:
Less urgent features that are still considered essential:
Other features that might be considered later, but which are out of scope for now:
Background: We are using the ZWO ASI178MC as the primary video capture camera for satellite pass imaging. There is a limited selection of capture software for Linux. Of the available options Planetary Imager is my favorite as it sports a clean interface and is easy to use. Unfortunately it has the following limitations:
Planetary Imager is open source GPL so if it makes sense we can consider forking it to try to fix these issues rather than start from scratch. https://github.com/GuLinux/PlanetaryImager
Helpful reverse-engineering effort: https://github.com/sidneycadot/ZWO-ASI-ReverseEngineering