Backend implementation of image capture process
N/A
This driver is platform independent.
INDIGO Astronomy open-source license.
indigo_server indigo_agent_imager indigo_ccd_...
The sequencer is controlled by "AGENT_IMAGER_SEQUENCE" property. It has "SEQUENCE" item describing sequence itself and "01", "02", ..., "15", "16" items describing sequence batches. Each item contains one or more commands separated by semicolons.
"SEQUENCE" item can contain the following commands:
| Command | Meaning |
|---|---|
| focus=XXX | execute autofocus routine with XXX seconds exposure time |
| park | park mount |
| YY | execute batch YY |
Example: "focus=5;1;2;3;1;2;3;park"
"01", "02", ..., "15", "16" items can contain the following commands:
| Command | Meaning |
|---|---|
| focus=XXX | execute autofocus routine with XXX seconds exposure time |
| count=XXX | set AGENT_IMAGER_BATCH.COUNT to XXX |
| exposure=XXX | set AGENT_IMAGER_BATCH.EXPOSURE to XXX |
| delay=XXX | set AGENT_IMAGER_BATCH.DELAY to XXX |
| filter=XXX | set WHEEL_SLOT.SLOT to the value corresponding to name XXX |
| mode=XXX | find and select CCD_MODE item with label XXX |
| name=XXX | set CCD_LOCAL_MODE.PREFIX to XXX |
| gain=XXX | set CCD_GAIN.GAIN to XXX |
| offset=XXX | set CCD_OFFSET.OFFSET to XXX |
| gamma=XXX | set CCD_GAMMA.GAMMA to XXX |
| temperature=XXX | set CCD_TEMPERATURE.TEMPERATURE to XXX |
| cooler=XXX | find and select CCD_COOLER item with label XXX |
| frame=XXX | find and select CCD_FRAME_TYPE item with label XXX |
| aperture=XXX | find and select DSLR_APERTURE item with label XXX |
| shutter=XXX | find and select DSLR_SHUTTER item with label XXX |
| iso=XXX | find and select DSLR_ISO item with label XXX |
Example: "exposure=1.0;count=10;name=M31_XXX;filter=Red"
AGENT_IMAGER_BREAKPOINT and AGENT_IMAGER_RESUME_CONDITION properties can be used for various interprocess interactions. If some items of AGENT_IMAGER_BREAKPOINT are set on, exposure_batch_process() will be suspended on the related point waiting for one of the following conditions:
- aborted by AGENT_ABORT_PROCESS property,
- resumed by AGENT_PAUSE_PROCESS property,
- if BARRIER item is selected in AGENT_IMAGER_RESUME_CONDITION and exposure_batch_process() for all related imager agents is suspended. In such case also running process in all related agents is resumed. This state is detected by the value of items of AGENT_IMAGER_BARRIER_STATE mirroring AGENT_PAUSE_PROCESS properties state on all related Imager Agents.
On one of Imager Agent instances select other Imager Agent instances as related agents, select PRE-CAPTURE breakpoint in AGENT_IMAGER_BREAKPOINT and BARRIER in AGENT_IMAGER_RESUME_CONDITION. On other Imager Agent instances don't select related agents, select PRE-CAPTURE breakpoint in AGENT_IMAGER_BREAKPOINT and TRIGGER in AGENT_IMAGER_RESUME_CONDITION.
Set the same COUNT value in AGENT_IMAGER_BATCH and start exposure batch on all Imager Agents in any order. The will wait for each other until all are suspended on PRE-CAPTURE and then resumed by Imager Agent with AGENT_IMAGER_RESUME_CONDITION set to BARRIER.
On one of Imager Agent instances select other Imager Agent instances and Guider agent as related agents, select PRE-CAPTURE and POST-CAPTURE breakpoints in AGENT_IMAGER_BREAKPOINT and BARRIER in AGENT_IMAGER_RESUME_CONDITION. Configure dithering as usual. On other Imager Agent instances don't select related agents, select PRE-CAPTURE and CAPTURE breakpoints in AGENT_IMAGER_BREAKPOINT and TRIGGER in AGENT_IMAGER_RESUME_CONDITION.
Set the same COUNT value in AGENT_IMAGER_BATCH and start guiding on Guider Agent and exposure batch on all Imager Agents in any order. The will wait for each other until all are suspended on PRE-DITHER and then resumed by Imager Agent with AGENT_IMAGER_RESUME_CONDITION set to BARRIER.
Setting AGENT_IMAGER_BREAKPOINT to any state and AGENT_IMAGER_RESUME_CONDITION to TRIGGER can be used to synchronise any number of AstroImager instances to any other events by INDIGO Script. Among other you can assure the exposure batch is not started before target temperature or weather conditions are met, to synchronise batch of short exposure on one agent with single long exposure on another and many more.
Remember, than making circular references in related agent chain or setting AGENT_IMAGER_RESUME_CONDITION to BARRIER on more than one Imager agent is not detected and can lead to recursion or deadlock!
Server side images are stored by the camera driver therefore they will be saved on the host where the driver runs. If the Imager agent uses remote driver, it will not be able to see those files and the client will not be able to download them using the remote agent. There are three posible solutions to this:
- Provide a common storage for the driver and the agent.
- Run another Imager agent on the driver host and use it only for image download.
- Generally it is not a good idea to use agents with remote drivers. Try to avoid this setup if possible. If you need multiserver setup try to run coresponding agents and drivers on the same host when posible.
To capture a batch using "macro mode" (=focus bracketing), follow these steps:
- Select the Camera and Focuser: Ensure the correct camera and focuser are chosen for the operation.
- Define the Focuser Step Size: Set the BRACKETING_STEP parameter under AGENT_IMAGER_FOCUS to specify the number of focuser steps between each frame.
- Set Exposure Details: Configure AGENT_IMAGER_BATCH with the desired batch settings.
- Set MACRO_MODE under AGENT_PROCESS_FEATURES
- Start the capture batch process: Set EXPOSURE under AGENT_START_PROCESS to initiate focus bracketing.
Once the process is complete, the focuser will automatically return to its initial position.