Rowland's Astro Blog

Part 5: Running RoboTarget Manager Remotely

Overview

RoboTarget is Voyager Advanced’s automated scheduling system that chooses and runs targets from a database of possible targets you create and maintain.  See the other blog posts in this series to get an overview of Voyager Advanced, learn about RoboTarget Manager, the user interface to the target database, or the RoboTarget section of Voyager Advanced where you can start and monitor RoboTarget.

By default, the RoboTarget Manager will manage the targets maintained in a database on the same PC.  Actually, it will connect to the Voyager application server at the “localhost” IP address, and the application server manages the database. 

In addition, you can define one or more remote Voyager RoboTarget “sites,” which are instances of Voyager running on other PC’s.  You can then run RoboTarget Manager on one PC (we’ll call this the “client”) and manage the RoboTarget databases on another one as long as you can reach it over the network.  The network may be a LAN, a VPN, or the Internet as long as the IP address of the remote machine and the application server’s port number are accessible.

Another excellent way to access a remote machine over the Internet is with ZeroTier, explained here: 

https://wiki.starkeeper.it/index.php/WEB_Dashboard_Setup#Access_to_Web_Dashboard_from_Internet_using_Zerotier

This “remote site” capbaility is great if you have more than one instance of Voyager Advanced, or if you simply want to sit in the comfort of your office, run RoboTarget Manager there, and connect to a remote PC that runs your imaging setup.  I fall into both categories 🙂 !

Security

You may secure access to a remote site with a username / password combination, and an optional “Shared Secret” which is an arbitary character string used to encrypt traffic between the client and server PC’s. 

On the remote PC, open Voyager’s Setup -> Remote panel:

Under Application Server Authentication, choose either None to allow open access, or set a username and password to require a login.  Set the username and password in the “Default Remote User” panel and click Apply.  Restart Voyager to have these take effect.

If you wish to use a Shared Secret, enter it in the RoboTarget Shared Secret field and click Apply.  The new value will be used immediately.  You do not need to restart Voyager.

The choices you make here for username / password and/or shared secret must match the values entered in the Site Manager, as shown below.

 

Client Setup

Make sure you have the latest version of Voyager installed on your client PC so your version of the RoboTarget Manager is current and matches the one on the remote sites.  If you don’t have Voyager installed yet on your client PC, download the current version and install it.

Once installed, you can run VoyagerRoboTargetManager.exe to bring up the Voyager Site Manager.  You will find it in the same directory as your Voyager main program, which is currently named Voyager2.exe.  By default this is the c:\Program Files (x86)\Voyager folder.

For convenience, you may wish to create a shortcut to the VoyagerRoboTargetManager.exe file so it is easy to start.

Voyager Site Manager

In order to connect to a remote site, you first define it with the Voyager Site Manager.  You’ll find this in the Remote menu of the RoboTarget Manager.  Read about the RoboTarget Manager, including how to invoke it, in Part 3 of this series.

This brings up the Site Manager.  On the left, you’ll see a folder with all the sites you’ve defined.  When you start, there will be just one, Local, which is the machine Site Manager is running on.  Click a site in the My Sites folder to select it.  The currently selected site is marked with a red triangle icon – “Local” in this screen shot:

At the bottom left, you’ll find four buttons.  

New Site:  Create a new, empty site definition

Set Default:  Make the currently selected site in the My Sites folder the default site – the one that is selected in the list of sites drop-down menu when you start the Site manager.  If you don’t touch the drop-down and just click Connect, this is the one you will access

Modify:  Edit the details of the currently selected site in the My Sites folder

Remove:  Delete the site definition.  This does not delete the site, only the definition of the site in this PC’s Site Manager.  You can add it back later if needed

 

 

Adding a Site

Click the New Site button on the lower left to add a new site.  A settings panel opens up on the right:

Site Name:  An aribtrary name for this site definition

IP Address / Host Name:  The IP address or host name that resolves to the PC containing the remote site.  

Default Host:    Will reset this to Localhost or the IP address of the local machine.  This button label will change to Reset.

Port:  The port number of the Voyager application server on the remote PC.  The default port number is 5950.  This remote PC and port number must be accessible to your computer.  If it is behind a firewall, it must be configured to forward the port, or some other means of access such as a VPN must be in place.

Authentication:  If the remote application server is protected by a username / pasword, click the “Username / Pasword” radio button and enter the values in the Username and Password fields.  Click the “eye” icon to see the password as you type it

RoboTarget Shared Secret:  You can further protect communication between the client and remote site with a Shared Secret, which is an arbitray string of characters.  It must match the one stored for the remote site.

Click the Save button to save the changes to the site definition, or click cancel to ignore them.

Click the “x” icon in the upper right corner of the Site Manager to close the window.

 

Connecting to and Disconnecting from a Site

Click the drop-down list under the Voyager Site label to view the list of sites defined in your Site Manager.  Note – only sites you have manually added, as shown above, will appear in the list.  I.e., this list is not automatically populated if you install Voyager Advanced on a new PC on your network.

