Bottom Vision & Nozzle Offsets

433 views
Skip to first unread message

PP.ca

unread,
Jul 9, 2024, 12:04:35 PM (12 days ago) Jul 9
to OpenPnP
Hello,

Like many other people, I am personally wondering what can be done to avoid lowering the nozzles down to the bottom camera for each part.
The videos with FlyBy vision from commercial machines are very nice and I know some talk about how they do it already explained the tech to some extent.

Specifically in the case of OpenPnP machines there are a few factors worth mentioning:
* the Z axis is most likely not perfectly perpendicular to the PCB plane
* it is highly recommended to lower the nozzle to the PCB plane for part identification to compensate for the Z issue
* these movements slow down the job

I was looking at the nozzle tip calibration and then got to wonder:
What if we measure at both the PCB plane and at Z=0? 

I'm thinking with these 2 measurements we can determine the XY difference and then later in the job we no longer need to lower the nozzle for the calibrated nozzle tip.

So the question for more experienced OpenPnP developers is: How would I start working in this area? Where should I begin?

mark maker

unread,
Jul 9, 2024, 12:52:00 PM (12 days ago) Jul 9
to ope...@googlegroups.com

It is already done. You just need to enable nozzle tip calibration, it will measure any non-uniform Z tilts between nozzles. 

Explained in the Wiki (illustration exaggerated):

https://github.com/openpnp/openpnp/wiki/Nozzle-Tip-Calibration-Setup#what-is-the-bottom-camera-location-and-how-can-it-vary-between-nozzles

_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/e60fe2f2-219d-44a3-8e0e-b770ddf0ae28n%40googlegroups.com.

PP.ca

unread,
Jul 9, 2024, 1:03:02 PM (12 days ago) Jul 9
to OpenPnP
Oh, that is great news.
But I still don't get it, help me out please.
I've seen that picture 100 times and I do have the nozzle tip calibration enabled.
What do I have to do to avoid lowering the nozzle in the job?
Is it the camera location?

huynht...@gmail.com

unread,
Jul 9, 2024, 1:17:02 PM (12 days ago) Jul 9
to OpenPnP
In your opinion, the problem you are referring to is that the nozzle will lower when checking the Bottom Vision to ensure the focus from the component plane to the Bottom Camera surface. For example, the Z lowering height is configured -7mm, the component height is 1mm, then when checking Bottom Vision the machine will request the nozzle to be lowered to -6mm.
This is also an issue I want to adjust so that I don't have to lower the nozzle without knowing how to do it

Vào lúc 23:04:35 UTC+7 ngày Thứ Ba, 9 tháng 7, 2024, PP.ca đã viết:

mark maker

unread,
Jul 9, 2024, 4:37:52 PM (12 days ago) Jul 9
to ope...@googlegroups.com

> What do I have to do to avoid lowering the nozzle in the job?

For optimal performance,  configure your machine for a non-empty Safe Z Zone, i.e., some headroom above Safe Z (allow Z optimization through limping nozzles), and then for Dynamic Safe Z.

https://github.com/openpnp/openpnp/wiki/Kinematic-Solutions#special-considerations-for-z-axes

Then set focus of the lens to be at or slightly above Safe Z. Then use the Issues & Solution "Determine the up-looking camera ... position" solution (Include Solved, Reopen) to set the camera position.


https://youtu.be/md68n_J7uto?t=212

https://github.com/openpnp/openpnp/wiki/Vision-Solutions#up-looking-camera-offsets

or set it manually.

Note, in bottom vision OpenPnP will still adjust for the part height to get the bottom of the part into the focal plane. With a non-empty Safe Z Zone and the bottom camera location at or slightly above Safe Z, the movement to/from the bottom camera will be a diagonal in X/Y and Z, i.e. it will smoothly ramp up to Safe Z + part height, so there should be no extra corners and Z moves wasting time.

Please report back if this works. You'll be one of the first. Although some users using pneumatic nozzles (that can only go "all up" or "all down")  use it with success.

Note: although this all makes perfect sense in theory, many professional machines still have the camera focal plane at PCB Z. So I guess there is still some merit.

https://youtu.be/tJ-N-6DMIe4

_Mark

Jan

unread,
Jul 9, 2024, 5:03:52 PM (12 days ago) Jul 9
to ope...@googlegroups.com
Hi all!
That's a very interesting discussion. However, there is a tiny little
peace missing (at least for me) or that I'm not seeing yet and that is a
calibration option for more then one nozzle.
Assuming that each nozzle has a certain angular error which translates
into a displacement as function of Z, then this displacement can be
measured using the up-looking cameras position. If the camera position
is not at PCB Z, the displacement of the nozzle used for calibration
will be part of the cameras position. For any other nozzle, the same
camera position and hence the same displacement is then used.
I think at the end of the day each nozzle requires a dedicated offset
that is applied then translating bottom vision operations into pick
location corrections. This offset would then compensate for any angular
errors of the nozzle.

Jan

