The Latest details:
Hi Ozzy
> but when you fix this dialog after lower vision failure
Sorry, there have been so many conversations, I can't remember what you mean.
_Mark
--
You received this message because you are subscribed to a topic in the Google Groups "OpenPnP" group.
To unsubscribe from this topic, visit https://groups.google.com/d/topic/openpnp/DnpvszIEA5Q/unsubscribe.
To unsubscribe from this group and all its topics, send an email to openpnp+u...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/openpnp/77aca1a4-0a51-4b5f-b912-6e39bad84ab9n%40googlegroups.com.
Hi jdlv
> Actuator H1Valve must not coordinate with machine when actuated outside machine task.
OpenPnP is now more strict about machine tasks. Usually, script triggers should be executed inside machine tasks, but you seem to have found an exception. Can you tell me, what script you are using?
> transition and Issues & Solutions went fine but sometimes the nozzle cannot be manually moved no more.
Are you are referring to the Z axis, that you seem to move at the
end of the log?
If yes:
If you enabled the machine Auto Tool Select option
(through Issues & Solutions), then the active tool in the
Machine Controls will automatically change with the actions you
execute. For instance, if you press "Move nozzle to pick
location", it will automatically select the nozzle as the
active tool. If you press the "Move camera to pick
location" buttons
, it will
automatically select the camera.

The idea is to work seamlessly with a tool i.e. after
moving the camera to the location you can then use the jog
controls to fine-adjust the location, moving the selected camera,
and then capture it again for example to refine the original
location (e.g. a feeder pick location).
This solves one important issue that when you jog-rotate, the nozzle
tip run-out compensation creates an unexpected offset in the
camera view if the selected tool is the nozzle, but you
were actually trying to align the camera cross-hairs with
the orientation of the part to be picked or placed, for example.
Now to your problem:
The camera typically does not have a physical Z, only a
virtual Z. It will only simulate and store the Z
coordinate. The nozzle Z will not move, I think this is
what you describe as "freeze".
Why such a virtual axis? This is described here:
https://github.com/openpnp/openpnp/wiki/Machine-Axes#referencevirtualaxis
I guess the Auto Tool Select requires some getting used
to it. I am personally convinced, that in 90% the auto-select is
better than before and will select the right tool. But I do see
that in 10% you will have to get used to checking the selected
tool and then sometimes changing it.
If you don't like it at all, you can switch it off in the Machine with the Auto Tool Select option.
_Mark
--
You received this message because you are subscribed to a topic in the Google Groups "OpenPnP" group.
To unsubscribe from this topic, visit https://groups.google.com/d/topic/openpnp/DnpvszIEA5Q/unsubscribe.
To unsubscribe from this group and all its topics, send an email to openpnp+u...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/openpnp/894b0acf-67c9-40e0-add3-430470b2b695n%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/63effc83-52dc-4b5d-a766-e5c7e7f19007n%40googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/openpnp/ddaa4d59-8506-4cb3-bb70-59218649c347n%40googlegroups.com.
@ozzy,
First, just to make it absolutely clear: you are talking about a
pick and alignment inside a job, right? You are not
talking about the GUI Test Alignment function,
right?
This could well be a bug of mine related to...
https://github.com/openpnp/openpnp/pull/1103
...but I currently don't think so.
Am I right to assume that this same pipeline has worked
with other picks, after the upgrade?
Can you send me a log of when this happens? Plus the pipeline
copied with the
button?
Which then trips SizeCheck (class cast Exception). I guess this
would have been the same with the previous OpenPnP version(s).
SizeCheck should also use some null and type checking too.
Having said that: the cast-Exception is still propagated and I
guess the new Job retry code should still work with this one too.
@Jason
> This looks like a pipeline error
I'm not sure. He uses the relatively new AffineWarp to use the
pipeline on a smaller crop, so he has to use AffineUnwarp to
transform the pixel coordinates from the detected geometry
(RotatedRect) back to full camera coordinates (as these are not
center relative, but upper left corner relative). As far as I can
tell from the screenshot, the pipeline looks good to me.
I know the AffineUnwarp does not make things easier to read, but
I found no better way to work around the pixel coordinates issue.
:-(
Ideally, the current pixel affine transform would accompany all
the Result objects and all pipeline callers would then
have to obtain their pixels transform not from the camera but from
the Result. At the time I made AffineWarp, this looked like too
much work.
_Mark
To view this discussion on the web visit https://groups.google.com/d/msgid/openpnp/CA%2BQw0jx7H5HEjktf-3HfD883B43zAQxHXeUQD5jru-C-W6jSgQ%40mail.gmail.com.
> >Actuator H1Valve must not coordinate with machine when actuated outside machine task.
> OpenPnP is now more strict about machine tasks. Usually, script triggers should be executed inside machine tasks, but you seem to have found an exception. Can you tell me, what script you are using?
>> transition and Issues & Solutions went fine but sometimes the nozzle cannot be manually moved no more.
> Are you are referring to the Z axis, that you seem to move at the
end of the log?
Yes the Z axis. Sorry I should have read the documentation more before asking. Auto Tool Select explanation solves the mystery!
Thanks,
Joël
Hi Joël
You mean a script of your own, executed from the menu?
If yes, I haven't thought of that. :-(
If this was in Java, you would now do it as follows:
UiUtils.submitUiMachineTask(() -> {
your code here
});
But I don't know how and if these Lambda expressions work through python. Can anybody help?
@Jason, could we run the menu scripts in machine tasks too?
_MarkYou 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/29707533-5515-45c7-82a1-f26ff8a74911n%40googlegroups.com.
> UI is freezed during the script execution
Yes, this would also be better if we were to run them in machine tasks (different thread).
I guess I'll add that and Jason can still say "no" later.
_Mark
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/8a57ad7a-d950-f328-7ef2-323ced0a3565%40makr.zone.
To view this discussion on the web visit https://groups.google.com/d/msgid/openpnp/45f2f620-9d64-55d5-b2a5-66851a68643e%40makr.zone.
> "No" :)
It is undone ;-)
_Mark
To view this discussion on the web visit https://groups.google.com/d/msgid/openpnp/CA%2BQw0jyXhv%2BKRYUYp3Gk0YyBwUeeCyJBTgHZTew%2B%3DZ53M4Otcg%40mail.gmail.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/openpnp/000901d6f3f6%2466ae9470%24340bbd50%24%40gmail.com.
That one I missed, thank you.
NOTE: these are old bugs,
i.e. they are not from the Testing Version.
These bugs happen when you delete a part formerly assigned to a job placement or feeder. I tried to catch these everywhere, but I must have missed one there.
See here:
Will be fixed in the upcoming testing version.
_Mark
To view this discussion on the web visit https://groups.google.com/d/msgid/openpnp/ccd48c08-e1c3-496c-a8e2-146a42083e64n%40googlegroups.com.
MaxFeedCount is by @desertgreg, not by me.
@desertgreg are you hearing this?
_Mark
To view this discussion on the web visit https://groups.google.com/d/msgid/openpnp/2a03f079-79d9-477c-b087-cb97f4dd4b89n%40googlegroups.com.
> I'll post my currently known good configuration soon. Cool, thanks! _Mark
To view this discussion on the web visit https://groups.google.com/d/msgid/openpnp/ccd48c08-e1c3-496c-a8e2-146a42083e64n%40googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/openpnp/4e9245ab-0c0b-5687-7369-06b66702cb70%40makr.zone.
Tell me when I should have a look too.
_Mark
To view this discussion on the web visit https://groups.google.com/d/msgid/openpnp/CA%2BQw0jx-yV2xx-W%2BTZJezQ0%3D4spWaMPJo0TNGLj2JcvqHOyk%2Bg%40mail.gmail.com.
Hi all
Again, a new testing Version available.
All the features and bugfixes are described in the pull requests.
https://github.com/openpnp/openpnp/issues?q=label%3Atesting-round+
Big thanks to Tony for his "3D" Units per Pixel calibration
feature. ;-)
https://github.com/openpnp/openpnp/pull/1112
There were some hefty versioning conflicts I needed to resolve and I made some changes in the GUI, so if there are bugs, they are possibly mine!
Latest addition: Cameras can be shown/not shown in multi camera view panels (Show All Horizontal/Show All Vertical). This is typically used to hide the capture card in a SwitcherCamera setup. The Camera will still be available as a single CameraView.

