SGPro 4.4 - Plate Solving Overhaul

OK, not really… seemed like a more dramatic title though.

In general, there’s nothing wrong with plate solving SGPro 4.3. The goal of the plate solving overhaul was done with the following goals in mind:

  • Make SGPro plate solving as robust as possible and minimize that probability of it ruining your imaging session.
  • Make SGPro as intuitive to use as possible by overhauling a lot of the UI used for plate solving, the set of errors issued for failures and how to set up and install specific solvers.
  • Make SGPro as flexible as possible and allow multitudes of different plate solving configurations in a single equipment profile or across multiple different profiles.
  • Make SGPro easier to use and configure (especially for new and/or inexperienced users)
  • As always… squash bugs (mostly bugs that were unique to specific plate solvers)

None of the changes in 4.4 are big ones, but they are still worth going over. Here is what’s changing…

This is a lengthy post and, as such, I’ve added a small table of contents here so you can just skip to the parts that are interesting or relevant to you. We’ll cover the following things in some detail (this is also a documentation draft):

The Chain Solver

The new Chain Solver is really more of a concept than an actual solver. The easiest way to think about it is as a simple group of solvers where it will attempt to solve by using one of those solvers and will stop when it has success. The Chain Solver maintains a prioritization of its “internal” solvers and will always attempt to solve in that same order. Of course, you can easily customize this order just by dragging the solvers around in the list until they match your preferences. In addition to solver precedence, you can also use multiple instances of the same solver where each instance uses the same solver application but carries different settings. Lastly, it is important to understand that every equipment profile carries its own unique Chain Solver. In other words, as an example, one equipment profile may configure Pinpoint to use UCAC catalogs and another may use Atlas and switching between them will not clobber any kind of “global” notion of a Pinpoint config.

Let’s look at a Chain Solver setup where we want to, for all solves, attempt with the following solvers: Pinpoint (with Atlas), Pinpoint (with GSC), PlateSolve3 (with Kepler) and, finally, if all of those fail, by using ANSVR:


A checkmark means the solver is active in the chain and, of course, if it’s not checked, the Chain Solver will not use it.

Let’s take a closer look at the Chain Solver list (located in the Control Panel and also in the Equipment Profile Manager):

Configuration and Reordering the Chain

Reordering the chain is super simple. You can either grab the “gripper” icon in each row and drag the solver to wherever you’d like it in the solver order (the arrow points to the “gripper” icon):


Or you can right-click it to choose from several reordering options like “move to top”, “move up”, etc.


Identifying Blind Solvers

It is useful to easily understand what solvers function in a “blind” capacity. These solvers are usually more robust, but this robustness comes at the cost of speed. In any case, it is often a good idea to place these solvers at or near the end of your chain. Each solver has an eyeball icon. If the icon is disabled (gray), it means that the solver is NOT a blind solver and will require accurate hints to succeed. If the icon is not gray, then, of course, the solver is blind (but hints may still be valuable):


What is that little “pin” icon?

It serves to notify you that the plate solver supports “click solving” (for any image solve an arbitrary x,y location). At this moment, we have been able to coerce all solvers to function as viable click solvers (it may get removed for release)

Solver Status (and Troubleshooting)

For all the plate solvers SGPro supports, there are essentially 2 different classifications of errors that prevent use of a solver in the chain:

  • Not installed / bad install errors: The plate solver is simply not installed or, it is installed, but is currently unusable (missing files, servers down, etc)
  • Server install is OK, but SGPro thinks your solver doesn’t know where to find its required catalogs / indices.

Here is what it looks like when one of the supported solvers has an install error:


You’ll notice several identifying features here. The solver itself will have a red border (ignore picture… UI not final), an “X” icon and red text that reads “not installed”. Hovering over the text or icon reveals a tooltip with more information specific to that solver:


And finally, if you actually click the item or right-click it and choose “Download PlateSolve3” you’ll be transported directly to PlaneWave’s site. This has been implemented for all supported solvers.


Cloning Solvers

Some solvers support the notion of “cloning”. This is an advanced feature that, in most cases, can safely be ignored. In the case that you need it though, here it is… What’s it do? It essentially allows you to use the same solver in the list multiple times, but use each instance configured in a different way. An example might include using the same solver in the list twice, but each instance is configured to use a different catalog. Any setting available to a solver can be used and set in a different way between clones. Here is an example of the Pinpoint solver and it’s clone where each uses a different catalog. The top one, named “Atlas” (you can name clones whatever you want) will be used first and then, if that fails, the Chain Solver will move on to using Pinpoint with the GSC catalog (note that this configuration is non-sensical, but serves to illustrate an easy-to-comprehend example).


tip: Hovering the mouse over the solver will reveal its underlying type (in this case Pinpoint).