On 09.07.2024 22:37, 'mark maker' via OpenPnP wrote:
> /> What do I have to do to avoid lowering the nozzle in the job?/
>
> For optimal performance,  configure your machine for a non-empty *Safe Z
> Zone*, i.e., some headroom above Safe Z (allow Z optimization through
> limping nozzles), and then for *Dynamic Safe Z*.
>
> https://github.com/openpnp/openpnp/wiki/Kinematic-Solutions#special-considerations-for-z-axes
>
> Then set focus of the lens to be at or slightly above Safe Z. Then use
> the *Issues & Solution* "Determine the up-looking camera ... position"
> solution (*Include Solved*, *Reopen*) to set the camera position.
>
>
> https://youtu.be/md68n_J7uto?t=212
>
> https://github.com/openpnp/openpnp/wiki/Vision-Solutions#up-looking-camera-offsets
>
> or set it manually.
>
> Note, in bottom vision OpenPnP will still adjust for the part height to
> get the /bottom/ of the part into the focal plane. With a non-empty Safe
> Z Zone and the bottom camera location at or slightly above Safe Z, the
> movement to/from the bottom camera will be a diagonal in X/Y and Z, i.e.
> it will smoothly ramp up to Safe Z + part height, so there should be no
> extra corners and Z moves wasting time.
>
> Please report back if this works. You'll be one of the first. Although
> some users using pneumatic nozzles (that can only go "all up" or "all
> down")  use it with success.
>
> Note: although this all makes perfect sense in theory, many professional
> machines still have the camera focal plane at PCB Z. So I guess there is
> still some merit.
>
> https://youtu.be/tJ-N-6DMIe4
>
> _Mark
>
>
> On 09.07.2024 19:03, PP.ca wrote:
>> Oh, that is great news.
>> But I still don't get it, help me out please.
>> I've seen that picture 100 times and I do have the nozzle tip
>> calibration enabled.
>> What do I have to do to avoid lowering the nozzle in the job?
>> Is it the camera location?
>>
>> On Tuesday, July 9, 2024 at 12:52:00 PM UTC-4 ma...@makr.zone wrote:
>>
>> It is already done. You just need to enable *nozzle tip
>> calibration*, it will measure any non-uniform Z tilts between
>> nozzles.
>>
>> Explained in the Wiki (illustration exaggerated):
>>
>>> https://groups.google.com/d/msgid/openpnp/e60fe2f2-219d-44a3-8e0e-b770ddf0ae28n%40googlegroups.com <https://groups.google.com/d/msgid/openpnp/e60fe2f2-219d-44a3-8e0e-b770ddf0ae28n%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.
>> To view this discussion on the web visit
>> https://groups.google.com/d/msgid/openpnp/0b2fa200-7681-4255-9d21-1ed4747bb763n%40googlegroups.com <https://groups.google.com/d/msgid/openpnp/0b2fa200-7681-4255-9d21-1ed4747bb763n%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 on the web visit
> https://groups.google.com/d/msgid/openpnp/5733d92b-d84c-44b4-a8f0-c75057a7d97f%40makr.zone <https://groups.google.com/d/msgid/openpnp/5733d92b-d84c-44b4-a8f0-c75057a7d97f%40makr.zone?utm_medium=email&utm_source=footer>.

PP.ca

unread,
Jul 9, 2024, 6:06:30 PM (12 days ago) Jul 9
to OpenPnP
Yes Jan, I think you nailed it.

This is what I had in mind:
nozzle_tip_change(new_tip) {
    load_nozzle_tip(new_tip);
    calibrate_tip_Z_offset; // already done, works great with vacuum or Liteplacer sensor
    set Z = PCB plane;
    camera_auto_focus;
    calibrate runout;
    calibrate camera_position; (?)
    set Z = 0; //not any other Z because with 2 nozzles than the other nozzle would move
    camera_auto_focus; //this time at different Z
    calibrate nozzle_tip_displacement; (or camera position again?)
}
...
nozzle_tip_change('NT2');
pick_part();
place_part() {
   set Z = 0;
   measure_part;
   go_to_destination;
   apply nozzle_tip_displacement;
   release_part(Z = PCB plane);
}

So the idea is that the nozzle is lowered over the bottom / up-looking camera only when the tip is loaded / calibrated.
When parts are checked, the Z stays at Z=0 preferably because it's the same Z for more than 1 nozzle, saving movement time.
And this nozzle_tip_displacement would have to apply to all nozzles the machine has, not even the 1st one can be assumed to be correct.

Can this be achieved or there's some more work required?

PS: I apologize for not finishing my multiple detailed reads of the docs before posting the above.

Leoyu

unread,
Jul 9, 2024, 8:04:06 PM (12 days ago) Jul 9
to OpenPnP
After MARK's tips and further reading of the documentation, I think I may understand.
1. the first nozzle has a fixed error between the PCB plane and the BCAM focal plane;
2. that the above fixed error is automatically introduced when using the first nozzle to set the BCAM position on the BCAM focal plane; the BCAM focal plane recognition result automatically includes the fixed error  ;
3. the fixed error is eliminated by the opposite process when the component is lowered to the PCB plane following the nozzle for placement:
4. other nozzles are additionally compensated for the error based on the pre-calibrated nozzle offset from the TCAM, as well as the error from the BCAM focal plane.

Am I understanding this correctly?
Since I didn't fully understand this part of the principle before, I've been keeping the BCAM focal plane essentially the same as the PCB plane on PP-A1 to minimize the hassle in order to keep the results relatively reliable. I will improve and test later.

mark maker

unread,
Jul 10, 2024, 3:47:46 AM (11 days ago) Jul 10
to ope...@googlegroups.com

Yes, Leoyu, you're perfectly right. 

To refer back to the illustration: We don't know if Z1 has tilt too. But it doesn't matter, as Leoyu pointed out in his points 2 and 3.


And yes, as Leoyu also points out in his point 4, each nozzle is also calibrated in the nozzle<->down-looking camera offset calibration, a.k.a. "confetti" test. And as everybody can see now (I hope) it is extra important that this confetti test be performed on PCB Z level.

https://youtu.be/md68n_J7uto?t=460

Another element is units per pixel calibration. We do that by moving around the nozzle above the bottom camera, so we directly take the machine X/Y motion into account. After calibration, it therefore doesn't matter that the focal plane is farther away from the camera, and that things appear smaller.

So all in all, the upper X/Y plane may be shifted a bit (by Z1 tilt), but any offsets measured in bottom vision remains the same, and is entirely relative to the neutral nozzle tip position we calibrated before (also against run-out btw.).

All errors can be eliminated.

_Mark

Leoyu

unread,
Jul 10, 2024, 5:25:06 AM (11 days ago) Jul 10
to OpenPnP
Mark, thanks for confirming and explaining further. 
In fact the biggest barrier to understanding is "We don't know if Z1 has tilt too. but it doesn't matter." , there's a lot of thought jumps in between, and my 1 2 3 basically explains it.
The wiki link in your first reply made me realize that the N1 might be different, and usually, people assume that every nozzle is bound to have an offset and must be corrected.
All the other necessary information for compensation is known from earlier calibration work, the advanced calibration are much more accurate, and even the primary calibration I think is fine.
Then I'll raise the BCAM mounting height to avoid the nozzle's dropping movement above the BCAM, expecting to save about 0.5-1s per pick.  :D

mark maker

unread,
Jul 10, 2024, 7:57:24 AM (11 days ago) Jul 10
to ope...@googlegroups.com

"The wiki link in your first reply made me realize that the N1 might be different"

That's true insofar as it was used to calibrate the bottom camera at one time. Issues & Solutions just happens to use the "default nozzle" for that, which is the first as defined in the Machine Setup tree.

But after that moment a nozzle is no longer special. It will be calibrated for offset like all the other nozzles. If the bottom camera slightly moved, or the machine homes a bit different, or you get unequal thermal expansion, or you since crashed the nozzle into an obstacle and it now has a new tilt, it will be compensated in the nozzle tip calibration, like nozzle 2 or an other. Operationally, all nozzles are equal.

Strictly speaking, calibration is per Nozzle-Tip-and-Nozzle combo, and you can see the Camera position offset is not zero here (this is from a simulated imperfect machine):

_Mark

Sudesh .s

unread,
Jul 10, 2024, 8:00:14 AM (11 days ago) Jul 10
to ope...@googlegroups.com
hi i am making openpnp in BIGTREETECH SKR_PRO V1.2  how to use the TOP and Bottom light in marlin code .also which pin can use for light pin in BIGTREETECH SKR_PRO V1.2 and another question is its normal light(12 or 24 v)constant color or RGB light how to use

Satya Gupta

unread,
Jul 10, 2024, 8:12:14 AM (11 days ago) Jul 10
to ope...@googlegroups.com
Hi Sudesh, i am making one too using SKR 1.4

Lets connect to help each other? 

Thank You

Regards
Satya Gupta



mark maker

unread,
Jul 10, 2024, 8:24:32 AM (11 days ago) Jul 10
to ope...@googlegroups.com

Please open a separate discussion  thread. This one is about "Bottom Vision & Nozzle Offsets"

Jan

unread,
Jul 11, 2024, 5:41:56 AM (10 days ago) Jul 11
to ope...@googlegroups.com
Hi Mark!
I'm very sorry for being pedantic but I don't understand your "All
errors can be eliminated." conclusion.
The initial question in this thread was if bottom vision can take place
at Z != PCB-Z and whether this would impact the precision. Using
confetti calibration the locations of all nozzles with respect to the
down-looking camera can be calibrated for a given (preferably PCB) Z.
Now one nozzle is used to calibrate the location of the up-looking
camera. For this nozzle, the results are good for the Z used for the
calibration (of the up-looking camera) and calibration can take place at
any Z.
For other nozzles the situation is more complicated asuming this nozzle
suffers from an arbitrary tilt different from the tilt of the
first/primary nozzle. Due to confetti calibration its location is known
for a single Z only. If this nozzle is moved to the up-looking camera,
the location is only known, if the up-looking cameras location has been
calibrated at the same Z as the nozzle offsets (confetti test). For any
other Z the difference in tilt results in an offset in the X/Y plane
that is not separately compensated. Nozzle tip calibration would detect
this offset but compensate it everywhere, especially for place at PCB-Z
which is actually not effected.
The only solution I currently see to support bottom-vision-Z != PCB-Z
is that each (non primary) nozzle needs an offset that compensates for
the tilt introduced offset at Z != confetti/PCB-Z used for bottom vision
operations. This offset could likely be calibrated automatically using
the confetti: locate the confetti at PCB-Z, pick it using the nozzle
under test and move it to the up-looking camera for bottom vision.
Repeating this test a few times should result in reliable results and
would provide a direct approach to compensate for bottom-vision to place
offsets.

Jan

On 10.07.2024 09:47, 'mark maker' via OpenPnP wrote:
> Yes, Leoyu, you're perfectly right.
>
> To refer back to the illustration: We don't know if Z1 has tilt too. But
> it doesn't matter, as Leoyu pointed out in his points 2 and 3.
>
>
> And yes, as Leoyu also points out in his point 4, each nozzle is also
> calibrated in the nozzle<->down-looking camera offset calibration,
> a.k.a. "confetti" test. And as everybody can see now (I hope) it is
> *extra important that this confetti test be performed on PCB Z level*.
>> https://groups.google.com/d/msgid/openpnp/e60fe2f2-219d-44a3-8e0e-b770ddf0ae28n%40googlegroups.com <https://groups.google.com/d/msgid/openpnp/e60fe2f2-219d-44a3-8e0e-b770ddf0ae28n%40googlegroups.com?utm_medium=email&utm_source=footer <https://groups.google.com/d/msgid/openpnp/e60fe2f2-219d-44a3-8e0e-b770ddf0ae28n%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.
>> >> To view this discussion on the web visit
>> >>
>> https://groups.google.com/d/msgid/openpnp/0b2fa200-7681-4255-9d21-1ed4747bb763n%40googlegroups.com <https://groups.google.com/d/msgid/openpnp/0b2fa200-7681-4255-9d21-1ed4747bb763n%40googlegroups.com?utm_medium=email&utm_source=footer <https://groups.google.com/d/msgid/openpnp/0b2fa200-7681-4255-9d21-1ed4747bb763n%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 on the web visit
>> >
>> https://groups.google.com/d/msgid/openpnp/5733d92b-d84c-44b4-a8f0-c75057a7d97f%40makr.zone <https://groups.google.com/d/msgid/openpnp/5733d92b-d84c-44b4-a8f0-c75057a7d97f%40makr.zone?utm_medium=email&utm_source=footer <https://groups.google.com/d/msgid/openpnp/5733d92b-d84c-44b4-a8f0-c75057a7d97f%40makr.zone?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.
>> To view this discussion on the web visit
>> https://groups.google.com/d/msgid/openpnp/ac6af60d-2902-4e9c-a461-8e09c0a8e48an%40googlegroups.com <https://groups.google.com/d/msgid/openpnp/ac6af60d-2902-4e9c-a461-8e09c0a8e48an%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 on the web visit
> https://groups.google.com/d/msgid/openpnp/50b03665-86a6-49f9-8b09-3e5bb6a6e257%40makr.zone <https://groups.google.com/d/msgid/openpnp/50b03665-86a6-49f9-8b09-3e5bb6a6e257%40makr.zone?utm_medium=email&utm_source=footer>.

mark maker

unread,
Jul 11, 2024, 7:30:58 AM (10 days ago) Jul 11
to ope...@googlegroups.com

Good for you to want to understand. 😎

"Nozzle tip calibration would detect this offset but compensate it everywhere, especially for place at PCB-Z which is actually not effected."

No, the offset determined in nozzle tip calibration is exclusively applied when holding the part over the bottom camera, nowhere else. Only the run-out is compensated everywhere.

It follows that as long as you calibrate the confetti on PCB Z and the nozzle tip on camera focal Z, my promise to eliminate all errors holds.
(I'm just talking about these Z tilt errors, of course, not really "all errors" 😇).

Granted, if you have a feeder with a pick Z drastically different from PCB Z, this promise does not help you. OpenPnP does not compensate the Z tilt in the nozzle per se. To calibrate the true Z tilt we would need to perform  a "confetti test" on a secondary Z.

But to compensate Z axis tilt would be more complicated than you might think, that's why it has been discussed, but never implemented so far. The problem is that Z moves then also involve X/Y moves, but different ones for each nozzle. So a "Head move to Safe Z" becomes more complicated, because today's code now assumes it is the same for all HeadMountables, but it is not. And moving X/Y for each Z also involves X/Y backlash compensation on most machines (slow!). Implemented naively, the extra backlash moves would mean smearing the part around in the solder paste. Not impossible to go around this (precompensating at Safe Z) but way more complicated than today. So we are certainly not saying "no" to a nozzle Z tilt compensation, but it should not be mistaken as a "quick thing to add". 😂

Consequence: put your feeders roughly to PCB Z, as all the pro machines do too. 😛

>   The only solution I currently see...

It is better to use a "confetti test" on a secondary Z, because it then actually makes the top camera view-axis the "reference Z axis". This allows you to capture feeder pick locations etc. reliably withe the camera at different Z, and then go to each of these Z with the tilt compensated nozzle. The bottom camera on the other hand only ever operates at the focal Z/part underside.

_Mark

Leoyu

unread,
Jul 11, 2024, 9:46:35 AM (10 days ago) Jul 11
to OpenPnP
Hi Jan,
Your idea and solution is in line with most people's first instincts: find the offset of each nozzle in both Z planes, and by using the known distance between the two Z planes, perform a linear interpolation calculation to compensate for the XY offset of any Z height. Theoretically, this is perfectly feasible.
But there is actually some premise implicit in this: the position in the BCAM field of view is consistent and precisely known from the TCAM, so the nozzles pick up the identifiers from the PCB plane and can perform the offset calculation directly. But where does the BCAM's own known position in the system come from to begin with? Think about the point 2 I mentioned earlier.

Leoyu

unread,
Jul 11, 2024, 10:09:09 AM (10 days ago) Jul 11
to OpenPnP
Mark,
>> To calibrate the true Z tilt we would need to perform  a "confetti test" on a secondary Z....
>> It is better to use a "confetti test" on a secondary Z, because it then actually makes the top camera view-axis the "reference Z axis". This allows you to capture feeder pick locations etc. reliably withe the camera at different Z, and then go to each of these Z with the tilt compensated nozzle.  ...
The secondary nozzles are calibrated to have error compensation for different Z-heights and can accept different feeder pickup heights. What about the first nozzle. It still seems to accept only feeder pickup heights that are in line with the PCB plane?

mark maker

unread,
Jul 11, 2024, 11:14:47 AM (10 days ago) Jul 11
to ope...@googlegroups.com
>> To calibrate the true Z tilt we would need to perform  a "confetti test" on a secondary Z....

> The secondary nozzles are calibrated to have error compensation for different Z-heights and can accept different feeder pickup heights. What about the first nozzle. It still seems to accept only feeder pickup heights that are in line with the PCB plane?

No, the nozzles would all be "confetti"-calibrated at two Z levels. There would be no difference between nozzle 1 and the others.

The only event that singles out the first nozzle, is the momentary(!) transfer of the calibrated nozzle 1 position, in order to calibrate the bottom camera position. This is the same as today, and tilt compensation would not change that. Also the bottom camera should not change by applying tilt compensation, because nozzle tip calibration already did the same thing, just not in a generalized "3D" way, but only for that particular bottom camera focal Z  plane.

Note, you can then still do nozzle tip calibration and it will  be a good indicator whether the tilt compensation works, i.e. it should then only show negligible offsets, this time on all nozzles.

_Mark

Jan

unread,
Jul 11, 2024, 3:02:41 PM (10 days ago) Jul 11
to ope...@googlegroups.com
Hi Mark!

On 11.07.2024 13:30, 'mark maker' via OpenPnP wrote:
> Good for you to want to understand. 😎
>
> /"Nozzle tip calibration would detect this offset but compensate it
> everywhere, especially for place at PCB-Z which is actually not effected."/
>
> No, the *offset *determined in nozzle tip calibration is *exclusively
> applied when holding the part over the bottom camera*, nowhere else.
> Only the *run-out *is compensated everywhere.
>
OK, that's very interesting! So I'm free to raise/lower the bottom
vision Z plane without any impact...
Unfortunately - technically speaking - your claim "you since crashed
the nozzle into an obstacle and it now has a new tilt, it will be
compensated" does not hold true as such an event would change the
location of the nozzle which is only corrected by a new confetti
calibration.

[...]
> It is better to use a "confetti test" on a secondary Z, because it then
> actually makes the top camera view-axis the "reference Z axis". This
> allows you to capture feeder pick locations etc. reliably withe the
> camera at different Z, and then go to each of these Z with the tilt
> compensated nozzle. The bottom camera on the other hand only ever
> operates at the focal Z/part underside.
>
That would be nice! My current workaround is to shift the pick location
by hand...

Jan
> https://groups.google.com/d/msgid/openpnp/ef3a715d-9934-4684-b51a-b1b9bfa320e4%40makr.zone <https://groups.google.com/d/msgid/openpnp/ef3a715d-9934-4684-b51a-b1b9bfa320e4%40makr.zone?utm_medium=email&utm_source=footer>.

mark maker

unread,
Jul 11, 2024, 3:32:40 PM (10 days ago) Jul 11
to ope...@googlegroups.com

> Unfortunately - technically speaking - your claim "you since crashed the nozzle into an obstacle and it now has a new tilt, it will be compensated" does not hold true as such an event would change the location of the nozzle which is only corrected by a new confetti calibration.

Yes, of course, I was implying that too. But realize that by crashing it you might get a different Z tilt, so even after you redo the confetti calibration, the position up at the higher camera focal Z would still be different. Nozzle tip calibration will automatically fix it, without you having to re-calibrate the bottom camera location.

With that example I was just pointing out that that the use of nozzle 1 for bottom camera calibration is just momentary. Afterwards it is like every other nozzle and can "acquire" an offset too, i.e., nozzle 1 is not special anymore. 

Conversely, the bottom camera is not "dependent" of the nozzle 1. After it was momentarily calibrated with nozzle 1, it has its location set in absolute machine coordinates.

Nozzle 1 is just a vessel for a momentary transfer of coordinates, that's what I wanted to point out with the example.

_Mark

vespaman

unread,
Jul 12, 2024, 12:39:51 PM (9 days ago) Jul 12
to OpenPnP
Hi all,

So now I got interested - like Jan, I was under the assumption, that the up camera vision should be roughly at PCB Z. But there's a rather big speed penalty lowering the component to board Z on each vision, as we all know.
So, while I have a hard time following this thread, is the summary that it does not need to be at board Z during vision?

I was thinking about to try this regardless, with the hope that the nozzles Z-tilt on my machine would not be significant in terms of placements, but if it is already handled by tip calibrations and what not, I will be more eager to test this... :-)

 - Micael

Jan

unread,
Jul 12, 2024, 2:43:56 PM (9 days ago) Jul 12
to ope...@googlegroups.com
Hi Micael!

On 12.07.2024 18:39, vespaman wrote:
[...]
> So, while I have a hard time following this thread, is the summary that
> it does not need to be at board Z during vision?
>
IMHO that's correct. As long as nozzle tip calibration is enabled,
bottom vision can place at any Z level because the offset that's
calculated as part of the calibration is used for bottom vision only.
It further tunes out, that there is room for improvement by executing
the confetti calibration at two different Z levels and use the results
to calculate a nozzle tilt compensation. This would then improve the
down-looking-camera to nozzle relation at different Z levels. Namely it
should make capturing pick locations more precise if the feeder is not
at PCB-Z.

> I was thinking about to try this regardless, with the hope that the
> nozzles Z-tilt on my machine would not be significant in terms of
> placements, but if it is already handled by tip calibrations and what
> not, I will be more eager to test this... :-)
>
I guess you'd only need to change the cameras focal plane. Due to the
blur, that's applied anyway, the focus error of ~5mm shall not matter
that much.
I am excited about the result!

Jan