https://github.com/openpnp/openpnp/pull/1119
Download here:
https://openpnp.org/test-downloads/
_Mark
Hi all
There is a new testing version available with brand-new Auto-Backup and many new Issues & Solutions detected, plus bug-fixes out of the testing feed-back.
Thanks to all the testers and welcome new ones! ;-)
The testing round contents are:
- Actuator Profiles, Camera Lights
- Pipeline editor enhancements (by @tonyluken)
- Improved "MaxFeedCount" for Reference Strip Feeder (by @desertgreg)
The Latest details:
- All the configuration XML files are now backed up, before being overwritten. A new subdirectory backups is created inside the .openpnp2 directory, further subdivided by date and time. Configuration files are copied there. Migration, testing and using Issues & Solutions becomes much safer with proper backups. ;-)
- Issues & Solutions: many new solutions added (includes linked new Wiki content).
- Issues & Solutions for initial machine setup: automatic replacement of the simulation NullDriver with a GcodeAsyncDriver.
- Issues & Solutions for initial machine setup: automatic replacement of the simulation ImageCamera and SimulatedUpCamera with a OpenPnpCaptureCamera.
- Bug-fix: Support for 0 fps in ReferenceStripFeederConfigurationWizard AutoSetup.
- Bug-fix: Marlin does not understand G-code with both M and G words on the same line (as it should), a newline was added.
- Bug-fix: Feeders without parts (i.e. parts that were deleted).
- Bug-fix: FeedersPanel tab index race condition.
_Mark--
You received this message because you are subscribed to a topic in the Google Groups "OpenPnP" group.
To unsubscribe from this topic, visit https://groups.google.com/d/topic/openpnp/DnpvszIEA5Q/unsubscribe.
To unsubscribe from this group and all its topics, send an email to openpnp+u...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/openpnp/26b8dbef-41e1-4cfb-9fac-604b1e0fb717n%40googlegroups.com.
I got false positives on one of my pipelines when the error image
was this red cross across the whole image. HoughCircles actually
saw some circles in center X.