Click the name of the site you wish to use, and then click the Connect button.

The Data tree will be populated with information from the remote site, and the Connect button is replaced by a Disconnect button.

To switch to a different remote site, click the Disconnect button, select the new site from the drop-down list, and click Connect.

If you get an error when attempting to connect to a site, make sure the site’s PC and the application server’s port are accessible to the client PC.  Make sure the username / password and shared secret match.

 

Done

That’s it!  You can now easily run the RoboTarget Manager from the comfort of your desktop or laptop PC, connecting to a remote PC running Voyager Advanced.  If you have mutiple PC’s, you can switch between them and work on your sets, targets and shots.  

Part 4: Voyager RoboTarget at Runtime

Imaging with Voyager RoboTarget

Once you have added some targets to the RoboTarget database, if any of them are eligible – visible and with all constraints met – RoboTarget can run them for you automatically at the times that meet the constraints.

There are two ways to invoke RoboTarget, manually or from a DragScript:

–>Manually:  Prepare your setup the way you would before running a Voyager sequence – connect your equipment, etc.  Then open the RoboTarget section and click RoboTarget Run.  RoboTarget will take over and run your gear all night, selecting targets from the RoboTarget database (see Part 3:  Voyager’s RoboTarget Manager):  

–>From DragScript:  Use the RoboTarget action – found under Actions -> Session in the DragScript Editor Elements panel.  Add this action to your DragScript instead of the Sequence action, and RoboTarget will start selecting targets and taking shots.  The example below just shows the action – you also need to handle the status values returned by RoboTarget.  

RoboTarget Settings

When you run RoboTarget manually, its settings are accessed from the gear icon in the lower right corner of the RoboTarget section:

When you run it from a DragScript, the same settings are accessed from the dialog box that appears when you double-click the RoboTarget action in your DragScript.  It’s the dialog box shown above in the “running from a DragScript” section of this blog post.

Let’s run through the settings and what they do:

Scheduler Type:  The “Scheduler” is the algorithm used to select the target to run from the pool of eligible targets.  At this time there is only one scheduler, but more will made available later.  The Default scheduler chooses the highest priority target that was added to the database the longest time ago.

Night Type:  Astronomical, Nautical or Civil – this together with the Night Start and End Offsets, determines the starting and ending time during which RoboTarget will take shots.  Your coordinates, returned by your mount or set in Voyager Setup, are used together with your selections here to determine the clock times for starting and ending the night.  

Night Start Offset:  The offset, which may be negative, is added to the time computed by the Night Type you choose to determine the starting clock time of your run.

Night End Offset:  The offset, which may be negative, is added to the time computed by the Night Type you choose to determine the ending clock time of your run.

Advanced

If there are NO Target Selections from the Scheduler:  If the “Run Targets that have exceeded the maximum Shot time per Night if available” box is checked, RoboTarget will run an eligible target rather than sit idle, even if all eligible targets have already run the maximum shot time per night that you chose in the target defintion.

Sequence Minimum Duration:  Only start an eligible sequence if its constraints will be met for at least this number of minutes – unless the number of minutes left to finish the target is less than this number, in which case the target will be eligible to run.

Moon Down Altitude:  The altitude of the moon in degrees, which may be negative, used in the calculation of the Moon Down constraint.  

Scheduler Soft Error Retry:  The number of times RoboTarget will retry a sequence when a scheduler internal error occurs.  Examples include:  cannot start scheduler process, cannot read scheduler ephemeris data, internal action errors

Sequence Max Retries in a Single RoboTarget Run in Case of Error:  The maximum number of times a recoverable error can occur in a sequence for a single target for a single night.  Each target has its own counter.  Examples of the types of errors counted can be seen here in the $$SEQUENCE_FAIL_STATUS possible flags:

https://wiki.starkeeper.it/index.php/DragScript_Environment_Variables

Do not start Sequence for a Target in No Goto Meridian Zone:  If checked, RoboTarget will not start a sequence if the target’s position is inside the zone around the meridian which is defined as “No Goto.”  These are the values in Setup -> Mount -> GEM Meridian Flip Manager:

Running from the RoboTarget Section

You can run RoboTarget “on the fly” from the RoboTarget Section, accessed from the top toolbar or from the Section ribbon:

The RoboTarget section is your “dashboard” during a RoboTarget run – you will find useful information here, updated in real time, whether you start it from this section, or from a DragScript:

Let’s take a look at the sections of this screen.

Settings

Most of the yellow captioned fields are values you entered in the RoboTarget settings panel, as explained above.  In addition to these, you’ll find:

Night Start:  The night starting date and time based on your choice of Night Type

Night End:  The night ending date and time based on your choice of Night Type

BEGIN Time:  The time your RoboTarget session begins, based on Night Start and the Offset Night Start

END Time:  The time your RoboTarget session ends, based on Night End and the Offset Night End

The blue captioned fields provide information about the running target, if there is one.

Running Target:  The name of the running target.  

