re "Only Start if Guide Deviation <" feature

Wolfgang Reissenberger sterne-jaeger at openfuture.de
Fri Aug 19 19:39:42 BST 2022


Albert, Hy,
I took a first look at the checks for initial guide deviation. The outcome is the following:

1. Good news:  IPState Capture::checkLightFramePendingTasks() is used before each frame capture start.

2. Bad news: even for the first capture in a sequence the check is for the initial guiding deviation is not always executed, for all other frames in a sequence it is never executed. The problem is this check step in checkLightFramesPendingTasks():
    // step 6: check guide deviation for non meridian flip stages if the initial guide limit is set.
    //         Wait until the guide deviation is reported to be below the limit (@see setGuideDeviation(double, double)).
    if (m_State == CAPTURE_PROGRESS && m_GuideState == GUIDE_GUIDING && m_LimitsUI->startGuiderDriftS->isChecked())
        return IPS_BUSY;

m_State == CAPTURE_CHANGING_FILTER for the first capture and m_State == CAPTURE_IMAGE_RECEIVED for subsequent frames.

I’ll write a bug report.

Cheers
Wolfgang

—
Wolfgang Reissenberger

www.sterne-jaeger.de
TSA-120 + FSQ-85 + epsilon-160 | Avalon Linear + M-zero | ASI 1600mm pro + 6200mm pro

> Am 19.08.2022 um 03:07 schrieb Hy Murveit <murveit at gmail.com>:
> 
> Wolfgang, 
> 
> I don't think Alfred has it quite right, but here's my shot at what might be wrong.
> 
> In order for the pre-capture guide check to be enforced, prepareActions[ACTION_GUIDER_DRIFT] needs to be set to false.
> As far as I can tell, during capture execution it is only set to false in SequenceJobState::prepareLightFrameCapture in sequencejobstate.cpp line 50
> I believe that prepareLightFrameCapture is only called at the start of a job, and not before each capture, since:
> it is only called by SequenceJob::prepareCapture()
> which is called only by Capture::preparePreCaptureActions() 
> which is called by both Capture::scriptFinished (I'm ignoring that, doesn't seem relevant) and Capture::prepareActiveJobStage2() 
> which is called by both Capture::scriptFinished (I'm ignoring that, doesn't seem relevant) and Capture::prepareActiveJobStage1() 
> which is only called by Capture::prepareJob
> and from its title, prepareJob() sounds like it is only called at the start of a job, not each individual capture.
> 
> Perhaps the bug is that there should be an else at this line:
> https://invent.kde.org/education/kstars/-/blob/master/kstars/ekos/capture/sequencejobstate.cpp#L722 <https://invent.kde.org/education/kstars/-/blob/master/kstars/ekos/capture/sequencejobstate.cpp#L722>
> e.g.
> else prepareActions[ACTION_GUIDER_DRIFT] = false;
> 
> Hy
> 
> On Thu, Aug 18, 2022 at 3:32 PM amiga2000c at gmx.de <mailto:amiga2000c at gmx.de> <amiga2000c at gmx.de <mailto:amiga2000c at gmx.de>> wrote:
> 
> Despite the fact that I have absolutely no clue about C++, I had a look
> at the code. I think the relevant piece is "capture.cpp".
> 
> A passage where 10 checks are being performed (6039-6121) before
> "everything is ready for capturing light frames" cought my attention.
> 
> 
> Step 6 is check guide deviation. Assuming guiding was suspended and the
> last measured guiding deviation was below the limit, this check is passed.
> Step 10 is check if guiding was suspended. If so, it is restarted and
> according to the comment it is assumed that "everything is ready for
> capturing light frames" then.
> 
> IMO this is not the case. After resuming guiding, the "check guide
> deviation" test must be initiated again and only if it is passed,
> "everything is ready for capturing light frames", indeed.
> 
> --
> 
> In case what I wrote is complete rubbish, please excuse my clueless
> comment and ignore it.
> 
> Regards
> Alfred

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.kde.org/pipermail/kstars-devel/attachments/20220819/8ac716bf/attachment.htm>


More information about the Kstars-devel mailing list