So I changed the error image to be flat gray and display the red
cross in the upper left corner rather than across the whole
camera.
But I assume that has nothing to do with the actual problem. The
actual problem is not getting an image from the camera. These
errors (your log) happen before the error image is
created and shown instead of the failed image.
I can't remember having changed anything else in the Camera code
(since the last testing version), so I'm quite reluctant to
believe I broke your camera setup.
_Mark
Just to clarify for those that want to know what version is what:
Look at the Actions on Github:
https://github.com/openpnp/openpnp/actions
You can filter by branch (test for instance) etc.
Whenever it says "Merge pull request..." a new unit of work on the project was integrated. A new OpenPnP version was then automatically deployed.
You already see the specific version tag d017c60 in this
case. Also note the #1119 hashtag for later.
This also gives you the order in which features were integrated.
So anything that is listed below the one you are looking at, is
included in it.

You can open each of these and look at the details, i.e. you see
for which Java versions it was built and tested. If you see the
"Deploy" entry, a new OpenPnP Download version was deployed.

To get the link to the testing version, go to the download page:
https://openpnp.org/test-downloads/

Click the "browse all" link:

Then browse into the test directory:

And you'll recognize the version number again. This is the download that corresponds to the version.
If you want to know what is inside the Pull Requests, look at the
"Hashtag" Number that was listed (see the first screenshot above),
in this case #1119.
Look at the merged Pull Requests.
https://github.com/openpnp/openpnp/pulls?q=is%3Apr+is%3Amerged
Unfortunately that list is sorted by the age of the pull-request,
not by the order in which it was merged into OpenPnP i.e. this is
not the order in which the OpenPnP versions progressed.
There is strangely no such sorting option.

Open the one you want to look at. Towards the end of the PR is something like this:

Again that cryptic number d017c60 that identifies the version.
Hi everybody
TESTING-ROUND LAST CALL!
We would like to bring the Testing-Round to an end, the new features will soon be merged into mainline OpenPnP 2.0 (develop branch).
This is the moment for you to try the newest testing version against your machine. Issues should be reported in the next days. If nothing serious pops up, it will hopefully be merged next weekend.
I'm also interested in positive feed-back: Who is already running the latest testing version successfully? :-)
Scope:Complete list here:
https://github.com/openpnp/openpnp/issues?q=label%3Atesting-round
Download here:
https://openpnp.org/test-downloads/
Thank you testers!
_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/ba770184-c7d7-59dd-15e2-44fa3d66c99c%40makr.zone.



To view this discussion on the web visit https://groups.google.com/d/msgid/openpnp/166bf01f-85de-c82d-58bd-214bb7382302%40makr.zone.
Hi Chris
Thanks a lot, very useful documentation.
> Cloning NT4 from second row overwrites "Last Location x" without "Apply".
Yes, I'm aware of this problem. It bugs me in all my OpenPnP work
and it is also present in other such buttons and functions i.e.
not made by me ;-)
The clone button is not working as a GUI function "inside" the
form, instead it triggers a function directly on the NozzleTip
object underneath, i.e. the "business logic" of that cloning
operation is independent of the GUI (as it arguably should be, as
a design principle and for many good reasons, such as making such
operations available for other code and scripting). The operation
in turn triggers so-called setters on the NozzleTip object and
these fire property change events to update the form.
Unfortunately, there is a strange behavior in all active OpenPnP
forms, that they appear as modified, whenever a setter fires a
property change event. I frankly don't know Swing/Java enough to
know whether this is "normal" or a bug let alone how to fix it.
Maybe Jason knows more.
> That works OK but I can see two different speeds for this move while homing
I don't have enough information to know exactly what is going on here, but there are these known issues with homing:
If it is not one of these, holler again.
Thanks again for this prompt and concise testing feed-back!
And BTW, I'm very intrigued by your spacial nozzle camera
setup. I expect you will soon present your on-the-fly 3D
alignment???
I have spent many hours thinking about such a thing, ever since I saw this:
https://www.youtube.com/watch?v=67yn9of6jFY_Mark
To view this discussion on the web visit https://groups.google.com/d/msgid/openpnp/7a5bf8c8-6488-5bd9-3e93-900aebf49895%40gmail.com.

To view this discussion on the web visit https://groups.google.com/d/msgid/openpnp/c9ecf6cb-3204-4c91-f88b-35c2d9c99328%40makr.zone.
Hi Hanski
> Unfortunately movements with Simulated3rdOrderControl are quite erratic.
Can you describe "quite erratic".
If you mean "slowing down in the middle and then strangely
limping to the target", then you might want to read about the
Grace period (M595 R) here:
https://github.com/Duet3D/RepRapFirmware/pull/471
I have not yet documented that nor included it in Issues &
Solutions because I don't know the right value for the Grace
Period.
@Wolfgang has done some experiments (albeit on Duet 3), maybe he can help us with the right settings.
I don't know yet if Duet 2 is powerful enough for 3rd order
control, however I would be astonished if it weren't.
I'll then add documentation (or even checks to the Issues & Solutions if possible).
> However when I try to rotate C axis with the jog buttons, both (CC and CW) buttons turn the C axis only clockwise. ...
What?!! I cannot think of anything
that would do that. Using your machine.xml against the GcodeServer
I don't see it in the log. Are you sure you sent me the relevant
part of the log showing CCW and CW jogs?
If the log section is wrong, there is the possibility that your
steps per mm or micro-stepping settings are wrong, so 1° is
translated to multiple turns. And there some powerful settings in
Duet that affect how axes work. For instance they can do 360°
modulo wrap-around by themselves. I see you have an E axis
configued which may also suggest that it is configured as an
extruder, which sometimes work as coordinate-relative, despite the
G90 mode.
I recommend configuring it as a true continuous rotational axis C
but with linear feed-rate calculation. In my lab bench controller
config.g it looks like so:
M584 C0.3 R1
S0 ; set drive mapping, C
360°-continuous, but linear feed-rate
https://duet3d.dozuki.com/Wiki/Gcode#Section_M584_Set_drive_mapping
_Mark
To view this discussion on the web visit https://groups.google.com/d/msgid/openpnp/b0835d0c-6dc4-4686-ab91-37cd2ed757ban%40googlegroups.com.
Thanks Mark!
I attached my updated config.g file for C axis. I hope it’s correct now?
And the updated XML.
Now the C axis jog button works ok sometimes when pressed, not every time.
I tried to get more info with the new Motion planner diagnostics function.
This test causes no movement at all:

