indigo-astronomy / indigo

INDIGO is a system of standards and frameworks for multiplatform and distributed astronomy software development designed to scale with your needs.
http://www.indigo-astronomy.org
Other
153 stars 70 forks source link

Timer based meridian flip in the Sequencer #563

Open wannabecoffeenerd opened 2 months ago

wannabecoffeenerd commented 2 months ago

I have an OnStep based mount which doesn't track beyond the meridian. As a result, the current check in Sequencer.js for hour angle > 12 never gets triggered for the meridian flip since my mount stops tracking usually ~1 min before transit.

As a solution to this, I implemented a timer based solution to wait for the target to cross the meridian rather than the mount crossing the meridian. This way, the mount can stop tracking before the meridian and then issue a precise goto after the target crosses the meridian.

TODO:

wannabecoffeenerd commented 2 months ago

Tested with my mount and a camera simulator. The timer works and the callback trigger is invoked at the right time, but I'm seeing an error with the slew:

20:00:34.812 Scripting Agent @ indigosky: Suspended for 5 seconds
20:00:34.813 Scripting Agent @ indigosky: Sequence started
20:00:40.070 Scripting Agent @ indigosky: capturing frames
20:00:40.080 Imager Agent @ indigosky: Batch started
20:00:40.087 Scripting Agent @ indigosky: Meridian flip waits for transit
20:00:40.087 Imager Agent @ indigosky: Batch paused, transit in 0:07:18.32
20:00:40.148 Scripting Agent @ indigosky: Meridian flip timer set for 496.2566045147729 seconds
20:08:56.683 Scripting Agent @ indigosky: Meridian flip started
20:08:56.684 Scripting Agent @ indigosky: Setting slew flag
20:08:56.684 Scripting Agent @ indigosky: Starting slew
20:08:56.684 Scripting Agent @ indigosky: Cancelling transit timer
20:08:56.687 Scripting Agent @ indigosky: Unsetting transit timer flag
20:08:56.707 Mount Agent @ indigosky.MOUNT_EQUATORIAL_COORDINATES: Slew failed
20:08:56.718 Scripting Agent @ indigosky: Meridian flip failed (due to slew failure)
20:08:56.720 Scripting Agent @ indigosky: Sequence aborted
20:08:56.721 Imager Agent @ indigosky: Batch aborted
wannabecoffeenerd commented 2 months ago

Just got the meridian flip working with this sequence capture script:

var sequence = new Sequence(); 
sequence.wait(5);
sequence.sync_center(10);
sequence.enable_dithering(2, 30, 0);
sequence.enable_meridian_flip(true, -0.05);
sequence.set_directory("/home/indigo/shared");
sequence.send_message("capturing frames");
sequence.capture_batch("test", 10, 300);
sequence.send_message("capturing done");
sequence.disable_cooler();
sequence.park();

sequence.start();

and following this testing protocol:

In AT, select a star (any) just left of the meridian and slew there (HA must still be under 23:59). Next, lookup Rosette and select it, but do not slew there (this were the plate solve of the preview will sync to) Execute script! Wait for the HA to be past 00:00...

However, now I get this error:

20:39:23.506 Astrometry Agent @ indigosky: Slew failed

But I've seen this error even when doing a manual meridian flip, probably because my mount's slew rate is too slow (3 degrees/s). Is there a way I can increase the value of this slew timeout?

wannabecoffeenerd commented 2 months ago

The above "Slew failed" error is probably due to this issue: https://github.com/indigo-astronomy/indigo/issues/564

polakovic commented 2 months ago

Just got the meridian flip working with this sequence capture script:

var sequence = new Sequence(); 
sequence.wait(5);
sequence.sync_center(10);
sequence.enable_dithering(2, 30, 0);
sequence.enable_meridian_flip(true, -0.05);
sequence.set_directory("/home/indigo/shared");
sequence.send_message("capturing frames");
sequence.capture_batch("test", 10, 300);
sequence.send_message("capturing done");
sequence.disable_cooler();
sequence.park();

sequence.start();

and following this testing protocol:

In AT, select a star (any) just left of the meridian and slew there (HA must still be under 23:59). Next, lookup Rosette and select it, but do not slew there (this were the plate solve of the preview will sync to) Execute script! Wait for the HA to be past 00:00...

However, now I get this error:

20:39:23.506 Astrometry Agent @ indigosky: Slew failed

But I've seen this error even when doing a manual meridian flip, probably because my mount's slew rate is too slow (3 degrees/s). Is there a way I can increase the value of this slew timeout?

Exactly, this is how it is intended to work in case you can't really wait till transit for some reason

polakovic commented 2 months ago

The above "Slew failed" error is probably due to this issue: #564

Yep