×

INDI Library v2.0.6 is Released (02 Feb 2024)

Bi-monthly release with minor bug fixes and improvements

Custom driver for unidimensional fluxes (radio/photons)

  • Posts: 57
  • Thank you received: 28
I was wondering if I could create a driver for a radio telescope or PMT/Photon detectors, something for reading one-dimesional fluxes like radio detection or photon counts.
I pointed to the CCD API of indi, but since CCDs and Videos are "framed" it could cause some difficulty.
Is there any way to read a constant flux or can I use 1px-height frames from CCD?
could be anyone interested on this argument?
Ilias.
The following user(s) said Thank You: Jasem Mutlaq, Radek Kaczorek
Last edit: 6 years 8 months ago by Ilia.
6 years 8 months ago #17910

Please Log in or Create an account to join the conversation.

I actually wrote several INDI drivers for a small 5 meter radio dish that operates at 1420Mhz with Spectracyber receiver (continuum and spectral). This was a few years ago, even before INDI::CCD was developed. I'm open to adding another class for radio or photon detectors. Find out what common properties & functionalities are required and start from here by creating a subclass of INDI::BaseDevice.
6 years 8 months ago #17911

Please Log in or Create an account to join the conversation.

  • Posts: 57
  • Thank you received: 28
One should take care of the timing resolution of these fluxes, for example I'd use a periodic frame reading (blob), its period should be determined by the resolution of the readings and timeouts for re-assembling the flux (number).
A spectrum blob also may be desirable.

One may decide to do interferometry, so there are some variables, like the dishes' distance, the object's position and current time and location.
For an interferometry application there is the need of a system to assemble the observations and to draw the uv-plane.
Even if one decides to use a single radio dish, and draw some image, these drivers should be linked with the mounting, to do scans around the object observed.
I'd leave to the hardware configuration issues regarding baseline delays and things similar (about interferometry).

If one instead decides to do photometry/radiometry, the only datasets needed may be flux continuum and spectrum.

Essentially there are these properties:
- flux (blob)
- spectrum (blob)
- resolution (number)
- timer (number)
- coords (scanning to mount, 4 numbers - x, y, w, h)
- plot/image (blob)

If anything else comes in mind I'll reply on a new message.
6 years 8 months ago #17914

Please Log in or Create an account to join the conversation.

I think the overall goal for now is to create a base class that can be subclassed by concrete implementations later on. Perhaps it is best to create base and then implement your detector as a child class. Like Telescope and CCD classes, you can switch capabilities by setCapabilities(..) function. Maybe I'll also migrate Spectracyber to this base class later.
The following user(s) said Thank You: Ilia
6 years 8 months ago #17919

Please Log in or Create an account to join the conversation.

  • Posts: 57
  • Thank you received: 28
I'll do happily this work, please allow some day because I'm full of work in this moment.
I'll add the minimum required in a base class for monodimensional detectors (like Detectors class), then some sub-class could be "Analog Detectors" and "Pulse Detectors" (general, because one could use PMTs or APDs, or else Radio receivers).
Ilias.
Last edit: 6 years 8 months ago by Ilia.
6 years 8 months ago #17921

Please Log in or Create an account to join the conversation.

  • Posts: 57
  • Thank you received: 28
I quickly created a new class named Detectors. I modified commit 4e1d1584181245471912d4059f630f39f65863ba from git, I added a new driver interface and enlarged the size of get/setDriverInterface type to uint32_t.
Added also two files: indidetector.cpp and indidetector.h.
All is provvisory, I successfully compiled it, but it misses many things, still incomplete, but it is a start.

Ilias.
The following user(s) said Thank You: Jasem Mutlaq
6 years 8 months ago #17936
Attachments:

Please Log in or Create an account to join the conversation.

Great progress!! Please submit a PR to INDI whenever you are ready!
6 years 8 months ago #17940

Please Log in or Create an account to join the conversation.

  • Posts: 57
  • Thank you received: 28
Jasem, As far as you know, do you think these properties suffice?

-Bandwidth (Hz, number)
-Observed Frequency (Hz, number)
-Sample Frequency (Hz, number)
-Bits per Sample (8, 16, 32, Number)
-Capture Duration (Sec, Number)
-Capture (blob, captured data, length=CaptureDuration*SampleFrequency[*Bpp])
---
I personally would add these ones, since the receiver I'm about to buy seems to reads very slowly (Radioastrolab RAL10):
-BufferSize/Heartbeat (Number, for framed input)
-Raw wave/Intensity (Switch - maybe unnecessary as it can be done in hardware)
-Spectrum1 (Blob)
-Small library* for FFT, Graphs, imaging and statistics into:
-Render1 (Blob)
[edit]
*: this library would be useful also for photometry using CCDs on variable objects.

Let me know your opinion,
Ilias.
Last edit: 6 years 8 months ago by Ilia. Reason: little clarification about the device
6 years 8 months ago #17978

Please Log in or Create an account to join the conversation.

These look good. Bear in mind I plan also to migrate INDI SpectraCyber driver to this class, so take a look there and see if there are any other things to consider. The base class should work like others in terms of setting capabilities so that it can be customized depending on what is provided by the child class.

What small library do you have on mind?
6 years 8 months ago #17981

Please Log in or Create an account to join the conversation.

  • Posts: 57
  • Thank you received: 28
I'd like to add a library with some functionalities and math operations used in Astronomy, like signal processing operations:
-Fourier transforms.
-Wavelets.
-Autocorrelation.
-Convolution/Deconvolution.
-Here the guiding algorithm could find place.
-Notch/Band pass filters.
-Others.
I collected most of these function into a C# library called ADPASDK (not well documented), which is part of my software, but I'd be happy to port them to INDI.

Ilias.
6 years 8 months ago #17984

Please Log in or Create an account to join the conversation.

That would be great. Drivers that need such library can depend on it. You can create a Github project for it, and I can make an Ubuntu package for it.
6 years 8 months ago #17985

Please Log in or Create an account to join the conversation.

  • Posts: 57
  • Thank you received: 28
Hi Jasem, I think I'm ready. I'd prefer to submit a patch here instead of a pull-request, since I don't have enough knowledge of github.
Ilias.
Last edit: 6 years 8 months ago by Ilia.
6 years 8 months ago #18014

Please Log in or Create an account to join the conversation.

Time to create page: 0.413 seconds