> torsdag 11 juli 2024 kl. 21:32:40 UTC+2 skrev ma...@makr.zone:
>
> /> Unfortunately - technically speaking - your claim "you since
> crashed the nozzle into an obstacle and it now has a new tilt, it
> will be compensated" does not hold true as such an event would
> change the location of the nozzle which is only corrected by a new
> confetti calibration. /
>
> Yes, of course, I was implying that too. But realize that by
> crashing it you might get a different Z tilt, so even after you redo
> the confetti calibration, the position up at the higher camera focal
> Z would still be different. Nozzle tip calibration will
> automatically fix it, without you having to re-calibrate the bottom
> camera location.
>
> With that example I was just pointing out that that the *use of
> nozzle 1* for bottom camera calibration is just *momentary*.
> Afterwards it is like every other nozzle and can "acquire" an offset
> too, i.e., nozzle 1 is *not special* anymore.
>
> Conversely, the bottom camera is not "dependent" of the nozzle 1.
> After it was *momentarily* calibrated with nozzle 1, it has its
> location set in *absolute *machine coordinates.
>>>>>> https://github.com/openpnp/openpnp/wiki/Kinematic-Solutions#special-considerations-for-z-axes <https://github.com/openpnp/openpnp/wiki/Kinematic-Solutions#special-considerations-for-z-axes>
>>>>>>         >
>>>>>>         > Then set focus of the lens to be at or slightly
>>>>>> above Safe
>>>>>>         Z. Then use
>>>>>>         > the *Issues & Solution* "Determine the up-looking
>>>>>> camera ...
>>>>>>         position"
>>>>>>         > solution (*Include Solved*, *Reopen*) to set the camera
>>>>>>         position.
>>>>>>         >
>>>>>>         >
>>>>>>         > https://youtu.be/md68n_J7uto?t=212
>>>>>> <https://youtu.be/md68n_J7uto?t=212>
>>>>>>         >
>>>>>>         >
>>>>>> https://github.com/openpnp/openpnp/wiki/Vision-Solutions#up-looking-camera-offsets <https://github.com/openpnp/openpnp/wiki/Vision-Solutions#up-looking-camera-offsets>
>>>>>> https://github.com/openpnp/openpnp/wiki/Nozzle-Tip-Calibration-Setup#what-is-the-bottom-camera-location-and-how-can-it-vary-between-nozzles <https://github.com/openpnp/openpnp/wiki/Nozzle-Tip-Calibration-Setup#what-is-the-bottom-camera-location-and-how-can-it-vary-between-nozzles>
>>>>>> https://groups.google.com/d/msgid/openpnp/e60fe2f2-219d-44a3-8e0e-b770ddf0ae28n%40googlegroups.com <https://groups.google.com/d/msgid/openpnp/e60fe2f2-219d-44a3-8e0e-b770ddf0ae28n%40googlegroups.com> <https://groups.google.com/d/msgid/openpnp/e60fe2f2-219d-44a3-8e0e-b770ddf0ae28n%40googlegroups.com?utm_medium=email&utm_source=footer <https://groups.google.com/d/msgid/openpnp/e60fe2f2-219d-44a3-8e0e-b770ddf0ae28n%40googlegroups.com?utm_medium=email&utm_source=footer> <https://groups.google.com/d/msgid/openpnp/e60fe2f2-219d-44a3-8e0e-b770ddf0ae28n%40googlegroups.com?utm_medium=email&utm_source=footer> <https://groups.google.com/d/msgid/openpnp/e60fe2f2-219d-44a3-8e0e-b770ddf0ae28n%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.
>>>>>>         >> To view this discussion on the web visit
>>>>>>         >>
>>>>>> https://groups.google.com/d/msgid/openpnp/0b2fa200-7681-4255-9d21-1ed4747bb763n%40googlegroups.com <https://groups.google.com/d/msgid/openpnp/0b2fa200-7681-4255-9d21-1ed4747bb763n%40googlegroups.com> <https://groups.google.com/d/msgid/openpnp/0b2fa200-7681-4255-9d21-1ed4747bb763n%40googlegroups.com?utm_medium=email&utm_source=footer <https://groups.google.com/d/msgid/openpnp/0b2fa200-7681-4255-9d21-1ed4747bb763n%40googlegroups.com?utm_medium=email&utm_source=footer> <https://groups.google.com/d/msgid/openpnp/0b2fa200-7681-4255-9d21-1ed4747bb763n%40googlegroups.com?utm_medium=email&utm_source=footer> <https://groups.google.com/d/msgid/openpnp/0b2fa200-7681-4255-9d21-1ed4747bb763n%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 on the web visit
>>>>>>         >
>>>>>> https://groups.google.com/d/msgid/openpnp/5733d92b-d84c-44b4-a8f0-c75057a7d97f%40makr.zone <https://groups.google.com/d/msgid/openpnp/5733d92b-d84c-44b4-a8f0-c75057a7d97f%40makr.zone> <https://groups.google.com/d/msgid/openpnp/5733d92b-d84c-44b4-a8f0-c75057a7d97f%40makr.zone?utm_medium=email&utm_source=footer <https://groups.google.com/d/msgid/openpnp/5733d92b-d84c-44b4-a8f0-c75057a7d97f%40makr.zone?utm_medium=email&utm_source=footer> <https://groups.google.com/d/msgid/openpnp/5733d92b-d84c-44b4-a8f0-c75057a7d97f%40makr.zone?utm_medium=email&utm_source=footer> <https://groups.google.com/d/msgid/openpnp/5733d92b-d84c-44b4-a8f0-c75057a7d97f%40makr.zone?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.
>>>>>> To view this discussion on the web visit
>>>>>> https://groups.google.com/d/msgid/openpnp/ac6af60d-2902-4e9c-a461-8e09c0a8e48an%40googlegroups.com <https://groups.google.com/d/msgid/openpnp/ac6af60d-2902-4e9c-a461-8e09c0a8e48an%40googlegroups.com> <https://groups.google.com/d/msgid/openpnp/ac6af60d-2902-4e9c-a461-8e09c0a8e48an%40googlegroups.com?utm_medium=email&utm_source=footer> <https://groups.google.com/d/msgid/openpnp/ac6af60d-2902-4e9c-a461-8e09c0a8e48an%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 on the web visit
>>>>> https://groups.google.com/d/msgid/openpnp/50b03665-86a6-49f9-8b09-3e5bb6a6e257%40makr.zone <https://groups.google.com/d/msgid/openpnp/50b03665-86a6-49f9-8b09-3e5bb6a6e257%40makr.zone> <https://groups.google.com/d/msgid/openpnp/50b03665-86a6-49f9-8b09-3e5bb6a6e257%40makr.zone?utm_medium=email&utm_source=footer> <https://groups.google.com/d/msgid/openpnp/50b03665-86a6-49f9-8b09-3e5bb6a6e257%40makr.zone?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 on the web visit
>>> https://groups.google.com/d/msgid/openpnp/ef3a715d-9934-4684-b51a-b1b9bfa320e4%40makr.zone <https://groups.google.com/d/msgid/openpnp/ef3a715d-9934-4684-b51a-b1b9bfa320e4%40makr.zone> <https://groups.google.com/d/msgid/openpnp/ef3a715d-9934-4684-b51a-b1b9bfa320e4%40makr.zone?utm_medium=email&utm_source=footer> <https://groups.google.com/d/msgid/openpnp/ef3a715d-9934-4684-b51a-b1b9bfa320e4%40makr.zone?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 on the web visit
> https://groups.google.com/d/msgid/openpnp/05f8eb1e-aa48-4f08-8811-74583e22a89bn%40googlegroups.com <https://groups.google.com/d/msgid/openpnp/05f8eb1e-aa48-4f08-8811-74583e22a89bn%40googlegroups.com?utm_medium=email&utm_source=footer>.

PP.ca

unread,
Jul 12, 2024, 3:51:57 PM (9 days ago) Jul 12
to OpenPnP
What I was initially after was just a difference focus plane for the bottom vision, nothing else.
It would be great if feeders could also be at a different Z but that's not really the speed enhancement I initially outlined here.

I'm due to test what I learned here and see where I get, if the compensation is done and the components are still placed accurately with bcam at Z=0mm and PCB plane at -20mm.

I'm a bit unclear though about the bottom cam plane. It was said it's looking for the bottom of the parts, so for anything larger than 0mm, there would still be movement, right?
If that's the case, the Z=0 focal plane cannot achieve zero Z movement for the nozzles. It would be less, but still something there...

vespaman

unread,
Jul 12, 2024, 5:06:59 PM (9 days ago) Jul 12
to OpenPnP
fredag 12 juli 2024 kl. 20:43:56 UTC+2 skrev Jan:

I guess you'd only need to change the cameras focal plane. Due to the
blur, that's applied anyway, the focus error of ~5mm shall not matter
that much.

In fact, on my machine, I have a very large focal depth, so I can have focus more or less the full Z travel. But the trouble tends to be the (original chmt) directional up light, so I probably need to enhance that a bit.
 

I am excited about the result!

Me too! But, I'm moving my "production line" (fancy word for my small set-up) to a different space, so right now, I cannot test anything, unfortunately.

 - Micael

Jan

unread,
Jul 12, 2024, 5:17:24 PM (9 days ago) Jul 12
to ope...@googlegroups.com
Hi PP.ca!

On 12.07.2024 21:51, PP.ca wrote:
[...]
> I'm a bit unclear though about the bottom cam plane. It was said it's
> looking for the bottom of the parts, so for anything larger than 0mm,
> there would still be movement, right?
> If that's the case, the Z=0 focal plane cannot achieve zero Z movement
> for the nozzles. It would be less, but still something there...
>
The trick is in what Mark says in one of his early responses: use
dynamic safe Z, make the safe z zone large enough and put the bcam focal
plane close to the safe z zone or higher.
The idea is, that no XY movent is allowed to take place with an
nozzle/part below the safe z zone. Assuming feeders are below safe z,
the first movement after pick is up until the part is entirely in the
safe z zone (actually its nozzle-tip-z + part height). Now the XY move
to the bcam takes place, split into two parts, first the XY move
entirely in the safe z zone and finally a pure Z move to the focal
place. If the focal plane is within the safe z zone, the final pure z
move is not needed anymore. If the focal plane is higher, then the XY
move is combined with the required Z move into a single XYZ move.
However, the safe z zone and the Z range has to be large enough to bring
the tallest parts bottom side into the bcams focal plane.