The Image Preview Context Menu

Changes are afoot here… both in terms of new features and modifications that help support the notion of the new Chain Solver. First let’s cover changes to existing functionality. For many years, SGPro has allowed you to attempt to plate solve almost any image you can see on-screen. This can be done by right-clicking anywhere on the image and simply choose “Plate Solve”. This functionality is certainly still present and is just as easy to use. That said, there are a couple of key differences to be aware of here.

The Plate Solve Image Option

  • Clicking the “Plate Solve” options will now invoke the solve using the Chain Solver (see above)

  • Underneath the “Plate Solve” option you’ll find a new that reads “Plate Solve (using specific solver)”


The new option does exactly what you think it does and allows you bypass the Chain Solver and choose to solve immediately with the chosen solver. If a solver is not active in the chain (checked), it will not appear in the menu here.

The Center Here Option

This option has very similar changes to the above Plate Solve option. The top-level “Center Here” option will attempt to center the telescope using the Chain Solver and, alternatively, you can choose to bypass the Chain Solver and center the telescope using any currently active solver within the chain.

The New Plate Solve at Mouse Cursor Option

This option functions almost exactly like its “Plate Solve” sibling (discussed above), but with one key difference. Instead of solving at image center, this option will solve the image at the coordinates used to invoke the context menu. Other than that, it has the same optional behavior that allows use of the Chain Solver or any of the individual solvers that comprise its chain.

The Overhauled Pre-Plate Solve Dialog

This is a small thing, but the dialog SGPro has used for many years wasn’t all that friendly or helpful. Its previous incarnation was this atrocity:


In SGPro 4.4, it has been transformed to this:


A quick tour:

  • The top section will either show the chain icon (like above) for the chain solver or the pin icon when a specific solver is chosen:
  • The next line is just a simple “blind solver” indicator. This will govern the level of hint data that must be provided in order to proceed with the solve. For the Chain Solver, it will let you know if there exists at least one blind solver in the chain.
  • Below the blind-solve info, you’ll enter the actual hint data for the pending solve. If a blind solver is not involved, you’ll need to ensure that both location and scale are provided.
  • Lastly, the info at the end describes what hints you’ll need to provide or may give info about various other things depending on your settings.

The Overhauled Plate Solve Dialog


A key difference we’re not able to convey without a video is that SGPro 4.3, after starting a solve, will not show you much of any indication that it is currently attempting to solve an image. Nothing really presents itself until the solve is complete (which can sometimes take a while). It’s possible that, unless you know what is supposed to happen, you may think it just didn’t do anything at all. In SGPro 4.4, the Plate Solve Dialog will now appear immediately and show you, in real time, as it cycles through the chain (by changing images and status text). The orange bar at the bottom is a progress bar that will be active when a solve is active. When it’s done it will look like above (note: “done” does not mean success).

A quick tour:

  • The left-hand side of the dialog will look very familiar. It is essentially the same as the old dialog, but the notion of “confidence” has been removed (because it was pretty useless and had inconsistent meanings between solvers).
  • The right-hand side is partly new to SGPro 4.4. SGPro has always had the option to transfer solve results to any of the sequence’s targets, but now takes it a couple steps farther by:
    • Allowing you to optionally transfer location or image angle (or both)
    • Allowing you to rotate the just solved image in order to preview what a particular rotation would look like. Once you settle on your preferred orientation, SGPro will then transfer the modified angle to the target (instead of the solved angle).
  • If you’d like, it’s now possible to keep multiple solve dialogs open at the same time for comparison against one another.

Changes to Sync and Blind Sync Functions

Nothing big here… these functions do what they’ve always done. They both:

  • Capture an image
  • Solve it
  • Then attempt to sync the mount to that location.

The only difference now is that clicking of these functions will show you a list of all available solvers you can choose from in order to complete the sync. The top option in the menu will always be the Chain Solver and, below it, you’ll see options to solve and sync with specific solvers.


Note: The “Blind Sync” menu will, of course, only show a list of blind solvers in the chain.

Changes to Specific Solvers

This section is dedicated to changes made to existing solver…


For years, ASTAP has provided a very convenient integration interface. So convenient in fact, that we just settled on it for a while. @han (ASTAP Author) was kind enough to have ASTAP mimic the exact output of PlateSolve2 so that integration with ASTAP was very easy. This certainly works, but also, at the same time very much limited the versatility of ASTAP because there was no way to exercise any of its many options when SGPro thinks it’s really just “PlateSolve2”. SGPro 4.4 corrects this and provides a proper integration against ASTAP. This integration is now extremely configurable and implements all of ASTAP’s options. I wont go over them here, but you can find official docs here. Here are screenshots of the new ASTAP settings dialog:



