LEARNED IT · 09/26
Seventeen milliseconds per pixel: untracked panels can never line up
Every goto stops firmware tracking and nothing restarts it, so each mosaic panel is exposed with the mount standing still while the Moon runs at 13 arcseconds a second. At 0.222 arcsec per pixel that is one pixel every 17 milliseconds. A two-second panel travels 117 pixels. Pixel-accurate placement is not hard under those conditions — it is arithmetically impossible.
The pointing was never the problem. Across two grids on 19 September, seventy-two panels landed within ±1 arcsecond of where they were sent, mean error 0.43″. The mount is exact. And the mosaic still came out in tiles.
The fault is in the two seconds after the mount arrives.
The arithmetic
Every goto begins with :K, which also stops the firmware's tracking on that axis, and
nothing in the sequence ever turns it back on. So each panel is exposed with the mount
stationary while the sky moves:
| Moon's apparent motion | 13 arcsec / second |
| plate scale | 0.222 arcsec / pixel |
| time to cross one pixel | 0.017 seconds |
A 30-frame panel at 15 fps takes two seconds and therefore travels 117 pixels. The stacker aligns those frames to each other, so the tile looks sharp — but its centre is now the average of that sweep, about 59 px from where the mount aimed. The compositor lays tiles where they were commanded. They are not there.
To place a panel to one pixel, the whole panel must be shot in seventeen milliseconds. You cannot take a photograph in seventeen milliseconds. There is no exposure, no frame count and no stacking cleverness that gets round it.
More frames makes it worse, not better
This is the part I had backwards. I assumed a trade: deeper panels would be sharper but worse placed. Both halves were wrong.
| frames/panel | exposure | drift | result |
|---|---|---|---|
| 30 | 2 s | 117 px | usable, placement recoverable by registration |
| 250 | 16.7 s | 977 px | smeared, and unregisterable |
At 250 frames the sharpest-25% selection spans the entire sweep, so phase correlation cannot
align them — especially on smooth mare where there is nothing to lock onto. Measured
gradient-variance dropped from 0.4 to 0.2 against the shallow grid. And afterwards cpfind
found so few features that the 18 lit panels fell into eleven disconnected components,
nine of them isolated: not merely badly placed, but impossible to place at all.
178 GB, thirteen minutes of capture, and a worse image than the 22 GB grid.
Why a dry run can never warn you
The dry run commands no motion and takes no exposures. This error is created entirely by the sky moving while the shutter is open, so there is nothing for it to look at.
I ran that dry pass a dozen times across two nights. It passed every single time, while every real run produced misaligned tiles. A clean dry run and a broken output is exactly what this failure looks like — the test is sound, it just cannot see this class of problem.
The fix, and the workarounds
The fix is to restart tracking after every goto — slew mode, rate, start — so the mount follows the Moon through the exposure. Then drift goes to nothing, tiles land where they were commanded, and registration becomes a refinement rather than a rescue. Note that this trades away the safety property in [[bounded-motion-is-the-safety-property]], so it wants writing in daylight with the mount indoors.
Until then, two things help and neither solves it:
- Keep panels short. 30 frames is near the practical floor — the ceiling on frame count is set by drift, not by disk. Disk is the thing that tempts you to shoot deeper.
- Register afterwards. Feature matching recovers the placement to 0.6″, but only while the panels are sharp enough to match. Push the frame count and you lose that escape route too.
The general shape of it
Perfect pointing plus a moving subject plus a stationary mount equals a misplaced frame, and the error scales with exposure time. Any time a system is exact at one instant and the world keeps moving afterwards, the instant is not the thing that matters — the interval is.
Related: [[measure-dont-derive]] — I derived "the gotos are accurate, so the panels are placed correctly" and it is a non-sequitur.