Jan
> https://github.com/openpnp/openpnp/wiki/Kinematic-Solutions#special-considerations-for-z-axes <https://github.com/openpnp/openpnp/wiki/Kinematic-Solutions#special-considerations-for-z-axes> <https://github.com/openpnp/openpnp/wiki/Kinematic-Solutions#special-considerations-for-z-axes <https://github.com/openpnp/openpnp/wiki/Kinematic-Solutions#special-considerations-for-z-axes>>
> >>>>>>         >
> >>>>>>         > Then set focus of the lens to be at or slightly
> >>>>>> above Safe
> >>>>>>         Z. Then use
> >>>>>>         > the *Issues & Solution* "Determine the up-looking
> >>>>>> camera ...
> >>>>>>         position"
> >>>>>>         > solution (*Include Solved*, *Reopen*) to set the
> camera
> >>>>>>         position.
> >>>>>>         >
> >>>>>>         >
> >>>>>>         > https://youtu.be/md68n_J7uto?t=212
> <https://youtu.be/md68n_J7uto?t=212>
> >>>>>> <https://youtu.be/md68n_J7uto?t=212
> <https://youtu.be/md68n_J7uto?t=212>>
> >>>>>>         >
> >>>>>>         >
> >>>>>>
> https://github.com/openpnp/openpnp/wiki/Vision-Solutions#up-looking-camera-offsets <https://github.com/openpnp/openpnp/wiki/Vision-Solutions#up-looking-camera-offsets> <https://github.com/openpnp/openpnp/wiki/Vision-Solutions#up-looking-camera-offsets <https://github.com/openpnp/openpnp/wiki/Vision-Solutions#up-looking-camera-offsets>>
> https://github.com/openpnp/openpnp/wiki/Nozzle-Tip-Calibration-Setup#what-is-the-bottom-camera-location-and-how-can-it-vary-between-nozzles <https://github.com/openpnp/openpnp/wiki/Nozzle-Tip-Calibration-Setup#what-is-the-bottom-camera-location-and-how-can-it-vary-between-nozzles> <https://github.com/openpnp/openpnp/wiki/Nozzle-Tip-Calibration-Setup#what-is-the-bottom-camera-location-and-how-can-it-vary-between-nozzles <https://github.com/openpnp/openpnp/wiki/Nozzle-Tip-Calibration-Setup#what-is-the-bottom-camera-location-and-how-can-it-vary-between-nozzles>>
> https://groups.google.com/d/msgid/openpnp/e60fe2f2-219d-44a3-8e0e-b770ddf0ae28n%40googlegroups.com <https://groups.google.com/d/msgid/openpnp/e60fe2f2-219d-44a3-8e0e-b770ddf0ae28n%40googlegroups.com> <https://groups.google.com/d/msgid/openpnp/e60fe2f2-219d-44a3-8e0e-b770ddf0ae28n%40googlegroups.com <https://groups.google.com/d/msgid/openpnp/e60fe2f2-219d-44a3-8e0e-b770ddf0ae28n%40googlegroups.com>> <https://groups.google.com/d/msgid/openpnp/e60fe2f2-219d-44a3-8e0e-b770ddf0ae28n%40googlegroups.com?utm_medium=email&utm_source=footer <https://groups.google.com/d/msgid/openpnp/e60fe2f2-219d-44a3-8e0e-b770ddf0ae28n%40googlegroups.com?utm_medium=email&utm_source=footer> <https://groups.google.com/d/msgid/openpnp/e60fe2f2-219d-44a3-8e0e-b770ddf0ae28n%40googlegroups.com?utm_medium=email&utm_source=footer <https://groups.google.com/d/msgid/openpnp/e60fe2f2-219d-44a3-8e0e-b770ddf0ae28n%40googlegroups.com?utm_medium=email&utm_source=footer>> <https://groups.google.com/d/msgid/openpnp/e60fe2f2-219d-44a3-8e0e-b770ddf0ae28n%40googlegroups.com?utm_medium=email&utm_source=footer <https://groups.google.com/d/msgid/openpnp/e60fe2f2-219d-44a3-8e0e-b770ddf0ae28n%40googlegroups.com?utm_medium=email&utm_source=footer>> <https://groups.google.com/d/msgid/openpnp/e60fe2f2-219d-44a3-8e0e-b770ddf0ae28n%40googlegroups.com?utm_medium=email&utm_source=footer <https://groups.google.com/d/msgid/openpnp/e60fe2f2-219d-44a3-8e0e-b770ddf0ae28n%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.
> >>>>>>         >> To view this discussion on the web visit
> >>>>>>         >>
> >>>>>>
> https://groups.google.com/d/msgid/openpnp/0b2fa200-7681-4255-9d21-1ed4747bb763n%40googlegroups.com <https://groups.google.com/d/msgid/openpnp/0b2fa200-7681-4255-9d21-1ed4747bb763n%40googlegroups.com> <https://groups.google.com/d/msgid/openpnp/0b2fa200-7681-4255-9d21-1ed4747bb763n%40googlegroups.com <https://groups.google.com/d/msgid/openpnp/0b2fa200-7681-4255-9d21-1ed4747bb763n%40googlegroups.com>> <https://groups.google.com/d/msgid/openpnp/0b2fa200-7681-4255-9d21-1ed4747bb763n%40googlegroups.com?utm_medium=email&utm_source=footer <https://groups.google.com/d/msgid/openpnp/0b2fa200-7681-4255-9d21-1ed4747bb763n%40googlegroups.com?utm_medium=email&utm_source=footer> <https://groups.google.com/d/msgid/openpnp/0b2fa200-7681-4255-9d21-1ed4747bb763n%40googlegroups.com?utm_medium=email&utm_source=footer <https://groups.google.com/d/msgid/openpnp/0b2fa200-7681-4255-9d21-1ed4747bb763n%40googlegroups.com?utm_medium=email&utm_source=footer>> <https://groups.google.com/d/msgid/openpnp/0b2fa200-7681-4255-9d21-1ed4747bb763n%40googlegroups.com?utm_medium=email&utm_source=footer <https://groups.google.com/d/msgid/openpnp/0b2fa200-7681-4255-9d21-1ed4747bb763n%40googlegroups.com?utm_medium=email&utm_source=footer>> <https://groups.google.com/d/msgid/openpnp/0b2fa200-7681-4255-9d21-1ed4747bb763n%40googlegroups.com?utm_medium=email&utm_source=footer <https://groups.google.com/d/msgid/openpnp/0b2fa200-7681-4255-9d21-1ed4747bb763n%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 on the web visit
> >>>>>>         >
> >>>>>>
> https://groups.google.com/d/msgid/openpnp/5733d92b-d84c-44b4-a8f0-c75057a7d97f%40makr.zone <https://groups.google.com/d/msgid/openpnp/5733d92b-d84c-44b4-a8f0-c75057a7d97f%40makr.zone> <https://groups.google.com/d/msgid/openpnp/5733d92b-d84c-44b4-a8f0-c75057a7d97f%40makr.zone <https://groups.google.com/d/msgid/openpnp/5733d92b-d84c-44b4-a8f0-c75057a7d97f%40makr.zone>> <https://groups.google.com/d/msgid/openpnp/5733d92b-d84c-44b4-a8f0-c75057a7d97f%40makr.zone?utm_medium=email&utm_source=footer <https://groups.google.com/d/msgid/openpnp/5733d92b-d84c-44b4-a8f0-c75057a7d97f%40makr.zone?utm_medium=email&utm_source=footer> <https://groups.google.com/d/msgid/openpnp/5733d92b-d84c-44b4-a8f0-c75057a7d97f%40makr.zone?utm_medium=email&utm_source=footer <https://groups.google.com/d/msgid/openpnp/5733d92b-d84c-44b4-a8f0-c75057a7d97f%40makr.zone?utm_medium=email&utm_source=footer>> <https://groups.google.com/d/msgid/openpnp/5733d92b-d84c-44b4-a8f0-c75057a7d97f%40makr.zone?utm_medium=email&utm_source=footer <https://groups.google.com/d/msgid/openpnp/5733d92b-d84c-44b4-a8f0-c75057a7d97f%40makr.zone?utm_medium=email&utm_source=footer>> <https://groups.google.com/d/msgid/openpnp/5733d92b-d84c-44b4-a8f0-c75057a7d97f%40makr.zone?utm_medium=email&utm_source=footer <https://groups.google.com/d/msgid/openpnp/5733d92b-d84c-44b4-a8f0-c75057a7d97f%40makr.zone?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.
> >>>>>> To view this discussion on the web visit
> >>>>>>
> https://groups.google.com/d/msgid/openpnp/ac6af60d-2902-4e9c-a461-8e09c0a8e48an%40googlegroups.com <https://groups.google.com/d/msgid/openpnp/ac6af60d-2902-4e9c-a461-8e09c0a8e48an%40googlegroups.com> <https://groups.google.com/d/msgid/openpnp/ac6af60d-2902-4e9c-a461-8e09c0a8e48an%40googlegroups.com <https://groups.google.com/d/msgid/openpnp/ac6af60d-2902-4e9c-a461-8e09c0a8e48an%40googlegroups.com>> <https://groups.google.com/d/msgid/openpnp/ac6af60d-2902-4e9c-a461-8e09c0a8e48an%40googlegroups.com?utm_medium=email&utm_source=footer <https://groups.google.com/d/msgid/openpnp/ac6af60d-2902-4e9c-a461-8e09c0a8e48an%40googlegroups.com?utm_medium=email&utm_source=footer>> <https://groups.google.com/d/msgid/openpnp/ac6af60d-2902-4e9c-a461-8e09c0a8e48an%40googlegroups.com?utm_medium=email&utm_source=footer <https://groups.google.com/d/msgid/openpnp/ac6af60d-2902-4e9c-a461-8e09c0a8e48an%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 on the web visit
> >>>>>
> https://groups.google.com/d/msgid/openpnp/50b03665-86a6-49f9-8b09-3e5bb6a6e257%40makr.zone <https://groups.google.com/d/msgid/openpnp/50b03665-86a6-49f9-8b09-3e5bb6a6e257%40makr.zone> <https://groups.google.com/d/msgid/openpnp/50b03665-86a6-49f9-8b09-3e5bb6a6e257%40makr.zone <https://groups.google.com/d/msgid/openpnp/50b03665-86a6-49f9-8b09-3e5bb6a6e257%40makr.zone>> <https://groups.google.com/d/msgid/openpnp/50b03665-86a6-49f9-8b09-3e5bb6a6e257%40makr.zone?utm_medium=email&utm_source=footer <https://groups.google.com/d/msgid/openpnp/50b03665-86a6-49f9-8b09-3e5bb6a6e257%40makr.zone?utm_medium=email&utm_source=footer>> <https://groups.google.com/d/msgid/openpnp/50b03665-86a6-49f9-8b09-3e5bb6a6e257%40makr.zone?utm_medium=email&utm_source=footer <https://groups.google.com/d/msgid/openpnp/50b03665-86a6-49f9-8b09-3e5bb6a6e257%40makr.zone?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 on the web visit
> >>>
> https://groups.google.com/d/msgid/openpnp/ef3a715d-9934-4684-b51a-b1b9bfa320e4%40makr.zone <https://groups.google.com/d/msgid/openpnp/ef3a715d-9934-4684-b51a-b1b9bfa320e4%40makr.zone> <https://groups.google.com/d/msgid/openpnp/ef3a715d-9934-4684-b51a-b1b9bfa320e4%40makr.zone <https://groups.google.com/d/msgid/openpnp/ef3a715d-9934-4684-b51a-b1b9bfa320e4%40makr.zone>> <https://groups.google.com/d/msgid/openpnp/ef3a715d-9934-4684-b51a-b1b9bfa320e4%40makr.zone?utm_medium=email&utm_source=footer <https://groups.google.com/d/msgid/openpnp/ef3a715d-9934-4684-b51a-b1b9bfa320e4%40makr.zone?utm_medium=email&utm_source=footer>> <https://groups.google.com/d/msgid/openpnp/ef3a715d-9934-4684-b51a-b1b9bfa320e4%40makr.zone?utm_medium=email&utm_source=footer <https://groups.google.com/d/msgid/openpnp/ef3a715d-9934-4684-b51a-b1b9bfa320e4%40makr.zone?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 on the web visit
> >
> https://groups.google.com/d/msgid/openpnp/05f8eb1e-aa48-4f08-8811-74583e22a89bn%40googlegroups.com <https://groups.google.com/d/msgid/openpnp/05f8eb1e-aa48-4f08-8811-74583e22a89bn%40googlegroups.com> <https://groups.google.com/d/msgid/openpnp/05f8eb1e-aa48-4f08-8811-74583e22a89bn%40googlegroups.com?utm_medium=email&utm_source=footer <https://groups.google.com/d/msgid/openpnp/05f8eb1e-aa48-4f08-8811-74583e22a89bn%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 on the web visit
> https://groups.google.com/d/msgid/openpnp/ea63487b-8598-4ef6-bc1c-de3fa7aefe14n%40googlegroups.com <https://groups.google.com/d/msgid/openpnp/ea63487b-8598-4ef6-bc1c-de3fa7aefe14n%40googlegroups.com?utm_medium=email&utm_source=footer>.

PP.ca

unread,
Jul 12, 2024, 6:18:56 PM (9 days ago) Jul 12
to OpenPnP
This is quite complicated even to understand what is implemented. Do we really need so much complexity?

I’m wondering: how do commercial machines do it for flyby vision for probably 20 years? They don’t seem to care about part height but only z=0.
Considering the Bcam has auto-focus and one might be working with unknown part heights… I would think a single static safe z at zero would suffice.

Another thing I noticed is that maybe it would be a good idea to group all these calibrations in a single area of the machine setup, to simplify keeping track of all offsets and displacements… Issues and solutions coupled with storing the data at object level doesn’t look easy to work with and understand what needs to be done.

Jan

unread,
Jul 13, 2024, 8:36:14 AM (8 days ago) Jul 13
to ope...@googlegroups.com

On 13.07.2024 00:18, PP.ca wrote:
> This is quite complicated even to understand what is implemented. Do we
> really need so much complexity?
>
That's the way it's currently implemented. IMHO component bottom sides
and the focal plane have to be controlled quite precisely because only
then the units-per-pixel translation is well know. So at present I'm not
aware of any more clever idea. If you have anything better, I'm happy to
read to proposal!

> I’m wondering: how do commercial machines do it for flyby vision for
> probably 20 years? They don’t seem to care about part height but only z=0.

IIRC they either use mechanical aligners (not common nowadays) and
template matching. I've never heard of anything else yet.
If you follow Marks proposal and put the focal plane at lower end of
safe-z zone, you limited the amount of z movement to the theoretical
minimum.