Note: SGPro 4.4 does not remove the old ASTAP integration (yet). Once the new integration gets some miles on it, we’ll properly terminate the old and auto-migrate you to the new. For now, if you do nothing, you will continue to use the old ASTAP integration. In order to use the new integration, you’ll need to activate and configure the solver named “ASTAP (Native)”.


Pinpoint (by @BobDenny ) has some new catalog options available to it (new to SGPro, not to Pinpoint). SGPro 4.3 only supported GSC (corrected) and UCAC. SGPro 4.4 now supports all of the catalogs Pinpoint 7 is capable of using. This includes the much-requested ATLAS catalog. For more info on recommended catalogs for Pinpoint, see this thread here.

An important note: SGPro will no longer attempt to automatically determine your catalog type based on path. If you don’t provide this information to SGPro, it will assume that you are using the corrected GSC catalog. A small bit of extra config, but, in return you get support for all of Pinpoint’s catalogs.


Astrometry.NET and ANSVR

You’ll notice that SGPro now integrates with ANSVR in a more direct manner. SGPro has long provided support for ANSVR through its Astrometry.NET interface. Nothing wrong with that… it is, of course, what ANSVR is meant to do. That said, SGPro 4.4 makes it slightly easier to choose and use ANSVR and/or Astrometry.NET in the chain.

The first thing you may notice is that Astrometry.NET no longer contains any options. There is literally nothing to configure here as it always just uses the remotely located Astrometry.NET API. But… the “new” ANSVR option does indeed have configurable options. Here, as usual, you’ll be able to provide a custom endpoint that reflects where your ANSVR server is running.


You’ll also notice that we’ve made ANSVR WAY easier to troubleshoot and verify before you start your sequence. When you open the ANSVR settings dialog, you’ll notice in rather large text a health indicator for the endpoint you’ve provided. When it’s healthy, it will look like this:


and when it’s not:


In addition to this, even without opening the settings dialog, you can have a visual status of ANSVR directly from the Control Panel:


Note: SGPro will also tell you about any broken solvers when you start a sequence.

Finally, you’ll notice direct access to several handy ANSVR utilities like starting, stopping and restarting the server. We’ve also added some easy-to-use functionality to “watch” the ANSVR log, check for ANSVR updates and manage your local ANSVR indices (catalogs).

Note: In order to use the new ANSVR functionality, you’ll need to tell SGPro where you have installed ANSVR. ANSVR will work fine if you opt to not provide this information.


Support for PlateSolve3 was introduced in SGPro 4.3, but, even in the release, it is still “beta-ish”. SGPro 4.4 goes through all of the requisite plate solve functionality in some detail and ensures that PlateSolve3 is fully compatible:

  • Fixed the “click solver”. Right clicking an image and choosing “Center Here” will no longer produce an arbitrary location.
  • Ensures that images flipped along either axis not produce the correct angles.

PlateSolve2 and Old-ASTAP

No real changes here, but solves with both are now, on average, full seconds faster than with SGPro 4.3.

Tiny Bug

  • Fixed a bug where SGPro was no longer writing the “EQUINOX” header to images.


I’m sure I haven’t thought of all the questions, but here are some that will likely come up…

Q: After I install SGPro 4.4, do I need to alter my sequences and profiles in order to avoid sequence failure?

You will not need to do anything. SGPro 4.4 will automatically migrate your older sequences to the new system and, if you change nothing, you will notice absolutely nothing different. All of the new functionality is “opt-in”. For example, if, in SGPro 4.3, you have a sequence using Pinpoint as the primary solver and have configured the “blind solve failover” solver to use ANSVR, SGPro 4.4 will automatically migrate these settings into the equivalent Chain Solver configuration. In this case, you will have a Chain Solver with Pinpoint marked as active and, below it, the ANSVR blind solver.

A sequence in SGPro 4.3 with:


will become this:


Note: SGPro 4.4 will also migrate over settings you may have stored for “inactive” (not currently selected) solvers.

Q: Are my equipment profiles also automatically migrated?


Q: Is the notion of the blind solve failover gone?

Not really, but the notion of failover is now built into the Chain Solver. As such, it no longer exists as part of the SGPro UI. Whether or not you want to have a blind solver in that chain is entirely up to you.

Q: Do all sequences use the same Chain Solver?

No. Every sequence and every profile carry their own Chain Solver.

Q: Do these changes mean that I'm unable to use specific solvers when I want?

No. Please see the text above. It covers several scenarios on how to use specific solvers when there is need to bypass the Chain Solver. Please note that it is not currently possible to bypass the Chain Solver during execution of a sequence. The sequence will always use the Chain Solver.


It sounds fantastic to have that kind of flexibility! Can’t wait for 4.4!

1 Like