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