> Considering the Bcam has auto-focus and one might be working with > unknown part heights… I would think a single static safe z at zero would
> suffice.
>
The idea of dynamic safe z is, that a zone allows to move the nozzle tip
just height enough to have the required clearance. With a static safe z
you always move the nozzle up to a location where the clearance is large
enough to move even the tallest part around. So at the end you move the
nozzle higher then needed in almost all situations.
> https://github.com/openpnp/openpnp/wiki/Kinematic-Solutions#special-considerations-for-z-axes <https://github.com/openpnp/openpnp/wiki/Kinematic-Solutions#special-considerations-for-z-axes> <https://github.com/openpnp/openpnp/wiki/Kinematic-Solutions#special-considerations-for-z-axes <https://github.com/openpnp/openpnp/wiki/Kinematic-Solutions#special-considerations-for-z-axes>> <https://github.com/openpnp/openpnp/wiki/Kinematic-Solutions#special-considerations-for-z-axes <https://github.com/openpnp/openpnp/wiki/Kinematic-Solutions#special-considerations-for-z-axes> <https://github.com/openpnp/openpnp/wiki/Kinematic-Solutions#special-considerations-for-z-axes <https://github.com/openpnp/openpnp/wiki/Kinematic-Solutions#special-considerations-for-z-axes>>>
> > >>>>>>         >
> > >>>>>>         > Then set focus of the lens to be at or slightly
> > >>>>>> above Safe
> > >>>>>>         Z. Then use
> > >>>>>>         > the *Issues & Solution* "Determine the up-looking
> > >>>>>> camera ...
> > >>>>>>         position"
> > >>>>>>         > solution (*Include Solved*, *Reopen*) to set the
> > camera
> > >>>>>>         position.
> > >>>>>>         >
> > >>>>>>         >
> > >>>>>>         > https://youtu.be/md68n_J7uto?t=212
> <https://youtu.be/md68n_J7uto?t=212>
> > <https://youtu.be/md68n_J7uto?t=212
> <https://youtu.be/md68n_J7uto?t=212>>
> > >>>>>> <https://youtu.be/md68n_J7uto?t=212
> <https://youtu.be/md68n_J7uto?t=212>
> > <https://youtu.be/md68n_J7uto?t=212
> <https://youtu.be/md68n_J7uto?t=212>>>
> > >>>>>>         >
> > >>>>>>         >
> > >>>>>>
> >
> https://github.com/openpnp/openpnp/wiki/Vision-Solutions#up-looking-camera-offsets <https://github.com/openpnp/openpnp/wiki/Vision-Solutions#up-looking-camera-offsets> <https://github.com/openpnp/openpnp/wiki/Vision-Solutions#up-looking-camera-offsets <https://github.com/openpnp/openpnp/wiki/Vision-Solutions#up-looking-camera-offsets>> <https://github.com/openpnp/openpnp/wiki/Vision-Solutions#up-looking-camera-offsets <https://github.com/openpnp/openpnp/wiki/Vision-Solutions#up-looking-camera-offsets> <https://github.com/openpnp/openpnp/wiki/Vision-Solutions#up-looking-camera-offsets <https://github.com/openpnp/openpnp/wiki/Vision-Solutions#up-looking-camera-offsets>>>
> https://github.com/openpnp/openpnp/wiki/Nozzle-Tip-Calibration-Setup#what-is-the-bottom-camera-location-and-how-can-it-vary-between-nozzles <https://github.com/openpnp/openpnp/wiki/Nozzle-Tip-Calibration-Setup#what-is-the-bottom-camera-location-and-how-can-it-vary-between-nozzles> <https://github.com/openpnp/openpnp/wiki/Nozzle-Tip-Calibration-Setup#what-is-the-bottom-camera-location-and-how-can-it-vary-between-nozzles <https://github.com/openpnp/openpnp/wiki/Nozzle-Tip-Calibration-Setup#what-is-the-bottom-camera-location-and-how-can-it-vary-between-nozzles>> <https://github.com/openpnp/openpnp/wiki/Nozzle-Tip-Calibration-Setup#what-is-the-bottom-camera-location-and-how-can-it-vary-between-nozzles <https://github.com/openpnp/openpnp/wiki/Nozzle-Tip-Calibration-Setup#what-is-the-bottom-camera-location-and-how-can-it-vary-between-nozzles> <https://github.com/openpnp/openpnp/wiki/Nozzle-Tip-Calibration-Setup#what-is-the-bottom-camera-location-and-how-can-it-vary-between-nozzles <https://github.com/openpnp/openpnp/wiki/Nozzle-Tip-Calibration-Setup#what-is-the-bottom-camera-location-and-how-can-it-vary-between-nozzles>>>
> https://groups.google.com/d/msgid/openpnp/e60fe2f2-219d-44a3-8e0e-b770ddf0ae28n%40googlegroups.com <https://groups.google.com/d/msgid/openpnp/e60fe2f2-219d-44a3-8e0e-b770ddf0ae28n%40googlegroups.com> <https://groups.google.com/d/msgid/openpnp/e60fe2f2-219d-44a3-8e0e-b770ddf0ae28n%40googlegroups.com <https://groups.google.com/d/msgid/openpnp/e60fe2f2-219d-44a3-8e0e-b770ddf0ae28n%40googlegroups.com>> <https://groups.google.com/d/msgid/openpnp/e60fe2f2-219d-44a3-8e0e-b770ddf0ae28n%40googlegroups.com <https://groups.google.com/d/msgid/openpnp/e60fe2f2-219d-44a3-8e0e-b770ddf0ae28n%40googlegroups.com> <https://groups.google.com/d/msgid/openpnp/e60fe2f2-219d-44a3-8e0e-b770ddf0ae28n%40googlegroups.com <https://groups.google.com/d/msgid/openpnp/e60fe2f2-219d-44a3-8e0e-b770ddf0ae28n%40googlegroups.com>>> <https://groups.google.com/d/msgid/openpnp/e60fe2f2-219d-44a3-8e0e-b770ddf0ae28n%40googlegroups.com?utm_medium=email&utm_source=footer <https://groups.google.com/d/msgid/openpnp/e60fe2f2-219d-44a3-8e0e-b770ddf0ae28n%40googlegroups.com?utm_medium=email&utm_source=footer> <https://groups.google.com/d/msgid/openpnp/e60fe2f2-219d-44a3-8e0e-b770ddf0ae28n%40googlegroups.com?utm_medium=email&utm_source=footer <https://groups.google.com/d/msgid/openpnp/e60fe2f2-219d-44a3-8e0e-b770ddf0ae28n%40googlegroups.com?utm_medium=email&utm_source=footer>> <https://groups.google.com/d/msgid/openpnp/e60fe2f2-219d-44a3-8e0e-b770ddf0ae28n%40googlegroups.com?utm_medium=email&utm_source=footer <https://groups.google.com/d/msgid/openpnp/e60fe2f2-219d-44a3-8e0e-b770ddf0ae28n%40googlegroups.com?utm_medium=email&utm_source=footer> <https://groups.google.com/d/msgid/openpnp/e60fe2f2-219d-44a3-8e0e-b770ddf0ae28n%40googlegroups.com?utm_medium=email&utm_source=footer <https://groups.google.com/d/msgid/openpnp/e60fe2f2-219d-44a3-8e0e-b770ddf0ae28n%40googlegroups.com?utm_medium=email&utm_source=footer>>> <https://groups.google.com/d/msgid/openpnp/e60fe2f2-219d-44a3-8e0e-b770ddf0ae28n%40googlegroups.com?utm_medium=email&utm_source=footer <https://groups.google.com/d/msgid/openpnp/e60fe2f2-219d-44a3-8e0e-b770ddf0ae28n%40googlegroups.com?utm_medium=email&utm_source=footer> <https://groups.google.com/d/msgid/openpnp/e60fe2f2-219d-44a3-8e0e-b770ddf0ae28n%40googlegroups.com?utm_medium=email&utm_source=footer <https://groups.google.com/d/msgid/openpnp/e60fe2f2-219d-44a3-8e0e-b770ddf0ae28n%40googlegroups.com?utm_medium=email&utm_source=footer>>> <https://groups.google.com/d/msgid/openpnp/e60fe2f2-219d-44a3-8e0e-b770ddf0ae28n%40googlegroups.com?utm_medium=email&utm_source=footer <https://groups.google.com/d/msgid/openpnp/e60fe2f2-219d-44a3-8e0e-b770ddf0ae28n%40googlegroups.com?utm_medium=email&utm_source=footer> <https://groups.google.com/d/msgid/openpnp/e60fe2f2-219d-44a3-8e0e-b770ddf0ae28n%40googlegroups.com?utm_medium=email&utm_source=footer <https://groups.google.com/d/msgid/openpnp/e60fe2f2-219d-44a3-8e0e-b770ddf0ae28n%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.
> > >>>>>>         >> To view this discussion on the web visit
> > >>>>>>         >>
> > >>>>>>
> >
> https://groups.google.com/d/msgid/openpnp/0b2fa200-7681-4255-9d21-1ed4747bb763n%40googlegroups.com <https://groups.google.com/d/msgid/openpnp/0b2fa200-7681-4255-9d21-1ed4747bb763n%40googlegroups.com> <https://groups.google.com/d/msgid/openpnp/0b2fa200-7681-4255-9d21-1ed4747bb763n%40googlegroups.com <https://groups.google.com/d/msgid/openpnp/0b2fa200-7681-4255-9d21-1ed4747bb763n%40googlegroups.com>> <https://groups.google.com/d/msgid/openpnp/0b2fa200-7681-4255-9d21-1ed4747bb763n%40googlegroups.com <https://groups.google.com/d/msgid/openpnp/0b2fa200-7681-4255-9d21-1ed4747bb763n%40googlegroups.com> <https://groups.google.com/d/msgid/openpnp/0b2fa200-7681-4255-9d21-1ed4747bb763n%40googlegroups.com <https://groups.google.com/d/msgid/openpnp/0b2fa200-7681-4255-9d21-1ed4747bb763n%40googlegroups.com>>> <https://groups.google.com/d/msgid/openpnp/0b2fa200-7681-4255-9d21-1ed4747bb763n%40googlegroups.com?utm_medium=email&utm_source=footer <https://groups.google.com/d/msgid/openpnp/0b2fa200-7681-4255-9d21-1ed4747bb763n%40googlegroups.com?utm_medium=email&utm_source=footer> <https://groups.google.com/d/msgid/openpnp/0b2fa200-7681-4255-9d21-1ed4747bb763n%40googlegroups.com?utm_medium=email&utm_source=footer <https://groups.google.com/d/msgid/openpnp/0b2fa200-7681-4255-9d21-1ed4747bb763n%40googlegroups.com?utm_medium=email&utm_source=footer>> <https://groups.google.com/d/msgid/openpnp/0b2fa200-7681-4255-9d21-1ed4747bb763n%40googlegroups.com?utm_medium=email&utm_source=footer <https://groups.google.com/d/msgid/openpnp/0b2fa200-7681-4255-9d21-1ed4747bb763n%40googlegroups.com?utm_medium=email&utm_source=footer> <https://groups.google.com/d/msgid/openpnp/0b2fa200-7681-4255-9d21-1ed4747bb763n%40googlegroups.com?utm_medium=email&utm_source=footer <https://groups.google.com/d/msgid/openpnp/0b2fa200-7681-4255-9d21-1ed4747bb763n%40googlegroups.com?utm_medium=email&utm_source=footer>>> <https://groups.google.com/d/msgid/openpnp/0b2fa200-7681-4255-9d21-1ed4747bb763n%40googlegroups.com?utm_medium=email&utm_source=footer <https://groups.google.com/d/msgid/openpnp/0b2fa200-7681-4255-9d21-1ed4747bb763n%40googlegroups.com?utm_medium=email&utm_source=footer> <https://groups.google.com/d/msgid/openpnp/0b2fa200-7681-4255-9d21-1ed4747bb763n%40googlegroups.com?utm_medium=email&utm_source=footer <https://groups.google.com/d/msgid/openpnp/0b2fa200-7681-4255-9d21-1ed4747bb763n%40googlegroups.com?utm_medium=email&utm_source=footer>>> <https://groups.google.com/d/msgid/openpnp/0b2fa200-7681-4255-9d21-1ed4747bb763n%40googlegroups.com?utm_medium=email&utm_source=footer <https://groups.google.com/d/msgid/openpnp/0b2fa200-7681-4255-9d21-1ed4747bb763n%40googlegroups.com?utm_medium=email&utm_source=footer> <https://groups.google.com/d/msgid/openpnp/0b2fa200-7681-4255-9d21-1ed4747bb763n%40googlegroups.com?utm_medium=email&utm_source=footer <https://groups.google.com/d/msgid/openpnp/0b2fa200-7681-4255-9d21-1ed4747bb763n%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 on the web visit
> > >>>>>>         >
> > >>>>>>
> >
> https://groups.google.com/d/msgid/openpnp/5733d92b-d84c-44b4-a8f0-c75057a7d97f%40makr.zone <https://groups.google.com/d/msgid/openpnp/5733d92b-d84c-44b4-a8f0-c75057a7d97f%40makr.zone> <https://groups.google.com/d/msgid/openpnp/5733d92b-d84c-44b4-a8f0-c75057a7d97f%40makr.zone <https://groups.google.com/d/msgid/openpnp/5733d92b-d84c-44b4-a8f0-c75057a7d97f%40makr.zone>> <https://groups.google.com/d/msgid/openpnp/5733d92b-d84c-44b4-a8f0-c75057a7d97f%40makr.zone <https://groups.google.com/d/msgid/openpnp/5733d92b-d84c-44b4-a8f0-c75057a7d97f%40makr.zone> <https://groups.google.com/d/msgid/openpnp/5733d92b-d84c-44b4-a8f0-c75057a7d97f%40makr.zone <https://groups.google.com/d/msgid/openpnp/5733d92b-d84c-44b4-a8f0-c75057a7d97f%40makr.zone>>> <https://groups.google.com/d/msgid/openpnp/5733d92b-d84c-44b4-a8f0-c75057a7d97f%40makr.zone?utm_medium=email&utm_source=footer <https://groups.google.com/d/msgid/openpnp/5733d92b-d84c-44b4-a8f0-c75057a7d97f%40makr.zone?utm_medium=email&utm_source=footer> <https://groups.google.com/d/msgid/openpnp/5733d92b-d84c-44b4-a8f0-c75057a7d97f%40makr.zone?utm_medium=email&utm_source=footer <https://groups.google.com/d/msgid/openpnp/5733d92b-d84c-44b4-a8f0-c75057a7d97f%40makr.zone?utm_medium=email&utm_source=footer>> <https://groups.google.com/d/msgid/openpnp/5733d92b-d84c-44b4-a8f0-c75057a7d97f%40makr.zone?utm_medium=email&utm_source=footer <https://groups.google.com/d/msgid/openpnp/5733d92b-d84c-44b4-a8f0-c75057a7d97f%40makr.zone?utm_medium=email&utm_source=footer> <https://groups.google.com/d/msgid/openpnp/5733d92b-d84c-44b4-a8f0-c75057a7d97f%40makr.zone?utm_medium=email&utm_source=footer <https://groups.google.com/d/msgid/openpnp/5733d92b-d84c-44b4-a8f0-c75057a7d97f%40makr.zone?utm_medium=email&utm_source=footer>>> <https://groups.google.com/d/msgid/openpnp/5733d92b-d84c-44b4-a8f0-c75057a7d97f%40makr.zone?utm_medium=email&utm_source=footer <https://groups.google.com/d/msgid/openpnp/5733d92b-d84c-44b4-a8f0-c75057a7d97f%40makr.zone?utm_medium=email&utm_source=footer> <https://groups.google.com/d/msgid/openpnp/5733d92b-d84c-44b4-a8f0-c75057a7d97f%40makr.zone?utm_medium=email&utm_source=footer <https://groups.google.com/d/msgid/openpnp/5733d92b-d84c-44b4-a8f0-c75057a7d97f%40makr.zone?utm_medium=email&utm_source=footer>>> <https://groups.google.com/d/msgid/openpnp/5733d92b-d84c-44b4-a8f0-c75057a7d97f%40makr.zone?utm_medium=email&utm_source=footer <https://groups.google.com/d/msgid/openpnp/5733d92b-d84c-44b4-a8f0-c75057a7d97f%40makr.zone?utm_medium=email&utm_source=footer> <https://groups.google.com/d/msgid/openpnp/5733d92b-d84c-44b4-a8f0-c75057a7d97f%40makr.zone?utm_medium=email&utm_source=footer <https://groups.google.com/d/msgid/openpnp/5733d92b-d84c-44b4-a8f0-c75057a7d97f%40makr.zone?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.
> > >>>>>> To view this discussion on the web visit
> > >>>>>>
> >
> https://groups.google.com/d/msgid/openpnp/ac6af60d-2902-4e9c-a461-8e09c0a8e48an%40googlegroups.com <https://groups.google.com/d/msgid/openpnp/ac6af60d-2902-4e9c-a461-8e09c0a8e48an%40googlegroups.com> <https://groups.google.com/d/msgid/openpnp/ac6af60d-2902-4e9c-a461-8e09c0a8e48an%40googlegroups.com <https://groups.google.com/d/msgid/openpnp/ac6af60d-2902-4e9c-a461-8e09c0a8e48an%40googlegroups.com>> <https://groups.google.com/d/msgid/openpnp/ac6af60d-2902-4e9c-a461-8e09c0a8e48an%40googlegroups.com <https://groups.google.com/d/msgid/openpnp/ac6af60d-2902-4e9c-a461-8e09c0a8e48an%40googlegroups.com> <https://groups.google.com/d/msgid/openpnp/ac6af60d-2902-4e9c-a461-8e09c0a8e48an%40googlegroups.com <https://groups.google.com/d/msgid/openpnp/ac6af60d-2902-4e9c-a461-8e09c0a8e48an%40googlegroups.com>>> <https://groups.google.com/d/msgid/openpnp/ac6af60d-2902-4e9c-a461-8e09c0a8e48an%40googlegroups.com?utm_medium=email&utm_source=footer <https://groups.google.com/d/msgid/openpnp/ac6af60d-2902-4e9c-a461-8e09c0a8e48an%40googlegroups.com?utm_medium=email&utm_source=footer> <https://groups.google.com/d/msgid/openpnp/ac6af60d-2902-4e9c-a461-8e09c0a8e48an%40googlegroups.com?utm_medium=email&utm_source=footer <https://groups.google.com/d/msgid/openpnp/ac6af60d-2902-4e9c-a461-8e09c0a8e48an%40googlegroups.com?utm_medium=email&utm_source=footer>>> <https://groups.google.com/d/msgid/openpnp/ac6af60d-2902-4e9c-a461-8e09c0a8e48an%40googlegroups.com?utm_medium=email&utm_source=footer <https://groups.google.com/d/msgid/openpnp/ac6af60d-2902-4e9c-a461-8e09c0a8e48an%40googlegroups.com?utm_medium=email&utm_source=footer> <https://groups.google.com/d/msgid/openpnp/ac6af60d-2902-4e9c-a461-8e09c0a8e48an%40googlegroups.com?utm_medium=email&utm_source=footer <https://groups.google.com/d/msgid/openpnp/ac6af60d-2902-4e9c-a461-8e09c0a8e48an%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 on the web visit
> > >>>>>
> >
> https://groups.google.com/d/msgid/openpnp/50b03665-86a6-49f9-8b09-3e5bb6a6e257%40makr.zone <https://groups.google.com/d/msgid/openpnp/50b03665-86a6-49f9-8b09-3e5bb6a6e257%40makr.zone> <https://groups.google.com/d/msgid/openpnp/50b03665-86a6-49f9-8b09-3e5bb6a6e257%40makr.zone <https://groups.google.com/d/msgid/openpnp/50b03665-86a6-49f9-8b09-3e5bb6a6e257%40makr.zone>> <https://groups.google.com/d/msgid/openpnp/50b03665-86a6-49f9-8b09-3e5bb6a6e257%40makr.zone <https://groups.google.com/d/msgid/openpnp/50b03665-86a6-49f9-8b09-3e5bb6a6e257%40makr.zone> <https://groups.google.com/d/msgid/openpnp/50b03665-86a6-49f9-8b09-3e5bb6a6e257%40makr.zone <https://groups.google.com/d/msgid/openpnp/50b03665-86a6-49f9-8b09-3e5bb6a6e257%40makr.zone>>> <https://groups.google.com/d/msgid/openpnp/50b03665-86a6-49f9-8b09-3e5bb6a6e257%40makr.zone?utm_medium=email&utm_source=footer <https://groups.google.com/d/msgid/openpnp/50b03665-86a6-49f9-8b09-3e5bb6a6e257%40makr.zone?utm_medium=email&utm_source=footer> <https://groups.google.com/d/msgid/openpnp/50b03665-86a6-49f9-8b09-3e5bb6a6e257%40makr.zone?utm_medium=email&utm_source=footer <https://groups.google.com/d/msgid/openpnp/50b03665-86a6-49f9-8b09-3e5bb6a6e257%40makr.zone?utm_medium=email&utm_source=footer>>> <https://groups.google.com/d/msgid/openpnp/50b03665-86a6-49f9-8b09-3e5bb6a6e257%40makr.zone?utm_medium=email&utm_source=footer <https://groups.google.com/d/msgid/openpnp/50b03665-86a6-49f9-8b09-3e5bb6a6e257%40makr.zone?utm_medium=email&utm_source=footer> <https://groups.google.com/d/msgid/openpnp/50b03665-86a6-49f9-8b09-3e5bb6a6e257%40makr.zone?utm_medium=email&utm_source=footer <https://groups.google.com/d/msgid/openpnp/50b03665-86a6-49f9-8b09-3e5bb6a6e257%40makr.zone?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 on the web visit
> > >>>
> >
> https://groups.google.com/d/msgid/openpnp/ef3a715d-9934-4684-b51a-b1b9bfa320e4%40makr.zone <https://groups.google.com/d/msgid/openpnp/ef3a715d-9934-4684-b51a-b1b9bfa320e4%40makr.zone> <https://groups.google.com/d/msgid/openpnp/ef3a715d-9934-4684-b51a-b1b9bfa320e4%40makr.zone <https://groups.google.com/d/msgid/openpnp/ef3a715d-9934-4684-b51a-b1b9bfa320e4%40makr.zone>> <https://groups.google.com/d/msgid/openpnp/ef3a715d-9934-4684-b51a-b1b9bfa320e4%40makr.zone <https://groups.google.com/d/msgid/openpnp/ef3a715d-9934-4684-b51a-b1b9bfa320e4%40makr.zone> <https://groups.google.com/d/msgid/openpnp/ef3a715d-9934-4684-b51a-b1b9bfa320e4%40makr.zone <https://groups.google.com/d/msgid/openpnp/ef3a715d-9934-4684-b51a-b1b9bfa320e4%40makr.zone>>> <https://groups.google.com/d/msgid/openpnp/ef3a715d-9934-4684-b51a-b1b9bfa320e4%40makr.zone?utm_medium=email&utm_source=footer <https://groups.google.com/d/msgid/openpnp/ef3a715d-9934-4684-b51a-b1b9bfa320e4%40makr.zone?utm_medium=email&utm_source=footer> <https://groups.google.com/d/msgid/openpnp/ef3a715d-9934-4684-b51a-b1b9bfa320e4%40makr.zone?utm_medium=email&utm_source=footer <https://groups.google.com/d/msgid/openpnp/ef3a715d-9934-4684-b51a-b1b9bfa320e4%40makr.zone?utm_medium=email&utm_source=footer>>> <https://groups.google.com/d/msgid/openpnp/ef3a715d-9934-4684-b51a-b1b9bfa320e4%40makr.zone?utm_medium=email&utm_source=footer <https://groups.google.com/d/msgid/openpnp/ef3a715d-9934-4684-b51a-b1b9bfa320e4%40makr.zone?utm_medium=email&utm_source=footer> <https://groups.google.com/d/msgid/openpnp/ef3a715d-9934-4684-b51a-b1b9bfa320e4%40makr.zone?utm_medium=email&utm_source=footer <https://groups.google.com/d/msgid/openpnp/ef3a715d-9934-4684-b51a-b1b9bfa320e4%40makr.zone?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 on the web visit
> > >
> >
> https://groups.google.com/d/msgid/openpnp/05f8eb1e-aa48-4f08-8811-74583e22a89bn%40googlegroups.com <https://groups.google.com/d/msgid/openpnp/05f8eb1e-aa48-4f08-8811-74583e22a89bn%40googlegroups.com> <https://groups.google.com/d/msgid/openpnp/05f8eb1e-aa48-4f08-8811-74583e22a89bn%40googlegroups.com <https://groups.google.com/d/msgid/openpnp/05f8eb1e-aa48-4f08-8811-74583e22a89bn%40googlegroups.com>> <https://groups.google.com/d/msgid/openpnp/05f8eb1e-aa48-4f08-8811-74583e22a89bn%40googlegroups.com?utm_medium=email&utm_source=footer <https://groups.google.com/d/msgid/openpnp/05f8eb1e-aa48-4f08-8811-74583e22a89bn%40googlegroups.com?utm_medium=email&utm_source=footer> <https://groups.google.com/d/msgid/openpnp/05f8eb1e-aa48-4f08-8811-74583e22a89bn%40googlegroups.com?utm_medium=email&utm_source=footer <https://groups.google.com/d/msgid/openpnp/05f8eb1e-aa48-4f08-8811-74583e22a89bn%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 on the web visit
> >
> https://groups.google.com/d/msgid/openpnp/ea63487b-8598-4ef6-bc1c-de3fa7aefe14n%40googlegroups.com <https://groups.google.com/d/msgid/openpnp/ea63487b-8598-4ef6-bc1c-de3fa7aefe14n%40googlegroups.com> <https://groups.google.com/d/msgid/openpnp/ea63487b-8598-4ef6-bc1c-de3fa7aefe14n%40googlegroups.com?utm_medium=email&utm_source=footer <https://groups.google.com/d/msgid/openpnp/ea63487b-8598-4ef6-bc1c-de3fa7aefe14n%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 on the web visit
> https://groups.google.com/d/msgid/openpnp/44843c30-0311-4a20-8dcb-3c4598ab1489n%40googlegroups.com <https://groups.google.com/d/msgid/openpnp/44843c30-0311-4a20-8dcb-3c4598ab1489n%40googlegroups.com?utm_medium=email&utm_source=footer>.

