--
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 visit https://groups.google.com/d/msgid/openpnp/8b7af5b0-1e33-43c4-91d3-51beedbd2b97n%40googlegroups.com.
The default factory configuration on a lumenpnp machine is to have Z=0 just below the pcb surface. This is quite unconventional of course, but there are lots of machines out there running this set up.
Easy, I thought first; just test against movements above safeZ.
I think I'm starting to understand where you'd like to go.
Ok, assuming the goal is to have bottom vision with two cameras and two
nozzles without motion in between.
I'd start to instruct the machine to move with as many axes as possible
to the first bottom vision location. Using subordinate motion this can
be easily archived and pre-rotation does the same for all nozzle
rotational axis. With that in place, you'll see just a small movement in
XY (given by the distance between cameras compared to the distance
between nozzles) and a significant movement in Z (depending on the part
height and camera Z). That is because bottom vision moves the bottom
side of the part on the nozzle to the camera location.
As we discussed earlier, you could calculate a new location (XY) that
spreads the distance between camera and nozzle such, that without
additional motion, both have the same offset. If bottom vision results
are corrected for this offset, you could skip the XY-movement between
the two.
For the Z location the situation is a little bit more difficult: on a
generic machine you'd have to assume, that each axis is free to move
individually. With the above you'd already be done. On a machine with
shared Z axis like cam-style, you could calculate a location (Z) in
which both nozzles are out of focus by the same amount.
verify that this new location is within Safe-Z for both nozzles, you'd
be free to use it.
However, when I earlier today tried the above (testing against safeZ), the compositing test failed, since there's not enough information in the test machine, to conclude if the test machine is setup as a machine with positive or negative Z. Or at least, this is my take on it.
Hi Toby,If the machine is setup to use multiple bottom vision cameras, there are some prerequisites; disable dynamic Z & set safeZ at Z home. Once this is done, during a run; After all nozzles has picked their components, they will all be at safeZ, which what we want/need.
the second component size will be too large according to bottomvision, since it expects it to be at a specific Z.
If the machine is setup to use multiple bottom vision cameras, there are some prerequisites; disable dynamic Z & set safeZ at Z home. Once this is done, during a run; After all nozzles has picked their components, they will all be at safeZ, which what we want/need.It sounds like you are working against some existing openpnp mechanisms here. You want the nozzles to end up at a specific Z, and you have noted that disabling various features will cause it to end up at that Z. But it is almost by coincidence.
Why not simply calculate the right Z. That is, the Z that puts both parts ready for vision. Then command the machine to move to that Z. The SafeZ mechanism can do whatever it wants, but the end position will be as you command.
the second component size will be too large according to bottomvision, since it expects it to be at a specific Z.I think it needs to accommodate that anyway......
Hi TobyIf the machine is setup to use multiple bottom vision cameras, there are some prerequisites; disable dynamic Z & set safeZ at Z home. Once this is done, during a run; After all nozzles has picked their components, they will all be at safeZ, which what we want/need.It sounds like you are working against some existing openpnp mechanisms here. You want the nozzles to end up at a specific Z, and you have noted that disabling various features will cause it to end up at that Z. But it is almost by coincidence.Am I really? I would argue that safeZ is one of the cornerstones in the machine. And setting it at home, is how I read the setup documentation, to be the first way to get the machine robust (before doing optimizations with safeZ/Dynamic SafeZ). How can this be coincidence? (I thought I was working with the machine! :-) )
Why not simply calculate the right Z. That is, the Z that puts both parts ready for vision. Then command the machine to move to that Z. The SafeZ mechanism can do whatever it wants, but the end position will be as you command.Yes, this is a possible solution. But as far as I know, the only "right Z" is Z home. This is only place where all nozzles are leveled
When the machine has picking a part, it moves all nozzles to Safe-Z
(static or dynamic) before continuing. That's what moveToAtSafeZ() does
and that is used everywhere (?). There shall be no need to change
anythere here.
With your two-camera-code, you shall cover the generic solutions of
On Tue, 28 Oct 2025 at 07:53, vespaman <micael....@gmail.com> wrote:Hi TobyIf the machine is setup to use multiple bottom vision cameras, there are some prerequisites; disable dynamic Z & set safeZ at Z home. Once this is done, during a run; After all nozzles has picked their components, they will all be at safeZ, which what we want/need.It sounds like you are working against some existing openpnp mechanisms here. You want the nozzles to end up at a specific Z, and you have noted that disabling various features will cause it to end up at that Z. But it is almost by coincidence.Am I really? I would argue that safeZ is one of the cornerstones in the machine. And setting it at home, is how I read the setup documentation, to be the first way to get the machine robust (before doing optimizations with safeZ/Dynamic SafeZ). How can this be coincidence? (I thought I was working with the machine! :-) )Where nozzles share a Z axis, SafeZ is a band, not a specific level. I&S configures that band by asking you to jog the nozzle over the tallest feature on the machine. This defines the edge of the SafeZ band as a position which is safe, but only just safe.
Having a band helps the machine make efficient moves. The 3rd order motion controller can plot a curve that drifts through that band. Lesser motion controllers move diagonally through the band.You keep writing about "home", which is a sensible concept on a cam machine. But it is an alien concept to my machine where the nozzles are on a common belt and one moves up when the other moves down. My machine obviously passes through the Z=0 level quite frequently but it never stops there.
When I press the P button to Park the head comes to rest at the edge of SafeZ, which is significantly unbalanced. There is no home.
Why not simply calculate the right Z. That is, the Z that puts both parts ready for vision. Then command the machine to move to that Z. The SafeZ mechanism can do whatever it wants, but the end position will be as you command.Yes, this is a possible solution. But as far as I know, the only "right Z" is Z home. This is only place where all nozzles are leveledSuppose one nozzle carries 0603 (0.5mm height) and the other nozzle carries sot23 (1mm height). Maybe the optimal Z is with one nozzle 0.25mm up, the other nozzle 0.25mm down, so that the bottom surface of both parts are at the same Z.
I can understand why that calculation seems unnecessary on a cam machine; just going to HomeZ (cam neutral) is close enough and easier.
We must not allow one nozzle to be dipped, since this would mean that the other looses its known Z location.
A balanced cam gives accurate control over both nozzles? How wide is the band before one nozzle hits its endstop?
Many thanks for this update. It now makes things clearer for me.
If I understand you correctly, you're basically suffering from a
hardware related issue, that is very specific to your particular head
design.
May I encourage you to PR what you already have as it provides major
improvements to OpenPnP: you added support to have more then one camera
for bottom vision and support to link them to nozzles to minimize the
travel between bottom vision operations.
You already did (or you easily
could) archive your goal to not move at all for head designs with
individual Z axes. (For this heads you can even do bottom vision using
the perfect (camera) Z location.) That alone would - IMHO - be worth
merging.
For head designs with shared Z axes, we need to distinguish between two
kinds, the ones where the nozzles are free to move up and down like
Peters head and the ones where the nozzle motion is limited in one
direction like yours and probably other CAM style designs where the
nozzles are not free to move up while the other is pushed down.
For the first, your goal can be reached by calculating an average Z
position that brings both nozzles slightly out of focus. For today's
lenses and cameras and with the availability of 3d units per pixel
and/or advanced camera calibration, OpenPnP can handle that.
For the second (your CAM style head with limited motion towards
positive Z) I think your goal is still reachable if you provide an
option to configure a specific Z value (either for each nozzle or their
physical Z axis) at which bottom vision shall take place.
This would
allow you to specify eg. the balance point for bottom vision. If you'd
configure your camera somewhere in the middle between min max part
height, you'd run bottom vision with about +-2.5mm out of focus max,
which shall still work.
For both shared z axes situations you'd need to add a way to detect or
configured it to be universal and to skip Z motion between bottom vision
operations...
Solution would be ;
Separate Z drivers (not cam for 2 nozzles but 1 each nozzle )
And focusing camera at Z +25mm (for example) and doing vision for bouth nozzles at this hight ..
just thinking loud…
There are nice Nema12 Steppers which do not take a lot of space - could be used as well on belt driven Z+Z1 because the load is balanced always and there is no large torque needed for Up-down nozzles (except for nozzle changer - depends on type!) Nema12 Pancake are used now largely on 3D printers and are match more reliable and with quite large torque..... so do not be afraid of using those..
Why the same problem ? Independent nozzles would lover nozzle at UpCamera location only for Hight of Nozzle picked up SMT part - so bottom for SMT would always be at the same hight for Up Camera Vision ?
Yes my Quadro PnP head used 2 Nema 12 for 4 axis Z movement ... but I am not testing ELP Camera for my machine - Which you have in mind - but I sold it ... Not my any more...
--
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 visit https://groups.google.com/d/msgid/openpnp/846aaa32-1895-437f-be04-40c492ce615cn%40googlegroups.com.
The way I see this can not work with shared Z always - it might work when you have two SMT parts (one each nozzle) of the same hight.Once you have different heights of parts - bottom of parts will not be at the same hight with shared nozzles!