Pre-rotate all nozzles feedback

241 views
Skip to first unread message

Toby Dickenson

unread,
Feb 27, 2025, 3:20:24 AM2/27/25
to ope...@googlegroups.com
Hi all,

This week I have been testing version 2.3 (commit a10428f) in
production. The new Pre-rotate all nozzles feature is not working as I
expect. https://github.com/openpnp/openpnp/pull/1654

On my lumenpnp with 2 nozzles I often see this pattern of movement:
1. A long head movement for nozzle 1 to pick a part
2. A short head movement for nozzle 2 to pick a part
3. A long movement for nozzle 1 to reach the bottom camera. During
this movement nozzle 1 rotates to be ready for the camera
4. A short movement for nozzle 1 to reach the bottom camera. During
this movement nozzle 2 rotates to be ready for the camera. This
movement is quick if no rotation is needed, and surprisingly slow if
nozzle 2 needs to rotate.

I was expecting PR 1654 to mean that both nozzles rotated during
movement step 3, but in practice I am not seeing any difference. I
have "pre-rotate all nozzles" ticked in the job processor
configuration. Is it expected to work with NullMotionPlanner or does
it require the advanced motion planner? Anything else I might have
missed? I will do some basic debugging and send logs later today.

Is "pre-rotate all nozzles" the best name for this feature? I note
that "pre-rotate" is a nozzle rotation mode in bottom vision, but that
is entirely unrelated.
https://github.com/openpnp/openpnp/wiki/Nozzle-Rotation-Mode#rotation-modes

Toby

Jan

unread,
Feb 27, 2025, 4:24:20 AM2/27/25
to ope...@googlegroups.com
Hi Toby!
Many thanks for sharing your experience with this PR. I'll put more
comments between the lines.

On 27.02.2025 09:19, Toby Dickenson wrote:
> Hi all,
>
> This week I have been testing version 2.3 (commit a10428f) in
> production. The new Pre-rotate all nozzles feature is not working as I
> expect. https://github.com/openpnp/openpnp/pull/1654
>
> On my lumenpnp with 2 nozzles I often see this pattern of movement:
> 1. A long head movement for nozzle 1 to pick a part
> 2. A short head movement for nozzle 2 to pick a part
> 3. A long movement for nozzle 1 to reach the bottom camera. During
> this movement nozzle 1 rotates to be ready for the camera
> 4. A short movement for nozzle 1 to reach the bottom camera. During
> this movement nozzle 2 rotates to be ready for the camera. This
> movement is quick if no rotation is needed, and surprisingly slow if
> nozzle 2 needs to rotate.
>
That's what we've learned earlier and that's what this PR tries to target.

> I was expecting PR 1654 to mean that both nozzles rotated during
> movement step 3, but in practice I am not seeing any difference. I
> have "pre-rotate all nozzles" ticked in the job processor
> configuration. Is it expected to work with NullMotionPlanner or does
> it require the advanced motion planner? Anything else I might have
> missed? I will do some basic debugging and send logs later today.
>
The pre-rotation is implemented by adding a queue for subordinated
motion segments which are combined with the next none-subordinate motion
segment. This queue is implemented in AbstractMotionPlanner. Null and
Advanced motion planner both extend AbstractMotionPlanner. However, if I
understand the comments correctly, the NullMotionPlanner executes each
segment immediately, which might drain the queue voiding the
pre-rotation feature. The logs will tell.
Why do you use the NullMotionPlanner? IMHO the AdvancedMotionPlanner is
recommend.
Please share a log and machine.xml to analyze. Thank You!

> Is "pre-rotate all nozzles" the best name for this feature? I note
> that "pre-rotate" is a nozzle rotation mode in bottom vision, but that
> is entirely unrelated.
> https://github.com/openpnp/openpnp/wiki/Nozzle-Rotation-Mode#rotation-modes
>
I'm all ears for a better name. Actually both features do the same: try
to rotate as early and less as possible.

Jan

Toby Dickenson

unread,
Feb 27, 2025, 5:25:44 AM2/27/25
to ope...@googlegroups.com
>
> Why do you use the NullMotionPlanner? IMHO the AdvancedMotionPlanner is
> recommend.

Enabling both AdvancedMotionPlanner and GcodeAsyncDriver is
recommended by I&S, but I got very bad results if I followed this
advice. There were random movements during homing that suggested
Marlin might have crashed. I was at risk of damaging the machine so
did not investigate further. Has anyone else with a LumenPnp had
success with this?

I understood from the wiki that AdvancedMotionPlanner and
GcodeAsyncDriver were experimental, and would only be of benefit on
more powerful controllers, or with multiple controllers. Neither of
those apply to me.

> Please share a log and machine.xml to analyze. Thank You!

Will do.

Toby

Jan

unread,
Feb 27, 2025, 8:57:01 AM2/27/25
to ope...@googlegroups.com
Hi Toby!

On 27.02.2025 11:25, Toby Dickenson wrote:
>>
>> Why do you use the NullMotionPlanner? IMHO the AdvancedMotionPlanner is
>> recommend.
>
> Enabling both AdvancedMotionPlanner and GcodeAsyncDriver is
> recommended by I&S, but I got very bad results if I followed this
> advice. There were random movements during homing that suggested
> Marlin might have crashed. I was at risk of damaging the machine so
> did not investigate further. Has anyone else with a LumenPnp had
> success with this?
>
I'm using both for years without any issue (using a smoothie based
controller).
IIRC the difference between GCodeDriver and GCodeAsyncDriver is that
the later supports sending command before the response from the
controller has arrived. That means you can send more commands and let
them queue up in the receive buffer of the controller while the
controller is executing an old command. This is especially useful when
waiting for the controller queue to drain (using M400) because there is
immediately work the controller can do next.
You shall get the same effect with the AsyncDriver if you enable
Confirmation Flow Control (Only a single command on the fly).
Concerning motion while homing: I'd assume this is a controller issue.
Homing is just sending the command to the controller (usually G28) and
nothing more. The AsyncDriver might send the next command before the G28
has been acknowledge, but that's - IMHO - the worst that could happen. I
don't see how OpenPnP can be blamed for that.
According to my understanding of the code, Null and Advanced Motion
planner share the same backend (AbstractMotionPlanner). The Null planner
add some "magic" to permanently invalidate/drain the motion queue and
the Advanced planner adds some motion test and diagnostic features. I
don't see a good reason why not to follow I&S to switch to the Advanced
planner.

> I understood from the wiki that AdvancedMotionPlanner and
> GcodeAsyncDriver were experimental, and would only be of benefit on
> more powerful controllers, or with multiple controllers. Neither of
> those apply to me.
>
Likely the Wiki needs an update. Both components are now quite old and
very elementary and hence very well tested. I'm not aware of any known
issues or new (risky) features that one could consider "experimental"
except the concept of subordinate motion queuing. But this are as the
name suggests subordinate and hence shall not be able to cause negative
effects.

Jan

vespaman

unread,
Feb 28, 2025, 12:27:47 PM2/28/25
to OpenPnP
Jan,

So, now I tested this as well.
I have GCodeAsyncDriver, and AdvancedMotionPlanner.
I have set both Pre rotate and Optimize Multi Nozzle  in Job processor.

Still, I see no difference; 
First nozzle is rotated after the drag, on its way to pick position, second nozzle is rotated on the motion to pick, after first has picked.
Same over camera, first nozzle is pre rotated, but second nozzle rotates after vision is on for first nozzle.
What am I missing?
machine.xml

Jan

unread,
Feb 28, 2025, 6:02:42 PM2/28/25
to ope...@googlegroups.com
Hi Micael!
Many thanks for testing!

On 28.02.2025 18:27, vespaman wrote:
> Jan,
>
> So, now I tested this as well.
> I have GCodeAsyncDriver, and AdvancedMotionPlanner.
> I have set both Pre rotate and Optimize Multi Nozzle  in Job processor.
>
> Still, I see no difference;
> First nozzle is rotated after the drag, on its way to pick position,
> second nozzle is rotated on the motion to pick, after first has picked.
> Same over camera, first nozzle is pre rotated, but second nozzle rotates
> after vision is on for first nozzle.
> What am I missing?
>
Sound like the rotation still happens in its old place _after_ the feed.
Would you please provide me with a log file or a part of it (a
pick/place sequence)

Jan
> --
> 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
> <mailto:openpnp+u...@googlegroups.com>.
> To view this discussion visit https://groups.google.com/d/msgid/
> openpnp/3bacde56-ea84-4b32-a039-fbd6395b9f7fn%40googlegroups.com
> <https://groups.google.com/d/msgid/openpnp/3bacde56-ea84-4b32-a039-
> fbd6395b9f7fn%40googlegroups.com?utm_medium=email&utm_source=footer>.

vespaman

unread,
Mar 1, 2025, 2:44:04 AM3/1/25
to OpenPnP
Hi Jan,

Yes, exactly

Here's a log excerpt from this morning. Unfortunately, I see it is one with drag between the picks, so maybe not perfect.
I do have a couple of these messages in my log, are they perhaps related?

AbstractMotionPlanner$SubordinateMotion WARNING: Subordinate Motion queue not empty: (C1:22.524254, C2:67.524254), drained.

Looking forward to test more :-)

 - Micael
OpenPnP.log

Jan

