slicecamd: structured [ACQMODEL] log line at fine-acquire lock (for ACAM geometry model)#454
Open
cfremling wants to merge 3 commits into
Open
slicecamd: structured [ACQMODEL] log line at fine-acquire lock (for ACAM geometry model)#454cfremling wants to merge 3 commits into
cfremling wants to merge 3 commits into
Conversation
Emit one structured line at fine-acquire convergence with the total ACAM->slit residual (sum of the corrections applied during the run) paired with the pointing geometry: cass rotator angle, altitude (from airmass), azimuth, and telescope RA/DEC (TCS telemetry). Why: the ACAM astrometric acquire leaves the target a few arcsec off the slit, and fine-acquire removes that residual every time. Logging the residual vs geometry, run after run, lets us build/refine a geometric (flexure) model of the ACAM->slit offset over time so acam-acquire can pre-compensate it -- fewer fine-acquire iterations and fewer non-converging acquisitions. Today this signal is only recoverable by scraping per-correction "requested offsets" lines (which are unit-ambiguous and interleaved with manual put-on-slit). No behavior change: pure logging plus two per-run accumulators reset at run start. HA is derived offline from TELRA + the line timestamp, so no site ephemeris is added to the daemon. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
The [ACQMODEL] line previously logged the telescope's actual RA/DEC (TELRA/
TELDEC from TCS telemetry). That is the OUTPUT of acam-acquire and drifts as
fine-acquire applies offsets, so it cannot be used to fit the SCOPE->ACAM
geometry. Log the target's GOAL coordinates instead -- the INPUT to the
transform -- sourced from the database by the sequencer.
- sequencerd: do_slicecam_fineacquire passes the DB target coords on the
fineacquire start command ("... start goal <ra_deg> <dec_deg>").
- slicecamd: fineacquire parses/strips the optional "goal <ra> <dec>", stores
it, and the [ACQMODEL] line now reports GOALRA/GOALDEC + CASANGLE (actual
rotator angle) + total ACAM->slit residual. Dropped TELRA/TELDEC and the
ALT/AZ/AIRMASS fields -- altitude/hour-angle are derived offline from
GOALRA/GOALDEC + the line timestamp.
Manual "fineacquire start" without goal logs GOALRA/GOALDEC as nan.
Still pure logging plus per-run accumulators; no control-path change.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
…ineacquire command
Contributor
|
I reworked how the [ACQMODEL] line obtains the GOAL (DB target) coords. Instead of the sequencer appending |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
What
Adds one structured log line at fine-acquire convergence (lock):
dRA/dDEC= total ACAM→slit residual = sum of the corrections fine-acquire applied during the run (the offset acam-acquire left behind), accumulated in two per-run members reset at run start.GOALRA/GOALDEC= the target's goal coordinates read from the database (the sequencer passes them on thefineacquire start goal <ra> <dec>command).CASANGLE= the actual cassegrain rotator angle (TCS telemetry).Why
The ACAM astrometric acquire leaves the target a few arcsec off the slit, and slicecam fine-acquire removes that residual on every acquisition. Logging residual vs geometry, run after run, is the dataset needed to build/refine a geometric model of the ACAM→slit offset (and to recalibrate the
FPoffsetsD_A/Thetaparameters — a small angle error there is amplified by the ~8′ ACAM↔slit baseline into a cass-dependent residual).Crucially, the geometry must be fit against the GOAL coordinates — the input to the SCOPE→ACAM transform — not the telescope's actual RA/DEC. The actual pointing is the output of acam-acquire and drifts as fine-acquire applies offsets, so logging it would be circular. Altitude/hour-angle are derived offline from GOALRA/GOALDEC + the line's timestamp.
Risk
None to operations — pure logging plus three per-run
doubles. The sequencer change only appends the DB goal to the existing fine-acquire start command (slicecamd parses it as an optionalgoal <ra> <dec>; manual runs without it lognan). No control-path change.🤖 Generated with Claude Code