Submitted:  The date and time the running target was submitted to the RoboTarget database

Sequence Start:  The date and time the running sequence started

Sequence End:  The latest date and time the running sequence can run, based on meeting constraints.  E.g., if the altitude constraint is to run at or above 30 degrees, and the target dips below 30 degrees after 90 minutes, that would determine the ending time.  The sequence would end earlier if all shots are completed before this time.

Targets

The Targets panel provides at-a-glance information about the targets in your RoboTarget database including key data such as progress against the total shot goal and the current ephemeris.

There are two tabs – you can shoose to view the targets from the Last Scheduling Selection, or All targets in the database.

N°:  The target number.  If there is a current running target, its Target Number field has a blue background.  Idle targets have a green background.  

Status:  Idle, Running, Suspended or Finished.  

Target Name:  The name of the target you entered in the RoboTarget database

Set Name:   The name of the target set to which this target belongs

Priority:  The priority you assigned to this target in the RoboTarget database

LastRun:  The date and time this target was last run

Progress:  The percent completion of all shots defined for this target in the RoboTarget database, even if multiple sessions are needed to complete the target

Reject Reason:  The last reason this target was not chosen, unless the scheduler found a target to run before examining this one.  At the beginning of a run, this field is wiped clean for all targets.

Ephemeris:  A useful “Night at a Glance” informational panel about each target.  The X axis is time.

Green vertical lines: Begin and End Times of action for the night
Blue lines and blue shaded area:  Sequence start and end times for the running target
Yellow line:  Moon altitude for the night
Cyan:  Target altitude for the night
Magenta:  Moon phase – scale is 0 to 100%
Blue:  Moon distance from the target in degrees, scale is 0 to180
°
Red Arrow:  The current clock time is outside the graph
Green Arrow:  The current clock time when it is inside the graph

Runtime Actions

Your most commonly used action will be to click RoboTarget Run and let it do the work.
You can also right-click a target and remove a suspension, if the target had one in place, or abort the running sequence.

The Select Running Target button will bring the running target into view, especially convenient when you have a long list of targets.

The Reload button will requery the RoboTarget database and refresh the target information.

On the lower left, you can see the status of RoboTarget – IDLE in this image.  The Status can also be SLEEP, SCHEDULING, and TARGET RUN.

Abort Running Target:  Click to abort the sequence for the running target.  RoboTarget will enter the SLEEP status briefly, and then look for the next eligible target to run.

Monitor Window

This is the usual Voyager scrolling message window with timestamped details of everything going on.  In addition to the normal Voyager messages, you will find RoboTarget related messages here such as output from the Scheduler giving its evaluation of constraints, the target chosen to run, and more.  You can click the Abort button to end the RoboTarget run. 

Running RoboTarget from a DragScript

If you are using a DragScript to automate your imaging runs, it’s very easy to swap out the part of your script that calls individual Voyager sequences and substitute a call to RoboTarget instead.  It’s just this simple:

I recommend saving your existing DragScript to a new one – perhaps with the word RoboTarget in the filename – and modifying that instead of making changes to your working script.

Then, in your new DragScript, find where you make calls to one or more Sequence actions.  In their place, use a block like the one above.  To create it, drag the RoboTarget action from the Editor Elements panel.  It’s under Actions -> Session.  

Note – the RoboTarget action will run from the BEGIN Time to the END Time as defined above.  A single call to RoboTarget is all you need to run your entire night’s imaging, including multiple targets should the schedule work out that way.  

When you double click it, you will see the settings panel, explained earlier in this post.  Choose the appropriate settings and click OK.

Finally, we want to handle the three possible status codes returned by the RoboTarget action.  The example above shows a good way to do this, but you may need to make changes to suit your DragScript.  ‘

If SKIPPED:  This status means the night start, with offset figured it, has not been reached yet.  Your DragScript should wait a bit and then try again, as in this example.

If Error:  RoboTarget returned an error and you should run your Emergency Exit routine which may include some form of notification and/or shutdown.  This status is returned if there is a serious error with your PC, the OS or RoboTarget software such as the database was no longer accessible or corrupted.  Before returning this error status, Voyager will retry the scheduling operation the number of times specified in Scheduler Soft Error Retry, which is in RoboTarget Settings.  Sequence errors – the normal ones that can occur during the operation of a sequence, are managed by the value of “Sequence Max Retries in a single RoboTarget Run in Case of Error,” which is also in RoboTarget Settings.  These errors do not stop RoboTarget’s scheduling.

If TIMEOUT:  This status means the end of night including offset has been reached.  The DragScript will continue from this point, which is typically your end of night routine.

In a later blog post, we will examine the All Night DragScript provided by the Voyager team and look at how to adapt it to your environment.  It can automate your entire operation from startup to shutdown, and even run your observatory 365 days a year automatically with a very small amount of work with Windows startup or task scheduling.

Modifying and Adding Targets on the Fly

You can make changes to your targets with the RoboTarget Manager even while a target is running.   

