In the current version, Yes, exactly.
--
You received this message because you are subscribed to the Google Groups "OpenPnP" group.
To unsubscribe from this group and stop receiving emails from it, send an email to openpnp+u...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/openpnp/73bd57df-9607-4041-9d3a-cae6fec766b2%40googlegroups.com.
Hi Jason
thanks for the quick answer.
I'm not sure I understand correctly.
I planned to detect the upgrade in @Commit an migrate as follows
public enum SettleMethod {
FixedTime,
MaximumPixelDifference,
OverallDifference,
EuclideanMetric,
}
@Attribute(required = false)
protected SettleMethod settleMethod = null;
@Attribute(required = false)
protected long settleTimeMs = 250;
@Attribute(required = false)
protected double settleThreshold = 0.0;
@Attribute(required = false)
protected double settleGaussianBlur = 0.0;
@Attribute(required = false)
protected double settleMaskCircle = 0.0;
@SuppressWarnings("unused")
@Commit
private void commit() throws Exception {
if (settleMethod == null) {
if (settleTimeMs < 0) {
settleMethod =
SettleMethod.MaximumPixelDifference;
// migrate the old threshold, coded as a
negative number
settleThreshold = Math.abs(settleTimeMs);
settleTimeMs = 500;
}
else {
settleMethod = SettleMethod.FixedTime;
}
}
}
I thought the same settleTimeMs can be used for both
methods, once as a fixed time, once as a timeout. Otherwise one or
the other field would be left unused.
Or do you want to retain the FixedTime settle time as a
separate field so the user can switch back and forth
between methods, because the timeout will usually be more
generous?
_Mark
To view this discussion on the web visit https://groups.google.com/d/msgid/openpnp/CA%2BQw0jwOrep1nvOrdecBKbYkyf-k7DFe7MY9HmhBtjkaFbOxHg%40mail.gmail.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/openpnp/6f5d1ce9-88f6-d2c9-bfc8-4c28e5ab044c%40makr.zone.
Understand.
--
You received this message because you are subscribed to the Google Groups "OpenPnP" group.
To unsubscribe from this group and stop receiving emails from it, send an email to openpnp+u...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/openpnp/8e744e20-efef-4b60-b98b-fd6d43dc8824%40googlegroups.com.
--
You received this message because you are subscribed to the Google Groups "OpenPnP" group.
To unsubscribe from this group and stop receiving emails from it, send an email to openpnp+u...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/openpnp/1bd18693-ad84-4ace-839e-22265a2f2b40%40googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/openpnp/CA%2BQw0jyu-RdQsY6Dfno8yi%2B-vzKN7M7S9ypR2ebgmpJ7wF4OXg%40mail.gmail.com.
Funny.
I haven't saved the original machine.xml where this happened,
then I deleted the third camera. Now that I try to reproduce the
same situation using a backup, I can't recreate it.
But it was not a singular incident, I tried everything like restarting OpenPNP, disconnecting the camera, etc. and it kept dropping frames. Now it all works with three cameras (two unconnected). Very strange.
:-(
Sorry to bother.
_Mark
To view this discussion on the web visit https://groups.google.com/d/msgid/openpnp/CA%2BQw0jyu-RdQsY6Dfno8yi%2B-vzKN7M7S9ypR2ebgmpJ7wF4OXg%40mail.gmail.com.
> I hope I'm not butting in.
English is a funny language: "butting in" ... :-)
> Could the third camera be on the same USB host controller and that is the issue?
It is definitely on the same controller, but the other two
cameras are unconnected as they are on the machine and I am in the
(home) office, so they can't compete for bandwidth (I hope). :-)
I'm acquainted with the problem, as I
researched it quite profoundly here.
_Mark
To view this discussion on the web visit https://groups.google.com/d/msgid/openpnp/CAEm8oER7-BvZ9uG9Ww5dC%3Df--G74ae7LrnZvUFZmhydy-xZdvQ%40mail.gmail.com.
Hi Jason
Something is still amiss. I was trying to recreate the problem when suddenly OpenPnP was hanging.
Can this be the classical deadlock?
1. GUI thread is blocked on my settle test button waiting for a
capture in the Camera:
Snake bites its tail?
Well that's my take. Frankly I don't know enough about Java's synchronized
working together with native code blocking.
Strangely the GUI thread appears twice in Eclipse looking
identical(???)
Most camera captures are probably from the machine tasks thread,
so this won't happen in Jobs. But in this case I specifically want
it to work with the machine not started, so I can use the
test button with the machine unconnected i.e. with a third camera
when I'm away from the machine (similar to capturing in the
pipeline's editor).
Should I decouple this with yet another thread?
How?
Out of curiosity, why are frames pushed by the
captureNotifier? Why not just let the camera view invalidate
itself with the chosen fps, then in its paint handler (if and
when it is executed at all) pull the
frame instead? But use no blocking i.e. no CaptureStream.hasNewFrame(),
just use the last captured frame instead (I believe the
CaptureStream does just that, If you skip the hasNewFrame()).
If this works, it could have several advantages:
Could this be related?
https://github.com/openpnp/openpnp/issues/760
_Mark
To view this discussion on the web visit https://groups.google.com/d/msgid/openpnp/44acc53c-1d31-a53f-8553-cfef0c780766%40makr.zone.
To view this discussion on the web visit https://groups.google.com/d/msgid/openpnp/4f95a55c-7a8a-cbb0-aab1-9c49f2490f85%40makr.zone.
but but but (more butting in :-)....If by "unconnected" you really mean "not configured in OpenPnP but still physically / electrically cabled into the USB ports",then the cameras still actively participate in the physical layer USB connection management protocols independent from the OS and Applications,including potentially reserving (or hanging on to a once reserved) isochronous USB controller bandwidth...
Hi Marek
The camera will not be reconnected, unless you go to the camera
Wizard and fiddle something and then press Apply. This will
restart the camera, but it will also unfortunately reset the
device settings (sliders) to defaults. That's a pain anyways, it
also means you can't exchange a camera of the same make and model
with another one without losing settings.
Maybe Jason will know a way how to try and reconnect a camera
without having to restart OpenPnP or lose settings?
_Mark
Larger GIF:
https://makr.zone/AdvancedCameraSettle.gif
;-)
Am 27.04.2020 um 00:29 schrieb ma...@makr.zone:
--Hi all
I posted a Pull Request:
Watch the GIF:
_Mark
You received this message because you are subscribed to the Google Groups "OpenPnP" group.
To unsubscribe from this group and stop receiving emails from it, send an email to ope...@googlegroups.com.
--
You received this message because you are subscribed to the Google Groups "OpenPnP" group.
To unsubscribe from this group and stop receiving emails from it, send an email to openpnp+u...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/openpnp/f42db175-eea4-33cf-7699-2f523de0e562%40makr.zone.
2020-04-30 21:40:29.761 ReferenceActuator DEBUG: DownCamLights.actuate(true)
2020-04-30 21:40:29.761 GcodeDriver DEBUG: sendCommand(M810, 10000)...
2020-04-30 21:40:29.762 GcodeDriver TRACE: [serial://COM11] >> M810
2020-04-30 21:40:29.762 GcodeDriver TRACE: [serial://COM11] << ok
2020-04-30 21:40:29.763 GcodeDriver DEBUG: sendCommand(serial://COM11 M810, 10000) => [ok]
2020-04-30 21:40:29.768 AbstractCamera DEBUG: autoSettleAndCapture t=211 auto settle score: 1.3622143297099274
2020-04-30 21:40:29.770 Scripting TRACE: Scripting.on Camera.BeforeCapture
2020-04-30 21:40:29.783 Scripting TRACE: Scripting.on Camera.AfterCapture
2020-04-30 21:40:29.784 Scripting TRACE: Scripting.on found Camera.AfterCapture.bsh
2020-04-30 21:40:29.786 ReferenceActuator DEBUG: UpCamLights.actuate(false)
2020-04-30 21:40:29.786 GcodeDriver DEBUG: sendCommand(M813, 10000)...
2020-04-30 21:40:29.787 GcodeDriver TRACE: [serial://COM11] >> M813
2020-04-30 21:40:29.788 GcodeDriver TRACE: [serial://COM11] << ok
2020-04-30 21:40:29.788 GcodeDriver DEBUG: sendCommand(serial://COM11 M813, 10000) => [ok]
upCamLights = machine.getActuatorByName("UpCamLights"); downCamLights = machine.getActuatorByName("DownCamLights");
if (camera.looking.equals(org.openpnp.spi.Camera.Looking.Up)) { /* we need looking up camera: turn on up lights and turn off down camera lights */ upCamLights.actuate(true); downCamLights.actuate(false);} else if (camera.looking.equals(org.openpnp.spi.Camera.Looking.Down)) { /* we need the down looking camera: turn off up looking camera light */ upCamLights.actuate(false); downCamLights.actuate(true);}
Hi John
> I'm having an issue with my camera lighting after loading this up
the code is real simple there, the script is called before it
even enters the autoSettleAndCapture() that I changed,
so I believe this is not related to the change:
--
You received this message because you are subscribed to the Google Groups "OpenPnP" group.
To unsubscribe from this group and stop receiving emails from it, send an email to openpnp+u...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/openpnp/2392152c-89bc-4eee-94b7-fe746b068cd0%40googlegroups.com.
beforeCapture
is definitely wrong for LEDs.
_Mark
>LightActuator
Agree. I've had it in 2.0 once, but Jason has extended ideas with
setting intensity/color etc.
But the question still stands: Why do
people want to switch the LEDs at all?
...other than that it
looks cool ;-)
_Mark
--
You received this message because you are subscribed to the Google Groups "OpenPnP" group.
To unsubscribe from this group and stop receiving emails from it, send an email to openpnp+u...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/openpnp/6c607b51-2ec9-44bb-af89-9a7d761c2317%40googlegroups.com.
<div
From the theory of it it should always work if you use beforeSettle.
Yes the first frame may be dark, but that frame is stale anyway
and it is a good thing if this forces the camera settling to get
one more frame.
If you have multiple black frames at the beginning then you may
need to increase "Debounce" so it won't compare the two black ones
and think it is settled.
In fact I would be very interested in your settling images. You can get them as follows (using the newest OpenPnP 2.0):
_Mark
--
You received this message because you are subscribed to the Google Groups "OpenPnP" group.
To unsubscribe from this group and stop receiving emails from it, send an email to openpnp+u...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/openpnp/99990a5c-c365-48fb-9c30-59764d9a25f5%40googlegroups.com.
Hi John
The first series with switched LEDs is no good, IMHO. This is
strange.
Just to be sure, these are LEDs, right, not halogen or
something that takes ages?
What happens if you set Threshold 0 and a Timeout of 1000ms? Will the light eventually come on? After how many Milliseconds and how many frames?
(need to change how OpenPnP creates log filenames. These should be sequential in some way)_Mark
--
You received this message because you are subscribed to the Google Groups "OpenPnP" group.
To unsubscribe from this group and stop receiving emails from it, send an email to openpnp+u...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/openpnp/db9610a5-4973-4a90-859e-747fe7812f6a%40googlegroups.com.
2020-05-01 11:55:04.073 ReferenceNozzle DEBUG: N1.moveTo((234.025591, 79.143968, 0.000000, 540.000000 mm), 1.0) (runout compensation: (-0.131696, -0.027436, 0.000000, 0.000000 mm))2020-05-01 11:55:04.074 GcodeDriver DEBUG: sendCommand(G0 X248.7264 F60000, 10000)...2020-05-01 11:55:04.074 GcodeDriver TRACE: [serial://COM11] >> G0 X248.7264 F600002020-05-01 11:55:04.075 GcodeDriver TRACE: [serial://COM11] << ok2020-05-01 11:55:04.078 GcodeDriver DEBUG: sendCommand(serial://COM11 G0 X248.7264 F60000, 10000) => [ok]2020-05-01 11:55:04.079 GcodeDriver DEBUG: sendCommand(G1 X248.8264 F6000, 10000)...2020-05-01 11:55:04.079 GcodeDriver TRACE: [serial://COM11] >> G1 X248.8264 F60002020-05-01 11:55:04.080 GcodeDriver TRACE: [serial://COM11] << ok2020-05-01 11:55:04.080 GcodeDriver DEBUG: sendCommand(serial://COM11 G1 X248.8264 F6000, 10000) => [ok]2020-05-01 11:55:04.080 ReferenceNozzle DEBUG: N1.moveTo((244.025591, 79.143968, 0.000000, 540.000000 mm), 1.0) (runout compensation: (-0.131696, -0.027436, 0.000000, 0.000000 mm))2020-05-01 11:55:04.080 GcodeDriver DEBUG: sendCommand(G0 X258.7264 F60000, 10000)...2020-05-01 11:55:04.080 GcodeDriver TRACE: [serial://COM11] >> G0 X258.7264 F600002020-05-01 11:55:04.081 GcodeDriver TRACE: [serial://COM11] << ok2020-05-01 11:55:04.081 GcodeDriver DEBUG: sendCommand(serial://COM11 G0 X258.7264 F60000, 10000) => [ok]2020-05-01 11:55:04.082 GcodeDriver DEBUG: sendCommand(G1 X258.8264 F6000, 10000)...2020-05-01 11:55:04.082 GcodeDriver TRACE: [serial://COM11] >> G1 X258.8264 F60002020-05-01 11:55:04.083 GcodeDriver TRACE: [serial://COM11] << ok2020-05-01 11:55:04.083 GcodeDriver DEBUG: sendCommand(serial://COM11 G1 X258.8264 F6000, 10000) => [ok]2020-05-01 11:55:04.083 Scripting TRACE: Scripting.on Camera.BeforeSettle2020-05-01 11:55:04.084 Scripting TRACE: Scripting.on found Camera.BeforeSettle.bsh2020-05-01 11:55:04.089 ReferenceActuator DEBUG: UpCamLights.actuate(true)2020-05-01 11:55:04.089 GcodeDriver DEBUG: sendCommand(M812, 10000)...2020-05-01 11:55:04.089 GcodeDriver TRACE: [serial://COM11] >> M8122020-05-01 11:55:04.307 GcodeDriver TRACE: [serial://COM11] << ok2020-05-01 11:55:04.308 GcodeDriver DEBUG: sendCommand(serial://COM11 M812, 10000) => [ok]2020-05-01 11:55:04.308 ReferenceActuator DEBUG: DownCamLights.actuate(false)2020-05-01 11:55:04.308 GcodeDriver DEBUG: sendCommand(M811, 10000)...2020-05-01 11:55:04.308 GcodeDriver TRACE: [serial://COM11] >> M8112020-05-01 11:55:04.309 GcodeDriver TRACE: [serial://COM11] << ok2020-05-01 11:55:04.309 GcodeDriver DEBUG: sendCommand(serial://COM11 M811, 10000) => [ok]2020-05-01 11:55:04.309 Scripting TRACE: Scripting.on Camera.BeforeCapture2020-05-01 11:55:04.331 Scripting TRACE: Scripting.on Camera.AfterCapture2020-05-01 11:55:04.332 Scripting TRACE: Scripting.on found Camera.AfterCapture.bsh2020-05-01 11:55:04.334 ReferenceActuator DEBUG: UpCamLights.actuate(false)2020-05-01 11:55:04.334 GcodeDriver DEBUG: sendCommand(M813, 10000)...2020-05-01 11:55:04.335 GcodeDriver TRACE: [serial://COM11] >> M8132020-05-01 11:55:04.335 GcodeDriver TRACE: [serial://COM11] << ok2020-05-01 11:55:04.335 GcodeDriver DEBUG: sendCommand(serial://COM11 M813, 10000) => [ok]2020-05-01 11:55:04.335 ReferenceActuator DEBUG: DownCamLights.actuate(true)2020-05-01 11:55:04.335 GcodeDriver DEBUG: sendCommand(M810, 10000)...2020-05-01 11:55:04.335 GcodeDriver TRACE: [serial://COM11] >> M8102020-05-01 11:55:04.336 GcodeDriver TRACE: [serial://COM11] << ok2020-05-01 11:55:04.336 GcodeDriver DEBUG: sendCommand(serial://COM11 M810, 10000) => [ok]2020-05-01 11:55:04.345 Scripting TRACE: Scripting.on Camera.BeforeCapture2020-05-01 11:55:04.363 Scripting TRACE: Scripting.on Camera.AfterCapture2020-05-01 11:55:04.363 Scripting TRACE: Scripting.on found Camera.AfterCapture.bsh2020-05-01 11:55:04.365 ReferenceActuator DEBUG: UpCamLights.actuate(false)2020-05-01 11:55:04.365 GcodeDriver DEBUG: sendCommand(M813, 10000)...2020-05-01 11:55:04.366 GcodeDriver TRACE: [serial://COM11] >> M8132020-05-01 11:55:04.366 GcodeDriver TRACE: [serial://COM11] << ok2020-05-01 11:55:04.366 GcodeDriver DEBUG: sendCommand(serial://COM11 M813, 10000) => [ok]2020-05-01 11:55:04.366 ReferenceActuator DEBUG: DownCamLights.actuate(true)2020-05-01 11:55:04.366 GcodeDriver DEBUG: sendCommand(M810, 10000)...2020-05-01 11:55:04.366 GcodeDriver TRACE: [serial://COM11] >> M8102020-05-01 11:55:04.367 GcodeDriver TRACE: [serial://COM11] << ok2020-05-01 11:55:04.367 GcodeDriver DEBUG: sendCommand(serial://COM11 M810, 10000) => [ok]2020-05-01 11:55:04.372 AbstractCamera DEBUG: autoSettleAndCapture t=63 auto settle score: 61.340671345417032020-05-01 11:55:04.372 Scripting TRACE: Scripting.on Camera.BeforeCapture2020-05-01 11:55:04.395 Scripting TRACE: Scripting.on Camera.AfterCapture2020-05-01 11:55:04.395 Scripting TRACE: Scripting.on found Camera.AfterCapture.bsh2020-05-01 11:55:04.398 ReferenceActuator DEBUG: UpCamLights.actuate(false)2020-05-01 11:55:04.398 GcodeDriver DEBUG: sendCommand(M813, 10000)...2020-05-01 11:55:04.398 GcodeDriver TRACE: [serial://COM11] >> M8132020-05-01 11:55:04.398 GcodeDriver TRACE: [serial://COM11] << ok2020-05-01 11:55:04.398 GcodeDriver DEBUG: sendCommand(serial://COM11 M813, 10000) => [ok]2020-05-01 11:55:04.398 ReferenceActuator DEBUG: DownCamLights.actuate(true)2020-05-01 11:55:04.399 GcodeDriver DEBUG: sendCommand(M810, 10000)...2020-05-01 11:55:04.399 GcodeDriver TRACE: [serial://COM11] >> M8102020-05-01 11:55:04.399 GcodeDriver TRACE: [serial://COM11] << ok2020-05-01 11:55:04.399 GcodeDriver DEBUG: sendCommand(serial://COM11 M810, 10000) => [ok]2020-05-01 11:55:04.404 AbstractCamera DEBUG: autoSettleAndCapture t=95 auto settle score: 158.047928434857882020-05-01 11:55:04.404 Scripting TRACE: Scripting.on Camera.BeforeCapture2020-05-01 11:55:04.426 Scripting TRACE: Scripting.on Camera.AfterCapture2020-05-01 11:55:04.427 Scripting TRACE: Scripting.on found Camera.AfterCapture.bsh2020-05-01 11:55:04.429 ReferenceActuator DEBUG: UpCamLights.actuate(false)2020-05-01 11:55:04.429 GcodeDriver DEBUG: sendCommand(M813, 10000)...2020-05-01 11:55:04.429 GcodeDriver TRACE: [serial://COM11] >> M8132020-05-01 11:55:04.430 GcodeDriver TRACE: [serial://COM11] << ok2020-05-01 11:55:04.430 GcodeDriver DEBUG: sendCommand(serial://COM11 M813, 10000) => [ok]2020-05-01 11:55:04.430 ReferenceActuator DEBUG: DownCamLights.actuate(true)2020-05-01 11:55:04.430 GcodeDriver DEBUG: sendCommand(M810, 10000)...2020-05-01 11:55:04.430 GcodeDriver TRACE: [serial://COM11] >> M8102020-05-01 11:55:04.431 GcodeDriver TRACE: [serial://COM11] << ok2020-05-01 11:55:04.431 GcodeDriver DEBUG: sendCommand(serial://COM11 M810, 10000) => [ok]2020-05-01 11:55:04.436 AbstractCamera DEBUG: autoSettleAndCapture t=127 auto settle score: 39.89752471762522020-05-01 11:55:04.436 Scripting TRACE: Scripting.on Camera.BeforeCapture2020-05-01 11:55:04.458 Scripting TRACE: Scripting.on Camera.AfterCapture2020-05-01 11:55:04.459 Scripting TRACE: Scripting.on found Camera.AfterCapture.bsh2020-05-01 11:55:04.461 ReferenceActuator DEBUG: UpCamLights.actuate(false)2020-05-01 11:55:04.462 GcodeDriver DEBUG: sendCommand(M813, 10000)...2020-05-01 11:55:04.462 GcodeDriver TRACE: [serial://COM11] >> M8132020-05-01 11:55:04.462 GcodeDriver TRACE: [serial://COM11] << ok2020-05-01 11:55:04.462 GcodeDriver DEBUG: sendCommand(serial://COM11 M813, 10000) => [ok]2020-05-01 11:55:04.462 ReferenceActuator DEBUG: DownCamLights.actuate(true)2020-05-01 11:55:04.463 GcodeDriver DEBUG: sendCommand(M810, 10000)...2020-05-01 11:55:04.463 GcodeDriver TRACE: [serial://COM11] >> M8102020-05-01 11:55:04.463 GcodeDriver TRACE: [serial://COM11] << ok2020-05-01 11:55:04.466 GcodeDriver DEBUG: sendCommand(serial://COM11 M810, 10000) => [ok]2020-05-01 11:55:04.471 AbstractCamera DEBUG: autoSettleAndCapture t=162 auto settle score: 3.8842434241974242020-05-01 11:55:04.471 Scripting TRACE: Scripting.on Camera.BeforeCapture2020-05-01 11:55:04.491 Scripting TRACE: Scripting.on Camera.AfterCapture2020-05-01 11:55:04.492 Scripting TRACE: Scripting.on found Camera.AfterCapture.bsh2020-05-01 11:55:04.494 ReferenceActuator DEBUG: UpCamLights.actuate(false)2020-05-01 11:55:04.494 GcodeDriver DEBUG: sendCommand(M813, 10000)...2020-05-01 11:55:04.494 GcodeDriver TRACE: [serial://COM11] >> M8132020-05-01 11:55:04.495 GcodeDriver TRACE: [serial://COM11] << ok2020-05-01 11:55:04.495 GcodeDriver DEBUG: sendCommand(serial://COM11 M813, 10000) => [ok]2020-05-01 11:55:04.495 ReferenceActuator DEBUG: DownCamLights.actuate(true)2020-05-01 11:55:04.495 GcodeDriver DEBUG: sendCommand(M810, 10000)...2020-05-01 11:55:04.495 GcodeDriver TRACE: [serial://COM11] >> M8102020-05-01 11:55:04.496 GcodeDriver TRACE: [serial://COM11] << ok2020-05-01 11:55:04.496 GcodeDriver DEBUG: sendCommand(serial://COM11 M810, 10000) => [ok]2020-05-01 11:55:04.501 AbstractCamera DEBUG: autoSettleAndCapture t=192 auto settle score: 2.8510097039720382020-05-01 11:55:04.501 Scripting TRACE: Scripting.on Camera.BeforeCapture2020-05-01 11:55:04.522 Scripting TRACE: Scripting.on Camera.AfterCapture2020-05-01 11:55:04.523 Scripting TRACE: Scripting.on found Camera.AfterCapture.bsh2020-05-01 11:55:04.525 ReferenceActuator DEBUG: UpCamLights.actuate(false)2020-05-01 11:55:04.525 GcodeDriver DEBUG: sendCommand(M813, 10000)...2020-05-01 11:55:04.525 GcodeDriver TRACE: [serial://COM11] >> M8132020-05-01 11:55:04.526 GcodeDriver TRACE: [serial://COM11] << ok2020-05-01 11:55:04.526 GcodeDriver DEBUG: sendCommand(serial://COM11 M813, 10000) => [ok]2020-05-01 11:55:04.526 ReferenceActuator DEBUG: DownCamLights.actuate(true)2020-05-01 11:55:04.526 GcodeDriver DEBUG: sendCommand(M810, 10000)...2020-05-01 11:55:04.526 GcodeDriver TRACE: [serial://COM11] >> M8102020-05-01 11:55:04.527 GcodeDriver TRACE: [serial://COM11] << ok2020-05-01 11:55:04.527 GcodeDriver DEBUG: sendCommand(serial://COM11 M810, 10000) => [ok]2020-05-01 11:55:04.531 AbstractCamera DEBUG: autoSettleAndCapture t=222 auto settle score: 2.61645832699053262020-05-01 11:55:04.531 Scripting TRACE: Scripting.on Camera.BeforeCapture2020-05-01 11:55:04.554 Scripting TRACE: Scripting.on Camera.AfterCapture2020-05-01 11:55:04.554 Scripting TRACE: Scripting.on found Camera.AfterCapture.bsh2020-05-01 11:55:04.557 ReferenceActuator DEBUG: UpCamLights.actuate(false)2020-05-01 11:55:04.557 GcodeDriver DEBUG: sendCommand(M813, 10000)...2020-05-01 11:55:04.557 GcodeDriver TRACE: [serial://COM11] >> M8132020-05-01 11:55:04.557 GcodeDriver TRACE: [serial://COM11] << ok2020-05-01 11:55:04.557 GcodeDriver DEBUG: sendCommand(serial://COM11 M813, 10000) => [ok]2020-05-01 11:55:04.558 ReferenceActuator DEBUG: DownCamLights.actuate(true)2020-05-01 11:55:04.558 GcodeDriver DEBUG: sendCommand(M810, 10000)...2020-05-01 11:55:04.558 GcodeDriver TRACE: [serial://COM11] >> M8102020-05-01 11:55:04.558 GcodeDriver TRACE: [serial://COM11] << ok2020-05-01 11:55:04.559 GcodeDriver DEBUG: sendCommand(serial://COM11 M810, 10000) => [ok]2020-05-01 11:55:04.563 AbstractCamera DEBUG: autoSettleAndCapture t=254 auto settle score: 2.32125018246860432020-05-01 11:55:04.563 Scripting TRACE: Scripting.on Camera.BeforeCapture2020-05-01 11:55:04.586 Scripting TRACE: Scripting.on Camera.AfterCapture2020-05-01 11:55:04.587 Scripting TRACE: Scripting.on found Camera.AfterCapture.bsh2020-05-01 11:55:04.589 ReferenceActuator DEBUG: UpCamLights.actuate(false)2020-05-01 11:55:04.589 GcodeDriver DEBUG: sendCommand(M813, 10000)...2020-05-01 11:55:04.589 GcodeDriver TRACE: [serial://COM11] >> M8132020-05-01 11:55:04.594 GcodeDriver TRACE: [serial://COM11] << ok2020-05-01 11:55:04.594 GcodeDriver DEBUG: sendCommand(serial://COM11 M813, 10000) => [ok]2020-05-01 11:55:04.595 ReferenceActuator DEBUG: DownCamLights.actuate(true)2020-05-01 11:55:04.595 GcodeDriver DEBUG: sendCommand(M810, 10000)...2020-05-01 11:55:04.595 GcodeDriver TRACE: [serial://COM11] >> M8102020-05-01 11:55:04.595 GcodeDriver TRACE: [serial://COM11] << ok2020-05-01 11:55:04.596 GcodeDriver DEBUG: sendCommand(serial://COM11 M810, 10000) => [ok]2020-05-01 11:55:04.600 AbstractCamera DEBUG: autoSettleAndCapture t=291 auto settle score: 3.2391290072123652020-05-01 11:55:04.600 Scripting TRACE: Scripting.on Camera.BeforeCapture2020-05-01 11:55:04.634 Scripting TRACE: Scripting.on Camera.AfterCapture2020-05-01 11:55:04.635 Scripting TRACE: Scripting.on found Camera.AfterCapture.bsh2020-05-01 11:55:04.637 ReferenceActuator DEBUG: UpCamLights.actuate(false)2020-05-01 11:55:04.637 GcodeDriver DEBUG: sendCommand(M813, 10000)...2020-05-01 11:55:04.637 GcodeDriver TRACE: [serial://COM11] >> M8132020-05-01 11:55:04.638 GcodeDriver TRACE: [serial://COM11] << ok2020-05-01 11:55:04.638 GcodeDriver DEBUG: sendCommand(serial://COM11 M813, 10000) => [ok]2020-05-01 11:55:04.638 ReferenceActuator DEBUG: DownCamLights.actuate(true)2020-05-01 11:55:04.638 GcodeDriver DEBUG: sendCommand(M810, 10000)...2020-05-01 11:55:04.638 GcodeDriver TRACE: [serial://COM11] >> M8102020-05-01 11:55:04.639 GcodeDriver TRACE: [serial://COM11] << ok2020-05-01 11:55:04.639 GcodeDriver DEBUG: sendCommand(serial://COM11 M810, 10000) => [ok]2020-05-01 11:55:04.643 AbstractCamera DEBUG: autoSettleAndCapture t=334 auto settle score: 3.35868617435343352020-05-01 11:55:04.644 Scripting TRACE: Scripting.on Camera.BeforeCapture2020-05-01 11:55:04.669 Scripting TRACE: Scripting.on Camera.AfterCapture2020-05-01 11:55:04.669 Scripting TRACE: Scripting.on found Camera.AfterCapture.bsh2020-05-01 11:55:04.672 ReferenceActuator DEBUG: UpCamLights.actuate(false)2020-05-01 11:55:04.672 GcodeDriver DEBUG: sendCommand(M813, 10000)...2020-05-01 11:55:04.672 GcodeDriver TRACE: [serial://COM11] >> M8132020-05-01 11:55:04.672 GcodeDriver TRACE: [serial://COM11] << ok2020-05-01 11:55:04.673 GcodeDriver DEBUG: sendCommand(serial://COM11 M813, 10000) => [ok]2020-05-01 11:55:04.673 ReferenceActuator DEBUG: DownCamLights.actuate(true)2020-05-01 11:55:04.673 GcodeDriver DEBUG: sendCommand(M810, 10000)...2020-05-01 11:55:04.673 GcodeDriver TRACE: [serial://COM11] >> M8102020-05-01 11:55:04.674 GcodeDriver TRACE: [serial://COM11] << ok2020-05-01 11:55:04.674 GcodeDriver DEBUG: sendCommand(serial://COM11 M810, 10000) => [ok]2020-05-01 11:55:04.677 AbstractCamera DEBUG: autoSettleAndCapture t=368 auto settle score: 3.0118256543000862020-05-01 11:55:04.678 Scripting TRACE: Scripting.on Camera.BeforeCapture2020-05-01 11:55:04.698 Scripting TRACE: Scripting.on Camera.AfterCapture2020-05-01 11:55:04.699 Scripting TRACE: Scripting.on found Camera.AfterCapture.bsh2020-05-01 11:55:04.701 ReferenceActuator DEBUG: UpCamLights.actuate(false)2020-05-01 11:55:04.701 GcodeDriver DEBUG: sendCommand(M813, 10000)...2020-05-01 11:55:04.701 GcodeDriver TRACE: [serial://COM11] >> M8132020-05-01 11:55:04.701 GcodeDriver TRACE: [serial://COM11] << ok2020-05-01 11:55:04.702 GcodeDriver DEBUG: sendCommand(serial://COM11 M813, 10000) => [ok]2020-05-01 11:55:04.702 ReferenceActuator DEBUG: DownCamLights.actuate(true)2020-05-01 11:55:04.702 GcodeDriver DEBUG: sendCommand(M810, 10000)...2020-05-01 11:55:04.702 GcodeDriver TRACE: [serial://COM11] >> M8102020-05-01 11:55:04.703 GcodeDriver TRACE: [serial://COM11] << ok2020-05-01 11:55:04.703 GcodeDriver DEBUG: sendCommand(serial://COM11 M810, 10000) => [ok]2020-05-01 11:55:04.707 AbstractCamera DEBUG: autoSettleAndCapture t=398 auto settle score: 2.516818532458772020-05-01 11:55:04.708 Scripting TRACE: Scripting.on Camera.BeforeCapture2020-05-01 11:55:04.734 Scripting TRACE: Scripting.on Camera.AfterCapture2020-05-01 11:55:04.735 Scripting TRACE: Scripting.on found Camera.AfterCapture.bsh2020-05-01 11:55:04.737 ReferenceActuator DEBUG: UpCamLights.actuate(false)2020-05-01 11:55:04.737 GcodeDriver DEBUG: sendCommand(M813, 10000)...2020-05-01 11:55:04.737 GcodeDriver TRACE: [serial://COM11] >> M8132020-05-01 11:55:04.738 GcodeDriver TRACE: [serial://COM11] << ok2020-05-01 11:55:04.738 GcodeDriver DEBUG: sendCommand(serial://COM11 M813, 10000) => [ok]2020-05-01 11:55:04.738 ReferenceActuator DEBUG: DownCamLights.actuate(true)2020-05-01 11:55:04.738 GcodeDriver DEBUG: sendCommand(M810, 10000)...2020-05-01 11:55:04.738 GcodeDriver TRACE: [serial://COM11] >> M8102020-05-01 11:55:04.739 GcodeDriver TRACE: [serial://COM11] << ok2020-05-01 11:55:04.739 GcodeDriver DEBUG: sendCommand(serial://COM11 M810, 10000) => [ok]2020-05-01 11:55:04.743 AbstractCamera DEBUG: autoSettleAndCapture t=434 auto settle score: 2.5754131531635922020-05-01 11:55:04.744 Scripting TRACE: Scripting.on Camera.BeforeCapture2020-05-01 11:55:04.763 Scripting TRACE: Scripting.on Camera.AfterCapture2020-05-01 11:55:04.764 Scripting TRACE: Scripting.on found Camera.AfterCapture.bsh2020-05-01 11:55:04.766 ReferenceActuator DEBUG: UpCamLights.actuate(false)2020-05-01 11:55:04.766 GcodeDriver DEBUG: sendCommand(M813, 10000)...2020-05-01 11:55:04.767 GcodeDriver TRACE: [serial://COM11] >> M8132020-05-01 11:55:04.767 GcodeDriver TRACE: [serial://COM11] << ok2020-05-01 11:55:04.767 GcodeDriver DEBUG: sendCommand(serial://COM11 M813, 10000) => [ok]2020-05-01 11:55:04.767 ReferenceActuator DEBUG: DownCamLights.actuate(true)2020-05-01 11:55:04.767 GcodeDriver DEBUG: sendCommand(M810, 10000)...2020-05-01 11:55:04.767 GcodeDriver TRACE: [serial://COM11] >> M8102020-05-01 11:55:04.768 GcodeDriver TRACE: [serial://COM11] << ok2020-05-01 11:55:04.768 GcodeDriver DEBUG: sendCommand(serial://COM11 M810, 10000) => [ok]2020-05-01 11:55:04.773 AbstractCamera DEBUG: autoSettleAndCapture t=464 auto settle score: 2.5898217234441642020-05-01 11:55:04.773 Scripting TRACE: Scripting.on Camera.BeforeCapture2020-05-01 11:55:04.794 Scripting TRACE: Scripting.on Camera.AfterCapture2020-05-01 11:55:04.795 Scripting TRACE: Scripting.on found Camera.AfterCapture.bsh2020-05-01 11:55:04.797 ReferenceActuator DEBUG: UpCamLights.actuate(false)2020-05-01 11:55:04.797 GcodeDriver DEBUG: sendCommand(M813, 10000)...2020-05-01 11:55:04.797 GcodeDriver TRACE: [serial://COM11] >> M8132020-05-01 11:55:04.798 GcodeDriver TRACE: [serial://COM11] << ok2020-05-01 11:55:04.798 GcodeDriver DEBUG: sendCommand(serial://COM11 M813, 10000) => [ok]2020-05-01 11:55:04.799 ReferenceActuator DEBUG: DownCamLights.actuate(true)2020-05-01 11:55:04.799 GcodeDriver DEBUG: sendCommand(M810, 10000)...2020-05-01 11:55:04.799 GcodeDriver TRACE: [serial://COM11] >> M8102020-05-01 11:55:04.799 GcodeDriver TRACE: [serial://COM11] << ok2020-05-01 11:55:04.799 GcodeDriver DEBUG: sendCommand(serial://COM11 M810, 10000) => [ok]2020-05-01 11:55:04.804 AbstractCamera DEBUG: autoSettleAndCapture t=495 auto settle score: 2.34428630963422572020-05-01 11:55:04.804 Scripting TRACE: Scripting.on Camera.BeforeCapture2020-05-01 11:55:04.827 Scripting TRACE: Scripting.on Camera.AfterCapture2020-05-01 11:55:04.827 Scripting TRACE: Scripting.on found Camera.AfterCapture.bsh2020-05-01 11:55:04.830 ReferenceActuator DEBUG: UpCamLights.actuate(false)2020-05-01 11:55:04.830 GcodeDriver DEBUG: sendCommand(M813, 10000)...2020-05-01 11:55:04.830 GcodeDriver TRACE: [serial://COM11] >> M8132020-05-01 11:55:04.830 GcodeDriver TRACE: [serial://COM11] << ok2020-05-01 11:55:04.831 GcodeDriver DEBUG: sendCommand(serial://COM11 M813, 10000) => [ok]2020-05-01 11:55:04.831 ReferenceActuator DEBUG: DownCamLights.actuate(true)2020-05-01 11:55:04.831 GcodeDriver DEBUG: sendCommand(M810, 10000)...2020-05-01 11:55:04.831 GcodeDriver TRACE: [serial://COM11] >> M8102020-05-01 11:55:04.832 GcodeDriver TRACE: [serial://COM11] << ok2020-05-01 11:55:04.832 GcodeDriver DEBUG: sendCommand(serial://COM11 M810, 10000) => [ok]2020-05-01 11:55:04.836 AbstractCamera DEBUG: autoSettleAndCapture t=527 auto settle score: 2.2627508500183552020-05-01 11:55:04.837 Scripting TRACE: Scripting.on Camera.BeforeCapture2020-05-01 11:55:04.857 Scripting TRACE: Scripting.on Camera.AfterCapture2020-05-01 11:55:04.858 Scripting TRACE: Scripting.on found Camera.AfterCapture.bsh2020-05-01 11:55:04.861 ReferenceActuator DEBUG: UpCamLights.actuate(false)2020-05-01 11:55:04.861 GcodeDriver DEBUG: sendCommand(M813, 10000)...2020-05-01 11:55:04.861 GcodeDriver TRACE: [serial://COM11] >> M8132020-05-01 11:55:04.861 GcodeDriver TRACE: [serial://COM11] << ok2020-05-01 11:55:04.862 GcodeDriver DEBUG: sendCommand(serial://COM11 M813, 10000) => [ok]2020-05-01 11:55:04.862 ReferenceActuator DEBUG: DownCamLights.actuate(true)2020-05-01 11:55:04.862 GcodeDriver DEBUG: sendCommand(M810, 10000)...2020-05-01 11:55:04.862 GcodeDriver TRACE: [serial://COM11] >> M8102020-05-01 11:55:04.862 GcodeDriver TRACE: [serial://COM11] << ok2020-05-01 11:55:04.862 GcodeDriver DEBUG: sendCommand(serial://COM11 M810, 10000) => [ok]2020-05-01 11:55:04.866 AbstractCamera DEBUG: autoSettleAndCapture t=557 auto settle score: 2.7366997274508842020-05-01 11:55:04.867 Scripting TRACE: Scripting.on Camera.BeforeCapture2020-05-01 11:55:04.895 Scripting TRACE: Scripting.on Camera.AfterCapture2020-05-01 11:55:04.896 Scripting TRACE: Scripting.on found Camera.AfterCapture.bsh2020-05-01 11:55:04.898 ReferenceActuator DEBUG: UpCamLights.actuate(false)2020-05-01 11:55:04.898 GcodeDriver DEBUG: sendCommand(M813, 10000)...2020-05-01 11:55:04.898 GcodeDriver TRACE: [serial://COM11] >> M8132020-05-01 11:55:04.899 GcodeDriver TRACE: [serial://COM11] << ok2020-05-01 11:55:04.899 GcodeDriver DEBUG: sendCommand(serial://COM11 M813, 10000) => [ok]2020-05-01 11:55:04.899 ReferenceActuator DEBUG: DownCamLights.actuate(true)2020-05-01 11:55:04.899 GcodeDriver DEBUG: sendCommand(M810, 10000)...2020-05-01 11:55:04.899 GcodeDriver TRACE: [serial://COM11] >> M8102020-05-01 11:55:04.900 GcodeDriver TRACE: [serial://COM11] << ok2020-05-01 11:55:04.900 GcodeDriver DEBUG: sendCommand(serial://COM11 M810, 10000) => [ok]2020-05-01 11:55:04.904 AbstractCamera DEBUG: autoSettleAndCapture t=595 auto settle score: 2.6408592418165552020-05-01 11:55:04.904 Scripting TRACE: Scripting.on Camera.BeforeCapture2020-05-01 11:55:04.923 Scripting TRACE: Scripting.on Camera.AfterCapture2020-05-01 11:55:04.924 Scripting TRACE: Scripting.on found Camera.AfterCapture.bsh2020-05-01 11:55:04.926 ReferenceActuator DEBUG: UpCamLights.actuate(false)2020-05-01 11:55:04.926 GcodeDriver DEBUG: sendCommand(M813, 10000)...2020-05-01 11:55:04.926 GcodeDriver TRACE: [serial://COM11] >> M8132020-05-01 11:55:04.927 GcodeDriver TRACE: [serial://COM11] << ok2020-05-01 11:55:04.927 GcodeDriver DEBUG: sendCommand(serial://COM11 M813, 10000) => [ok]2020-05-01 11:55:04.927 ReferenceActuator DEBUG: DownCamLights.actuate(true)2020-05-01 11:55:04.927 GcodeDriver DEBUG: sendCommand(M810, 10000)...2020-05-01 11:55:04.927 GcodeDriver TRACE: [serial://COM11] >> M8102020-05-01 11:55:04.928 GcodeDriver TRACE: [serial://COM11] << ok2020-05-01 11:55:04.928 GcodeDriver DEBUG: sendCommand(serial://COM11 M810, 10000) => [ok]2020-05-01 11:55:04.933 AbstractCamera DEBUG: autoSettleAndCapture t=624 auto settle score: 2.4110579512179452020-05-01 11:55:04.933 Scripting TRACE: Scripting.on Camera.BeforeCapture2020-05-01 11:55:04.954 Scripting TRACE: Scripting.on Camera.AfterCapture2020-05-01 11:55:04.955 Scripting TRACE: Scripting.on found Camera.AfterCapture.bsh2020-05-01 11:55:04.957 ReferenceActuator DEBUG: UpCamLights.actuate(false)2020-05-01 11:55:04.957 GcodeDriver DEBUG: sendCommand(M813, 10000)...2020-05-01 11:55:04.957 GcodeDriver TRACE: [serial://COM11] >> M8132020-05-01 11:55:04.958 GcodeDriver TRACE: [serial://COM11] << ok2020-05-01 11:55:04.958 GcodeDriver DEBUG: sendCommand(serial://COM11 M813, 10000) => [ok]2020-05-01 11:55:04.958 ReferenceActuator DEBUG: DownCamLights.actuate(true)2020-05-01 11:55:04.958 GcodeDriver DEBUG: sendCommand(M810, 10000)...2020-05-01 11:55:04.958 GcodeDriver TRACE: [serial://COM11] >> M8102020-05-01 11:55:04.959 GcodeDriver TRACE: [serial://COM11] << ok2020-05-01 11:55:04.959 GcodeDriver DEBUG: sendCommand(serial://COM11 M810, 10000) => [ok]2020-05-01 11:55:04.963 AbstractCamera DEBUG: autoSettleAndCapture t=654 auto settle score: 2.3278453223102792020-05-01 11:55:04.964 Scripting TRACE: Scripting.on Camera.BeforeCapture2020-05-01 11:55:04.986 Scripting TRACE: Scripting.on Camera.AfterCapture2020-05-01 11:55:04.987 Scripting TRACE: Scripting.on found Camera.AfterCapture.bsh2020-05-01 11:55:04.989 ReferenceActuator DEBUG: UpCamLights.actuate(false)2020-05-01 11:55:04.989 GcodeDriver DEBUG: sendCommand(M813, 10000)...2020-05-01 11:55:04.989 GcodeDriver TRACE: [serial://COM11] >> M8132020-05-01 11:55:04.990 GcodeDriver TRACE: [serial://COM11] << ok2020-05-01 11:55:04.990 GcodeDriver DEBUG: sendCommand(serial://COM11 M813, 10000) => [ok]2020-05-01 11:55:04.990 ReferenceActuator DEBUG: DownCamLights.actuate(true)2020-05-01 11:55:04.990 GcodeDriver DEBUG: sendCommand(M810, 10000)...2020-05-01 11:55:04.990 GcodeDriver TRACE: [serial://COM11] >> M8102020-05-01 11:55:04.991 GcodeDriver TRACE: [serial://COM11] << ok2020-05-01 11:55:04.991 GcodeDriver DEBUG: sendCommand(serial://COM11 M810, 10000) => [ok]2020-05-01 11:55:04.995 AbstractCamera DEBUG: autoSettleAndCapture t=686 auto settle score: 4.3829463592261272020-05-01 11:55:04.995 Scripting TRACE: Scripting.on Camera.BeforeCapture2020-05-01 11:55:05.019 Scripting TRACE: Scripting.on Camera.AfterCapture2020-05-01 11:55:05.019 Scripting TRACE: Scripting.on found Camera.AfterCapture.bsh2020-05-01 11:55:05.021 ReferenceActuator DEBUG: UpCamLights.actuate(false)2020-05-01 11:55:05.021 GcodeDriver DEBUG: sendCommand(M813, 10000)...2020-05-01 11:55:05.021 GcodeDriver TRACE: [serial://COM11] >> M8132020-05-01 11:55:05.022 GcodeDriver TRACE: [serial://COM11] << ok2020-05-01 11:55:05.022 GcodeDriver DEBUG: sendCommand(serial://COM11 M813, 10000) => [ok]2020-05-01 11:55:05.022 ReferenceActuator DEBUG: DownCamLights.actuate(true)2020-05-01 11:55:05.022 GcodeDriver DEBUG: sendCommand(M810, 10000)...2020-05-01 11:55:05.022 GcodeDriver TRACE: [serial://COM11] >> M8102020-05-01 11:55:05.023 GcodeDriver TRACE: [serial://COM11] << ok2020-05-01 11:55:05.023 GcodeDriver DEBUG: sendCommand(serial://COM11 M810, 10000) => [ok]2020-05-01 11:55:05.027 AbstractCamera DEBUG: autoSettleAndCapture t=718 auto settle score: 2.71986861383042072020-05-01 11:55:05.028 Scripting TRACE: Scripting.on Camera.BeforeCapture2020-05-01 11:55:05.069 Scripting TRACE: Scripting.on Camera.AfterCapture2020-05-01 11:55:05.070 Scripting TRACE: Scripting.on found Camera.AfterCapture.bsh2020-05-01 11:55:05.072 ReferenceActuator DEBUG: UpCamLights.actuate(false)2020-05-01 11:55:05.072 GcodeDriver DEBUG: sendCommand(M813, 10000)...2020-05-01 11:55:05.072 GcodeDriver TRACE: [serial://COM11] >> M8132020-05-01 11:55:05.073 GcodeDriver TRACE: [serial://COM11] << ok2020-05-01 11:55:05.073 GcodeDriver DEBUG: sendCommand(serial://COM11 M813, 10000) => [ok]2020-05-01 11:55:05.073 ReferenceActuator DEBUG: DownCamLights.actuate(true)2020-05-01 11:55:05.073 GcodeDriver DEBUG: sendCommand(M810, 10000)...2020-05-01 11:55:05.073 GcodeDriver TRACE: [serial://COM11] >> M8102020-05-01 11:55:05.074 GcodeDriver TRACE: [serial://COM11] << ok2020-05-01 11:55:05.074 GcodeDriver DEBUG: sendCommand(serial://COM11 M810, 10000) => [ok]2020-05-01 11:55:05.079 AbstractCamera DEBUG: autoSettleAndCapture t=770 auto settle score: 2.73946803252584252020-05-01 11:55:05.079 Scripting TRACE: Scripting.on Camera.BeforeCapture2020-05-01 11:55:05.099 Scripting TRACE: Scripting.on Camera.AfterCapture2020-05-01 11:55:05.099 Scripting TRACE: Scripting.on found Camera.AfterCapture.bsh2020-05-01 11:55:05.101 ReferenceActuator DEBUG: UpCamLights.actuate(false)2020-05-01 11:55:05.102 GcodeDriver DEBUG: sendCommand(M813, 10000)...2020-05-01 11:55:05.102 GcodeDriver TRACE: [serial://COM11] >> M8132020-05-01 11:55:05.102 GcodeDriver TRACE: [serial://COM11] << ok2020-05-01 11:55:05.102 GcodeDriver DEBUG: sendCommand(serial://COM11 M813, 10000) => [ok]2020-05-01 11:55:05.102 ReferenceActuator DEBUG: DownCamLights.actuate(true)2020-05-01 11:55:05.102 GcodeDriver DEBUG: sendCommand(M810, 10000)...2020-05-01 11:55:05.102 GcodeDriver TRACE: [serial://COM11] >> M8102020-05-01 11:55:05.103 GcodeDriver TRACE: [serial://COM11] << ok2020-05-01 11:55:05.103 GcodeDriver DEBUG: sendCommand(serial://COM11 M810, 10000) => [ok]2020-05-01 11:55:05.107 AbstractCamera DEBUG: autoSettleAndCapture t=798 auto settle score: 3.71060926001951152020-05-01 11:55:05.107 Scripting TRACE: Scripting.on Camera.BeforeCapture2020-05-01 11:55:05.131 Scripting TRACE: Scripting.on Camera.AfterCapture2020-05-01 11:55:05.132 Scripting TRACE: Scripting.on found Camera.AfterCapture.bsh2020-05-01 11:55:05.134 ReferenceActuator DEBUG: UpCamLights.actuate(false)2020-05-01 11:55:05.134 GcodeDriver DEBUG: sendCommand(M813, 10000)...2020-05-01 11:55:05.134 GcodeDriver TRACE: [serial://COM11] >> M8132020-05-01 11:55:05.135 GcodeDriver TRACE: [serial://COM11] << ok2020-05-01 11:55:05.135 GcodeDriver DEBUG: sendCommand(serial://COM11 M813, 10000) => [ok]2020-05-01 11:55:05.135 ReferenceActuator DEBUG: DownCamLights.actuate(true)2020-05-01 11:55:05.135 GcodeDriver DEBUG: sendCommand(M810, 10000)...2020-05-01 11:55:05.135 GcodeDriver TRACE: [serial://COM11] >> M8102020-05-01 11:55:05.135 GcodeDriver TRACE: [serial://COM11] << ok2020-05-01 11:55:05.136 GcodeDriver DEBUG: sendCommand(serial://COM11 M810, 10000) => [ok]2020-05-01 11:55:05.140 AbstractCamera DEBUG: autoSettleAndCapture t=831 auto settle score: 2.43710882189487872020-05-01 11:55:05.141 Scripting TRACE: Scripting.on Camera.BeforeCapture2020-05-01 11:55:05.162 Scripting TRACE: Scripting.on Camera.AfterCapture2020-05-01 11:55:05.163 Scripting TRACE: Scripting.on found Camera.AfterCapture.bsh2020-05-01 11:55:05.165 ReferenceActuator DEBUG: UpCamLights.actuate(false)2020-05-01 11:55:05.165 GcodeDriver DEBUG: sendCommand(M813, 10000)...2020-05-01 11:55:05.165 GcodeDriver TRACE: [serial://COM11] >> M8132020-05-01 11:55:05.166 GcodeDriver TRACE: [serial://COM11] << ok2020-05-01 11:55:05.166 GcodeDriver DEBUG: sendCommand(serial://COM11 M813, 10000) => [ok]2020-05-01 11:55:05.166 ReferenceActuator DEBUG: DownCamLights.actuate(true)2020-05-01 11:55:05.166 GcodeDriver DEBUG: sendCommand(M810, 10000)...2020-05-01 11:55:05.167 GcodeDriver TRACE: [serial://COM11] >> M8102020-05-01 11:55:05.167 GcodeDriver TRACE: [serial://COM11] << ok2020-05-01 11:55:05.167 GcodeDriver DEBUG: sendCommand(serial://COM11 M810, 10000) => [ok]2020-05-01 11:55:05.171 AbstractCamera DEBUG: autoSettleAndCapture t=862 auto settle score: 2.3169374439990512020-05-01 11:55:05.171 Scripting TRACE: Scripting.on Camera.BeforeCapture2020-05-01 11:55:05.193 Scripting TRACE: Scripting.on Camera.AfterCapture2020-05-01 11:55:05.194 Scripting TRACE: Scripting.on found Camera.AfterCapture.bsh2020-05-01 11:55:05.196 ReferenceActuator DEBUG: UpCamLights.actuate(false)2020-05-01 11:55:05.196 GcodeDriver DEBUG: sendCommand(M813, 10000)...2020-05-01 11:55:05.196 GcodeDriver TRACE: [serial://COM11] >> M8132020-05-01 11:55:05.197 GcodeDriver TRACE: [serial://COM11] << ok2020-05-01 11:55:05.197 GcodeDriver DEBUG: sendCommand(serial://COM11 M813, 10000) => [ok]2020-05-01 11:55:05.198 ReferenceActuator DEBUG: DownCamLights.actuate(true)2020-05-01 11:55:05.198 GcodeDriver DEBUG: sendCommand(M810, 10000)...2020-05-01 11:55:05.198 GcodeDriver TRACE: [serial://COM11] >> M8102020-05-01 11:55:05.198 GcodeDriver TRACE: [serial://COM11] << ok2020-05-01 11:55:05.198 GcodeDriver DEBUG: sendCommand(serial://COM11 M810, 10000) => [ok]2020-05-01 11:55:05.203 AbstractCamera DEBUG: autoSettleAndCapture t=894 auto settle score: 2.28900230688703582020-05-01 11:55:05.203 Scripting TRACE: Scripting.on Camera.BeforeCapture2020-05-01 11:55:05.231 Scripting TRACE: Scripting.on Camera.AfterCapture2020-05-01 11:55:05.231 Scripting TRACE: Scripting.on found Camera.AfterCapture.bsh2020-05-01 11:55:05.233 ReferenceActuator DEBUG: UpCamLights.actuate(false)2020-05-01 11:55:05.233 GcodeDriver DEBUG: sendCommand(M813, 10000)...2020-05-01 11:55:05.233 GcodeDriver TRACE: [serial://COM11] >> M8132020-05-01 11:55:05.233 GcodeDriver TRACE: [serial://COM11] << ok2020-05-01 11:55:05.233 GcodeDriver DEBUG: sendCommand(serial://COM11 M813, 10000) => [ok]2020-05-01 11:55:05.234 ReferenceActuator DEBUG: DownCamLights.actuate(true)2020-05-01 11:55:05.234 GcodeDriver DEBUG: sendCommand(M810, 10000)...2020-05-01 11:55:05.234 GcodeDriver TRACE: [serial://COM11] >> M8102020-05-01 11:55:05.234 GcodeDriver TRACE: [serial://COM11] << ok2020-05-01 11:55:05.235 GcodeDriver DEBUG: sendCommand(serial://COM11 M810, 10000) => [ok]2020-05-01 11:55:05.239 AbstractCamera DEBUG: autoSettleAndCapture t=930 auto settle score: 2.2805886046239822020-05-01 11:55:05.239 Scripting TRACE: Scripting.on Camera.BeforeCapture2020-05-01 11:55:05.261 Scripting TRACE: Scripting.on Camera.AfterCapture2020-05-01 11:55:05.262 Scripting TRACE: Scripting.on found Camera.AfterCapture.bsh2020-05-01 11:55:05.264 ReferenceActuator DEBUG: UpCamLights.actuate(false)2020-05-01 11:55:05.264 GcodeDriver DEBUG: sendCommand(M813, 10000)...2020-05-01 11:55:05.264 GcodeDriver TRACE: [serial://COM11] >> M8132020-05-01 11:55:05.264 GcodeDriver TRACE: [serial://COM11] << ok2020-05-01 11:55:05.265 GcodeDriver DEBUG: sendCommand(serial://COM11 M813, 10000) => [ok]2020-05-01 11:55:05.265 ReferenceActuator DEBUG: DownCamLights.actuate(true)2020-05-01 11:55:05.265 GcodeDriver DEBUG: sendCommand(M810, 10000)...2020-05-01 11:55:05.265 GcodeDriver TRACE: [serial://COM11] >> M8102020-05-01 11:55:05.266 GcodeDriver TRACE: [serial://COM11] << ok2020-05-01 11:55:05.266 GcodeDriver DEBUG: sendCommand(serial://COM11 M810, 10000) => [ok]2020-05-01 11:55:05.270 AbstractCamera DEBUG: autoSettleAndCapture t=961 auto settle score: 3.69119681016133862020-05-01 11:55:05.270 Scripting TRACE: Scripting.on Camera.BeforeCapture2020-05-01 11:55:05.290 Scripting TRACE: Scripting.on Camera.AfterCapture2020-05-01 11:55:05.291 Scripting TRACE: Scripting.on found Camera.AfterCapture.bsh2020-05-01 11:55:05.294 ReferenceActuator DEBUG: UpCamLights.actuate(false)2020-05-01 11:55:05.294 GcodeDriver DEBUG: sendCommand(M813, 10000)...2020-05-01 11:55:05.294 GcodeDriver TRACE: [serial://COM11] >> M8132020-05-01 11:55:05.295 GcodeDriver TRACE: [serial://COM11] << ok2020-05-01 11:55:05.295 GcodeDriver DEBUG: sendCommand(serial://COM11 M813, 10000) => [ok]2020-05-01 11:55:05.295 ReferenceActuator DEBUG: DownCamLights.actuate(true)2020-05-01 11:55:05.295 GcodeDriver DEBUG: sendCommand(M810, 10000)...2020-05-01 11:55:05.295 GcodeDriver TRACE: [serial://COM11] >> M8102020-05-01 11:55:05.296 GcodeDriver TRACE: [serial://COM11] << ok2020-05-01 11:55:05.296 GcodeDriver DEBUG: sendCommand(serial://COM11 M810, 10000) => [ok]2020-05-01 11:55:05.300 AbstractCamera DEBUG: autoSettleAndCapture t=991 auto settle score: 2.69521257679775552020-05-01 11:55:05.300 Scripting TRACE: Scripting.on Camera.BeforeCapture2020-05-01 11:55:05.321 Scripting TRACE: Scripting.on Camera.AfterCapture2020-05-01 11:55:05.322 Scripting TRACE: Scripting.on found Camera.AfterCapture.bsh2020-05-01 11:55:05.324 ReferenceActuator DEBUG: UpCamLights.actuate(false)2020-05-01 11:55:05.324 GcodeDriver DEBUG: sendCommand(M813, 10000)...2020-05-01 11:55:05.324 GcodeDriver TRACE: [serial://COM11] >> M8132020-05-01 11:55:05.325 GcodeDriver TRACE: [serial://COM11] << ok2020-05-01 11:55:05.325 GcodeDriver DEBUG: sendCommand(serial://COM11 M813, 10000) => [ok]2020-05-01 11:55:05.325 ReferenceActuator DEBUG: DownCamLights.actuate(true)2020-05-01 11:55:05.325 GcodeDriver DEBUG: sendCommand(M810, 10000)...2020-05-01 11:55:05.325 GcodeDriver TRACE: [serial://COM11] >> M8102020-05-01 11:55:05.326 GcodeDriver TRACE: [serial://COM11] << ok2020-05-01 11:55:05.326 GcodeDriver DEBUG: sendCommand(serial://COM11 M810, 10000) => [ok]2020-05-01 11:55:05.330 AbstractCamera DEBUG: autoSettleAndCapture t=1021 auto settle score: 2.44853978618694962020-05-01 11:55:05.333 AbstractCamera DEBUG: autoSettleAndCapture in 1024 ms
Hi
like I said before, I never switch my lights. This is the first time I'm looking into this.
BUT: How the heck is this supposed to work? There is no Camera.AfterSettle script, so you can't switch off the LEDs at the right time.
AfterCapture won't work.
It is clear from John's script that the camera light will be switched off after the first frame is returned.
I don't think this works at all.
However I made a PR with the missing Script trigger. Read in the PR for why I think this was broken:
_Mark
--
You received this message because you are subscribed to the Google Groups "OpenPnP" group.
To unsubscribe from this group and stop receiving emails from it, send an email to openpnp+u...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/openpnp/5849e70f-820c-42ce-a594-b0bf0cf35aa1%40googlegroups.com.
Hi Jason
Thanks for looking into this.
> Camera lighting has certainly not been broken for months, and is typically used with BeforeSettle and AfterCapture.
I must be more precise:
If you use the FixedTime methode (positive Settle Time in the
previous version) there is a Thread.sleep() that will make sure
there is no unlit frame in the buffer, so this does not happen.
During the Thread.sleep there is also no call to capture(), so no
AfterCapture script can turn the LED back off.
However if you use Autosettle (negative Settle Time in the previous version) there is a loop of capture() calls, each of which turns the LED back off by triggering the AfterCapture script. I'm quite convinced I haven't changed any of that. See the original loop:
> Why would you want to turn the lights off after settling and before making the actual capture?
It happens, because of the multiple capture()s in the loop. The
way I trace the code, the actual capture you mention is part
of the settling . There is no extra capture() after the settle
was deemed ok. Hence the name settleAndCapture().
_Mark
To view this discussion on the web visit https://groups.google.com/d/msgid/openpnp/CA%2BQw0jwLaQHejgRt8q4aSgnqwZ4_A3xNijALBA49wYd_xzLryw%40mail.gmail.com.
To unsubscribe from this group and stop receiving emails from it, send an email to ope...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/openpnp/5849e70f-820c-42ce-a594-b0bf0cf35aa1%40googlegroups.com.
--
You received this message because you are subscribed to the Google Groups "OpenPnP" group.
To unsubscribe from this group and stop receiving emails from it, send an email to ope...@googlegroups.com.
Hi Jason
Something is still amiss. I was trying to recreate the problem when suddenly OpenPnP was hanging.
Can this be the classical deadlock?
1. GUI thread is blocked on my settle test button waiting for a capture in the Camera:
2. Camera's own thread is blocked by OpenPnpCaptureCamera.captureNotifier waiting in turn for the GUI (I guess).
Snake bites its tail?
Well that's my take. Frankly I don't know enough about Java's synchronized working together with native code blocking.
Strangely the GUI thread appears twice in Eclipse looking identical(???)
Most camera captures are probably from the machine tasks thread, so this won't happen in Jobs. But in this case I specifically want it to work with the machine not started, so I can use the test button with the machine unconnected i.e. with a third camera when I'm away from the machine (similar to capturing in the pipeline's editor).
Should I decouple this with yet another thread?
How?
Out of curiosity, why are frames pushed by the captureNotifier? Why not just let the camera view invalidate itself with the chosen fps, then in its paint handler (if and when it is executed at all) pull the frame instead? But use no blocking i.e. no CaptureStream.hasNewFrame(), just use the last captured frame instead (I believe the CaptureStream does just that, If you skip the hasNewFrame()).
If this works, it could have several advantages:
- Frames are only captured as long as a camera's view is actually visible. I believe Java Swing is highly optimized (from the olde days, when it still mattered) to only repaint what is absolutely necessary. No repaints for hidden or even just obstructed windows. Multiple repaint requests are collapsed into one i.e. repaints also never pile up.
- I believe users most often use just one camera view, so the other view(s) would leave the camera (and CPU) alone.
- If the GUI is busy, nothing (bad) happens (i.e. no deadlocks, no machine captures blocked and no frames stolen, also no CPU wasted).
- If the GUI was busy for some time (or the whole CPU struggling), no stale frames are displayed, i.e. no lag in the camera view (still stuttering, but that's half as bad).
Could this be related?
_Mark
Am 27.04.2020 um 17:55 schrieb ma...@makr.zone:
Funny.
I haven't saved the original machine.xml where this happened, then I deleted the third camera. Now that I try to reproduce the same situation using a backup, I can't recreate it.
But it was not a singular incident, I tried everything like restarting OpenPNP, disconnecting the camera, etc. and it kept dropping frames. Now it all works with three cameras (two unconnected). Very strange.
:-(
Sorry to bother.
_Mark
Am 27.04.2020 um 17:03 schrieb Jason von Nieda:
Hey Mark, what if you remove the two cameras that are not being used? Does that make any difference?
Thanks,Jason
Hi Jason
Exploring this some more, I found a strange effect. Suddenly the frame rate dropped to half, so I got 30p from a 60p mode.Background: I added a third camera to test in my office (away from the machine) and even though it did not find the other two USB cameras, this seems to slow down the third camera:
I frantically searched for a problem with my new settling code, but it turns out the cameras somehow interlock with each other, even if unconnected!
Do you have an idea why that is?
Once I removed the third camera and instead reassigned the UBS device, I got (almost) no frame drops (as you see in the screenshot below, I got 6 frames after 104ms, which is expected for a 60p camera mode).
I guess the ocasional frame drop I still get comes from the camera view stealing one frame (not sure). Guess this could be remedied if need be.
_Mark
--
You received this message because you are subscribed to the Google Groups "OpenPnP" group.
To unsubscribe from this group and stop receiving emails from it, send an email to openpnp+u...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/openpnp/1bd18693-ad84-4ace-839e-22265a2f2b40%40googlegroups.com.
--
You received this message because you are subscribed to the Google Groups "OpenPnP" group.
To unsubscribe from this group and stop receiving emails from it, send an email to openpnp+u...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/openpnp/CA%2BQw0jyu-RdQsY6Dfno8yi%2B-vzKN7M7S9ypR2ebgmpJ7wF4OXg%40mail.gmail.com.
--
You received this message because you are subscribed to the Google Groups "OpenPnP" group.
To unsubscribe from this group and stop receiving emails from it, send an email to openpnp+u...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/openpnp/44acc53c-1d31-a53f-8553-cfef0c780766%40makr.zone.
--
You received this message because you are subscribed to the Google Groups "OpenPnP" group.
To unsubscribe from this group and stop receiving emails from it, send an email to openpnp+u...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/openpnp/5a5b43b7-26df-cac5-66bd-ab793d52c60b%40makr.zone.
Hi John
Glad to hear it.
Could you please update the Wiki here?
https://github.com/openpnp/openpnp/wiki/Scripting#scripting-event-list
and in the three sections here?
https://github.com/openpnp/openpnp/wiki/Scripting#camerabeforesettle
I guess the Wiki should now tell users not to use
Camera.BeforeCapture and Camera.AfterCapture for lighting anymore
and warn them the Camera.BeforeCapture is not guaranteed to be run
before the captured frame is physically taken by the camera (due
to buffering).
I'm in the middle of the axis/motion rework and would greatly
appreciate if you could do that. The next guy setting up lights
will thank you :-)
_Mark
--
You received this message because you are subscribed to the Google Groups "OpenPnP" group.
To unsubscribe from this group and stop receiving emails from it, send an email to openpnp+u...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/openpnp/7ae34e5c-dd12-4596-89a5-2fcf2a0aad2c%40googlegroups.com.
To unsubscribe from this group and stop receiving emails from it, send an email to ope...@googlegroups.com.
Cool thanks! :)
To unsubscribe from this group and stop receiving emails from it, send an email to openpnp+u...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/openpnp/3d804f31-3afb-4ba4-81e8-f5e934491ed8%40googlegroups.com.