unread,
Mar 1, 2025, 10:58:01 AM3/1/25
to ope...@googlegroups.com
Hi Micael!
According to the logs, pre-rotation is requested, but dropped before
reading the dragpin status. It seems, that there are two pick cycles in
the log (I found two line with "BeforeFeed") and eight dragpin status
reads (lines with "offer >> M119"). That does not look like a good ratio
(and slows things tremendously down because of the many coordination
(incl waiting) points).
I remember that I questioned this behavior long time ago and was told,
that there shall be some type of optimization in place. But it seems I
did not found out how to use them or insisted or suggested any
modification. However, even in the latest logs I have, I see the same
behavior. The ratio between Dragpin off (M817) and Dragpin read (M119)
is equally bad.
Unfortunately I don't have a good solution yet how to get dragpin
interlock and pre-rotation to work in parallel.
It is safe to drain the subordinate motion queue on each coordination
point. This was considered a good approach when Mark helped me to
implement the pre-rotation/subordination feature about a year ago. Today
I see, that this is sub-optimal in combination with the dragpin
interlock. However, I don't remember the pros and cons for the current
implementation and don't see how we could safely improve it.
On the other hand, the dragpin interlock could be enhanced to only be
read when the dragpin is released. Because that is - to my understanding
- the only situation in which the interlock condition has to be
validated. However, if interlock fails, the state shall still stick to
dragpin-was-just-released-and-interlock-needs-to-be-validated-next. I'd
not yet know who to realize that...
I'm sorry, I don't see a problem in the pre-rotation features. Its just
a bad coincidence with the interlock feature.
Does anyone else has any suggestions how to improve this?

Jan
> <https://groups.google.com/d/msgid/>
> > openpnp/3bacde56-ea84-4b32-a039-fbd6395b9f7fn%40googlegroups.com
> <http://40googlegroups.com>
> > <https://groups.google.com/d/msgid/openpnp/3bacde56-ea84-4b32-
> a039- <https://groups.google.com/d/msgid/openpnp/3bacde56-ea84-4b32-
> a039->
> > fbd6395b9f7fn%40googlegroups.com?
> utm_medium=email&utm_source=footer <http://40googlegroups.com?
> utm_medium=email&utm_source=footer>>.
>
> --
> 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
> <mailto:openpnp+u...@googlegroups.com>.
> To view this discussion visit https://groups.google.com/d/msgid/openpnp/
> fa08922d-4c47-4b60-b06c-da752aba9d64n%40googlegroups.com <https://
> groups.google.com/d/msgid/openpnp/fa08922d-4c47-4b60-b06c-
> da752aba9d64n%40googlegroups.com?utm_medium=email&utm_source=footer>.

vespaman

unread,
Mar 1, 2025, 11:24:28 AM3/1/25
to OpenPnP
Hi Jan

I don't really follow, but does this work on you machine? I guess our machines should be equal in this regard, yes?

Could it be that I have the new StandStill settings wrong? I have perhaps put too much into those settings, since I don't want to change my drag pin again.. :-)

 - Micael

vespaman

unread,
Mar 1, 2025, 11:31:47 AM3/1/25
to OpenPnP
Also, the pre-rotate of the nozzles going to the camera doesn't work for the second nozzle - and this can't be related to the drag pin, can it?

 - Micael

Jan

unread,
Mar 3, 2025, 9:05:13 AM3/3/25
to ope...@googlegroups.com
Hi Micael!
I tried to understand your log and the difference to my machine and
unfortunately I only see a very little difference, that might matter:
your "Feed (Left side Peel)" actuator has a Z axis assigned and a
Safe-Z. Would you please disable and test this?
I also noticed to more things in the log:
1) there is a blower activity with "0.5" which gets translated in the
"M812 S0" which actually results in switching the blower off. I can not
see that the blower is switched on anywhere, therefor you either don't
intent to use the blower or the value 0.5 was meant to be 50% in which
case you have to give it as "50" because the value is added behind the
"S" parameter.
2) there is a vacuum read event between the nozzle has arrived at the
pick location and the vacuum valve is opened to apply vacuum. I don't
know why its there and if its actually needed, but it costs time...
Concerning your questions: pre-rotation was build before enhancing
actuator coordination and hence shall not interfere. In addition, both
CommandStillstand and WaitForStillstand generate a M400 at which the
subordination queue is drained. No, it is unlikely that this setting
effect pre-rotation.

Jan
> > <https://groups.google.com/d/msgid/ <https://groups.google.com/d/
> msgid/>>
> > > openpnp/3bacde56-ea84-4b32-a039-
> fbd6395b9f7fn%40googlegroups.com <http://40googlegroups.com>
> > <http://40googlegroups.com <http://40googlegroups.com>>
> > > <https://groups.google.com/d/msgid/openpnp/3bacde56-ea84-4b32-
> <https://groups.google.com/d/msgid/openpnp/3bacde56-ea84-4b32->
> > a039- <https://groups.google.com/d/msgid/openpnp/3bacde56-
> ea84-4b32- <https://groups.google.com/d/msgid/openpnp/3bacde56-
> ea84-4b32->
> > a039->
> > > fbd6395b9f7fn%40googlegroups.com <http://40googlegroups.com>?
> > utm_medium=email&utm_source=footer <http://40googlegroups.com
> <http://40googlegroups.com>?
> > utm_medium=email&utm_source=footer>>.
> >
> > --
> > 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
> > <mailto:openpnp+u...@googlegroups.com>.
> > To view this discussion visit https://groups.google.com/d/msgid/
> openpnp/ <https://groups.google.com/d/msgid/openpnp/>
> > fa08922d-4c47-4b60-b06c-da752aba9d64n%40googlegroups.com
> <http://40googlegroups.com> <https://
> > groups.google.com/d/msgid/openpnp/fa08922d-4c47-4b60-b06c-
> <http://groups.google.com/d/msgid/openpnp/fa08922d-4c47-4b60-b06c->
> > da752aba9d64n%40googlegroups.com?
> utm_medium=email&utm_source=footer <http://40googlegroups.com?
> utm_medium=email&utm_source=footer>>.
>
> --
> 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
> <mailto:openpnp+u...@googlegroups.com>.
> To view this discussion visit https://groups.google.com/d/msgid/
> openpnp/927fbda4-79f3-4b01-8341-d122612ed9b7n%40googlegroups.com
> <https://groups.google.com/d/msgid/openpnp/927fbda4-79f3-4b01-8341-
> d122612ed9b7n%40googlegroups.com?utm_medium=email&utm_source=footer>.

Jan