– Any changes made through RoboTarget Manager will be automatically used the next time RoboTarget selects a target (does a scheduling run), even if a RoboTarget run is in progress at the time the changes are made.  There is no need to stop and restart RoboTarget or click the Reload buttons.  The reload buttons are only to reload information from the last scheduling run

– If you delete a target that is currently running, the running sequence will be aborted

– Any changes made through RoboTarget Manager to a running target will not affect it until it finishes the run in progress.  The changes will take effect the next time the target is run.  

– If you make a change to a target that has status FINISHED – it has reached 100% progress – the status is reset to IDLE and any shots added will be taken the next time the target is run

What's Next

That completes our look at the runtime operation of RoboTarget.  The next blog post will look at operating RoboTarget Manager remotely.

Part 3: Voyager’s RoboTarget Manager

Rowland is a member of the Voyager team with the role of Voyager Evangelist.  The information in this blog post is based on pre-beta software installed in early 2022.  The final release will almost certainly have changes based on beta testing feedback.

Overview

RoboTarget is Voyager Advanced’s automated scheduler.  In real time, it chooses an appropriate target to run from a database of targets you create, using constraints you add to control when a target can be imaged.  In this blog post, we’ll take a look at the RoboTarget Manager, which is the user interface you use to create entries for each target you would like to shoot.

 

RoboTarget Manager Startup and Organization

RoboTarget is Voyager Advanced’s automated scheduler.  In real time, it chooses an appropriate target to run from a database of targets you create, using constraints you add to control when a target can be imaged.  In this blog post, we’ll take a look at the RoboTarget Manager, which is the user interface you use to create entries for each target you would like to shoot.

There are a couple of ways to bring up the RoboTarget Manager.  You can click its icon in the very top bar of the window:

You can click RoboTarget from the Section tab, and then click the RoboTarget Manager button that appears in the RoboTarget section:

You could also add a shortcut to the VoyagerRoboTargetManager.exe program file in the Voyager program directory and run it from there.

Finally, you can run the RoboTarget Manager on a different PC than the one that runs Voyager to control your scope, connect to the remote PC and remotely manage the target database that resides there.  RoboTarget Manager has a Site Manager built-in where you can define multiple local or remote sites, including their IP address, a shared secret (character string) used to authorize your connection, and more.  We’ll examine this in more detail in a later blog post.  

For now, we’ll just run RoboTarget Manager on the same machine as the Voyager instance that will run RoboTarget.

As installed, RoboTarget Manager defines one site called “Local,” which is the PC it is running on.  Click the Connect button to connecto the local Voyager instance, which must be running.  RoboTarget Manager connects to Voyager’s application server, which must be running.  

Once connected, you’ll see a list of the profiles defined for that Voyager instance, with the active profile outlined in red:

Base Sequences

Under the profile are one or more “base sequences” associated with the targets you have defined for the profile, and the disk drive icon, in this case labeled RGB Test, which expands to a set of one or more targets.

Base sequences define the actions to take when running a target, except for the overrides that are contained in the target definition.  Think of the base sequence as the starting point for how you want to shoot a target.  Every target definition includes a base sequence.  A set of targets can all use the same base sequence, or you can define multiple base sequences and attach them to the targets in any way you like. 

Only sequences found in the top-level ConfigSequence folder (under your Voyager folder) are available for use as base sequences.  

For safety, only sequences associated with the current profile can be used as base sequences.

Add a base sequence by right-clicking the profile icon and selecting Add Base Sequence from the menu:


A drop-down list appears in the right panel listing all your Voyager sequences.  Choose one to be the base sequence, and optionally designate it as the default base sequence.  Check the box to enable it if you want to use it.

Target definitions include at a minimum the target name, coordinates, and shot definitions (e.g. XX shots of YY seconds with ZZ filter, etc.).  It may also include constraints that override the base sequence such as minimum target altitude, position angle, min and max start times, and more.

The blue question mark icon to the left of the target name indicates that the data has not yet been loaded for that target.  Click on a target and it expands to show the shots defined for that target.

Each shot definition includes the same items that would be in a “shot slot” in a Voyager Basic sequence.  Filter, number of exposures, length, binning, gain, offset, etc.

It’s worth taking a little time to decide how you would like to use the Set of Targets grouping feature.  You can group targets in any way you like – think of it as a folder that has no intrinsic properties other than grouping targets together.  However – and this is big – you can enable or disable all the targets in a set with one click in the Set of Targets folder definition.  And if you use the same base sequence for all the targets in a set, you can make changes to the base sequence and know that all targets in that set will get your changes to the base sequence.

You can have multiple sets enabled at once – or just leave everything enabled.  But there is some convenience to being able to easily enable a whole set of targets with one click, so think through your imaging scenarios.

For example:

1. Group by filters used – RGB, LRGB, HLRGB, SHO, HO

2. Group by target type – Galaxy, Planetary Nebula, Globular Cluster, etc.   

3. Group by season – Winter, Spring, Summer, Fall.  The only problem with this one is targets don’t all neatly fall in these buckets.