If I disable “Allow continuous Motion” then it will move the X axis only.
If I set the rotation to 0.0 to all test boxes then the test works correctly.
The same performance with Simulated3rdOrderControl and with ModeratedConstantAcceleration.
Unfortunately if I disable “Allow continuous motion” & “Allow uncoordinated” & “Interpolation Retiming” and put them active again then it will change the Motion planner diagnostics function again. The axes might move or not.
So, unfortunately I couldn’t make a totally repeatable test.
-Hanski
From: ma...@makr.zone
Sent: Wednesday, 3 March 2021 11.08
To: ope...@googlegroups.com
Subject: Re: [OpenPnP] Testing-Round,
To view this discussion on the web visit https://groups.google.com/d/msgid/openpnp/5cd0a898-f021-cd23-628d-f51e5f1506c0%40makr.zone.
The "Allow uncoordinated" button is experimental. Please switch it off for now.
The please send a log at Trace level.
_Mark
To view this discussion on the web visit https://groups.google.com/d/msgid/openpnp/686DA211-9B4C-420E-A0FB-C455461D8FEF%40hxcore.ol.
here's the files
When Wolfgang said "limits", I think he referred to the feedrate
and acceleration limits, not soft limits.
Those limits need to be the same (or higher) in config.g as in OpenPnP.
_Mark
--
You received this message because you are subscribed to a topic in the Google Groups "OpenPnP" group.
To unsubscribe from this topic, visit https://groups.google.com/d/topic/openpnp/DnpvszIEA5Q/unsubscribe.
To unsubscribe from this group and all its topics, send an email to openpnp+u...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/openpnp/ce0f4bbc-76d9-44d1-8b9b-a3b462a29050n%40googlegroups.com.
--
You received this message because you are subscribed to a topic in the Google Groups "OpenPnP" group.
To unsubscribe from this topic, visit https://groups.google.com/d/topic/openpnp/DnpvszIEA5Q/unsubscribe.
To unsubscribe from this group and all its topics, send an email to openpnp+u...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/openpnp/ce0f4bbc-76d9-44d1-8b9b-a3b462a29050n%40googlegroups.com.
Yep, that I read from the documentation and I did set the speed and acceleration values higher in config.g than in OpenPnP.
-Hanski
From: ma...@makr.zone
Sent: Wednesday, 3 March 2021 20.30
To: ope...@googlegroups.com
Subject: Re: [OpenPnP] Testing-Round,
When Wolfgang said "limits", I think he referred to the feedrate and acceleration limits, not soft limits.
To view this discussion on the web visit https://groups.google.com/d/msgid/openpnp/c471f87c-d340-9e04-fbbe-e14c57c4ade8%40makr.zone.
Hi!
I did some more testing, but unfortunately not much progress.
I did change the Motion Control Type also to ToolpathFeedRate, but it had no effect.
This test sequence result is that no axes move:

