A Fun Add-On Project to Voyager

A fellow Voyager user (mikefulb on this forum) and I have been working on a project to further automate our imaging with Voyager.

We are taking somewhat different paths, but sharing code and ideas. It’s a lot of fun and a testament to how extensible Voyager is.

My approach is to import ACP plans, since the planning tools I use, SkyTools 4 Imaging and CCD Navigator, both emit ACP plans for the night’s run.

I am importing the ACP plans into a database, then building Voyager Sequence files (.s2q files) from the database.

Phase 1 of the project is to just use a DragScript to run the sequence files created from the ACP plans.

Phase 2 is to build a Scheduler, inspired by Bob Denny’s brilliant ACP Scheduler (but very stripped down, at least at the start!). I will build a DragScript which does all my usual initialization (connect, cool down the camera, blind solve and sync, guider calibration), then goes into a “dispatch loop.” The dispatch loop calls the Scheduler, which checks the database to see if there are any targets ready to image at that point in time. Ready to image is based on the targets altitude and a set of optional constraints like lunar separation, distance from the meridian, etc.

If there’s something ready to image, the Scheduler will build a Voyager Sequence file and return to the DragScript with status indicating it is “ready to run.” The DragScript will run the Sequence file, and when it is finished, call the Scheduler for the next job.

So far I have the import of simple ACP plans to a database working - it only parses the syntax of ACP plans emitted by Sky Tools 4 and CCD Navigator. Mike is building the class to read and write Voyager Sequence files. We will use Voyager to create a Sequence file initially, and just do simple XML manipulation to add filter slots or make small changes to the settings.

Here’s a simple diagram of my version. Mike’s is built using his own planner.

I’ll keep this topic updated as we progress!

Cheers,
Rowland

5 Likes

Thats great Rowland … congrats to you and Mike.
I just tested now the Mike’s viewer … work really fine.

If you need help i’m here … probably a new block to create Sequence from a base and a ACP lines is a good addition. In this way you can just indicate sequence file and ACP line to apply to modify it. But i dont want to cut off fun to you :slight_smile:

Anyway please update post with your progress.

Leo

Thanks Leo! I use Mike’s viewer every time I use Voyager - looking forward to yours when it comes out :slight_smile:

That’s great to know you are available if we need help with this project. So far I think we’re good to go but I’ll let you know.

Today I’ll work on a super simple “Scheduler” that reads from the database populated with ACP Plan info and builds the Sequence file.

Cheers,
Rowland

Is this viewer you guys are referring to an image viewer? I am eagerly waiting for one to appear in Voyager.

Best,

Glenn

This looks like a great addition, and one I’d be very interested in seeing, if it’s available.

Also, I’ll echo Glenn’s remarks that an image viewer would be great to see.

Gabe

Mike do a great job integration with a viewer written in Python:

Thanks for the link! I had seen the topic but didn’t realize Mike had posted a link to his viewer.

Best,

Glenn

Thanks Leo - the viewer was mostly code re-use for an image capture program I work on in my spare time.

At the moment I have some python code to take a template .sq2 and inject slots or other changes (cooling, dithering, etc) as desired. Working on a serialized XML file isn’t ideal but it is fine for what Rowland and I are planning for now.

If you need i can create a dedicate block to do job for you …
Let me know

All the best

PS i’m looking at your code to realize stretch like PixInsight

Cool Leo if you follow the XISF spec it isn’t too tricky.

Hello Mike,

Your viewer seems like a great project. I found it on Github but am unfamiliar with how the files are presented. Is there an .exe file that I’m missing? I’m not familiar with Python or programming, in general.

Kind regards,

Glenn

I didn’t want to have an EXE floating around as I don’t personally trust random EXE files I find on the internet.

I have the sources so everyone can examine them before using them.

If you look in the docs/ direction:

there are instructions on its use.

It admittedly takes some computer knowledge to understand.

I put some hints in there for using pyinstaller to make an EXE if anyone is really brave.