unread,
Mar 3, 2025, 9:15:00 AM3/3/25
to ope...@googlegroups.com
Hi Micael!
The problem is the same in both cases: the coordination for interlock
handling is causes the queue to be drained. As the Wiki warns "It must
be mentioned that InterlockActuators will interrupt continuous Motion
Path Planning resulting in a performance penalty and possibly preventing
advanced optimizations such as Motion Blending. Therefore, these should
only be used when necessary."
(https://github.com/openpnp/openpnp/wiki/Axis-Interlock-Actuator#machine-coordination)
The pre-rotation is requested before the next step in the JobProcessor
takes place. For pick, this is done before the first feed sequence is
executed. Therefore - if everything works as expected - the pre-rotation
shall take place while the head is moving to the first feed on your drag
feeder. If that's not working, you'll see the default behavior: the
rotation is applied when moving to the pick locate after feeding has
completed, which is a rather short distance.
After picking the second part, the alignment step takes place which
sends one nozzle to the camera. This is the first movement in this step,
hence it shall execute all pre-rotation. It also carries the rotation
for the nozzle, that's send to the camera. Therefor you might only see
one nozzle rotation (if pre-rotation does not work).

Jan
> > utm_medium=email&utm_source=footer>>.
> >
> > --
> > 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
> > <mailto:openpnp+u...@googlegroups.com>.
> utm_medium=email&utm_source=footer <http://40googlegroups.com?
> utm_medium=email&utm_source=footer>>.
>
> --
> 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
> <mailto:openpnp+u...@googlegroups.com>.
> To view this discussion visit https://groups.google.com/d/msgid/openpnp/
> ed322cbf-ba18-4432-8b8a-2eba612ac7a2n%40googlegroups.com <https://
> groups.google.com/d/msgid/openpnp/ed322cbf-
> ba18-4432-8b8a-2eba612ac7a2n%40googlegroups.com?
> utm_medium=email&utm_source=footer>.

Jan

unread,
Mar 4, 2025, 4:03:45 AM3/4/25
to ope...@googlegroups.com
Hi Micael!
I just run an other job on my machine and verified that pre-rotation is
working for me. As the only (significant) difference seems to be, that
your Dragpin has a Z axis assigned, I'm still hoping this will explain
the issue you've noticed.
I've attached a stripped version of my log file. It only contains the
G-Code that is requested to be send (in lines containing "commandQueue
Offer >>") and a line number as reference into the original file at the
beginning. The first G1 Z13.2 is the move to Safe-Z after the previous
place. The last line is the reset of the peeler axis for the following
feed. The equivalent for the logged cycle is in the second line.
As you can see, I'm also overwhelmed by M119 to read the dragpin status
as part of the axis interlock feature. The log only contains two M114
(read position report, executed as part of WaitForStillstand
coordination) where the bottom vision takes place. Everything thought
there are so many M119, "Before read" coordination (which is still
enabled and required) does not generate any GCode because there is no
motion pending since the previous M400 was executed. You can also see,
that there are a few lines where both nozzles are rotated together
(lines with G1 command and A and B arguments) (eg. 4325 and 4536. It
seems that in this particular cycle bottom vision did not found any
angular corrections.) Finally you can see, that for Pick and Place
static delays have been configured which are all executed by the
controller removing any coordination requirements.
From studding our logs, I'd say that the excessive interlock validation
would be the next thing to optimize, followed by the extra peeler axis
reset...

Jan
OpenPnP GCode.log

vespaman

unread,
Mar 4, 2025, 4:11:13 AM3/4/25
to OpenPnP
Hi Jan,

Thanks for chasing this, sorry for being a bit quiet!
I would love to try your suggestion, but yesterday morning, I decided to reinstall another distro onto the computer that hosts OpenPnP, and I am still fighting to get it fully up and running.
The re-installation was long overdue, but I guess the timing was not the best... :-o

But, I'm sure I'll be back on the track soon, will keep you posted!

Regards
  Micael

Jan

unread,
Mar 4, 2025, 4:43:51 AM3/4/25
to ope...@googlegroups.com
Hi Micael!
Take your time! I just had to make sure there is nothing I have
overlooked AND I took the opportunity to update my work items to further
improve OpenPnPs performance.
As we discussed earlier: having some experienced user that tests new
features carefully and conscientiously reports his findings and
expectations is very valuable. So, please keep going!

Jan
> groups.google.com/d/ <https://groups.google.com/d/>
> >>     msgid/ <https://groups.google.com/d/msgid/ <https://
> groups.google.com/d/msgid/> <https://groups.google.com/d/ <https://
> groups.google.com/d/>
> >>     msgid/>>
> >>      > > openpnp/3bacde56-ea84-4b32-a039-
> >>     fbd6395b9f7fn%40googlegroups.com <http://40googlegroups.com>
> <http://40googlegroups.com <http://40googlegroups.com>>
> >>      > <http://40googlegroups.com <http://40googlegroups.com>
> <http://40googlegroups.com <http://40googlegroups.com>>>
> >>      > a039- <https://groups.google.com/d/msgid/
> openpnp/3bacde56- <https://groups.google.com/d/msgid/openpnp/3bacde56->
> >>     ea84-4b32- <https://groups.google.com/d/msgid/
> openpnp/3bacde56- <https://groups.google.com/d/msgid/openpnp/3bacde56->
> >>     ea84-4b32->
> >>      > a039->
> >>      > > fbd6395b9f7fn%40googlegroups.com
> <http://40googlegroups.com> <http://40googlegroups.com
> <http://40googlegroups.com>>?
> >>      > utm_medium=email&utm_source=footer
> <http://40googlegroups.com <http://40googlegroups.com>
> >>     <http://40googlegroups.com <http://40googlegroups.com>>?
> >>      > utm_medium=email&utm_source=footer>>.
> >>      >
> >>      > --
> >>      > 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
> >>      > <mailto:openpnp+u...@googlegroups.com>.
> >>      > To view this discussion visit https://groups.google.com/
> d/msgid/ <https://groups.google.com/d/msgid/>
> >>     openpnp/ <https://groups.google.com/d/msgid/openpnp/
> <https://groups.google.com/d/msgid/openpnp/>>
> >>      > fa08922d-4c47-4b60-b06c-da752aba9d64n%40googlegroups.com
> <http://40googlegroups.com>
> >>      > groups.google.com/d/msgid/openpnp/fa08922d-4c47-4b60-
> b06c- <http://groups.google.com/d/msgid/openpnp/fa08922d-4c47-4b60-
> b06c->
> >>     <http://groups.google.com/d/msgid/openpnp/
> fa08922d-4c47-4b60-b06c- <http://groups.google.com/d/msgid/openpnp/
> fa08922d-4c47-4b60-b06c->>
> >>      > da752aba9d64n%40googlegroups.com
> <http://40googlegroups.com>?
> >>     utm_medium=email&utm_source=footer
> <http://40googlegroups.com <http://40googlegroups.com>?
> >>     utm_medium=email&utm_source=footer>>.
> >>
> >> --
> >> 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
> >> <mailto:openpnp+u...@googlegroups.com>.
> >> To view this discussion visit https://groups.google.com/d/msgid/
> <https://groups.google.com/d/msgid/>
> >> openpnp/927fbda4-79f3-4b01-8341-d122612ed9b7n%40googlegroups.com
> <http://40googlegroups.com>
> >> <https://groups.google.com/d/msgid/
> openpnp/927fbda4-79f3-4b01-8341- <https://groups.google.com/d/msgid/
> openpnp/927fbda4-79f3-4b01-8341->
> >> d122612ed9b7n%40googlegroups.com?
> utm_medium=email&utm_source=footer <http://40googlegroups.com?
> utm_medium=email&utm_source=footer>>.
> >
>
> --
> 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
> <mailto:openpnp+u...@googlegroups.com>.
> To view this discussion visit https://groups.google.com/d/msgid/openpnp/
> c2a6e7a1-984d-4caf-aaf5-a7b771d58f4dn%40googlegroups.com <https://
> groups.google.com/d/msgid/openpnp/c2a6e7a1-984d-4caf-aaf5-
> a7b771d58f4dn%40googlegroups.com?utm_medium=email&utm_source=footer>.

vespaman

unread,
Mar 4, 2025, 9:34:01 AM3/4/25
to OpenPnP
Hi Jan,

Now I have tested, and unfortunately, this did not make any difference.
Just to be sure I understand your suggestion correctly, this is the setting I just tried;
Screenshot_20250304_152728.png



But I also thought about this setting, on drag pin. Do I need the WaitForStillstand on the "Before Read?"

Screenshot_20250304_152543.png


Apart from this, on your machine, are you using Profiles, or are you perhaps operating drag pin directly?


 - Micael

Jan

unread,
Mar 5, 2025, 4:38:12 AM3/5/25
to ope...@googlegroups.com
Hi Micael!

On 04.03.2025 15:34, vespaman wrote:
> Hi Jan,
>
> Now I have tested, and unfortunately, this did not make any difference.
> Just to be sure I understand your suggestion correctly, this is the
> setting I just tried;
> Screenshot_20250304_152728.png
>
That's like I have it. The dragpin does not have an associated Z offset
or axis and hence shall not have one assigned (as you have it now).

> But I also thought about this setting, on drag pin. Do I need the
> WaitForStillstand on the "Before Read?"
>
> Screenshot_20250304_152543.png
>
It depends which actuator you configured for the axis interlock: this
actuator needs "Before Read" coordination to make sure the dragpin state
is validated without any pending motion. I have configured my dragpin
actuator for dual purpose: drag the tape (as boolean, assigned to
feeders) and as drag pin is up status used for axis interlock. You could
split that into two separate actuators. The one that's dragging needs
the "Before Actuate" coordination (with CommandStillstand or
WaitForStillstand) to make sure the dragpin is at the start location
before its engaged. The other what as reporting the dragpins status
needs the "Before Read" actuation to make sure the status reflects the
location, OpenPnP has send the head to.
I did not noticed, that you have anything mixed or unusual here.
However, I can't see your feeder configuration.

> Apart from this, on your machine, are you using Profiles, or are you
> perhaps operating drag pin directly?
>
Yes, that's what I thought as well and I tested it (in simulation only)
and it did not reveal any issues.
I've created a new profile actuator which operates the drag pin. I then
changed the feeder configuration to use the profile actuator for
dragging. In the logs I can see, that the profile actuator is moved to
the drag location and that the dragpin actuator is operated to drag the
tape. It that how it is intended to work? Em I missing anything?
Finally I don't know how you setup your feeder. I assume you're using a
ReferencePushPullFeeder configured for coordinated peeling. Do you? Do
you mind sharing it?
If you have new logs from your latest tests, would you please share
them as well (a single pick/place cycle shall be sufficient)?

Jan
> > groups.google.com/d/ <http://groups.google.com/d/> <https://
> > groups.google.com/d/msgid/ <http://groups.google.com/d/msgid/>>>
> > >>      > <https://groups.google.com/d/msgid/ <https://
> groups.google.com/d/msgid/> <https://
> > groups.google.com/d/msgid/ <http://groups.google.com/d/msgid/>>
> <https://groups.google.com/d/ <https://groups.google.com/d/> <https://
> > groups.google.com/d/ <http://groups.google.com/d/>>
> > >>     msgid/>>
> > >>      > > openpnp/3bacde56-ea84-4b32-a039-
> > >>     fbd6395b9f7fn%40googlegroups.com
> <http://40googlegroups.com <http://40googlegroups.com>>>>
> > >>      > > <https://groups.google.com/d/msgid/openpnp/3bacde56-
> <https://groups.google.com/d/msgid/openpnp/3bacde56->
> > ea84-4b32->>
> > >>      > a039- <https://groups.google.com/d/msgid/ <https://
> groups.google.com/d/msgid/>
> > openpnp/3bacde56- <https://groups.google.com/d/msgid/
> openpnp/3bacde56- <https://groups.google.com/d/msgid/
> openpnp/3bacde56->>
> > >>     ea84-4b32- <https://groups.google.com/d/msgid/ <https://
> groups.google.com/d/msgid/>
> > openpnp/3bacde56- <https://groups.google.com/d/msgid/
> openpnp/3bacde56- <https://groups.google.com/d/msgid/
> openpnp/3bacde56->>
> > >>     ea84-4b32->
> > >>      > a039->
> > >>      > > fbd6395b9f7fn%40googlegroups.com
> <http://40googlegroups.com>
> > <http://40googlegroups.com <http://40googlegroups.com>>
> <http://40googlegroups.com <http://40googlegroups.com>
> > <http://40googlegroups.com <http://40googlegroups.com>>>?
> > >>      > utm_medium=email&utm_source=footer
> > <http://40googlegroups.com <http://40googlegroups.com>
> <http://40googlegroups.com <http://40googlegroups.com>>
> > >>     <http://40googlegroups.com <http://40googlegroups.com>
> <http://40googlegroups.com <http://40googlegroups.com>>>?
> > >>      > utm_medium=email&utm_source=footer>>.
> > >>      >
> > >>      > --
> > >>      > 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
> > >>      > <mailto:openpnp+u...@googlegroups.com>.
> > >>      > To view this discussion visit https://
> groups.google.com/ <https://groups.google.com/>
> groups.google.com/d/msgid/openpnp/>>>
> > >>      > fa08922d-4c47-4b60-b06c-
> da752aba9d64n%40googlegroups.com <http://40googlegroups.com>
> > >>      > groups.google.com/d/msgid/openpnp/fa08922d-4c47-4b60-
> fa08922d-4c47-4b60- <http://groups.google.com/d/msgid/openpnp/
> fa08922d-4c47-4b60->
> > b06c->
> > >>     <http://groups.google.com/d/msgid/openpnp/ <http://
> groups.google.com/d/msgid/openpnp/>
> > fa08922d-4c47-4b60-b06c- <http://groups.google.com/d/msgid/
> openpnp/ <http://groups.google.com/d/msgid/openpnp/>
> > fa08922d-4c47-4b60-b06c->>
> > >>      > da752aba9d64n%40googlegroups.com
> <http://40googlegroups.com>
> > <http://40googlegroups.com <http://40googlegroups.com>>?
> > >>     utm_medium=email&utm_source=footer
> > <http://40googlegroups.com <http://40googlegroups.com>
> <http://40googlegroups.com <http://40googlegroups.com>>?
> > >>     utm_medium=email&utm_source=footer>>.
> > >>
> > >> --
> > >> 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
> > >> <mailto:openpnp+u...@googlegroups.com>.
> > >> To view this discussion visit https://groups.google.com/d/
> > >> openpnp/927fbda4-79f3-4b01-8341-
> d122612ed9b7n%40googlegroups.com <http://40googlegroups.com>
> > <http://40googlegroups.com <http://40googlegroups.com>>
> > >> <https://groups.google.com/d/msgid/ <https://
> groups.google.com/d/msgid/>
> > openpnp/927fbda4-79f3-4b01-8341- <https://groups.google.com/d/
> msgid/ <https://groups.google.com/d/msgid/>
> > openpnp/927fbda4-79f3-4b01-8341->
> > >> d122612ed9b7n%40googlegroups.com <http://40googlegroups.com>?
> > utm_medium=email&utm_source=footer <http://40googlegroups.com
> <http://40googlegroups.com>?
> > utm_medium=email&utm_source=footer>>.
> > >
> >
> > --
> > 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
> > <mailto:openpnp+u...@googlegroups.com>.
> > To view this discussion visit https://groups.google.com/d/msgid/
> openpnp/ <https://groups.google.com/d/msgid/openpnp/>
> > c2a6e7a1-984d-4caf-aaf5-a7b771d58f4dn%40googlegroups.com
> <http://40googlegroups.com> <https://
> > groups.google.com/d/msgid/openpnp/c2a6e7a1-984d-4caf-aaf5-
> <http://groups.google.com/d/msgid/openpnp/c2a6e7a1-984d-4caf-aaf5->
> > a7b771d58f4dn%40googlegroups.com?
> utm_medium=email&utm_source=footer <http://40googlegroups.com?
> utm_medium=email&utm_source=footer>>.
>
> --
> 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
> <mailto:openpnp+u...@googlegroups.com>.
> To view this discussion visit https://groups.google.com/d/msgid/
> openpnp/89bb8b6a-0b85-47b4-a40c-ac05deb81103n%40googlegroups.com
> <https://groups.google.com/d/msgid/openpnp/89bb8b6a-0b85-47b4-a40c-
> ac05deb81103n%40googlegroups.com?utm_medium=email&utm_source=footer>.

vespaman

unread,
Mar 5, 2025, 5:31:56 AM3/5/25
to OpenPnP
Hi Jan,

Oh, sorry, I thought you had my machine.xml from the other thread, but I'll put them here.

fresh log <- This is a small but complete testjob with 4 components populated.
The testjob only picks from feeder 3 (22p)

 - Micael

Wayne Black

unread,
Mar 5, 2025, 2:02:35 PM3/5/25
to OpenPnP
Re the dragpin component of this; 

On my Duet/RRF machine my dragpin axis interlock release is triggered by GCode dictionary | M577. It waits until an endstop is triggered, or in this case the sensor on my dragpin. Are you Smoothie guys looping/polling IO reads for this?

vespaman

unread,
Mar 5, 2025, 2:17:49 PM3/5/25
to OpenPnP
Hi Wayne,

No, but we setup the drag pin as an input, which the controller then waits for, so similar to end stop. And if it is stuck down, the controller will wiggle it free automatically, before letting OpenPnP continue.
But if I understand Jan correct, this is probably not where the problem is.

 - Micael

vespaman

unread,
Mar 5, 2025, 2:34:36 PM3/5/25
to OpenPnP
Well, I had to check the smoothie code, and of course i was wrong, we are using a former end stop.

 -  Micael

Wayne Black

unread,
Mar 5, 2025, 2:51:17 PM3/5/25
to ope...@googlegroups.com
Gotcha. Im working through the nozzle rotation settings now and was just curious.

To unsubscribe from this group and stop receiving emails from it, send an email to openpnp+u...@googlegroups.com.
To view this discussion visit https://groups.google.com/d/msgid/openpnp/86feb498-39de-49ef-aa89-fcb5641659dcn%40googlegroups.com.


--
Wayne Black
Owner
Black Box Embedded, LLC

Jan

unread,
Mar 5, 2025, 4:39:50 PM3/5/25
to ope...@googlegroups.com
Mi Micael!
I haven't forgotten you. I just don't see yet what the different
between our setups is that causes the issue for you but not for me. I'll
keep searching!

Jan

On 05.03.2025 11:31, vespaman wrote:
> Hi Jan,
>
> Oh, sorry, I thought you had my machine.xml from the other thread, but
> I'll put them here.
>
> machine.xml <https://drive.google.com/file/
> d/1foEXb8edHImCwleCEerc2kWmd1l7JieS/view?usp=sharing>
> fresh log <https://drive.google.com/file/
> d/1wwX6_76JI0eapqa9VY2NbPZwpfcffJPt/view?usp=sharing> <- This is a small
> > > groups.google.com/d/ <http://groups.google.com/d/> <http://
> > > groups.google.com/d/msgid/ <http://groups.google.com/d/msgid/>
> <http://groups.google.com/d/msgid/ <http://groups.google.com/d/
> msgid/>>>>
> > > >>      > <https://groups.google.com/d/msgid/ <https://
> groups.google.com/d/msgid/> <https://
> > groups.google.com/d/msgid/ <http://groups.google.com/d/msgid/>>
> <https://
> > > groups.google.com/d/msgid/ <http://groups.google.com/d/msgid/>
> <http://groups.google.com/d/msgid/ <http://groups.google.com/d/
> msgid/>>>
> > <https://groups.google.com/d/ <https://groups.google.com/d/>
> > > groups.google.com/d/ <http://groups.google.com/d/> <http://
> <http://40googlegroups.com <http://40googlegroups.com>>>>>
> > <https://groups.google.com/d/msgid/openpnp/3bacde56- <https://
> groups.google.com/d/msgid/openpnp/3bacde56->>
> > > ea84-4b32- <https://groups.google.com/d/msgid/openpnp/3bacde56-
> <https://groups.google.com/d/msgid/openpnp/3bacde56->
> > <https://groups.google.com/d/msgid/openpnp/3bacde56- <https://
> groups.google.com/d/msgid/openpnp/3bacde56->>
> > > ea84-4b32->
> > > >>     <https://groups.google.com/d/msgid/openpnp/3bacde56-
> <https://groups.google.com/d/msgid/openpnp/3bacde56->
> > <https://groups.google.com/d/msgid/openpnp/3bacde56- <https://
> groups.google.com/d/msgid/openpnp/3bacde56->>
> > > ea84-4b32- <https://groups.google.com/d/msgid/openpnp/3bacde56-
> <https://groups.google.com/d/msgid/openpnp/3bacde56->
> > <https://groups.google.com/d/msgid/openpnp/3bacde56- <https://
> groups.google.com/d/msgid/openpnp/3bacde56->>
> > > ea84-4b32->>
> > > >>      > a039- <https://groups.google.com/d/msgid/ <https://
> > > openpnp/3bacde56- <https://groups.google.com/d/msgid/ <https://
> groups.google.com/d/msgid/>
> > openpnp/3bacde56- <https://groups.google.com/d/msgid/ <https://
> groups.google.com/d/msgid/>
> > openpnp/3bacde56->>
> > > >>     ea84-4b32- <https://groups.google.com/d/msgid/ <https://
> > > openpnp/3bacde56- <https://groups.google.com/d/msgid/ <https://
> groups.google.com/d/msgid/>
> > openpnp/3bacde56- <https://groups.google.com/d/msgid/ <https://
> groups.google.com/d/msgid/>
> > openpnp/3bacde56->>
> > > >>     ea84-4b32->
> > > >>      > a039->
> > > >>      > > fbd6395b9f7fn%40googlegroups.com
> <http://40googlegroups.com>
> > <http://40googlegroups.com <http://40googlegroups.com>>
> > > <http://40googlegroups.com <http://40googlegroups.com>
> <http://40googlegroups.com <http://40googlegroups.com>>>
> <http://40googlegroups.com <http://40googlegroups.com>>>>?
> > > >>      > utm_medium=email&utm_source=footer>>.
> > > >>      >
> > > >>      > --
> > > >>      > 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
> > > >>      > <mailto:openpnp+u...@googlegroups.com>.
> > > >>      > To view this discussion visit https://
> > groups.google.com/ <http://groups.google.com/> <https://
> groups.google.com/d/msgid/openpnp/> <https://
> > groups.google.com/d/msgid/openpnp/ <http://groups.google.com/d/
> msgid/openpnp/>>>>
> > > >>      > fa08922d-4c47-4b60-b06c-
> > da752aba9d64n%40googlegroups.com <http://40googlegroups.com>
> > > >>      > groups.google.com/d/msgid/openpnp/fa08922d-4c47-4b60-
> <http://groups.google.com/d/msgid/openpnp/fa08922d-4c47-4b60->
> > <http://groups.google.com/d/msgid/openpnp/fa08922d-4c47-4b60-
> <http://groups.google.com/d/msgid/openpnp/fa08922d-4c47-4b60->>
> > > b06c- <http://groups.google.com/d/msgid/openpnp/ <http://
> groups.google.com/d/msgid/openpnp/>
> > fa08922d-4c47-4b60- <http://groups.google.com/d/msgid/openpnp/
> <http://groups.google.com/d/msgid/openpnp/>
> > fa08922d-4c47-4b60->
> > > b06c->
> > > >>     <http://groups.google.com/d/msgid/openpnp/ <http://
> groups.google.com/d/msgid/openpnp/> <http://
> > openpnp/ <http://groups.google.com/d/msgid/openpnp/ <http://
> <http://40googlegroups.com <http://40googlegroups.com>>>?
> > > >>     utm_medium=email&utm_source=footer
> > > <http://40googlegroups.com <http://40googlegroups.com>
> <http://40googlegroups.com <http://40googlegroups.com>>
> > <http://40googlegroups.com <http://40googlegroups.com>
> <http://40googlegroups.com <http://40googlegroups.com>>>?
> > > >>     utm_medium=email&utm_source=footer>>.
> > > >>
> > > >> --
> > > >> 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
> > > >> <mailto:openpnp+u...@googlegroups.com>.
> > > >> To view this discussion visit https://groups.google.com/d/
> d/msgid/> <https://groups.google.com/d/ <https://groups.google.com/d/>
> > msgid/>>
> > > >> openpnp/927fbda4-79f3-4b01-8341-
> > d122612ed9b7n%40googlegroups.com <http://40googlegroups.com>
> <http://40googlegroups.com <http://40googlegroups.com>>
> > > openpnp/927fbda4-79f3-4b01-8341- <https://groups.google.com/d/
> > > openpnp/927fbda4-79f3-4b01-8341->
> > > >> d122612ed9b7n%40googlegroups.com <http://40googlegroups.com>
> <http://40googlegroups.com <http://40googlegroups.com>>?
> > > utm_medium=email&utm_source=footer <http://40googlegroups.com
> <http://40googlegroups.com>
> > <http://40googlegroups.com <http://40googlegroups.com>>?
> > > utm_medium=email&utm_source=footer>>.
> > > >
> > >
> > > --
> > > 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
> > > <mailto:openpnp+u...@googlegroups.com>.
> > > To view this discussion visit https://groups.google.com/d/
> msgid/ <https://groups.google.com/d/msgid/>
> > openpnp/ <https://groups.google.com/d/msgid/openpnp/ <https://
> groups.google.com/d/msgid/openpnp/>>
> > > c2a6e7a1-984d-4caf-aaf5-a7b771d58f4dn%40googlegroups.com
> > > groups.google.com/d/msgid/openpnp/c2a6e7a1-984d-4caf-aaf5-
> <http://groups.google.com/d/msgid/openpnp/c2a6e7a1-984d-4caf-aaf5->
> > <http://groups.google.com/d/msgid/openpnp/c2a6e7a1-984d-4caf-
> aaf5- <http://groups.google.com/d/msgid/openpnp/c2a6e7a1-984d-4caf-
> aaf5->>
> > > a7b771d58f4dn%40googlegroups.com <http://40googlegroups.com>?
> > utm_medium=email&utm_source=footer <http://40googlegroups.com
> <http://40googlegroups.com>?
> > utm_medium=email&utm_source=footer>>.
> >
> > --
> > 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
> > <mailto:openpnp+u...@googlegroups.com>.
> > To view this discussion visit https://groups.google.com/d/msgid/
> <https://groups.google.com/d/msgid/>
> > openpnp/89bb8b6a-0b85-47b4-a40c-ac05deb81103n%40googlegroups.com
> <http://40googlegroups.com>
> > <https://groups.google.com/d/msgid/openpnp/89bb8b6a-0b85-47b4-
> a40c- <https://groups.google.com/d/msgid/openpnp/89bb8b6a-0b85-47b4-
> a40c->
> > ac05deb81103n%40googlegroups.com?
> utm_medium=email&utm_source=footer <http://40googlegroups.com?
> utm_medium=email&utm_source=footer>>.
>
> --
> 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
> <mailto:openpnp+u...@googlegroups.com>.
> To view this discussion visit https://groups.google.com/d/msgid/
> openpnp/7a0b069f-6d67-4fa4-8490-d5fa9605860dn%40googlegroups.com
> <https://groups.google.com/d/msgid/openpnp/7a0b069f-6d67-4fa4-8490-
> d5fa9605860dn%40googlegroups.com?utm_medium=email&utm_source=footer>.

Jan

unread,
Mar 5, 2025, 4:49:32 PM3/5/25
to ope...@googlegroups.com
Hi Wayne!
The original dragpin on the CHM-Ts have a sensor that signals if the
pin is up. After some modifications by Micael, the controller now waits
until the pin signals its up or timeout. It also tries to wiggle the pin
free. The question is, what you do with the result: using the axis
interlock features allows to read and respect the dragpin status.
Unfortunately this causes a lot of coordination and traffic with the
controller because the current implementation checks the status before
each new move. To overcome this, I played with error response from the
controller. This also works (if the required regex is configured) but
sends the driver into a very dark place. Homing the machine is required
to get it back. In addition, there is no rewind feature that can exactly
say what actions have been performed before the controller response with
error and which where just queued but not executed. Hence one needs to
somehow rely on the JobProcessors records of which placements have been
processed and which not. If part is on the (other) nozzle might be not
known.

Jan

On 05.03.2025 20:02, Wayne Black wrote:
> Re the dragpin component of this;
>
> On my Duet/RRF machine my dragpin axis interlock release is triggered by
> GCode dictionary | M577 <https://docs.duet3d.com/User_manual/Reference/
> Gcodes#m577-wait-until-endstop-is-triggered>. It waits until an endstop
> is triggered, or in this case the sensor on my dragpin. Are you Smoothie
> guys looping/polling IO reads for this?
>
> On Wednesday, March 5, 2025 at 2:31:56 AM UTC-8 micael....@gmail.com wrote:
>
> Hi Jan,
>
> Oh, sorry, I thought you had my machine.xml from the other thread,
> but I'll put them here.
>
> machine.xml <https://drive.google.com/file/
> d/1foEXb8edHImCwleCEerc2kWmd1l7JieS/view?usp=sharing>
> fresh log <https://drive.google.com/file/
> d/1wwX6_76JI0eapqa9VY2NbPZwpfcffJPt/view?usp=sharing> <- This is a
> > > groups.google.com/d/ <http://groups.google.com/d/> <http://
> > > groups.google.com/d/msgid/ <http://groups.google.com/d/
> msgid/> <http://groups.google.com/d/msgid/ <http://
> > > groups.google.com/d/msgid/ <http://groups.google.com/d/
> msgid/> <http://groups.google.com/d/msgid/ <http://
> groups.google.com/d/msgid/>>>
> > <https://groups.google.com/d/ <https://groups.google.com/d/>
> > > groups.google.com/d/ <http://groups.google.com/d/> <http://
> <http://40googlegroups.com <http://40googlegroups.com>>>>>
> > > >>      > > <https://groups.google.com/d/msgid/
> openpnp/3bacde56- <https://groups.google.com/d/msgid/
> openpnp/3bacde56->
> > <https://groups.google.com/d/msgid/openpnp/3bacde56-
> <https://groups.google.com/d/msgid/openpnp/3bacde56->>
> > > ea84-4b32- <https://groups.google.com/d/msgid/
> openpnp/3bacde56- <https://groups.google.com/d/msgid/
> openpnp/3bacde56->
> > > ea84-4b32- <https://groups.google.com/d/msgid/
> openpnp/3bacde56- <https://groups.google.com/d/msgid/
> openpnp/3bacde56->
> <https://groups.google.com/d/msgid/> <https://
> > groups.google.com/d/msgid/ <http://groups.google.com/d/msgid/>>
> > > openpnp/3bacde56- <https://groups.google.com/d/msgid/
> <https://groups.google.com/d/msgid/> <https://
> > groups.google.com/d/msgid/ <http://groups.google.com/d/msgid/>>
> > > openpnp/3bacde56- <https://groups.google.com/d/msgid/
> <https://groups.google.com/d/msgid/>
> > openpnp/3bacde56->>
> > > >>     ea84-4b32->
> > > >>      > a039->
> > > >>      > > fbd6395b9f7fn%40googlegroups.com
> <http://40googlegroups.com>
> > <http://40googlegroups.com <http://40googlegroups.com>>
> > > <http://40googlegroups.com <http://40googlegroups.com>
> <http://40googlegroups.com <http://40googlegroups.com>>>
> <http://40googlegroups.com <http://40googlegroups.com>>>>?
> > > >>      > utm_medium=email&utm_source=footer>>.
> > > >>      >
> > > >>      > --
> > > >>      > 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
> > > >>      > <mailto:openpnp+u...@googlegroups.com>.
> > > >>      > To view this discussion visit https://
> > groups.google.com/ <http://groups.google.com/> <https://
> groups.google.com/d/msgid/openpnp/> <https://
> > groups.google.com/d/msgid/openpnp/ <http://groups.google.com/
> d/msgid/openpnp/>>>>
> > > >>      > fa08922d-4c47-4b60-b06c-
> > da752aba9d64n%40googlegroups.com <http://40googlegroups.com>
> > > <https://
> > > >>      > groups.google.com/d/msgid/openpnp/
> fa08922d-4c47-4b60- <http://groups.google.com/d/msgid/openpnp/
> fa08922d-4c47-4b60->
> > <http://groups.google.com/d/msgid/openpnp/fa08922d-4c47-4b60-
> <http://groups.google.com/d/msgid/openpnp/fa08922d-4c47-4b60->>
> > > b06c- <http://groups.google.com/d/msgid/openpnp/ <http://
> groups.google.com/d/msgid/openpnp/>
> > fa08922d-4c47-4b60- <http://groups.google.com/d/msgid/
> openpnp/ <http://groups.google.com/d/msgid/openpnp/>
> > fa08922d-4c47-4b60->
> > > b06c->
> > > >>     <http://groups.google.com/d/msgid/openpnp/ <http://
> groups.google.com/d/msgid/openpnp/> <http://
> > openpnp/ <http://groups.google.com/d/msgid/openpnp/ <http://
> <http://40googlegroups.com <http://40googlegroups.com>>>?
> > > >>     utm_medium=email&utm_source=footer
> > > <http://40googlegroups.com <http://40googlegroups.com>
> <http://40googlegroups.com <http://40googlegroups.com>>
> > <http://40googlegroups.com <http://40googlegroups.com>
> <http://40googlegroups.com <http://40googlegroups.com>>>?
> > > >>     utm_medium=email&utm_source=footer>>.
> > > >>
> > > >> --
> > > >> 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
> > > >> <mailto:openpnp+u...@googlegroups.com>.
> > > >> To view this discussion visit https://groups.google.com/
> d/ <https://groups.google.com/d/>
> > msgid/ <https://groups.google.com/d/msgid/ <https://
> <https://groups.google.com/d/>
> > msgid/>>
> > > >> openpnp/927fbda4-79f3-4b01-8341-
> > d122612ed9b7n%40googlegroups.com <http://40googlegroups.com>
> <http://40googlegroups.com <http://40googlegroups.com>>
> > > openpnp/927fbda4-79f3-4b01-8341- <https://
> > > openpnp/927fbda4-79f3-4b01-8341->
> > > >> d122612ed9b7n%40googlegroups.com
> <http://40googlegroups.com> <http://40googlegroups.com
> <http://40googlegroups.com>>?
> > > utm_medium=email&utm_source=footer
> <http://40googlegroups.com <http://40googlegroups.com>
> > <http://40googlegroups.com <http://40googlegroups.com>>?
> > > utm_medium=email&utm_source=footer>>.
> > > >
> > >
> > > --
> > > 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
> > > <mailto:openpnp+u...@googlegroups.com>.
> > > To view this discussion visit https://groups.google.com/d/
> msgid/ <https://groups.google.com/d/msgid/>
> > > c2a6e7a1-984d-4caf-aaf5-a7b771d58f4dn%40googlegroups.com
> > > a7b771d58f4dn%40googlegroups.com <http://40googlegroups.com>?
> > utm_medium=email&utm_source=footer <http://40googlegroups.com
> <http://40googlegroups.com>?
> > utm_medium=email&utm_source=footer>>.
> >
> > --
> > 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
> > <mailto:openpnp+u...@googlegroups.com>.
> > To view this discussion visit https://groups.google.com/d/
> msgid/ <https://groups.google.com/d/msgid/>
> > openpnp/89bb8b6a-0b85-47b4-a40c-
> ac05deb81103n%40googlegroups.com <http://40googlegroups.com>
> > <https://groups.google.com/d/msgid/
> openpnp/89bb8b6a-0b85-47b4-a40c- <https://groups.google.com/d/
> msgid/openpnp/89bb8b6a-0b85-47b4-a40c->
> > ac05deb81103n%40googlegroups.com?
> utm_medium=email&utm_source=footer <http://40googlegroups.com?
> utm_medium=email&utm_source=footer>>.
>
> --
> 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
> <mailto:openpnp+u...@googlegroups.com>.
> To view this discussion visit https://groups.google.com/d/msgid/openpnp/
> adf4c19c-e854-4a2a-8659-5bb602b7889bn%40googlegroups.com <https://
> groups.google.com/d/msgid/openpnp/adf4c19c-
> e854-4a2a-8659-5bb602b7889bn%40googlegroups.com?
> utm_medium=email&utm_source=footer>.

vespaman

unread,
Mar 6, 2025, 3:05:01 AM3/6/25
to OpenPnP
Hi Jan,
No worries!

I had an idea, that I should at least try to setup a dev environment (remember, I have no real experience of java), so I downloaded IntelliJ. Then I had no idea what to do next, so I randomly searched internet, and found that someone had run maven test goal, so I thought I'd try that for a starter.
This pretty soon started to emit the same warnings that I get when I run my machine;

Planning placements.
Feed Lower Strips - 2 on R0603-1K.
2025-03-06 08:59:25 [pool-19-thread-1] org.openpnp.machine.reference.driver.AbstractMotionPlanner$SubordinateMotion.drain()
WARNING: Subordinate Motion queue not empty: (RotationN1:0.171844), drained.
Pick R0603-1K from Lower Strips - 2 for R10 using nozzle N1.
Aligning R0603-1K for R10 using nozzle N1.
Placing R0603-1K for R10 using nozzle N1.
Planning placements.
Feed Lower Strips - 2 on R0603-1K.
2025-03-06 08:59:27 [pool-19-thread-1] org.openpnp.machine.reference.driver.AbstractMotionPlanner$SubordinateMotion.drain()
WARNING: Subordinate Motion queue not empty: (RotationN1:-0.132022), drained.
Pick R0603-1K from Lower Strips - 2 for R20 using nozzle N1.
Aligning R0603-1K for R20 using nozzle N1.


Not sure if this is helpful in any way, but I figure those warnings in a test goal might not be something wanted?
But - like I said, I have absolutely no idea what I'm doing :-) :-)


 - Micael

Jan

unread,
Mar 6, 2025, 5:14:49 AM3/6/25
to ope...@googlegroups.com
Hi Micael!
Many thanks for the hint! I can see it here too and found, that the
feeder is using vision (I suppose you're using vision too) and the
nozzle is configured for static safe Z (which you have too). Within the
feed cycle the camera is send to the feeder and the logic tries to apply
the requested nozzle rotation. However, this is subject to current and
target location to be in Safe-Z for all heads and all their head
mountable. And this veto is what fails here. The current location of the
nozzle is considered not Safe which prevent anything from being merged.
On the following coordination point before the camera image is captured,
the queue is then drained, generating the warning.
Unfortunately I don't know yet how to solve that. The code in question
(https://github.com/openpnp/openpnp/blob/b8fd4944c584a871ab45c300b9c6c97928923ae8/src/main/java/org/openpnp/machine/reference/driver/AbstractMotionPlanner.java#L178)
is a suggestion from Mark which I have gratefully accepted. I've already
requested his expertise. If anyone else has a suggestion, please let me
know.
Due to the overcautious veto, I'd consider this issue to be no safety
risk and hence keep the PR in place. If you or anyone else has a
different opinion, please speak up. I'm open to revert it anyhow.

Jan
> > machine.xml <https://drive.google.com/file/ <https://
> drive.google.com/file/>
> > d/1foEXb8edHImCwleCEerc2kWmd1l7JieS/view?usp=sharing>
> > fresh log <https://drive.google.com/file/ <https://
> drive.google.com/file/>
> groups.google.com/d/ <http://groups.google.com/d/>> <http://
> msgid/> <http://groups.google.com/d/ <http://groups.google.com/d/>
> msgid/> <http://groups.google.com/d/ <http://groups.google.com/d/>
> groups.google.com/d/ <http://groups.google.com/d/>> <http://
> > openpnp/3bacde56- <https://groups.google.com/d/msgid/
> openpnp/3bacde56- <https://groups.google.com/d/msgid/
> openpnp/3bacde56->>
> > > <https://groups.google.com/d/msgid/openpnp/3bacde56- <https://
> groups.google.com/d/msgid/openpnp/3bacde56-> <https://
> > groups.google.com/d/msgid/openpnp/3bacde56- <http://
> groups.google.com/d/msgid/openpnp/3bacde56->>>
> > > > ea84-4b32- <https://groups.google.com/d/msgid/
> > groups.google.com/d/msgid/openpnp/3bacde56- <http://
> > groups.google.com/d/msgid/openpnp/3bacde56- <http://
> groups.google.com/d/msgid/openpnp/3bacde56->>>
> > > > ea84-4b32- <https://groups.google.com/d/msgid/
> > groups.google.com/d/msgid/openpnp/3bacde56- <http://
> > > > openpnp/3bacde56- <https://groups.google.com/d/msgid/
> <https://groups.google.com/d/msgid/> <https://
> > > > >>     ea84-4b32- <https://groups.google.com/d/msgid/
> <https://groups.google.com/d/msgid/> <https://
> > > > openpnp/3bacde56- <https://groups.google.com/d/msgid/
> <https://groups.google.com/d/msgid/> <https://
> <http://40googlegroups.com <http://40googlegroups.com>>>>>?
> > > > >>      > utm_medium=email&utm_source=footer>>.
> > > > >>      >
> > > > >>      > --
> > > > >>      > 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
> > > > >>      > <mailto:openpnp+u...@googlegroups.com>.
> > > > >>      > To view this discussion visit https://
> > > groups.google.com/ <http://groups.google.com/> <http://
> msgid/openpnp/> <http://groups.google.com/d/ <http://
> groups.google.com/d/>
> > > > <https://
> > > > >>      > groups.google.com/d/msgid/openpnp/
> fa08922d-4c47-4b60- <http://groups.google.com/d/msgid/openpnp/
> fa08922d-4c47-4b60->
> msgid/openpnp/> <http://groups.google.com/d/ <http://
> groups.google.com/d/>
> > msgid/openpnp/>>
> > > > fa08922d-4c47-4b60-b06c- <http://groups.google.com/d/msgid/
> <http://groups.google.com/d/msgid/>
> groups.google.com/d/msgid/openpnp/> <http://
> > groups.google.com/d/msgid/openpnp/ <http://groups.google.com/d/
> msgid/openpnp/>>>
> > > > fa08922d-4c47-4b60-b06c->>
> <http://40googlegroups.com <http://40googlegroups.com>>>>?
> > > > >>     utm_medium=email&utm_source=footer
> > > > <http://40googlegroups.com <http://40googlegroups.com>
> <http://40googlegroups.com <http://40googlegroups.com>>
> > <http://40googlegroups.com <http://40googlegroups.com>
> <http://40googlegroups.com <http://40googlegroups.com>>>
> > > <http://40googlegroups.com <http://40googlegroups.com>
> <http://40googlegroups.com <http://40googlegroups.com>>
> > <http://40googlegroups.com <http://40googlegroups.com>
> <http://40googlegroups.com <http://40googlegroups.com>>>>?
> > > > >>     utm_medium=email&utm_source=footer>>.
> > > > >>
> > > > >> --
> > > > >> 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
> > > > >> <mailto:openpnp+u...@googlegroups.com>.
> > > > >> To view this discussion visit https://groups.google.com/d/
> groups.google.com/d/msgid/> <https://groups.google.com/ <https://
> groups.google.com/>
> > d/msgid/> <https://groups.google.com/d/ <https://
> > > > openpnp/927fbda4-79f3-4b01-8341- <https://groups.google.com/
> d/ <https://groups.google.com/d/>
> groups.google.com/d/msgid/> <https://
> > groups.google.com/d/msgid/ <http://groups.google.com/d/msgid/>>>
> > > > openpnp/927fbda4-79f3-4b01-8341->
> <http://40googlegroups.com <http://40googlegroups.com>>>?
> > > > utm_medium=email&utm_source=footer <http://40googlegroups.com
> <http://40googlegroups.com>
> > <http://40googlegroups.com <http://40googlegroups.com>>
> > > <http://40googlegroups.com <http://40googlegroups.com>
> <http://40googlegroups.com <http://40googlegroups.com>>>?
> > > > utm_medium=email&utm_source=footer>>.
> > > > >
> > > >
> > > > --
> > > > 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
> > > > <mailto:openpnp+u...@googlegroups.com>.
> > > > To view this discussion visit https://groups.google.com/d/
> <https://groups.google.com/d/>
> > msgid/ <https://groups.google.com/d/msgid/ <https://
> groups.google.com/d/msgid/>>
> > > > c2a6e7a1-984d-4caf-aaf5-a7b771d58f4dn%40googlegroups.com
> <http://40googlegroups.com>
> > <http://40googlegroups.com <http://40googlegroups.com>>
> > > <http://groups.google.com/d/msgid/openpnp/c2a6e7a1-984d-4caf-
> c2a6e7a1-984d-4caf- <http://groups.google.com/d/msgid/openpnp/
> c2a6e7a1-984d-4caf->
> > aaf5->>
> > > > a7b771d58f4dn%40googlegroups.com <http://40googlegroups.com>
> <http://40googlegroups.com <http://40googlegroups.com>>?
> > > utm_medium=email&utm_source=footer <http://40googlegroups.com
> <http://40googlegroups.com>
> > <http://40googlegroups.com <http://40googlegroups.com>>?
> > > utm_medium=email&utm_source=footer>>.
> > >
> > > --
> > > 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
> > > <mailto:openpnp+u...@googlegroups.com>.
> > > To view this discussion visit https://groups.google.com/d/
> msgid/ <https://groups.google.com/d/msgid/>
> > <https://groups.google.com/d/msgid/ <https://groups.google.com/d/
> msgid/>>
> > > openpnp/89bb8b6a-0b85-47b4-a40c-
> ac05deb81103n%40googlegroups.com <http://40googlegroups.com>
> > <http://40googlegroups.com <http://40googlegroups.com>>
> > > <https://groups.google.com/d/msgid/openpnp/89bb8b6a-0b85-47b4-
> <https://groups.google.com/d/msgid/openpnp/89bb8b6a-0b85-47b4->
> > a40c- <https://groups.google.com/d/msgid/
> openpnp/89bb8b6a-0b85-47b4- <https://groups.google.com/d/msgid/
> openpnp/89bb8b6a-0b85-47b4->
> > a40c->
> > > ac05deb81103n%40googlegroups.com <http://40googlegroups.com>?
> > utm_medium=email&utm_source=footer <http://40googlegroups.com
> <http://40googlegroups.com>?
> > utm_medium=email&utm_source=footer>>.
> >
> > --
> > 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
> > <mailto:openpnp+u...@googlegroups.com>.
> > To view this discussion visit https://groups.google.com/d/msgid/
> <https://groups.google.com/d/msgid/>
> > openpnp/7a0b069f-6d67-4fa4-8490-d5fa9605860dn%40googlegroups.com
> <http://40googlegroups.com>
> > <https://groups.google.com/d/msgid/
> openpnp/7a0b069f-6d67-4fa4-8490- <https://groups.google.com/d/msgid/
> openpnp/7a0b069f-6d67-4fa4-8490->
> > d5fa9605860dn%40googlegroups.com?
> utm_medium=email&utm_source=footer <http://40googlegroups.com?
> utm_medium=email&utm_source=footer>>.
>
> --
> 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
> <mailto:openpnp+u...@googlegroups.com>.
> To view this discussion visit https://groups.google.com/d/msgid/openpnp/
> db064a92-370f-4456-87a2-67fb21afee89n%40googlegroups.com <https://
> groups.google.com/d/msgid/openpnp/
> db064a92-370f-4456-87a2-67fb21afee89n%40googlegroups.com?
> utm_medium=email&utm_source=footer>.

vespaman

unread,
Mar 6, 2025, 5:27:37 AM3/6/25
to OpenPnP
I have "until confident" vision on most of my feeders. But this also happens after the machine is confident - i.e. no vision checks taking place. But I suppose the safe/static Z check stuff might happen even after confidence is had.

Maybe this means that it works if I select dynamic safe Z. I'll try later.

This nozzle pre rotate is a very good optimization for OpenPnP in so many ways, so I hope we can find a way forward.

- Micael

vespaman

unread,
Mar 6, 2025, 10:48:52 AM3/6/25
to OpenPnP

Hi Jan,

Having thought about this a bit more, is there a reason that the check needs to be done at all, if not using dynamic safe Z?

I don't know how the safe zone is meant to work if static Z is selected. Is it still used for obstacle issues?
I used to have dynamic Z for a short while in the beginning, but I have since forgotten about the settings.

I see in the code, that it is testing if safe zone is active, so I checked my settings, and it is. Both safe hi and safe low are set to the same value, -0.220 which seems like a bogus value.
But if I simply try to disable the safe hi and low, machine will stop during homing (after finding end stops), with the message "Nozzle N1 has no Z axis with Safe Zone Mapped".

So, maybe your code works, if I somehow can disable the safe zone settings. Am I missing a setting somewhere?

How have you setup this on your machine? What are your safe hi/low settings?



  - Micael

vespaman

unread,
Mar 6, 2025, 11:04:47 AM3/6/25
to OpenPnP
OK, of course I found the documentation page for this just after hitting send. Sorry for that.
I need to have safe zone on static as well. So there's no way to disable this setting. Still not sure how this is treated if I have static safe Z. Should not the machine simply lift nozzles all the way up?

  - Micael

vespaman

unread,
Mar 6, 2025, 11:19:31 AM3/6/25
to OpenPnP
OK, I have now tested to disable both sprocket hole vision as well as OCR vision on that feeder.
Still, it behaves like before.
There are still disabled components in the test job, that are assigned to feeders with vision, but I guess that can't influence?

So maybe we can conclude that vision is not part of the problem? And also, I guess you must also have the safe zone active on your machine.
Are we back to square 1?

 - Micael

vespaman

unread,
Mar 6, 2025, 12:18:16 PM3/6/25
to OpenPnP
So, I am getting more and more confused now. :-o

In order to test further, I tried to disable limited articulation on both nozzles, setting them to minimal rotation. 
Then I set wrap around and limited 180° on the rotational axes.

Now, I would have thought that there would be no rotation on pick. But still it rotates after peel!
I have tried to understand by unchecking wrap around and 180° limits, but still, it rotates. So I am now thinking that also this is somehow broken.
If it is related to this, or something else, I don't know, of course.

I have a memory of someone asking about this in mailing list not long ago, but I can't find it. Maybe I'm not alone.

 - Micael

vespaman

unread,
Mar 7, 2025, 4:47:39 AM3/7/25
to OpenPnP
OK, I know I'm babbling, but what can I do? :-)

Today, I took back a backup from 241007 that I had laying around, only to confirm that also by then the setup with "MinimalRotation/Wrap/limited180" did not work by the looks of it.
(The problem is that I have changed my dragpin position since then, so it is endless issues trying older versions, so I only did very simple test)

So:- now I'm wondering if I dreamt that Minimal rotation worked. I don't really have much logs from when I set that up, but I'll keep looking. 


I know most people are using the pneumatic rotating couplers, is Minimal Rotation actually working for you?



Apart from this, I tried changing to java11 (had 21), but that made no difference with the multi nozzle optimization issue (the drain warnings where still there).


 - Micael

Jan

unread,
Mar 7, 2025, 5:21:29 AM3/7/25
to ope...@googlegroups.com
Hi Micael!
I agree, I also consider pre-rotation a nice feature and I'll do my
best to keep it and fix the issue we're currently facing. I'll put more
comments between the lines.

On 06.03.2025 16:48, vespaman wrote:
> Having thought about this a bit more, is there a reason that the check
> needs to be done at all, if not using dynamic safe Z?
>
You may follow the discussions Marks and me had while developing PR 1654
at https://github.com/openpnp/openpnp/pull/1654: He at a very early
stage pointed out that "Another problem we discussed as well:
Pre-rotation must only happen when (all) the intertwined HeadMountables
are at Safe Z, i.e. where the subordinate axes are allowed to rotate
freely in the air. Again, taking the shared C axis machine into account."
I agree with this arguments. He later down suggested some code to check
that, which I merged.

> I don't know how the safe zone is meant to work if static Z is selected.
> Is it still used for obstacle issues?
> I used to have dynamic Z for a short while in the beginning, but I have
> since forgotten about the settings.
>
Safe Zone is meant to denote that it is safe to move within. With static
safe Z you just say, if my z-axis is within this range, it is safe to
move everywhere regardless if the nozzle is carrying any part.
With dynamic safe z the part height the nozzle is currently carrying is
taken into account too. This means that a nozzle is retracted such that
the tip plus the part it may carry are both in the safe z zone. This is
more efficient (especially for machines with large Z travel) because eg.
after place, the tip is just raised up into safe-z. In addition some Z
movements can take place while moving in the same z zone. If eg. nozzle
1 just picked a part, it is lifted just until the part can be freely
moved. If next nozzle 2 is to have eg. bottom vision, it can already be
lowered to its safe zone boundary while moving to the camera. (It is
also possible to execute the edges (z going up to xy starting to moving)
as curves to further speed up the motion by allowing z to overshoot
insight the safe z zone.)

> I see in the code, that it is testing if safe zone is active, so I
> checked my settings, and it is. Both safe hi and safe low are set to the
> same value, -0.220 which seems like a bogus value.
> But if I simply try to disable the safe hi and low, machine will stop
> during homing (after finding end stops), with the message "Nozzle N1 has
> no Z axis with Safe Zone Mapped".
>
No, you can't run without a safe z zone. OpenPnP needs to know how much
the nozzle has to be lifted to safely travel to the bottom camera or the
place location.
The recommendation for the safe z zone is to keep it as large as
possible (to avoid unnecessary z moves). Its ok, if you define it
asymmetric. That might be desirable (with static safe z) to assign more
z head room for one nozzle.

> So, maybe your code works, if I somehow can disable the safe zone
> settings. Am I missing a setting somewhere?
>
I've compared the code against MovableUtils:moveToLocationAtSafeZ() and
I'm pretty sure it works - at least in principle.
At least in the SimpleJobTest the issue is that PCB Z = 0 and Safe-Z
zone is [0, 0]. This means, that the nozzle is lifted to z = 0.25 to
place a part of 0.25mm height, which is indeed outside the safe-z zone.
If PCB Z is lowered, I don't see any warnings concerning drained
subordination queue anymore.
I'll try to replicate your safe-z settings in a simulation machine and
see if that causes the issues you reported.

> How have you setup this on your machine? What are your safe hi/low settings?
>
I use dynamic safe z with safe-z zone between z -13.2° .. 13.2°. This
translates to about 6mm clearance above the PCB level.

Jan

> Hi Micael!
> Many thanks for the hint! I can see it here too and found, that the
> feeder is using vision (I suppose you're using vision too) and the
> nozzle is configured for static safe Z (which you have too). Within the
> feed cycle the camera is send to the feeder and the logic tries to
> apply
> the requested nozzle rotation. However, this is subject to current and
> target location to be in Safe-Z for all heads and all their head
> mountable. And this veto is what fails here. The current location of
> the
> nozzle is considered not Safe which prevent anything from being merged.
> On the following coordination point before the camera image is
> captured,
> the queue is then drained, generating the warning.
> Unfortunately I don't know yet how to solve that. The code in question
> (https://github.com/openpnp/openpnp/blob/
> b8fd4944c584a871ab45c300b9c6c97928923ae8/src/main/java/org/openpnp/
> machine/reference/driver/AbstractMotionPlanner.java#L178 <https://
> github.com/openpnp/openpnp/blob/
> b8fd4944c584a871ab45c300b9c6c97928923ae8/src/main/java/org/openpnp/
> machine/reference/driver/AbstractMotionPlanner.java#L178>)
> is a suggestion from Mark which I have gratefully accepted. I've
> already
> requested his expertise. If anyone else has a suggestion, please let me
> know.
> Due to the overcautious veto, I'd consider this issue to be no safety
> risk and hence keep the PR in place. If you or anyone else has a
> different opinion, please speak up. I'm open to revert it anyhow.
>
> Jan
>
> --
> 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
> <mailto:openpnp+u...@googlegroups.com>.
> To view this discussion visit https://groups.google.com/d/msgid/
> openpnp/78b9da2b-70e7-4fce-bb12-a2baebeca56dn%40googlegroups.com
> <https://groups.google.com/d/msgid/openpnp/78b9da2b-70e7-4fce-bb12-
> a2baebeca56dn%40googlegroups.com?utm_medium=email&utm_source=footer>.

Jan

unread,
Mar 7, 2025, 5:39:36 AM3/7/25
to ope...@googlegroups.com
Micael, please have a look into the logs. There shall be some
information about the rotation mode preparations and validation. I'm not
aware of any known issues there. I've configured my rotation axis to
"Limit to Range" with -120 .. 120° limits and my nozzles "Rotation Mode"
to "LimitedArticulation". (I also have "Align with Part" checked, but
don't remember anymore what it does and if I would keep it checked.) In
my logs I can see, that an effective angle/offset is calculated based on
the required rotation between pick and place angle. You can find the
responsible code in AbstractNozzle.java line 180 as
prepareForPickAndPlaceArticulation().
I'd suggest that you try to verify the rotation mode using the default
simulation machine. This shall make it easy for others to reproduce the
test case and work on a solution and you don't need to change your
machine setup.
Please also start a new thread for the nozzle rotation mode issue.

Jan
> --
> 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
> <mailto:openpnp+u...@googlegroups.com>.
> To view this discussion visit https://groups.google.com/d/msgid/
> openpnp/7882640e-4841-45fc-9117-b75b14c1a77fn%40googlegroups.com
> <https://groups.google.com/d/msgid/openpnp/7882640e-4841-45fc-9117-
> b75b14c1a77fn%40googlegroups.com?utm_medium=email&utm_source=footer>.

Jan

unread,
Mar 7, 2025, 6:23:00 AM3/7/25
to ope...@googlegroups.com
Mi Micael!
I've now identified and fixed the issue: you have a thin safe z zone
and a significant z offset on your second nozzle. This reveals that
getOkToMoveAxes() missed to translate the location of the nozzle into
head coordinates before checking if its within the safe z zone. I've
just merged a fix. Please allow it a few minutes to be deployed and
please report - when you had time to test it - if nozzle pre-rotation is
now working for you.

Jan

vespaman

unread,
Mar 7, 2025, 7:42:01 AM3/7/25
to OpenPnP
Yes!!!

Well done Jan! Now I get the expected result.  And it is Friday as well :) :) :). Celebration tonight.

I so much looked forward to this feature. Significant in all aspects. Looking forward to increase my pick rate on some of my components. I can probably go from 40% upp to 100% with this fix.

 - Micael

Jan

unread,
Mar 7, 2025, 8:09:37 AM3/7/25
to ope...@googlegroups.com
Hi Micael!

On 07.03.2025 13:42, vespaman wrote:
> Yes!!!
>
> Well done Jan! Now I get the expected result.  And it is Friday as
> well :) :) :). Celebration tonight.
>
Many thanks for reporting! So this did indeed fix the issue.

> I so much looked forward to this feature. Significant in all aspects.
> Looking forward to increase my pick rate on some of my components. I can
> probably go from 40% upp to 100% with this fix.
>
Did you had to limit it because of rotation issues (parts slipping on
the nozzle tip)?
I guess, with pre-rotation enabled, you might safely (without
performance penalty) reduce acceleration and feedrate limits on the
rotational axes.

Jan

vespaman

unread,
Mar 7, 2025, 8:42:46 AM3/7/25
to OpenPnP
Hi Jan,

Did you had to limit it because of rotation issues (parts slipping on
the nozzle tip)?

Yes, exactly, parts slipping, and also I have tact switch, where the cap is a bit loose-ish, so the cap would rotate with nozzle, but body not as much.
 
 - Micael
Reply all
Reply to author
Forward
0 new messages