And the log (Trace level) looks like this when I press the play button:
2021-03-08 18:11:04.904 ReferenceHead DEBUG: H1.moveToSafeZ(1.0)
2021-03-08 18:11:04.906 AbstractHeadMountable DEBUG: N1.moveToSafeZ(1.0)
2021-03-08 18:11:04.907 ReferenceNozzle TRACE: N1.transformToHeadLocation((0.000000, 0.000000, 0.000000, 0.000000 mm), ...)
2021-03-08 18:11:04.907 ReferenceNozzle TRACE: N1.transformToHeadLocation((0.000000, 0.000000, 0.000000, 0.000000 mm), ...)
2021-03-08 18:11:04.908 AbstractHeadMountable DEBUG: Top.moveToSafeZ(1.0)
2021-03-08 18:11:04.909 AbstractHeadMountable DEBUG: N1.moveTo((0.000000, 0.000000, 0.000000, 0.000000 mm), 1.0)
2021-03-08 18:11:04.910 ReferenceNozzle TRACE: N1.transformToHeadLocation((-30.670000, 0.530000, 0.000000, 0.000000 mm), ...)
2021-03-08 18:11:04.913 GcodeAsyncDriver DEBUG: serial://COM6 commandQueue.offer(G1 X-30.6700 Y0.5300 ; move to target, 5000)...
2021-03-08 18:11:04.914 GcodeAsyncDriver$WriterThread TRACE: [serial://COM6] >> G1X-30.67Y0.53
2021-03-08 18:11:04.916 GcodeDriver$ReaderThread TRACE: [serial://COM6] << ok
2021-03-08 18:11:04.918 GcodeAsyncDriver DEBUG: serial://COM6 commandQueue.offer(M400 ; Wait for moves to complete before returning, 5000)..
2021-03-08 18:11:04.919 GcodeAsyncDriver DEBUG: serial://COM6 commandQueue.offer(M114 ; get position, -1)...
2021-03-08 18:11:04.919 GcodeAsyncDriver$WriterThread TRACE: [serial://COM6] >> M400
2021-03-08 18:11:04.919 GcodeAsyncDriver$WriterThread TRACE: [serial://COM6] >> M114
2021-03-08 18:11:05.025 GcodeDriver$ReaderThread TRACE: [serial://COM6] << ok
2021-03-08 18:11:05.028 GcodeDriver$ReaderThread TRACE: [serial://COM6] << X:-5.000 Y:0.530 Z:0.000 C:0.000 E:0.000 Count -800 85 0 0 Machine -5.000 0.530 0.000 0.000 Bed comp 0.000
2021-03-08 18:11:05.028 GcodeDriver TRACE: Position report: X:-5.000 Y:0.530 Z:0.000 C:0.000 E:0.000 Count -800 85 0 0 Machine -5.000 0.530 0.000 0.000 Bed comp 0.000
2021-03-08 18:11:05.029 GcodeDriver TRACE: GcodeAsyncDriver got lastReportedLocation (X:-5.000000, Y:0.530000, Z:0.000000, C:0.000000)
2021-03-08 18:11:05.029 GcodeDriver$ReaderThread TRACE: [serial://COM6] << ok
2021-03-08 18:11:05.029 GcodeAsyncDriver TRACE: GcodeAsyncDriver confirmation complete.
2021-03-08 18:11:05.029 AbstractMotionPlanner DEBUG: Reported location changes current location from (X:-30.670000, Y:0.530000, Z:0.000000, C:0.000000) to (X:-5.000000, Y:0.530000, Z:0.000000, C:0.000000)
2021-03-08 18:11:05.029 AbstractHeadMountable DEBUG: N1.moveTo((0.000000, 0.000000, 0.000000, 0.000000 mm), 1.0)
2021-03-08 18:11:05.029 ReferenceNozzle TRACE: N1.transformToHeadLocation((-30.670000, 0.530000, 0.000000, 0.000000 mm), ...)
2021-03-08 18:11:05.031 GcodeAsyncDriver DEBUG: serial://COM6 commandQueue.offer(G1 X-30.6700 ; move to target, 5000)...
2021-03-08 18:11:05.032 GcodeAsyncDriver$WriterThread TRACE: [serial://COM6] >> G1X-30.67
2021-03-08 18:11:05.032 GcodeAsyncDriver DEBUG: serial://COM6 commandQueue.offer(M400 ; Wait for moves to complete before returning, 5000)...
2021-03-08 18:11:05.032 GcodeAsyncDriver DEBUG: serial://COM6 commandQueue.offer(M114 ; get position, -1)...
2021-03-08 18:11:05.032 GcodeAsyncDriver$WriterThread TRACE: [serial://COM6] >> M400
2021-03-08 18:11:05.033 GcodeAsyncDriver$WriterThread TRACE: [serial://COM6] >> M114
2021-03-08 18:11:05.033 GcodeDriver$ReaderThread TRACE: [serial://COM6] << ok
2021-03-08 18:11:05.034 GcodeDriver$ReaderThread TRACE: [serial://COM6] << ok
2021-03-08 18:11:05.037 GcodeDriver$ReaderThread TRACE: [serial://COM6] << X:-5.000 Y:0.530 Z:0.000 C:0.000 E:0.000 Count -800 85 0 0 Machine -5.000 0.530 0.000 0.000 Bed comp 0.000
2021-03-08 18:11:05.037 GcodeDriver TRACE: Position report: X:-5.000 Y:0.530 Z:0.000 C:0.000 E:0.000 Count -800 85 0 0 Machine -5.000 0.530 0.000 0.000 Bed comp 0.000
2021-03-08 18:11:05.038 GcodeDriver TRACE: GcodeAsyncDriver got lastReportedLocation (X:-5.000000, Y:0.530000, Z:0.000000, C:0.000000)
2021-03-08 18:11:05.038 GcodeDriver$ReaderThread TRACE: [serial://COM6] << ok
2021-03-08 18:11:05.038 GcodeAsyncDriver TRACE: GcodeAsyncDriver confirmation complete.
2021-03-08 18:11:05.038 AbstractMotionPlanner DEBUG: Reported location changes current location from (X:-30.670000, Y:0.530000, Z:0.000000, C:0.000000) to (X:-5.000000, Y:0.530000, Z:0.000000, C:0.000000)
2021-03-08 18:11:05.039 GcodeAsyncDriver DEBUG: serial://COM6 commandQueue.offer(M400 ; Wait for moves to complete before returning, 5000)...
2021-03-08 18:11:05.039 GcodeAsyncDriver DEBUG: serial://COM6 commandQueue.offer(M114 ; get position, -1)...
2021-03-08 18:11:05.040 GcodeAsyncDriver$WriterThread TRACE: [serial://COM6] >> M400
2021-03-08 18:11:05.040 GcodeAsyncDriver$WriterThread TRACE: [serial://COM6] >> M114
2021-03-08 18:11:05.041 GcodeDriver$ReaderThread TRACE: [serial://COM6] << ok
2021-03-08 18:11:05.044 GcodeDriver$ReaderThread TRACE: [serial://COM6] << X:-5.000 Y:0.530 Z:0.000 C:0.000 E:0.000 Count -800 85 0 0 Machine -5.000 0.530 0.000 0.000 Bed comp 0.000
2021-03-08 18:11:05.044 GcodeDriver TRACE: Position report: X:-5.000 Y:0.530 Z:0.000 C:0.000 E:0.000 Count -800 85 0 0 Machine -5.000 0.530 0.000 0.000 Bed comp 0.000
2021-03-08 18:11:05.045 GcodeDriver$ReaderThread TRACE: [serial://COM6] << ok
2021-03-08 18:11:05.045 GcodeDriver TRACE: GcodeAsyncDriver got lastReportedLocation (X:-5.000000, Y:0.530000, Z:0.000000, C:0.000000)
2021-03-08 18:11:05.045 GcodeAsyncDriver TRACE: GcodeAsyncDriver confirmation complete.
2021-03-08 18:11:05.045 ReferenceHead DEBUG: H1.moveToSafeZ(1.0)
2021-03-08 18:11:05.046 AbstractHeadMountable DEBUG: N1.moveToSafeZ(1.0)
2021-03-08 18:11:05.046 ReferenceNozzle TRACE: N1.transformToHeadLocation((-5.000000, 0.530000, 0.000000, 0.000000 mm), ...)
2021-03-08 18:11:05.046 ReferenceNozzle TRACE: N1.transformToHeadLocation((-5.000000, 0.530000, 0.000000, 0.000000 mm), ...)
2021-03-08 18:11:05.047 AbstractHeadMountable DEBUG: Top.moveToSafeZ(1.0)
2021-03-08 18:11:05.047 AbstractHeadMountable DEBUG: N1.moveTo((300.000000, -300.000000, 0.000000, 90.000000 mm), 1.0)
2021-03-08 18:11:05.047 ReferenceNozzle TRACE: N1.transformToHeadLocation((269.330000, -299.470000, 0.000000, 90.000000 mm), ...)
2021-03-08 18:11:05.050 GcodeAsyncDriver DEBUG: serial://COM6 commandQueue.offer(G1 X269.3300 Y-299.4700 C90.0000 ; move to target, 5000)...
2021-03-08 18:11:05.050 GcodeAsyncDriver$WriterThread TRACE: [serial://COM6] >> G1X269.33Y-299.47C90
2021-03-08 18:11:05.053 GcodeDriver$ReaderThread TRACE: [serial://COM6] << Error: G0/G1: insufficient axes homed
2021-03-08 18:11:05.053 GcodeAsyncDriver DEBUG: serial://COM6 commandQueue.offer(M400 ; Wait for moves to complete before returning, 5000)..
2021-03-08 18:11:05.054 GcodeAsyncDriver DEBUG: serial://COM6 commandQueue.offer(M114 ; get position, -1)...
2021-03-08 18:11:05.054 GcodeDriver$ReaderThread TRACE: [serial://COM6] << ok
2021-03-08 18:11:05.054 GcodeAsyncDriver$WriterThread TRACE: [serial://COM6] >> M400
2021-03-08 18:11:05.055 GcodeAsyncDriver$WriterThread TRACE: [serial://COM6] >> M114
2021-03-08 18:11:05.056 GcodeDriver$ReaderThread TRACE: [serial://COM6] << ok
2021-03-08 18:11:05.059 GcodeDriver$ReaderThread TRACE: [serial://COM6] << X:-5.000 Y:0.530 Z:0.000 C:0.000 E:0.000 Count -800 85 0 0 Machine -5.000 0.530 0.000 0.000 Bed comp 0.000
2021-03-08 18:11:05.059 GcodeDriver TRACE: Position report: X:-5.000 Y:0.530 Z:0.000 C:0.000 E:0.000 Count -800 85 0 0 Machine -5.000 0.530 0.000 0.000 Bed comp 0.000
2021-03-08 18:11:05.060 GcodeDriver TRACE: GcodeAsyncDriver got lastReportedLocation (X:-5.000000, Y:0.530000, Z:0.000000, C:0.000000)
2021-03-08 18:11:05.060 GcodeDriver$ReaderThread TRACE: [serial://COM6] << ok
2021-03-08 18:11:05.060 GcodeAsyncDriver TRACE: GcodeAsyncDriver confirmation complete.
2021-03-08 18:11:05.060 AbstractMotionPlanner DEBUG: Reported location changes current location from (X:269.330000, Y:-299.470000, Z:0.000000, C:90.000000) to (X:-5.000000, Y:0.530000, Z:0.000000, C:0.000000)
2021-03-08 18:11:05.061 AbstractHeadMountable DEBUG: N1.moveTo((300.000000, -300.000000, 0.000000, 90.000000 mm), 1.0)
2021-03-08 18:11:05.061 ReferenceNozzle TRACE: N1.transformToHeadLocation((269.330000, -299.470000, 0.000000, 90.000000 mm), ...)
2021-03-08 18:11:05.063 GcodeAsyncDriver DEBUG: serial://COM6 commandQueue.offer(G1 X269.3300 Y-299.4700 C90.0000 ; move to target, 5000)...
2021-03-08 18:11:05.064 GcodeAsyncDriver$WriterThread TRACE: [serial://COM6] >> G1X269.33Y-299.47C90
2021-03-08 18:11:05.066 GcodeDriver$ReaderThread TRACE: [serial://COM6] << Error: G0/G1: insufficient axes homed
2021-03-08 18:11:05.066 GcodeDriver$ReaderThread TRACE: [serial://COM6] << ok
2021-03-08 18:11:05.067 GcodeAsyncDriver DEBUG: serial://COM6 commandQueue.offer(M400 ; Wait for moves to complete before returning, 5000)...
2021-03-08 18:11:05.067 GcodeAsyncDriver$WriterThread TRACE: [serial://COM6] >> M400
2021-03-08 18:11:05.068 GcodeDriver$ReaderThread TRACE: [serial://COM6] << ok
2021-03-08 18:11:05.067 GcodeAsyncDriver DEBUG: serial://COM6 commandQueue.offer(M114 ; get position, -1)...
2021-03-08 18:11:05.069 GcodeAsyncDriver$WriterThread TRACE: [serial://COM6] >> M114
2021-03-08 18:11:05.074 GcodeDriver$ReaderThread TRACE: [serial://COM6] << X:-5.000 Y:0.530 Z:0.000 C:0.000 E:0.000 Count -800 85 0 0 Machine -5.000 0.530 0.000 0.000 Bed comp 0.000
2021-03-08 18:11:05.074 GcodeDriver TRACE: Position report: X:-5.000 Y:0.530 Z:0.000 C:0.000 E:0.000 Count -800 85 0 0 Machine -5.000 0.530 0.000 0.000 Bed comp 0.000
2021-03-08 18:11:05.074 GcodeDriver$ReaderThread TRACE: [serial://COM6] << ok
2021-03-08 18:11:05.075 GcodeDriver TRACE: GcodeAsyncDriver got lastReportedLocation (X:-5.000000, Y:0.530000, Z:0.000000, C:0.000000)
2021-03-08 18:11:05.075 GcodeAsyncDriver TRACE: GcodeAsyncDriver confirmation complete.
2021-03-08 18:11:05.075 AbstractMotionPlanner DEBUG: Reported location changes current location from (X:269.330000, Y:-299.470000, Z:0.000000, C:90.000000) to (X:-5.000000, Y:0.530000, Z:0.000000, C:0.000000)
2021-03-08 18:11:05.076 ReferenceHead DEBUG: H1.moveToSafeZ(1.0)
2021-03-08 18:11:05.077 AbstractHeadMountable DEBUG: N1.moveToSafeZ(1.0)
2021-03-08 18:11:05.077 ReferenceNozzle TRACE: N1.transformToHeadLocation((-5.000000, 0.530000, 0.000000, 0.000000 mm), ...)
2021-03-08 18:11:05.077 ReferenceNozzle TRACE: N1.transformToHeadLocation((-5.000000, 0.530000, 0.000000, 0.000000 mm), ...)
2021-03-08 18:11:05.078 AbstractHeadMountable DEBUG: Top.moveToSafeZ(1.0)
2021-03-08 18:11:05.078 AbstractHeadMountable DEBUG: N1.moveTo((0.000000, 0.000000, 0.000000, 0.000000 mm), 1.0)
2021-03-08 18:11:05.079 ReferenceNozzle TRACE: N1.transformToHeadLocation((-30.670000, 0.530000, 0.000000, 0.000000 mm), ...)
2021-03-08 18:11:05.080 GcodeAsyncDriver DEBUG: serial://COM6 commandQueue.offer(G1 X-30.6700 ; move to target, 5000)...
2021-03-08 18:11:05.081 GcodeAsyncDriver$WriterThread TRACE: [serial://COM6] >> G1X-30.67
2021-03-08 18:11:05.083 GcodeDriver$ReaderThread TRACE: [serial://COM6] << ok
2021-03-08 18:11:05.085 GcodeAsyncDriver DEBUG: serial://COM6 commandQueue.offer(M400 ; Wait for moves to complete before returning, 5000)...
2021-03-08 18:11:05.085 GcodeAsyncDriver$WriterThread TRACE: [serial://COM6] >> M400
2021-03-08 18:11:05.085 GcodeAsyncDriver DEBUG: serial://COM6 commandQueue.offer(M114 ; get position, -1)...
2021-03-08 18:11:05.086 GcodeAsyncDriver$WriterThread TRACE: [serial://COM6] >> M114
2021-03-08 18:11:05.086 GcodeDriver$ReaderThread TRACE: [serial://COM6] << ok
2021-03-08 18:11:05.091 GcodeDriver$ReaderThread TRACE: [serial://COM6] << X:-5.000 Y:0.530 Z:0.000 C:0.000 E:0.000 Count -800 85 0 0 Machine -5.000 0.530 0.000 0.000 Bed comp 0.000
2021-03-08 18:11:05.091 GcodeDriver TRACE: Position report: X:-5.000 Y:0.530 Z:0.000 C:0.000 E:0.000 Count -800 85 0 0 Machine -5.000 0.530 0.000 0.000 Bed comp 0.000
2021-03-08 18:11:05.091 GcodeDriver TRACE: GcodeAsyncDriver got lastReportedLocation (X:-5.000000, Y:0.530000, Z:0.000000, C:0.000000)
2021-03-08 18:11:05.091 GcodeDriver$ReaderThread TRACE: [serial://COM6] << ok
2021-03-08 18:11:05.091 GcodeAsyncDriver TRACE: GcodeAsyncDriver confirmation complete.
2021-03-08 18:11:05.092 AbstractMotionPlanner DEBUG: Reported location changes current location from (X:-30.670000, Y:0.530000, Z:0.000000, C:0.000000) to (X:-5.000000, Y:0.530000, Z:0.000000, C:0.000000)
2021-03-08 18:11:05.092 AbstractHeadMountable DEBUG: N1.moveTo((0.000000, 0.000000, 0.000000, 0.000000 mm), 1.0)
2021-03-08 18:11:05.092 ReferenceNozzle TRACE: N1.transformToHeadLocation((-30.670000, 0.530000, 0.000000, 0.000000 mm), ...)
2021-03-08 18:11:05.094 GcodeAsyncDriver DEBUG: serial://COM6 commandQueue.offer(G1 X-30.6700 ; move to target, 5000)...
2021-03-08 18:11:05.095 GcodeAsyncDriver$WriterThread TRACE: [serial://COM6] >> G1X-30.67
2021-03-08 18:11:05.096 GcodeDriver$ReaderThread TRACE: [serial://COM6] << ok
2021-03-08 18:11:05.098 GcodeAsyncDriver DEBUG: serial://COM6 commandQueue.offer(M400 ; Wait for moves to complete before returning, 5000)...
2021-03-08 18:11:05.099 GcodeAsyncDriver DEBUG: serial://COM6 commandQueue.offer(M114 ; get position, -1)...
2021-03-08 18:11:05.099 GcodeAsyncDriver$WriterThread TRACE: [serial://COM6] >> M400
2021-03-08 18:11:05.099 GcodeAsyncDriver$WriterThread TRACE: [serial://COM6] >> M114
2021-03-08 18:11:05.107 GcodeDriver$ReaderThread TRACE: [serial://COM6] << ok
2021-03-08 18:11:05.109 GcodeDriver$ReaderThread TRACE: [serial://COM6] << X:-5.000 Y:0.530 Z:0.000 C:0.000 E:0.000 Count -800 85 0 0 Machine -5.000 0.530 0.000 0.000 Bed comp 0.000
2021-03-08 18:11:05.109 GcodeDriver TRACE: Position report: X:-5.000 Y:0.530 Z:0.000 C:0.000 E:0.000 Count -800 85 0 0 Machine -5.000 0.530 0.000 0.000 Bed comp 0.000
2021-03-08 18:11:05.109 GcodeDriver TRACE: GcodeAsyncDriver got lastReportedLocation (X:-5.000000, Y:0.530000, Z:0.000000, C:0.000000)
2021-03-08 18:11:05.109 GcodeDriver$ReaderThread TRACE: [serial://COM6] << ok
2021-03-08 18:11:05.109 GcodeAsyncDriver TRACE: GcodeAsyncDriver confirmation complete.
2021-03-08 18:11:05.110 AbstractMotionPlanner DEBUG: Reported location changes current location from (X:-30.670000, Y:0.530000, Z:0.000000, C:0.000000) to (X:-5.000000, Y:0.530000, Z:0.000000, C:0.000000)
2021-03-08 18:11:05.110 AbstractHeadMountable DEBUG: N1.moveToSafeZ(0.2)
2021-03-08 18:11:05.110 ReferenceNozzle TRACE: N1.transformToHeadLocation((-5.000000, 0.530000, 0.000000, 0.000000 mm), ...)
2021-03-08 18:11:05.111 ReferenceNozzle TRACE: N1.transformToHeadLocation((-5.000000, 0.530000, 0.000000, 0.000000 mm), ...)
To my beginner eyes this looks like the machine thinks it’s performing the moves ok?
-Hanski
Hi!
Now perhaps some progress. When I apply soft travel limits to OpenPnP then it displays an error when I press play in the test sequence:

My guess it’s because my head camera vs. nozzle offset:

I guess I have configured this wrong?
My understanding was that top camera is at zero coordinate location and the nozzle needs the offset coordinates.
-Hanski
2021-03-08 18:11:05.050 GcodeAsyncDriver$WriterThread TRACE: [serial://COM6] >> G1X269.33Y-299.47C90
And the test sequence window has to have nozzle location coordinates. Not camera coordinates. Then the test works:

-Hanski
_Mark
--
You received this message because you are subscribed to a topic in the Google Groups "OpenPnP" group.
To unsubscribe from this topic, visit https://groups.google.com/d/topic/openpnp/DnpvszIEA5Q/unsubscribe.
To unsubscribe from this group and all its topics, send an email to openpnp+u...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/openpnp/89020A86-7FC6-4ED3-9766-0146AB8C2DFE%40hxcore.ol.
Thanks Mark!
Your config.g solved my last problem of C axis jog button not working.
I needed to set travel limits also for C axis in config.g. Without C axis limits the jog button doesn’t work:
M208 X-5 Y-351 Z-33 C-360000 S1 ; set axis minima
M208 X1032.5 Y5 Z8 C360000 S0 ; set axis maxima
P.S. The new features “Issues & Solutions” and “Motion Planner Diagnostics” are just great!
Thanks for creating them!
-Hanski
From: ma...@makr.zone
Sent: Monday, 8 March 2021 19.26
To: ope...@googlegroups.com
Subject: Re: [OpenPnP] Testing-Round,
Some ideas:
To view this discussion on the web visit https://groups.google.com/d/msgid/openpnp/3042eddc-8701-7515-02a9-ca319a69287f%40makr.zone.