If you decide to just add a few targets to the database and then run them, this choice of how to group them is less important.  I like to add a lot of targets to the database – it becomes my “wish list” – so the organizational choice is worth some pondering.

Now that we’ve looked at how targets are organized by the RoboTarget Manager, let’s actually add a target.

 

Adding a New Target

To add a new target, right click on the Set of Targets icon where you want to add the target.

This opens a context menu.  Select Add New Target.  Note that from that right-click menu, you could also enable or disable all targets in that group, reload the data from the RoboTarget database, or remove the entire set – use that one with caution!  

You can also copy and paste an existing target and/or its associated shots, by right clicking the target and selecting Copy or Copy  All Target Shots, and then right clicking the set icon and selecting Paste Target or Paste Target with Shots.

Define a “dummy target” for a target set with your “normal” shots and constraints for targets in that group and you can very easily add a new target with shots and constraints defined by just copying and pasting the “dummy” and then choosing the target name and coordinates.

Adding a new target (or clicking an existing one) opens up the details pane on the right:

This panel defines your target’s attributes and the constraints that control when it becomes eligible.

Name:  Your target’s name, such as M31

Set:  The target set to which this belongs

Base Sequence:  Select the base sequence from the drop-down list.  This defines how to run the target, subject to overrides from this target definition.  Barring the choice of another one, the default base sequence of the target set will be used.

Profile Name:  The Voyager profile under which this target runs

Created:  The date and time you add this target to the database.  Used by some of the schedulers to choose what to run when there is more than one eligible target.  E.g., the default scheduler runs the oldest target (the one added to the database earliest).

Operating State:  The current status of this target
  IDLE:  Not completed yet, not running
  RUNNING:  Not completed yet, running
  SUSPENDED:  Target has been suspended due to a scheduler error, sequence error or user action.  More on this below.
  FINISHED:  All shots have been taken, target is complete  

RA J2000:  Right Ascension of the target in J2000 coordinates

DEC J2000:  Declination of the target in J2000 coordinates

RoboClip:  Click to bring up the RoboClip database manager and choose your target from one in that database.  The RoboClip database is a feature of Voyager Basic.  It provides a user-maintained database of targets.

Sesame:  Click to search the Sesame online search name resolver at http://cds.u-strasbg.fr/cgi-bin/Sesame.  Requires an Internet connection

Voyager:  Click to search the planetarium connected to Voyager

Is Enabled:  Checked if this target should be considered by the scheduler when building the list of eligible targets

Note:  A free-form text field where you can enter any comments about the target

Slots Repeat:  If the Activate box is checked, the shots defined for this target will be repeated the number of times specified.

Example:  for the target M 102 shown below, I have defined four shot slots – 20 exposures each of R, G, B and L.  In the Slots Repeat field, I checked Activate and set the number of repeats to 5.  With these settings, RoboTarget will run this target until it accumulates 100 exposures of each filter.  The target will run over multiple sessions if necessary, and progress against each filter’s desired number of exposures goal will be tracked.  

 

Constraints

A big part of automated scheduling’s “magic” is in the specification of constraints – conditions under which a target becomes eligible.  

Leo expects to add more constraints here after the beta period, so consider this a starting set, not the final ones.

Only constraints with the “Activate” field checked will be enforced.

All constraints whose “Activate” field is checked will be “AND’ed” together – the target will only be eligible if they are all met.

Constraints must be valid for the minimum duration of a sequence for the target to be eligible.  The minimum duration is specified in the RoboTarget section under Advanced Settings.  By default it is 15 minutes.

Constraints specified in the base sequence are ignored.

I’ll use the phrase “eligible targets” to indicate the set of targets whose constraints have all been met and are thus eligible to run.  

Priority:  Select from the drop-down:  VERY LOW, LOW, NORMAL, HIGH, FIRSTAmong eligible targets, the highest priority ones will be run first.  There are many ways to use this.  For example:

1.  Give broadband targets higher priority than narrowband but specify the moon must be down for broadband targets to run.  This means your eligible broadband targets will run when the moon is down rather than narrowband.

2.  Give high or first priority to a short-lived target such as a comet or supernova

3.  Give low priority to targets you have “completed” but if nothing else is eligible, you’d rather get more data on them than sit idle

Position Angle:  If a rotator is connected, use the specified position angle.  When you import a target from RoboClip, the PA will be imported and this constraint activated.  However, if you do not have a rotator configured in Voyager Setup, this is ignored – it will not interfere with your run

Altitude Min:  The target’s altitude must be at least the specified value to become eligible

SQM Min:  The current reading of an attached SQM device must be equal or greater than the specified value

Hour Angle Start and Hour Angle End:  You can use these separately or together.  The Hour Angle is specified relative to the meridian.  E.g., an HA of 1.0 is one hour past the meridian.  An HA of -2.0 is 2 hours prior to the meridian.

Hour Angle Start: The target only becomes eligible when its hour angle is equal or greater to the specified value

Hour Angle End:  The target only becomes eligible when its hour angle is less than the specified value