mark maker

unread,
Jul 13, 2024, 12:24:05 PM (8 days ago) Jul 13
to ope...@googlegroups.com

> This is quite complicated even to understand what is implemented. Do we really need so much complexity?

Yes. If you want speed. Otherwise just set the focal plane at PCB Z as is still recommended for least problems.

If you want, speed, you don't need to understand the "why". Just the "how" (to setup). And I told you "how".  😉

Dynamic Safe Z is a speed optimization in itself , because it only lifts parts as high as needed to clear obstacles. The many small passives need not be lifted as high as the one or two bulky electrolyte capacitors. If you already have Dynamic Safe Z configured, then you automatically have the required Safe Z Zone, and following my advice is straight-forward.

> They don’t seem to care about part height but only z=0.

Is that so? Source?

> Considering the Bcam has auto-focus...

OpenPnP has auto-focus, only it is not camera auto-focus, instead we move the nozzle to focus on the part bottom, so we can auto-detect the part height, when a part is used for the very first time. So you don't need to enter it manually.

https://github.com/openpnp/openpnp/wiki/Up-looking-Camera-Auto-Focus

Please stay far, far away from auto-focus in cameras. They involve focus breathing, unstable lens axes(!), and are extremely slow to focus. Plus they are bulky and heavy. We don't want any of that.

For very short (i.e. not tall) parts it would be feasible to not adjust Z for part height. The camera being slightly out of focus is actually good for detection (sometimes we add an artificial blur stage to reduce noise anyways). But you must realize that bottom vision is then not as precise, because the scale (Units per Pixel) of any detected part shift is not known, with the part underside varying. For taller parts it likely needs more passes in vision (slower). We could try and compensate for scale at Z too but if you speak of "so much complexity" then that is!

But as Jan already explained: if you want Dynamic Safe Z for best speed, then the part is already at the right height, when you pass over the camera. So this discussion is quite useless. The discussion would become useful when we start talking about multi-camera bottom vision, i.e. detecting multiple nozzles at the same time, and they cannot be individually Z-adjusted as they have shared Z axes...but that's another level with bags of new problems. 😛

_Mark


On 13.07.2024 00:18, PP.ca wrote:

PP.ca

unread,
Jul 13, 2024, 2:26:50 PM (8 days ago) Jul 13
to OpenPnP
> If you want, speed, you don't need to understand the "why". Just the "how" (to setup). And I told you "how".  😉
OK, will try the "how". Very good to know the "why" too.

>> They don’t seem to care about part height but only z=0.

>Is that so? Source?

"seem" = hunch. Of course I have no proof, just a thought.

>OpenPnP has auto-focus
Very very good to know what to stay away from! Maybe this could be in bold and red on the hardware page.

Anyways, impressive what was implemented.

PS: "multi-camera bottom vision" - about that ...... :) I'll open a new thread.

bert shivaan

unread,
Jul 14, 2024, 1:38:27 PM (7 days ago) Jul 14
to ope...@googlegroups.com
"I’m wondering: how do commercial machines do it for flyby vision for probably 20 years?"

Also keep in mind those commercial machines use high speed analog cameras with frame grabber boards triggered by the motion system on the machine. This is thousands of dollars to implement and FAR beyond the scope of OpenPNP IMHO.

Now multiple cameras set to the pitch of your nozzles that seems like it could be doable. but far beyond my ability to help with.


Jan

unread,
Jul 15, 2024, 2:16:51 AM (6 days ago) Jul 15
to ope...@googlegroups.com
Hi Mark!

On 13.07.2024 18:23, 'mark maker' via OpenPnP wrote:
> /> This is quite complicated even to understand what is implemented. Do
> we really need so much complexity?/
>
> Yes. If you want speed. Otherwise just set the focal plane at PCB Z as
> is still recommended for least problems.
>
What problems do we have to watch out/expect if the focal plane of the
bottom camera is not at PCB Z anymore?

