A N.I.N.A. plugin that automates telescope collimation data capture for InnovationForesight's SkyWave AI wavefront analysis.
- Background — SkyWave & AI Wavefront Sensing
- Why this plugin exists
- What this plugin does differently
- How it works
- Two tools, one workflow
- Star presets
- Tips
- Requirements
- License
SkyWave is a desktop application by InnovationForesight that uses AI-based wavefront sensing (AIWFS) to analyze telescope optics. You feed it a defocused star image (FITS), and SkyWave extracts the telescope's full wavefront error — coma, astigmatism, tilt, spacing issues, field curvature, and more — all in seconds, on a standard laptop.
What makes SkyWave unique is that it doesn't just tell you "your collimation is off." It quantifies how much and in which direction, showing Zernike coefficients, wavefront maps, and actionable correction vectors. For telescopes with adjustable optics (SCTs, RCs, Newtonians, refractors with tilt adjusters), this turns collimation from guesswork into a measured, repeatable process.
SkyWave can work with a single on-axis star, but its real power emerges when it receives defocused star data from multiple field positions — that's where this plugin comes in.
Precise telescope collimation is critical for sharp, aberration-free images — but getting there has always been tedious. The traditional workflow means manually slewing to a star, defocusing, capturing a frame, then repeating at multiple field positions, often juggling between NINA sequences, PixInsight scripts, and manual mount control. Most people give up after a single on-axis star and never detect the field-dependent problems lurking at the edges of their sensor.
Instead of capturing just one defocused star at the center of the sensor, this plugin captures the star at multiple positions across the full sensor plane in a circular ring pattern and integrates them into a single FITS. This gives SkyWave the data it needs to measure field-dependent aberrations — the kind you only see off-axis:
- Sensor tilt — uneven focus plane across the field
- Spacing errors — incorrect backfocus causing off-axis aberrations
- Off-axis coma & astigmatism — collimation errors invisible at the center
- Field curvature — the natural curve of the focal plane
A single centered star cannot reveal these. Spreading the defocused donut across the entire sensor makes the difference between "collimated on-axis" and "truly collimated across the whole field."
The plugin handles everything automatically — slew, center, filter change, optional autofocus, defocus, circular capture, MAX-stacking, optional crop, and refocus — in one click.
- Select an isolated star of appropriate magnitude (from 106 built-in presets or manual RA/Dec — "Find Best" auto-selects based on your optics to target ~60% ADU without overexposure)
- Switch to L filter and plate-solve & center on the star (in focus)
- Switch to target filter (e.g. R, G, B) for capture
- Optionally run autofocus — a dialog asks before defocusing (works with NINA's built-in AF or Hocusfocus)
- Defocus by a configurable number of focuser steps (with µm/step readout for your focuser)
- Capture exposures at N positions around a circular ring pattern (blind slews — no plate-solving while defocused)
- MAX-stack sub-frames — each pixel keeps its maximum value across all frames, so every defocused donut shines through without dilution
- Optionally crop the integrated image to the ring pattern bounding box + 300px safety margin
- Save a 16-bit monochrome FITS with proper headers (FOCALLEN, XPIXSZ, XBINNING, etc.) to your configured output folder
- Refocus — always returns the focuser and restores the original filter, even on failure or cancel
Plugin settings and description in NINA:
Running a collimation capture — sensor map with ring positions and live camera preview:
The recommended way. A native N.I.N.A. plugin that does everything inside NINA — no external tools required:
- Dockable tool panel in NINA's imaging tab — click "Run Collimation" and it does everything
- Star picker with 106 presets (mag 2–5, all seasons) and "Find Best" auto-selection based on time, location, and optical setup
- Magnitude advisor — computes ideal star brightness from your focal length, aperture, exposure, and gain to target ~60% ADU fill
- µm/step readout — enter your focuser's microns-per-step and see real defocus distance in µm
- Live sensor map showing ring positions with progress (grey=pending, red=active, green=done)
- Camera preview of each captured frame with auto-stretch (median + MAD robust statistics)
- MAX stacking — each pixel keeps its maximum value, preserving every donut across the field
- Optional crop — trims the integrated image to the ring pattern + 300px margin (off by default — SkyWave may need full sensor dimensions)
- Native FITS output — always 16-bit unsigned with correct headers, regardless of NINA's default format setting
- Optional autofocus before defocusing — works with any AF provider (NINA built-in, Hocusfocus, etc.)
- Full cancellation support — focus and filter always restored on cancel or error
- All settings persist between NINA sessions
| Setting | Default | Description |
|---|---|---|
| Exposure (s) | 8.0 | Capture duration per position |
| Gain | 100 | Camera gain |
| Offset | 0 | Camera offset/bias |
| Defocus steps | 2442 | Focuser steps to defocus |
| µm/step | 3.0 | Microns per focuser step (depends on focuser + OAZ combo) |
| Ring positions | 8 | Number of positions on the circle |
| Radius % | 80 | Ring radius as percentage of FOV |
| Include center | On | Add center position as first capture |
| Settle time (s) | 3 | Pause after slew before exposure |
| Filter | L | Capture filter (L, R, G, B, Ha, etc.) |
| Crop | Off | Crop to ring pattern + 300px margin |
| Del subs | Off | Auto-delete individual sub-frames after stacking |
| AF first | Off | Run autofocus before defocusing |
- Download the zip from Releases
- Unzip and double-click
install.bat(close NINA first) - Restart N.I.N.A. — find Collimation Helper for SkyWave in the tool panels
- Open the Collimation Helper for SkyWave panel (imaging tab, tool windows)
- Select a star from the presets or click Find Best for automatic selection
- Set defocus steps, exposure time, filter, gain, positions, radius
- Set the output folder via the
...browse button - Click Run Collimation
- The integrated FITS appears in your output folder, ready for SkyWave
If you prefer to build your own sequences manually, or don't use N.I.N.A., there is also a standalone browser-based tool that calculates the same circular ring pattern and generates ready-to-use sequence files. It does roughly the same math as the plugin, but the plugin is far more convenient for NINA users since it handles the entire capture-to-integration workflow automatically.
- Open in browser — runs entirely in your browser, no installation needed
- Generates downloadable
.jsonfor N.I.N.A. Advanced Sequencer - Generates downloadable
.jsPixInsight integration script - Star finder with altitude/LST calculator and the same 106 star presets
- Magnitude advisor based on your optical setup
106 collimation stars covering both hemispheres — declinations from -79° (near the south celestial pole) to +78° (near Polaris). Sourced from the SkyWave "Collimation Stars" catalog plus hand-picked isolated targets for northern and southern observers. Each preset includes constellation, Bayer/Flamsteed designation, visual magnitude, and catalog references.
Highlights by season:
| Star | RA | Dec | Mag | Season | Notes |
|---|---|---|---|---|---|
| Kochab | 14:50:42.3 | +74:09:20 | 2.08 | Circumpolar | β UMi — very isolated, bright |
| α Cam | 04:54:03.0 | +66:20:34 | 4.29 | Winter | Sparsest field in the sky |
| Menkar | 03:02:16.8 | +04:05:23 | 2.53 | Winter | α Cet — bright, low Dec |
| κ Dra | 12:33:28.9 | +69:47:18 | 3.87 | Spring | Extremely clean field |
| θ Boo | 14:25:11.8 | +51:51:03 | 4.05 | Spring | Very isolated, ideal near zenith 52°N |
| Tania Australis | 10:22:19.7 | +41:30:00 | 3.05 | Spring | μ UMa — pair with Tania Borealis |
| 42 Dra | 18:25:59.1 | +65:33:49 | 4.82 | Summer | Extremely isolated, longer exposures |
| Zubeneschamali | 15:17:00.4 | -09:23:00 | 2.61 | Summer | β Lib — bright, southern |
| Alfirk | 21:28:39.6 | +70:33:39 | 3.23 | Fall | β Cep — bright and well isolated |
| γ Sge | 19:58:45.4 | +19:29:32 | 3.47 | Fall | Gamma Sge — lower Dec |
| β Hyi | 00:25:45.1 | -77:15:15 | 2.80 | S. Circumpolar | Near south pole, extremely isolated |
| α Ret | 04:14:25.5 | -62:28:26 | 3.33 | S. Winter | Very sparse Reticulum field |
| Tiaki | 22:42:40.1 | -46:53:05 | 2.07 | S. Fall | β Gru — very bright, isolated |
| Phact | 05:39:38.9 | -34:04:27 | 2.64 | S. Winter | α Col — bright Columba |
The "Find Best" button auto-selects the optimal star based on your location, time, and optical setup.
- Camera rotation: Set your camera to 0° or 180° rotation to avoid confusion with mirrored orientation in the integrated image. Since we capture in a circle, rotation doesn't affect collimation quality — it just makes visual interpretation easier.
- Center position first: The plugin always captures the center star position first (if enabled), then the ring positions. This matches SkyWave's expectation for field-dependent analysis.
- MAX stacking: The integration uses pixel-by-pixel MAX stacking — no alignment, no rejection, no normalization. Each frame shows the defocused star at a different field position. MAX mode ensures every donut ring is preserved at full brightness without dilution from empty areas.
- Output format: Always 16-bit unsigned FITS with proper headers (FOCALLEN, XPIXSZ, XBINNING, etc.). Never XISF — regardless of NINA's default format setting.
- Sub-frames: When "Del subs" is off, individual frames are kept in a
subframes_*subfolder inside your output directory. - Bin 2 pixel size: If you capture at bin 2, remember that your effective pixel size doubles. Enter your native (bin 1) pixel size in NINA's camera settings — the plugin handles the FITS header math.
- Defocus steps must be adjusted for your setup: The default 2442 steps is a reference value. To calculate the correct value: (1) run SkyWave to determine the required defocus in microns for your telescope, (2) divide by your focuser's µm/step ratio. The µm/step ratio depends on your specific focuser + OAZ combination — to find it, move the focuser out by e.g. 10000 steps, measure the physical distance travelled from the scope backplate, and divide the distance by 10000. Example: ZWO EAF + FeatherTouch OAZ on an RC12 ≈ 3 µm/step, so 7326 µm ÷ 3 = 2442 steps.
- Focuser calibration: Use the µm/step field to verify your defocus amount in real physical units. The plugin multiplies steps × µm/step to show the total defocus in microns — compare this with what SkyWave requires.
- Blind slews: Ring positions are reached via blind SlewToRaDec — no plate-solving while defocused. This is by design: the telescope stays defocused throughout the ring capture, and plate-solving defocused stars is unreliable.
- N.I.N.A. 3.0+ (.NET 8.0)
- GoTo mount with slew capability
- Electronic focuser
- Camera with FITS output
- Filter wheel (optional — for L filter plate-solving and target filter capture)
- SkyWave by InnovationForesight for wavefront analysis
If you find this useful, consider supporting my work via Buy Me a Coffee