Examples:

1.  This contraint is met if the target is between 1.5 hours before and 1.5 hours after the meridian:

2.  This constraint is met if the target is between 1 and 3 hours after the meridian:

3.  This constraint is met if the target is between 2 hours before the meridian and at the meridian:

Date Start:  The target is eligible only if the current date is equal or greater than Date Start 

Date End:  The target is eligible only if the current date is less than or equal to Date End

MIN Allowed Time Start:  The target is eligible only if the current time is equal or greater than the specified value

MAX Allowed Time Start:  The target is eligible only  if the current time is less than the specified value

Moon Down:  The target will only be eligible if the moon’s altitude is X degrees or less, where X is the value of the Moon Down Altitude field in RoboTarget Action -> Advanced Settings panel (see below).  May be negative to indicate below the horizon.


Moon Phase Min:  The minimum moon phase for the target to be eligible

Moon Phase Max:  The maximum moon phase for the target to be eligible.  Note:  if Activated, this constraint will be observed even if the moon is down.  

Moon Distance:  The minimum angular distance between the moon and the target for it to be eligible

HFD Sub Max:  The sequence will be aborted if the HFD value of the most recent shot exceeds the specified value.  The aborted sequence is suspended for 12 hours.  The suspension can be removed in the RoboTarget section of Voyager Advance by right-clicking the target and selecting Remove Suspend.

Max Seq. Time for Night:  The target will run no more than this number of minutes in a night, unless “Run Targets that have exceeded the maximum Shot time per Night if available” is checked in the RoboTarget Action -> Advanced Settings panel shown above and no targets are eligible that have not exceeded the Max Seq. Time for Night value.

Air Mass Min:  The minimum air mass for the target to be eligible.  Air mass is the thickness of the atmosphere through which light from the target is passing.  Directly overhead is one air mass.  Thirty degrees altitude is two air masses.

Air Mass Max:  The maximum air mass for the target to be eligible

Reset Constraints:  Click to set all constraints to defaults and uncheck all Activate checkboxes

Click the Apply button to save your target, or Cancel to revert any changes made in this form.

At this point, your target has been defined and added to the database.

However, there is nothing to do until shots have been defined.  In the next section, we’ll add shots to our target.

Adding Shots

Shots are the definitions of exposures to take of a target.  You would normally define them in this part of a Voyager Sequence Configuration:

Each of these rows is a “slot” or “shot slot.”  Any values in the slots of your base sequence are ignored.  Only the shots defined in RoboTarget Manager are used when imaging with RoboTarget.

There are a couple of different ways to add shots for a target.

Right click the target in RoboTarget Manager and click Add Shot to add a single shot:

Click on the new shot – or to modify an existing shot, click on it – and the shot definition panel appears on the right:

In this panel, you can choose the type of shot – LIGHT, BIAS, or DARK.  Flats are handled with Voyager’s AutoFlat feature which shoots sky flats or panel flats with automatic exposure length and/or panel brightness adjustments made on the fly.

You also specify the filter, an optional suffix for the file name, exposure length, binning, number of exposures to take, speed, readout mode, and CMOS Gain and Offset.

Finally, there is a checkbox to enable or disable the shot.

 

 

 

 

Copying Shot(s)

You can add shots one at a time, or copy and paste the shots en masse from an existing target.  If you group targets together in a set that all use the same filters and exposures, it will be very easy to copy all the shots from one to another.

Just right click the target with the desired shots and select Copy All Target Shots:

Then right click the destination target and select Paste All Target Shots:

 

Moving Targets

If you right click a target, select Cut, and then right click a different set and click Paste with all Shots, you will move the target to the other set.  

Moving a target in this way preserves progress on that target.

How Shots are Run

Voyager has two basic ways to run the shots in a sequence:

1)  Cyclic Round – if there are multiple shot slots defined for a target, cycle around the slots taking one shot with each slot’s definition.  For example, if you defined three slots:

Filter R, 5 shots
Filter G, 5 shots
Filter B, 5 shots

With the Cyclic Round approach, Voyager would shoot one each, in rotation, like this:  RGBRGBRGBRGBRGB.

2)  Group by Slot – all shots with one slot will be taken, then all shots with the next, until the sequence is finished.  With the above example, Voyager would shoot:  RRRRRGGGGGBBBBB.

The Cyclic Round approach is the best at balancing the number of exposures taken with each filter.  This could be very useful, for example, if you have travelled to a dark site for one night and want to get as a set of exposures that is as balanced as possible between filters.

Group by Slot is good if you are not so concerned about finishing the target in one night and want to avoid any overhead associated with changing filters, such as refocusing time. This is especially important if you are taking short exposures as is common with CMOS cameras.

The base sequence is where you specify whether you are taking Cyclic Round or Group by Slot exposures.


Summary

That wraps up a look at adding targets and shots using the RoboTarget Manager.

We’ve covered a lot of ground and a lot of detail.