Jan
>> https://groups.google.com/d/msgid/openpnp/e60fe2f2-219d-44a3-8e0e-b770ddf0ae28n%40googlegroups.com <https://groups.google.com/d/msgid/openpnp/e60fe2f2-219d-44a3-8e0e-b770ddf0ae28n%40googlegroups.com> <https://groups.google.com/d/msgid/openpnp/e60fe2f2-219d-44a3-8e0e-b770ddf0ae28n%40googlegroups.com <https://groups.google.com/d/msgid/openpnp/e60fe2f2-219d-44a3-8e0e-b770ddf0ae28n%40googlegroups.com>> <https://groups.google.com/d/msgid/openpnp/e60fe2f2-219d-44a3-8e0e-b770ddf0ae28n%40googlegroups.com?utm_medium=email&utm_source=footer <https://groups.google.com/d/msgid/openpnp/e60fe2f2-219d-44a3-8e0e-b770ddf0ae28n%40googlegroups.com?utm_medium=email&utm_source=footer> <https://groups.google.com/d/msgid/openpnp/e60fe2f2-219d-44a3-8e0e-b770ddf0ae28n%40googlegroups.com?utm_medium=email&utm_source=footer <https://groups.google.com/d/msgid/openpnp/e60fe2f2-219d-44a3-8e0e-b770ddf0ae28n%40googlegroups.com?utm_medium=email&utm_source=footer>> <https://groups.google.com/d/msgid/openpnp/e60fe2f2-219d-44a3-8e0e-b770ddf0ae28n%40googlegroups.com?utm_medium=email&utm_source=footer <https://groups.google.com/d/msgid/openpnp/e60fe2f2-219d-44a3-8e0e-b770ddf0ae28n%40googlegroups.com?utm_medium=email&utm_source=footer> <https://groups.google.com/d/msgid/openpnp/e60fe2f2-219d-44a3-8e0e-b770ddf0ae28n%40googlegroups.com?utm_medium=email&utm_source=footer <https://groups.google.com/d/msgid/openpnp/e60fe2f2-219d-44a3-8e0e-b770ddf0ae28n%40googlegroups.com?utm_medium=email&utm_source=footer>>> <https://groups.google.com/d/msgid/openpnp/e60fe2f2-219d-44a3-8e0e-b770ddf0ae28n%40googlegroups.com?utm_medium=email&utm_source=footer <https://groups.google.com/d/msgid/openpnp/e60fe2f2-219d-44a3-8e0e-b770ddf0ae28n%40googlegroups.com?utm_medium=email&utm_source=footer> <https://groups.google.com/d/msgid/openpnp/e60fe2f2-219d-44a3-8e0e-b770ddf0ae28n%40googlegroups.com?utm_medium=email&utm_source=footer <https://groups.google.com/d/msgid/openpnp/e60fe2f2-219d-44a3-8e0e-b770ddf0ae28n%40googlegroups.com?utm_medium=email&utm_source=footer>>> <https://groups.google.com/d/msgid/openpnp/e60fe2f2-219d-44a3-8e0e-b770ddf0ae28n%40googlegroups.com?utm_medium=email&utm_source=footer <https://groups.google.com/d/msgid/openpnp/e60fe2f2-219d-44a3-8e0e-b770ddf0ae28n%40googlegroups.com?utm_medium=email&utm_source=footer> <https://groups.google.com/d/msgid/openpnp/e60fe2f2-219d-44a3-8e0e-b770ddf0ae28n%40googlegroups.com?utm_medium=email&utm_source=footer <https://groups.google.com/d/msgid/openpnp/e60fe2f2-219d-44a3-8e0e-b770ddf0ae28n%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.
>> > >>>>>>         >> To view this discussion on the web visit
>> > >>>>>>         >>
>> > >>>>>>
>> >
>> https://groups.google.com/d/msgid/openpnp/0b2fa200-7681-4255-9d21-1ed4747bb763n%40googlegroups.com <https://groups.google.com/d/msgid/openpnp/0b2fa200-7681-4255-9d21-1ed4747bb763n%40googlegroups.com> <https://groups.google.com/d/msgid/openpnp/0b2fa200-7681-4255-9d21-1ed4747bb763n%40googlegroups.com <https://groups.google.com/d/msgid/openpnp/0b2fa200-7681-4255-9d21-1ed4747bb763n%40googlegroups.com>> <https://groups.google.com/d/msgid/openpnp/0b2fa200-7681-4255-9d21-1ed4747bb763n%40googlegroups.com?utm_medium=email&utm_source=footer <https://groups.google.com/d/msgid/openpnp/0b2fa200-7681-4255-9d21-1ed4747bb763n%40googlegroups.com?utm_medium=email&utm_source=footer> <https://groups.google.com/d/msgid/openpnp/0b2fa200-7681-4255-9d21-1ed4747bb763n%40googlegroups.com?utm_medium=email&utm_source=footer <https://groups.google.com/d/msgid/openpnp/0b2fa200-7681-4255-9d21-1ed4747bb763n%40googlegroups.com?utm_medium=email&utm_source=footer>> <https://groups.google.com/d/msgid/openpnp/0b2fa200-7681-4255-9d21-1ed4747bb763n%40googlegroups.com?utm_medium=email&utm_source=footer <https://groups.google.com/d/msgid/openpnp/0b2fa200-7681-4255-9d21-1ed4747bb763n%40googlegroups.com?utm_medium=email&utm_source=footer> <https://groups.google.com/d/msgid/openpnp/0b2fa200-7681-4255-9d21-1ed4747bb763n%40googlegroups.com?utm_medium=email&utm_source=footer <https://groups.google.com/d/msgid/openpnp/0b2fa200-7681-4255-9d21-1ed4747bb763n%40googlegroups.com?utm_medium=email&utm_source=footer>>> <https://groups.google.com/d/msgid/openpnp/0b2fa200-7681-4255-9d21-1ed4747bb763n%40googlegroups.com?utm_medium=email&utm_source=footer <https://groups.google.com/d/msgid/openpnp/0b2fa200-7681-4255-9d21-1ed4747bb763n%40googlegroups.com?utm_medium=email&utm_source=footer> <https://groups.google.com/d/msgid/openpnp/0b2fa200-7681-4255-9d21-1ed4747bb763n%40googlegroups.com?utm_medium=email&utm_source=footer <https://groups.google.com/d/msgid/openpnp/0b2fa200-7681-4255-9d21-1ed4747bb763n%40googlegroups.com?utm_medium=email&utm_source=footer>>> <https://groups.google.com/d/msgid/openpnp/0b2fa200-7681-4255-9d21-1ed4747bb763n%40googlegroups.com?utm_medium=email&utm_source=footer <https://groups.google.com/d/msgid/openpnp/0b2fa200-7681-4255-9d21-1ed4747bb763n%40googlegroups.com?utm_medium=email&utm_source=footer> <https://groups.google.com/d/msgid/openpnp/0b2fa200-7681-4255-9d21-1ed4747bb763n%40googlegroups.com?utm_medium=email&utm_source=footer <https://groups.google.com/d/msgid/openpnp/0b2fa200-7681-4255-9d21-1ed4747bb763n%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 on the web visit
>> > >>>>>>         >
>> > >>>>>>
>> >
>> https://groups.google.com/d/msgid/openpnp/5733d92b-d84c-44b4-a8f0-c75057a7d97f%40makr.zone <https://groups.google.com/d/msgid/openpnp/5733d92b-d84c-44b4-a8f0-c75057a7d97f%40makr.zone> <https://groups.google.com/d/msgid/openpnp/5733d92b-d84c-44b4-a8f0-c75057a7d97f%40makr.zone <https://groups.google.com/d/msgid/openpnp/5733d92b-d84c-44b4-a8f0-c75057a7d97f%40makr.zone>> <https://groups.google.com/d/msgid/openpnp/5733d92b-d84c-44b4-a8f0-c75057a7d97f%40makr.zone?utm_medium=email&utm_source=footer <https://groups.google.com/d/msgid/openpnp/5733d92b-d84c-44b4-a8f0-c75057a7d97f%40makr.zone?utm_medium=email&utm_source=footer> <https://groups.google.com/d/msgid/openpnp/5733d92b-d84c-44b4-a8f0-c75057a7d97f%40makr.zone?utm_medium=email&utm_source=footer <https://groups.google.com/d/msgid/openpnp/5733d92b-d84c-44b4-a8f0-c75057a7d97f%40makr.zone?utm_medium=email&utm_source=footer>> <https://groups.google.com/d/msgid/openpnp/5733d92b-d84c-44b4-a8f0-c75057a7d97f%40makr.zone?utm_medium=email&utm_source=footer <https://groups.google.com/d/msgid/openpnp/5733d92b-d84c-44b4-a8f0-c75057a7d97f%40makr.zone?utm_medium=email&utm_source=footer> <https://groups.google.com/d/msgid/openpnp/5733d92b-d84c-44b4-a8f0-c75057a7d97f%40makr.zone?utm_medium=email&utm_source=footer <https://groups.google.com/d/msgid/openpnp/5733d92b-d84c-44b4-a8f0-c75057a7d97f%40makr.zone?utm_medium=email&utm_source=footer>>> <https://groups.google.com/d/msgid/openpnp/5733d92b-d84c-44b4-a8f0-c75057a7d97f%40makr.zone?utm_medium=email&utm_source=footer <https://groups.google.com/d/msgid/openpnp/5733d92b-d84c-44b4-a8f0-c75057a7d97f%40makr.zone?utm_medium=email&utm_source=footer> <https://groups.google.com/d/msgid/openpnp/5733d92b-d84c-44b4-a8f0-c75057a7d97f%40makr.zone?utm_medium=email&utm_source=footer <https://groups.google.com/d/msgid/openpnp/5733d92b-d84c-44b4-a8f0-c75057a7d97f%40makr.zone?utm_medium=email&utm_source=footer>>> <https://groups.google.com/d/msgid/openpnp/5733d92b-d84c-44b4-a8f0-c75057a7d97f%40makr.zone?utm_medium=email&utm_source=footer <https://groups.google.com/d/msgid/openpnp/5733d92b-d84c-44b4-a8f0-c75057a7d97f%40makr.zone?utm_medium=email&utm_source=footer> <https://groups.google.com/d/msgid/openpnp/5733d92b-d84c-44b4-a8f0-c75057a7d97f%40makr.zone?utm_medium=email&utm_source=footer <https://groups.google.com/d/msgid/openpnp/5733d92b-d84c-44b4-a8f0-c75057a7d97f%40makr.zone?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.
>> > >>>>>> To view this discussion on the web visit
>> > >>>>>>
>> >
>> https://groups.google.com/d/msgid/openpnp/ac6af60d-2902-4e9c-a461-8e09c0a8e48an%40googlegroups.com <https://groups.google.com/d/msgid/openpnp/ac6af60d-2902-4e9c-a461-8e09c0a8e48an%40googlegroups.com> <https://groups.google.com/d/msgid/openpnp/ac6af60d-2902-4e9c-a461-8e09c0a8e48an%40googlegroups.com <https://groups.google.com/d/msgid/openpnp/ac6af60d-2902-4e9c-a461-8e09c0a8e48an%40googlegroups.com>> <https://groups.google.com/d/msgid/openpnp/ac6af60d-2902-4e9c-a461-8e09c0a8e48an%40googlegroups.com?utm_medium=email&utm_source=footer <https://groups.google.com/d/msgid/openpnp/ac6af60d-2902-4e9c-a461-8e09c0a8e48an%40googlegroups.com?utm_medium=email&utm_source=footer> <https://groups.google.com/d/msgid/openpnp/ac6af60d-2902-4e9c-a461-8e09c0a8e48an%40googlegroups.com?utm_medium=email&utm_source=footer <https://groups.google.com/d/msgid/openpnp/ac6af60d-2902-4e9c-a461-8e09c0a8e48an%40googlegroups.com?utm_medium=email&utm_source=footer>>> <https://groups.google.com/d/msgid/openpnp/ac6af60d-2902-4e9c-a461-8e09c0a8e48an%40googlegroups.com?utm_medium=email&utm_source=footer <https://groups.google.com/d/msgid/openpnp/ac6af60d-2902-4e9c-a461-8e09c0a8e48an%40googlegroups.com?utm_medium=email&utm_source=footer> <https://groups.google.com/d/msgid/openpnp/ac6af60d-2902-4e9c-a461-8e09c0a8e48an%40googlegroups.com?utm_medium=email&utm_source=footer <https://groups.google.com/d/msgid/openpnp/ac6af60d-2902-4e9c-a461-8e09c0a8e48an%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 on the web visit
>> > >>>>>
>> >
>> https://groups.google.com/d/msgid/openpnp/50b03665-86a6-49f9-8b09-3e5bb6a6e257%40makr.zone <https://groups.google.com/d/msgid/openpnp/50b03665-86a6-49f9-8b09-3e5bb6a6e257%40makr.zone> <https://groups.google.com/d/msgid/openpnp/50b03665-86a6-49f9-8b09-3e5bb6a6e257%40makr.zone <https://groups.google.com/d/msgid/openpnp/50b03665-86a6-49f9-8b09-3e5bb6a6e257%40makr.zone>> <https://groups.google.com/d/msgid/openpnp/50b03665-86a6-49f9-8b09-3e5bb6a6e257%40makr.zone?utm_medium=email&utm_source=footer <https://groups.google.com/d/msgid/openpnp/50b03665-86a6-49f9-8b09-3e5bb6a6e257%40makr.zone?utm_medium=email&utm_source=footer> <https://groups.google.com/d/msgid/openpnp/50b03665-86a6-49f9-8b09-3e5bb6a6e257%40makr.zone?utm_medium=email&utm_source=footer <https://groups.google.com/d/msgid/openpnp/50b03665-86a6-49f9-8b09-3e5bb6a6e257%40makr.zone?utm_medium=email&utm_source=footer>>> <https://groups.google.com/d/msgid/openpnp/50b03665-86a6-49f9-8b09-3e5bb6a6e257%40makr.zone?utm_medium=email&utm_source=footer <https://groups.google.com/d/msgid/openpnp/50b03665-86a6-49f9-8b09-3e5bb6a6e257%40makr.zone?utm_medium=email&utm_source=footer> <https://groups.google.com/d/msgid/openpnp/50b03665-86a6-49f9-8b09-3e5bb6a6e257%40makr.zone?utm_medium=email&utm_source=footer <https://groups.google.com/d/msgid/openpnp/50b03665-86a6-49f9-8b09-3e5bb6a6e257%40makr.zone?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 on the web visit
>> > >>>
>> >
>> https://groups.google.com/d/msgid/openpnp/ef3a715d-9934-4684-b51a-b1b9bfa320e4%40makr.zone <https://groups.google.com/d/msgid/openpnp/ef3a715d-9934-4684-b51a-b1b9bfa320e4%40makr.zone> <https://groups.google.com/d/msgid/openpnp/ef3a715d-9934-4684-b51a-b1b9bfa320e4%40makr.zone <https://groups.google.com/d/msgid/openpnp/ef3a715d-9934-4684-b51a-b1b9bfa320e4%40makr.zone>> <https://groups.google.com/d/msgid/openpnp/ef3a715d-9934-4684-b51a-b1b9bfa320e4%40makr.zone?utm_medium=email&utm_source=footer <https://groups.google.com/d/msgid/openpnp/ef3a715d-9934-4684-b51a-b1b9bfa320e4%40makr.zone?utm_medium=email&utm_source=footer> <https://groups.google.com/d/msgid/openpnp/ef3a715d-9934-4684-b51a-b1b9bfa320e4%40makr.zone?utm_medium=email&utm_source=footer <https://groups.google.com/d/msgid/openpnp/ef3a715d-9934-4684-b51a-b1b9bfa320e4%40makr.zone?utm_medium=email&utm_source=footer>>> <https://groups.google.com/d/msgid/openpnp/ef3a715d-9934-4684-b51a-b1b9bfa320e4%40makr.zone?utm_medium=email&utm_source=footer <https://groups.google.com/d/msgid/openpnp/ef3a715d-9934-4684-b51a-b1b9bfa320e4%40makr.zone?utm_medium=email&utm_source=footer> <https://groups.google.com/d/msgid/openpnp/ef3a715d-9934-4684-b51a-b1b9bfa320e4%40makr.zone?utm_medium=email&utm_source=footer <https://groups.google.com/d/msgid/openpnp/ef3a715d-9934-4684-b51a-b1b9bfa320e4%40makr.zone?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 on the web visit
>> > >
>> >
>> https://groups.google.com/d/msgid/openpnp/05f8eb1e-aa48-4f08-8811-74583e22a89bn%40googlegroups.com <https://groups.google.com/d/msgid/openpnp/05f8eb1e-aa48-4f08-8811-74583e22a89bn%40googlegroups.com> <https://groups.google.com/d/msgid/openpnp/05f8eb1e-aa48-4f08-8811-74583e22a89bn%40googlegroups.com?utm_medium=email&utm_source=footer <https://groups.google.com/d/msgid/openpnp/05f8eb1e-aa48-4f08-8811-74583e22a89bn%40googlegroups.com?utm_medium=email&utm_source=footer> <https://groups.google.com/d/msgid/openpnp/05f8eb1e-aa48-4f08-8811-74583e22a89bn%40googlegroups.com?utm_medium=email&utm_source=footer <https://groups.google.com/d/msgid/openpnp/05f8eb1e-aa48-4f08-8811-74583e22a89bn%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 on the web visit
>> >
>> https://groups.google.com/d/msgid/openpnp/ea63487b-8598-4ef6-bc1c-de3fa7aefe14n%40googlegroups.com <https://groups.google.com/d/msgid/openpnp/ea63487b-8598-4ef6-bc1c-de3fa7aefe14n%40googlegroups.com?utm_medium=email&utm_source=footer <https://groups.google.com/d/msgid/openpnp/ea63487b-8598-4ef6-bc1c-de3fa7aefe14n%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.
>> To view this discussion on the web visit
>> https://groups.google.com/d/msgid/openpnp/44843c30-0311-4a20-8dcb-3c4598ab1489n%40googlegroups.com <https://groups.google.com/d/msgid/openpnp/44843c30-0311-4a20-8dcb-3c4598ab1489n%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 on the web visit
> https://groups.google.com/d/msgid/openpnp/fa085a1a-d0bd-47a0-94fe-7c049883b769%40makr.zone <https://groups.google.com/d/msgid/openpnp/fa085a1a-d0bd-47a0-94fe-7c049883b769%40makr.zone?utm_medium=email&utm_source=footer>.