2 Likes

Thank you. My desire for a good real-time image viewer may drive me to try it. :grin:

Glenn

A quick update - I picked up this project recently and got it to a point of usability for me. I must emphasize this is -not- a product and not even shareable, as it has a lot of things hard coded into it that only pertain to my setup and environment (directories, scopes, filter names, etc).

That said, this is a tiny peek into the world that Voyager Advanced offers and I can’t wait! It is -not- by any means a realization of the Voyager Advanced vision, just a nod in that direction.

I have used it now in production on two scopes and it is really fun to see it pick and run the next target based on constraints and current conditions. Another nice aspect is that my DragScript and Sequence files are fixed - the only thing I have to do is add or edit entries in the Roboclip database to influence what runs.

I decided to use the Roboclip database to hold my targets. I used the Group field to indicate the filters to be used (i.e. RGB, SHO, etc.). I have template sequences for each filter and filter group. I used the Notes field to store a priority.

I could add more things to the Notes field to control how the night’s run is prioritized, but for ease of data entry I decided to just keep it simple.

A config file (".ini") stores parameters that influence the entire night’s run, such as “should moon separation be taken into account?” This is a big limitation, as ideally you would want to store this on a per-target basis.

My Python code is called from my unchanging “all night automation” DragScript, similarly to the diagram in my OP in this thread. The code looks through the Roboclip database and creates a table of “eligible” targets - those that meet constraints such as altitude, being above my local horizon, moon separation, and hour angle. After reviewing all targets, the eligible table is sorted by a configurable criterion such as priority, altitude, or HA.

The top target is used to patch a sequence file with target name, RA and DEC. That sequence file is then copied to one named “sequence-to-run” that the DragScript is hard-wired to run next. The Python code returns to the DragScript. If there’s something to run, it runs. If not, the DragScript waits a minute and then calls the Python code again.

As I said, this is a hack, not a product, but it indicates the power of DragScript and Voyager. Voyager Advanced, should Leo choose to make it, will be a real product with a UI (all my stuff is just text file driven, no UI) and will work in your environment, not just mine :-).

Anyway, just had to share this fun project status. It is so nice to add a target to Roboclip, maybe give it high priority so it is likely to run, and then fire up my DragScript for the night and watch it start imaging that target. Bliss!

Cheers,
Rowland

3 Likes

Hi Rowland,

Very interesting project. After a couple of months of work I finally managed to automate all aspects of my observatory, it is really fun to see the the ‘thing’ run completely unattended.

The next step is to automate the target selection. I thought that Dragscrip was ‘compiled’ when it started running but from your post I can infer that each command is evaluated at runtime, so you can dynamically change targets, that is really cool and it might be my ticket to implement a basic scheduler.

Let see how far I can get.

Cheers,

José

Hello Jose,

Dragscript have different way to create from simple to complex scheduler, for one night to more than years without doing anything else that use the actual blocks. Just for your info or for who will read this thread.

@Rowland_Archer congratulations for your project

All the best
Leonardo

Thanks Leo.

I agree Jose, automation takes things to another level! Enjoy and let us know about your progress.

Cheers,
Rowland

1 Like

I couldn’t agree more. I can easily achieve all my imaging goals with the current functionality of Dargscript with minimal intervention. There are a few corner cases that I can tackle with some helper scripts and manually updating the Dragscript every other day or so.

IMO the hardest part of automation is to produce good quality data consistently with proper error handling and Voyager brilliantly solves this big problem, for me the next step is to build a scheduler that fits my imaging needs including all my particular edge cases including:

  • Prioritisation based on projects progress
  • Moon phase
  • Moon proximity to target

I also want to make some predictions on project progress based on different prioritisation, session length etc.

Let’s see how far I can progress, I see most of the pieces are already there and they are calling me to glue them together :slight_smile:

@Voyager thanks a lot for the wonderful documentation.

Cheers,

José

1 Like