In practice, adding a new target can take less than a minute once you’ve decided on how you want to organize things, created your base sequence(s) and defined a “standard” set of shots for a type of target.

For example, if I had a standard way of shooting galaxies (shots and constraints) and at least one galaxy target in the database, I could just add a new target, look up its coordinates with one click, and copy the shots over from an existing one. 

Done!

In the next blog post, we’ll look at the run-time side of RoboTarget – actually firing it up and watching it automate your night’s imaging.

Part 2: Voyager Advanced Overview

Rowland is a member of the Voyager team with the role of Voyager Evangelist.  The information in this blog post is based on pre-beta software installed in early 2022.  The final release will almost certainly have changes based on beta testing feedback.

Overview

Voyager Advanced adds automated target scheduling to Voyager.  

With Advanced, your imaging workflow looks like this:

At any time:

  Add a target you want to the database

  Specifying how many and what type (filter, exposure, etc.) of shots you want to  accumulate

  Add constraints for when Voyager Advanced may shoot that target – minimum altitude, moon phase, moon distance, etc.

Image Acquisition Time:

  EITHER Run your DragScript that includes a call to RoboTarget to find and shoot targets 

  OR Click “RoboTarget Run” in the RobotTarget panel after connecting your gear

The “Run your DragScript” option lets you simply start Voyager with your DragScript as a parameter and everything will happen automatically.  Do a little configuration work with the Windows task scheduler and you can have a perpetually automated observatory that will open up and work on your target list every time your weather observation device indicates it is safe to do so.

The fact that you can add a target at any time is very powerful.  See something you like on Astrobin?  Start up RoboTarget Manager and add it to your list.  Reading Astronomy or Sky & Telescope and see a great image?  Add it with RoboTarget Manager and when the time is right, Voyager Advanced will shoot it!  No more scratching your head and trying to remember that cool nebula you saw a couple months ago – just add them to your RoboTarget database as soon as you see it.  No more forehead slaps when you realize that galaxy you wanted to shoot is already setting just after dusk.  If it’s in the database, RoboTarget will remember for you, and shoot it when the time is right. 

RoboTarget’s Basic Operation

When it is time to choose the next target to run, RoboTarget creates a set of eligible targets – targets that are visible and whose constraints are all met.

From that pool of eligible targets, RoboTarget uses a “Scheduler” algorithm to choose the one to run next.  At pre-beta, there is one Scheduler implemented – it chooses the eligible target that was added to the database first.  There will be more Schedulers to choose from in the future, as we gather feedback from beta testers on what they would like to use.

With Voyager Advanced, your role is to choose targets and process captured data.  Voyager’s role is to get the data you want and do it at the best time.  It’s like having an intelligent assistant who runs your observatory.  You tell them what you want, they do the rest.  And they don’t complain about the pay or the cold nights!

First Things First - Get Voyager Basic Running

Before using RoboTarget, the Voyager automated scheduler, you should get Voyager working with your equipment and successfully running Voyager sequences.  This includes connecting to your gear, autofocus, plate solving, guiding, integration with your dome and safety monitors if you have them and of course, taking shots!.  In short, you should have Voyager up and running so you could image all night without problems.  Only then should you proceed to setting up RoboTarget, the name of Voyager’s automated scheduler.

If you are an experienced imager who has done these things before, it shouldn’t take long.  Leo provides personal support through the official Voyager support channels should you need help.  

Everything you need to run RoboTarget is already installed with Voyager version 2.3.4j or later.  If you are upgrading from Voyager Basic to Advanced, you will receive a new license file.  Install it from the Resources -> License panel and the Voyager Advanced features will be revealed and you can get started:

 

 

Next Steps

Once Voyager Basic is working with your gear, you can move on to using RoboTarget, Voyager Advanced’s automated scheduler.

Your first task will be adding your targets with the RoboTarget Manager, which we will examine in the next blog post.

 

Part 1: My Journey with Voyager – and Voyager Advanced

Rowland is a member of the Voyager team with the role of Voyager Evangelist.  The information in this blog post is based on pre-beta software installed in early 2022.  The final release will almost certainly have changes based on beta testing feedback.

In the Beginning

I discovered Voyager in December 2018, when I added a second pier and went looking for software to automate it. 

I had an ACP Expert license for my first pier, and since I enjoy trying new software, decided it would be interesting to do a survey of available astrophotography / imaging automation products.  The result is the Imaging Software Survey on this website.

I found a product made by an award-winning Italian astrophotograper, Leonardo Orazi, called Voyager.  It was not well-known in the US, and the English docs were quite abbreviated.  Nonetheless, I found it easy to setup and I got my scope running with a couple hours of tinkering.  I run unattended all-night imaging and I was used to software hangs and crashes – not with ACP, but with other products I tried.  Voyager was shockingly, boringly, consistently reliable.  It just worked, all night, every night, patiently gathering photons while I slept. Very cool!

Voyager WikiI decided to “give back” and help Leo with some English language documentation.  I set up a Wiki and started from the beginning, documenting every screen, panel and function.  Leo was super appreciative and pitched in to help – and eventually took the Wiki over and made it the official Voyager documentation.  