mark maker

unread,
Jul 15, 2024, 2:54:36 AM (6 days ago) Jul 15
to ope...@googlegroups.com

> What problems do we have to watch out/expect if the focal plane of the bottom camera is not at PCB Z anymore?

It's just a mechanical system that may behave differently up at Safe Z than down at PCB level. Machines habe become more elaborate, e.g., precision linear rails have become affordable and more common, so most of this may have gone. But for older DIY machine of the "Liteplacer class" with just "plastic wheels on extrusions" and other make-do designs, where everything is "bendy" etc., there might be effects like the vacuum tube being more compressed at safe Z and creating a different pressure and run-out (I'm just inventing something here, purely for illustration).

Plus you either need to understand the complexity and devise how to setup the machine, or follow much more complicated "recipes" by others. You need recalibration more often. And perhaps you need to let go to a degree and trust OpenPnP, even when it is asked too much to understand each and every rationale behind what it does.

_Mark

vespaman

unread,
Jul 15, 2024, 2:59:11 AM (6 days ago) Jul 15
to OpenPnP


Also keep in mind those commercial machines use high speed analog cameras with frame grabber boards triggered by the motion system on the machine. This is thousands of dollars to implement and FAR beyond the scope of OpenPNP IMHO.


Given that global shutter low cost camera modules are more and more available (also with external trigger, that could easily be triggered from the controller board), is it the exposure time that are the bottle neck of those cameras? Even with strong lights?

 - Micael


mark maker

unread,
Jul 15, 2024, 3:42:32 AM (6 days ago) Jul 15
to ope...@googlegroups.com

Non-OpenPnP-user SM, rolling his own PnP solution, demonstrated that it can be done. That's very impressive, but apparently involved using a proprietary industrial SDK which AFAIK excludes an Open Source and/or OS-portable implementation. Also, I don't know the real cost of his hardware (he said it was old). Clearly the machine is also extremely impressive in itself, as you can see by the perfectly acceptable placement even without vision (somewhat ironic 😂).

https://groups.google.com/g/openpnp/c/0YNIHQRU13k/m/-TSa4TNFAAAJ

Please read his post to understand which parts are with/without vision "with flyby vision (bottom row) and without vision (top row)".

https://youtu.be/sl7vsLik1O0

_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.

Jan

unread,
Jul 15, 2024, 3:53:28 AM (6 days ago) Jul 15
to ope...@googlegroups.com
Hi Micael!

On 15.07.2024 08:59, vespaman wrote:
>
>
>
>
IMHO fly-by-vision is just the final escalation state. In order to be
prepared, OpenPnP would first have to learn how to calculate and apply
bottom vision corrections in parallel with motion to the place location.
This involves, that retries are not practical anymore (or at least very
costly). Then OpenPnP would have to calculate some kind of path across
the camera so that bottom vision happens always that the same speed and
direction. Finally OpenPnP and the controller need to agree on some type
of API to send out a trigger to the camera.

Jan

vespaman

unread,
Jul 15, 2024, 5:22:33 AM (6 days ago) Jul 15
to OpenPnP

Non-OpenPnP-user SM, rolling his own PnP solution, demonstrated that it can be done. That's very impressive, but apparently involved using a proprietary industrial SDK which AFAIK excludes an Open Source and/or OS-portable implementation. Also, I don't know the real cost of his hardware (he said it was old). Clearly the machine is also extremely impressive in itself, as you can see by the perfectly acceptable placement even without vision (somewhat ironic 😂).

Yes, I remember that! I was also very impressed by both the machine and the software/firmware - what an achievement!


 - Micael

 

vespaman

unread,
Jul 15, 2024, 5:40:24 AM (6 days ago) Jul 15
to OpenPnP
Hi Jan!



måndag 15 juli 2024 kl. 09:53:28 UTC+2 skrev Jan:
Hi Micael!

IMHO fly-by-vision is just the final escalation state. In order to be
prepared, OpenPnP would first have to learn how to calculate and apply
bottom vision corrections in parallel with motion to the place location.
This involves, that retries are not practical anymore (or at least very
costly). Then OpenPnP would have to calculate some kind of path across
the camera so that bottom vision happens always that the same speed and
direction.
 
Yes, I am aware that OpenPnP needs a lot of work to do this, and I realize both that this may never happen, and also, that in fact on a dual nozzle machine, the benefit over a "dual camera" (one for each nozzle) is probably negligible.
But even so, I find this interesting to know, if the current low cost hardware  is up for the task or not. My gut feeling is that it should be OK, but I have not played around with it myself.
 
Finally OpenPnP and the controller need to agree on some type
of API to send out a trigger to the camera.

Could be that the controller simply manages this, and the only thing that needs to be done, is to tell the controller coordinates, where it should take the picture, and deliver this picture to OpenPnP. every time head fly over. I.e. the trigger never arrives to OpenPnP, only the picture some time later, over e.g. ethernet.
Or even simpler, running OpenPnP on a RPi5 or similar/faster SBC, and get the pictures natively from MIPI, triggered from controller.

I have this 'task' on my todo list to check the latency of my current up camera, and compare it to a RPi5 camera (same sensor, but on MIPI instead of USB3), to see if there's any improvements that can be had. Do you know if there's any way to measure this latency from within OpenPnP? If not, I think a python script could do it by toggling the up light.


  - Micael

mark maker

unread,
Jul 15, 2024, 6:29:19 AM (6 days ago) Jul 15
to ope...@googlegroups.com

There are much lower hanging fruit, like the currently missing feeder co-location optimization. 😇

As SM's machine ironically demonstrates, placement without vision is also an option, and there is basically one intertwined question:

Is the machine stiff and precise in itself?

If yes: you can likely place many of the numerous passives without vision. As for the few large but fine pitch ICs, the gain with fly-by is negligible.

If no: forget about all the fancy stuff like fly-by vision. It will simply never work, as SM laid out it is about micro-seconds, and triggering from FPGA hardware, not even an MCU being "real-time" enough, and you basically extrapolate from that one camera shot, i.e. no backlash and no machine vibration whatsoever can be present, which excludes many if not most machines in the OpenPnP biotope.

_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.

vespaman

unread,
Jul 15, 2024, 7:15:00 AM (6 days ago) Jul 15
to OpenPnP

There are much lower hanging fruit, like the currently missing feeder co-location optimization. 😇

Well, I'm sure there is, but still.. :-)
 

If no: forget about all the fancy stuff like fly-by vision. It will simply never work, as SM laid out it is about micro-seconds, and triggering from FPGA hardware, not even an MCU being "real-time" enough, and you basically extrapolate from that one camera shot, i.e. no backlash and no machine vibration whatsoever can be present, which excludes many if not most machines in the OpenPnP biotope.

OK, I can forget about it. But sub micro-second triggering on my machine, should be doable in code. The cortex M4 has 12cycle interrupt latency, and IIRC, it is running at 170mhz, we can get an interrupt from the closed loop hardware. And, even if this could would not work properly, even the most simple CPLD could be connected in parallel to the CPU on the closed loop circuitry signals, emitting the trigger pulse.
I do not know about latency on the trigger input of the camera modules, but I would assume that it is rather low.
Backlash can of course not be handled by this hardware. But maybe opencv could adjust for this?
Anyway, it is always interesting to discuss stuff. :-)

  - Micael

Jan

unread,
Jul 15, 2024, 8:48:40 AM (6 days ago) Jul 15
to ope...@googlegroups.com
On 15.07.2024 13:15, vespaman wrote:
> If *no*: forget about all the fancy stuff like fly-by vision. It
> will simply never work, as SM laid out it is about micro-seconds,
> and triggering from FPGA hardware, not even an MCU being "real-time"
> enough, and you basically extrapolate from that one camera shot,
> i.e. no backlash and no machine vibration whatsoever can be present,
> which excludes many if not most machines in the OpenPnP biotope.
>
> OK, I can forget about it. But sub micro-second triggering on my
> machine, should be doable in code. The cortex M4 has 12cycle interrupt
> latency, and IIRC, it is running at 170mhz, we can get an interrupt from

STMs are very nice in the way that one can link their timers to form
quite complicated structures. Then you'll generate the trigger in
hardware and have no latency by design.
You could also hijack the inner step generator loop and emit the
trigger in parallel with step pulses, again with no latency (suppose the
code can not be interrupted, as I assume for precise step calculation.).
Taking about jitter: is the jitter is in the order one step pulse
(which would be quite large to my understanding) the location jitter is
one step, so ~31um for me, which is only a little larger then my cameras
mm-per-pixel which is 23um. I assume, that jitter is less critical...

[...]
> Backlash can of course not be handled by this hardware. But maybe opencv
> could adjust for this?

IMHO irrelevant: if the nozzle crosses the camera always on the same
path, nozzle tip calibration would compensate for that as well. (In SMs
video it looks as if that's the case.)

Jan

vespaman

unread,
Jul 15, 2024, 9:16:13 AM (6 days ago) Jul 15
to OpenPnP
> OK, I can forget about it. But sub micro-second triggering on my
> machine, should be doable in code. The cortex M4 has 12cycle interrupt
> latency, and IIRC, it is running at 170mhz, we can get an interrupt from

STMs are very nice in the way that one can link their timers to form
quite complicated structures. Then you'll generate the trigger in
hardware and have no latency by design.

If this is possible, indeed the best solution!
 
You could also hijack the inner step generator loop and emit the
trigger in parallel with step pulses, again with no latency (suppose the
code can not be interrupted, as I assume for precise step calculation.).

Yes, but if I understand correctly, the resolution of the closed loop sensors, are about 13um, and we will know for sure that motors has arrived to this point if we would use it as base. But using the internal step ticker would be much simpler code, of course.
 
 - Micael

bert shivaan

unread,
Jul 15, 2024, 9:28:01 AM (6 days ago) Jul 15
to ope...@googlegroups.com
IMHO, to generate the trigger the simplest thing would be write a subroutine for the controller that can be called with g or m code. Have openPNP place the head at the start of the run, then invoke the routine.

The routine would then move the head in the direction and speed everytime as well as know when to trigger the shutter. at the end of the move tell openPNP its done . OpenPNP is then free to move on to placing the parts.It will appear seemless to us, even the next move could be sent from openPNP so the controller knows what to do after the camera routine is finished.
Durning this next move openPNP can evaluate the pics and make adjustments accordingly.

I am sure we could get Duet to help for their control board, not sure about the rest

--
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.

bert shivaan

unread,
Jul 15, 2024, 9:29:28 AM (6 days ago) Jul 15
to ope...@googlegroups.com
I havE NO IDEA how openPNP would know the PIcs are ready?

SM

unread,
Jul 15, 2024, 12:55:41 PM (6 days ago) Jul 15
to OpenPnP
Hello Mark !

>> .. proprietary industrial SDK ..

The camera SDK may be required for development and operation, but I don't think the open source code should contain any binaries. I guess the class declarations are sufficient and the user has to install the industrial camera driver, either for Linux or Windows.


>> Also, I don't know the real cost of his hardware (he said it was old)

Yes, my bottom vision camera sensor is quite old (python 1300 from 2016).
The total costs for my current machine (without electric cl feeders) were less than $1k for alu, ballscrews, rails, mechanics and $2.5k for servos, motors, cameras, electronics.
Of course, the electric CL feeders cost the most (~6k), but they are worth every penny.

But in my opinion, fly-by vision makes no sense at all for heads with shared axes and only two nozzles.

What saves a lot of time is if the components are brought to the focus height / transport height (separate Z-axes) immediately after the pick from feeder, so that no Z-moves are necessary during the bottom vision.
The lower the transport height (max. component height) is selected when designing the machine, the less time is lost on the already very slow Z-axes.

>> There are much lower hanging fruit, like the currently missing feeder co-location optimization.


I think so too, because a lot can be optimized in terms of transport routes and i solved it like this: when a project is created, the software gives me a recommendation as to which component should be in which slot in order to keep the transport routes short. Also the information about the feeders (bank, slot, part, offsets, etc.) is saved in the project file and can be displayed graphically for easier setup.

Jason wrote in 2018-11-29 this interesting sentence:

>> The next step for OpenPnP is probably a C++ / Qt rewrite.

I still think that's a great idea, because it would pave the way for an even faster connection to OpenCV and much easier access to industrial cameras.
Reply all
Reply to author
Forward
0 new messages