Model the annual aberration of light in the astrometric kernels - #990
Open
Cybis320 wants to merge 1 commit into
Open
Model the annual aberration of light in the astrometric kernels#990Cybis320 wants to merge 1 commit into
Cybis320 wants to merge 1 commit into
Conversation
The star catalog gives barycentric directions; the camera sees them displaced by the annual aberration, up to 20.5 arcsec towards the apex of the Earth's motion, and the displacement changes by up to ~0.6 arcmin across a night's hour-angle range and through the year. Without a model the star fit absorbs it into RA_d, dec_d and pos_angle_ref, so the fitted pointing of a fixed camera wanders in alt/az over the night (the residual "chase" in the calibration variation plots) and the platepar's reference pointing is not the true pointing. cyraDecToXY now displaces catalog directions by the aberration before projecting them, and cyXYToRADec removes it, so the platepar describes the true pointing and stars still come out at their catalog positions. The Earth's velocity is from the Keplerian orbit (Meeus ch. 25, mean longitudes referred to J2000), 0.02 arcsec from erfa's epv00 + ab. The pipeline distinguishes stars from image measurements: light from a meteor in the atmosphere is not aberrated (source and observer move together), so for measurement=True xyToRaDecPP leaves the aberration in and returns the geometric direction in the Earth's frame, which is what a trajectory solver uses. Every caller that converts meteor centroids or picks already passes measurement=True. raDecToXYPP gets the same keyword for projecting Earth-frame directions. The correction is always on; there is no configuration option. The kernel keyword `aberration` (default True) remains for tests and for callers that need the old behaviour. Verified against erfa (0.1 arcsec), by round trips, on a distortion-free synthetic camera followed through the night at off-centre pixels (the star fit stays on the catalog directions to 0.5" over the whole frame, with no roll or scale error), and by recalibrating 44 nights from 17 GMN stations with the correction off and on: the fits move by the predicted amount (slope 1.01 / 0.99 in alt/az, expected 1.00) and the settled-night altitude drift of quiet cameras drops by roughly 40%. Star-fit residuals are unchanged. Meteor astrometry changes by the aberration at the meteor's direction, up to 20.5 arcsec; existing platepars absorb the change on their next refit. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01CzZHCZoftFjV712njkWB5v
Cybis320
force-pushed
the
aberration-correction
branch
from
September 6, 2026 18:53
fc531e0 to
e7b200f
Compare
Cybis320
added a commit
that referenced
this pull request
Sep 6, 2026
…d geodetic kernels Follows the cherry-picks of the nutation fix (#989), the aberration correction (#990) and the refraction model (#991) onto this branch. The RA/Dec kernels took the scale with #991; this branch's own kernels and their iterative inverses (cyXYToAltAz, cyAltAzToXY, cyRaDecToXY_iter, cyXYHttoENU_wgs84, cyXYToGeo_wgs84, cyENUToXY_iter, cyENHtToXY_iter, cyGeoToXY_wgs84_iter) now take a refraction_scale argument as well, and every wrapper and Platepar method passes refractionScale(elev), so the alt/az and ENU paths refract consistently with the RA/Dec path. The finite-target-height fraction is provided but not yet applied in the height-aware kernels. Tests adapted to the merged kernels: the refraction fit test builds its star truth as the catalog direction (aberration removed) when the kernels model the aberration; the pointing test converts the platepar's epoch-of-date pointing to J2000 with the kernels' own transform, which now includes the nutation; the ENU -> XY round-trip tolerance reflects the solver's 0.01 px step criterion, which leaves up to ~0.1 px at low altitude with refraction. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01CzZHCZoftFjV712njkWB5v
Cybis320
added a commit
that referenced
this pull request
Sep 6, 2026
… the aberration When the kernels model the annual aberration (#990), a star's catalog direction is its Earth-frame direction with the aberration removed; the test's synthetic star truth now does the same when removeAberration is available, and the fitted platepar is evaluated through the star path, so the test passes before and after #990. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01CzZHCZoftFjV712njkWB5v
Cybis320
added a commit
that referenced
this pull request
Sep 6, 2026
…c kernels (includes PR #989 nutation fix) # Conflicts: # RMS/Astrometry/ApplyAstrometry.py
Cybis320
added a commit
that referenced
this pull request
Sep 6, 2026
…he finite-target-height fraction Resolutions against the already-merged PRs #987 and #990: - Kernel signatures carry both the aberration flag (#990) and refraction_scale (#991); the calibrated wrappers pass both. - Platepar keeps the epoch-of-date pointing converters from #987 and scales their scalar refraction helpers with refractionScale(elev). - alpha2's iterative inverter cyRaDecToXY_iter / raDecToXYPP_iter gets the same aberration shift and refraction scale as the forward kernel, so the display projection stays an exact round trip. - The #987 pointing test now checks at the station's refraction scale.
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.
Stacked on #989 (base branch
fix-nutation-frame); only the aberration change shows in the diff. Rebased from the study branchaberration-correctionand simplified: the correction is always on, there is no.configoption.Summary
The star catalog gives barycentric directions; the camera sees them displaced by the annual aberration of light, up to 20.5″ towards the apex of the Earth's motion. Across a night's hour-angle range the alt/az projection of that displacement changes by up to ~0.6′. Without a model, the star fit absorbs it into
RA_d,dec_dandpos_angle_ref: the fitted pointing of a fixed camera wanders through the night (the residual "chase" left in the calibration variation plots after the precession fix), and the platepar's reference pointing is not the true pointing.cyraDecToXYdisplaces catalog directions by the aberration before projecting;cyXYToRADecremoves it. The platepar then describes the true pointing and stars still come out at their catalog positions.epv00+ab.Stars and meteors are different frames
Light from a meteor is not aberrated: source and observer move together (the 0.3 ms light-time displacement and the aberration cancel exactly to first order). So:
measurement=False, default)measurement=True)xyToRaDecPPraDecToXYPPThe fit, star matching, photometry and the sky residuals all go through the star path. Every caller that converts meteor centroids or picks already passes
measurement=True(applyPlateparToCentroids,applyAstrometryFTPdetectinfo, the ECSV writer, EventMonitor, SkyFit2 and Astra picks), so FTPdetectinfo gets Earth-frame directions with no further change. Callers that project Earth-frame objects through the star path (satellite positions, FOV footprints, EventMonitor's trajectory projection) are off by the 20″, i.e. 0.1 to 0.3 px at GMN scales, and were left alone.Without this distinction (the study branch removed the aberration for everything), meteor directions would have stayed where they are today: biased by the aberration, because the uncorrected fit absorbs it and the removal then takes it out again.
Verification
Tests/test_aberration.py: shift magnitude and inverse, velocity against erfa (0.1″), forward/reverse round trips for both paths, that a measurement at a star's pixel comes out at the star's apparent (aberrated) direction to 0.01″, and the star fit as in real life on the distortion-free synthetic camera of #989's test: with the platepar holding the true pointing, stars project to their catalog directions (erfa velocity aberration inverted) within 0.5″ over the whole 82×46° frame through the night, with no roll (0.3″) or scale (0.1″) error. Today's kernel on the same test drifts 33″ at the centre over a night and leaves 7 to 15″ at the corners that no pointing or rotation refit can absorb.44 nights from 17 GMN stations, recalibrated with the correction off and on (study branch): the fits move by the predicted amount (slope 1.01 in altitude, 0.99 in azimuth, expected 1.00, for every lens, pointing and season including two southern stations), and the settled-night altitude drift of the quiet cameras drops by about 40%. The residual after the correction has no aberration signature (slope 0.01 on the prediction) and does not repeat by sidereal time; it is thermal and mechanical. The nutation error fixed in #989 contributes only a constant offset within a night (its diurnal wander is 0.02 to 0.09′ p2p for the study dates), so those conclusions carry over.
USV001 2026-09-05 (217 FFs, 693 meteor centroids), this branch against the study's runs:
The aberration at those centroids' directions and times is 16.8″ mean (20.2″ max); the measured shift divided by it has a median of 0.98. The maximum includes the constant 7 to 9″ from the nutation fix. The study run moved the meteors only by the part of the aberration that a rigid pointing shift cannot absorb across this 82° field.
What changes for users
aberration(defaultTrue) remains oncyraDecToXY/cyXYToRADecfor tests and for reproducing the old behaviour.🤖 Generated with Claude Code
https://claude.ai/code/session_01CzZHCZoftFjV712njkWB5v