In this process we became friends and exchanged ideas about many things, including of course astrophotography software and automation.  Leo told me about a project he was working on in the background, “Voyager Advanced,” which would include automated target scheduling.  The concept is simple, but the realization of it is complex.  With most imaging software, you create a plan for each night that lays out how the night should run.  Which targets to capture.  In what order.  When to start and when to finish each one.  How many frames to shoot, etc.  It can take quite a bit of planning – what will be up tonight?  When does it rise to the desired altitude?  Will the moon be too bright and/or too close to get a good capture?

With an automated scheduling approach, you tell the software your desired result and it decides, in real-time during the night, what target to shoot. For example, “I want 20 frames each of L, R, G and B of M31.  Shoot only when the moon is down and the hour angle is plus or minus 2 hours of the meridian.”  You create a defintion like that for each target you want and the software saves them in a database.  There are many more constraints you can place on each target, including an overall priority and a “tie-breaker” scheduling rule, such as “oldest target added to the database.”  

That’s it!  The software does the rest.  Even if an imaging session is interrupted by weather for several hours, when things start back up again, the software picks an appropriate target for the conditions at that time.  It also keeps track of the number of frames captured so far, so if multiple nights are required to finish a target, it won’t duplicate anything that was completed in previous sessions.  

Rowland Builds a Scheduler

Leo told me that Voyager Advanced was probably at least a year away, as it was a big project and he had a number of other tasks in the queue.

I like to tinker with programming, and as I learned more about Voyager, I realized I could build a primitive, but hopefully functional, external scheduler of my own.  Voyager would do the heavy lifting – capturing the data.  All my scheduler would do would be to tell Voyager what target to run next.  It worked!  Voyager includes an automation component called DragScript which lets you define a sequence of operations to execute.  My “all-night imaging” script handled connecting to equipment, taking sky flats at the appropriate time, waiting for dark, running capture sequences, and shutting down.  If my AAG Cloudwatcher detected unsafe conditions, my DragScript would pause imaging, close the roof, and wait for safe conditions to restart.  

Instead of defining my targets by editing my DragScript, I added a call to my external scheduler program, written in Python and making liberal use of the great astro libraries, astropy and astroplan.  My program returned with a “1” or “0” – meaning “there’s something ready to run” or “nothing ready now, wait and try later.”  My DragScript either ran the target or waited a minute and called the scheduler again.  

My scheduler worked!  But like all “prototypes” vs “real products,” it was very crude and no where close to product quality.  Hardly any error handling.  No user interface – just configuration files.  It was just enough to tide me over until Voyager Advanced was released, and its capabilities made me all the more appreciative of the convenience of automated scheduling – while its limitations made me all the more eager for a real product, Voyager Advanced!

Leonardo Builds a Scheduler

I peppered Leo with “how’s Advanced coming!?” inquiries over the next two years, and while Voyager releases came at a rapid pace, adding lots of useful functionality, I had no real idea of how soon it would be.  Then one day in December, without warning or fanfare, Leo posted a normal release announcement – and one of the bullets was that the code for Voyager Advanced was in that release!  He told us that Advanced was running in his observatory and started to share screen shots.  He invited interested users to email him for details of the beta program.  Needless to say my email went out a minute after reading the announcement.  He wrote back and I agreed on the parameters to be a beta tester, which included an informal, but typical for beta testing, non-disclosure agreement.

A few days later Leo contacted me and asked if he could install Advanced on one of my piers to make sure its calculations worked at different coordinates from Italy.  We started about two hours before dusk.  The installation took about 30 seconds – just adding a new license file to my already working and up-to-date Voyager installation.  He walked me through all the new menus and screens, and with about one hour to go before dark, I faced a question – did I dare try to go live tonight with only a short time remaining?

With most software, i wouldn’t dare.  But my experience with Leo’s software has been consistently good.  I install every development release, and despite the warning that it is not guaranteed to be stable, it has always worked for me.  So I plowed ahead with Advanced.  Adding it to my DragScript was a matter of replacing the call to my scheduler with a call to RoboTarget, the name for Voyager Advanced’s scheduler.  

I added six targets to the RoboTarget database with the RoboTarget Manager.  

Fingers crossed, I clicked “Run” on my DragScript and … long story short, it worked!  

It captured data all night, starting and stopping at the appropriate times, and I woke up to another 80GB of data.  

This was really cool!  So cool, I felt it was a great time to re-join the Voyager team and help spread the word about Advanced.  I contacted Leo and suggested I take on the role of “Voyager Evangelist” – a title used commonly in the software industry to designate someone in an outreach position, helping the community understand and make the best use of a product.  I suggested that even during the “quiet period” of beta, the product was in such good shape that I could easily begin documenting it and sharing the information with the astrophotography community.  Leo agreed, and this blog is my start on that endeavor.  

Next:  Part 2 of this series will give a high level overview, with screen shots, of setting up targets and running with Voyager Advanced. Â