PolishookDavid / LAST_OCS

Code controling the LAST project Observatory
0 stars 0 forks source link

All _HA information in FITS header is correct only at the start of an exposure #29

Open EastEriq opened 4 weeks ago

EastEriq commented 4 weeks ago

With the new header scheme implemented in branch gledmagicwater, we construct Unit.UnitHeader just before commanding the cameras to expose. This part of the header has now all the mount related information, including the application of the pointing model. This has the huge advantage that the computation is done only once, and there is no need for each of the slaves to query the master again. This saves time and headaches in queries backfiring; in particular, it allows continuous saving with shorter exposure times, because less messaging is involved. However, the information is strictly correct only at the time of computation. For long sequences, HA drifts away at tracking speed, and becomes soon wrong (we never used anything but sidereal tracking, but in principle it could be a different speed). Even RA is correct only upon the assumption that the mount tracking is good and strictly sidereal.

I thought at this after closing #12.

Perhaps we should:

Not doing that, we have to inform the pipeline consumers that HAs need to be recomputed, using the initial HA, the tracking speed and the timing information written in the header. Too prone to error.

EastEriq commented 4 weeks ago

ditto for Alt and Az, they change along with tracking

EranOfek commented 4 weeks ago

functions that can be used: celestial.convert.convert_ha celestial.coo.hadec2azalt

On Mon, Jun 10, 2024 at 7:47 PM EastEriq @.***> wrote:

With the new header scheme implemented in branch gledmagicwater, we construct Unit.UnitHeader just before commanding the cameras to expose. This part of the header has now all the mount related information, including the application of the pointing model. This has the huge advantage that the computation is done only once, and there is no need for each the slaves to query the master again. This saves time and headaches in queries backfiring; it particular, it allows continuous saving with shorter exposure times, because less messaging is involved. However, the information is strictly correct only at the time of computation. For long sequences, HA drifts away at tracking speed, and becomes soon wrong (we never used anything but sidereal tracking, but in principle it could be a different speed). Even RA is correct only upon the assumption that the mount tracking is good and strictly sidereal.

I thought at this after closing #12 https://github.com/PolishookDavid/LAST_OCS/issues/12.

Perhaps we should:

  • construct a part of UnitHeader including only _RA (apparent, equinox of date, distorted, etc.) and tracking speed before exposing, as now;
  • calculate the resulting _HAs in the slaves using the value of RA and the image start time, upon the assumption that all the flavours of _HA evolve at the same tracking speed (differential corrections due to the pointing model are second order)

Not doing that, we have to inform the pipeline consumers that HAs need to be recomputed, using the initial HA, the tracking speed and the timing information written in the header. Too prone to error.

— Reply to this email directly, view it on GitHub https://github.com/PolishookDavid/LAST_OCS/issues/29, or unsubscribe https://github.com/notifications/unsubscribe-auth/ABJUQ4LBWPSB37APLXU5KDTZGXKDLAVCNFSM6AAAAABJCVXC5CVHI2DSMVQWIX3LMV43ASLTON2WKOZSGM2DIMZZGM3TIOA . You are receiving this because you are subscribed to this thread.Message ID: @.***>

EastEriq commented 3 weeks ago

yes those are the functions used in the mount code as well, the computation will need to be duplicated in the slave part of the construction of the header (unitCS.constructTelescopeHeader), after the master part only read the physical Ra and Dec. The disadvantage of duplication is duplication of the code and risk of divergence, but the advantage is less elementary queries to the mount controller (for simplicity of the code, each time one of {HA,Dec,Az,Alt,RA} is asked, both controllers are queried again)