Fiducial vision improved for reflective/HASL fiducials

602 views
Skip to first unread message

ma...@makr.zone

unread,
Jun 4, 2023, 5:04:30 PM6/4/23
to OpenPnP
Hi all,

I've just improved fiducial vision, introducing a new Parallax View-Points method, where the fiducial is detected at an angle from two opposite and symmetric view-points. This will eliminate the old problem that the dark camera lens is reflected in the fiducial, instead of the bright light diffuser. A cheap alternative to co-axial lighting.


fiducial parallax vision.png

Obviously, taking two images instead of one will be slightly slower, but on the other hand I optimized fiducial vision to stop the iterative multi-pass detection as soon as the fiducial is detected accurate enough.

Other aspects of the Fiducial Vision have also been improved.

See the details here:

Available in the OpenPnP test version. Allow some minutes to deploy.

Any help in testing this in your real world situations is very welcome! :-)

_Mark


Zdenko Stanec

unread,
Jun 5, 2023, 9:17:01 AM6/5/23
to OpenPnP
Cheers Mark,

Looks promising as always, I will try to test this over the weekend and give you some info.

Zdenko,

Blowtorch

unread,
Jun 14, 2023, 7:16:58 AM6/14/23
to OpenPnP
You are such a star Mark, thank you for this.  I always had problems with detecting the fiducials on my panels, and planned to change the lighting for the camera, but it is such as hassle to get to those parts.  Will try and revert back as soon as time permits.

mark maker

unread,
Jun 29, 2023, 1:37:15 AM6/29/23
to ope...@googlegroups.com

@Blowtorch, @Zdenko, others,

have you been able to try? Any results?

I would also appreciate some ImageDebugWrite images, as personally I don't have any real HASL PCBs. Edit the pipeline and enable the "deb0" stage:

Then do some fiducial vision, with, and without parallax.

Then you'll find images in the  $HOME/.openpnp2/org.openpnp.vision.pipeline.stages.ImageWriteDebug folder. Please send some.

I can then also illustrate the Wiki entry better.  Thanks a lot! 😎

_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/1ba23588-47f9-48c9-8b7d-8a12382d63a7n%40googlegroups.com.

Zdenko Stanec

unread,
Jun 29, 2023, 5:13:56 PM6/29/23
to OpenPnP
Hey Mark,

Apologies Mark, had a lot of work lately. 🤠

I will need to recalibrate the Top camera as the second PnP machine is still in the build phase, after that I will do some tests and share some pictures here.

Zdenko,

Balázs Kiss

unread,
Jun 30, 2023, 1:42:33 AM6/30/23
to OpenPnP
Hi Mark,

we are also highly interested in the change you delivered, but are now unable to test it. We plan to deploy the new test version in 2 weeks in a new, more secure environment and would gladly share our experiences also. Thank you for your efforts in advance!

Best regards,
Balazs

Josef Plasil

unread,
Jun 30, 2023, 5:23:07 AM6/30/23
to OpenPnP
Hi Mark,
I can test it immediately, but how could I switch on the Parallax View-Points method? Is this somewhere in Fiducial Vision Pipeline? Otherwise the process of fiducial points detection seems to me the same as previously, i.e. camera is focused on fiducial in center of view. BTW, I have got the latest OpenPnP test version (downloaded today) installed, but last date in change list is 2023-05-03 :-o. Or is there any download link to have more actual version, please?
Regards, Josef.

Dne pátek 30. června 2023 v 7:42:33 UTC+2 uživatel kbhu...@googlemail.com napsal:

mark maker

unread,
Jun 30, 2023, 5:38:50 AM6/30/23
to ope...@googlegroups.com

Hi Josef,

not every feature is listed in the Release Notes (especially in the test version). Look at the date at the top.

You'll see the new Parallax Diameter setting in the Fiducial Locator settings:

Instructions for Use are here:

https://github.com/openpnp/openpnp/pull/1565

_Mark

You received this message because you are subscribed to a topic in the Google Groups "OpenPnP" group.
To unsubscribe from this topic, visit https://groups.google.com/d/topic/openpnp/20rW8feVfbI/unsubscribe.
To unsubscribe from this group and all its topics, send an email to openpnp+u...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/openpnp/ca41c5c3-e668-4bf5-9d95-4816cbcd630dn%40googlegroups.com.

Josef Plasil

unread,
Jun 30, 2023, 7:06:03 AM6/30/23
to OpenPnP
Dear Mark,
thanks. OK. Confirmed, everything works like a charm.
I'm sending pictures:  https://we.tl/t-nvXTBAazxm  they are too big to send them attached to this message ... and with picture of Fiducial Vision Pipeline settings, which works for me perfectly, both - with or without Parallax View-Points method.
Regards, Josef.

Zdenko Stanec

unread,
Jul 1, 2023, 3:05:26 PM7/1/23
to OpenPnP
Hey Mark, 

I tested the Parallax feature which worked nicely for me.

Sharing some photos, please find them on this link: https://we.tl/t-URI3INIV54

- Parallax_0deg - 5, 10, 15, 20, 25mm
- Parallax_45deg - 5, 10, 15, 20, 25mm
- Parallax_90deg - 5, 10, 15mm
- Parallax with Diag - 10, 15, 20, 25mm
- one Normal photo, and Normal photo with Diag

How does "Max Vision passes" work, if I understand it right from the https://github.com/openpnp/openpnp/pull/1565,  it should only "try" a "n" amount of time if the fiducial is not recognized in the process right?

Zdenko,

Zdenko Stanec

unread,
Jul 1, 2023, 3:20:34 PM7/1/23
to OpenPnP
It seems some pictures are broken on the previous link, sharing a new link: https://we.tl/t-ryfdsCD3m5

Zdenko,

Jim Young

unread,
Jul 1, 2023, 10:24:47 PM7/1/23
to OpenPnP
Mark, thanks for the new feature! I was having some problems with getting reliable fiducial sensing on some boards with highly reflective surfacing and this new sensing mode works very reliably.

I do have one question - What is the purpose of the Parallax Angle setting? If Parallax Diameter determines the distance between the two readings, with the fiducial in the center, this also creates an angle between the known fiducial position and the sensing position. I just left Parallax Angle at zero, which seems to work fine.

mark maker

unread,
Jul 2, 2023, 7:23:23 AM7/2/23
to ope...@googlegroups.com

Thank you Josef!

It seems your diffuser is very diffuse and covering very close to the camera (nicely done, please share your construction!) . Your fiducials are a bit roughed up and have quite regular edge beveling that reflects outwards, so the vision surely works even without parallax.

But still: it is shown that with parallax it appears brighter and fuller.

Perhaps one day you get a PCB with more reflective HASL (I've seen examples by users with almost mirror-quality), or where the beveling is very asymmetric (seen this too), so the parallax option could still become useful. 😎

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

mark maker

unread,
Jul 2, 2023, 7:53:16 AM7/2/23
to ope...@googlegroups.com

Thank you Zdenko,

your diffuser seems to have a large hole, right?

You need to go all the way out to get half decent reflection, and for large parts of the center it is almost black:

In fact it is so black that it contrasts enough with the PCB material, so fiducial vision works too. 😂


If you ever want to improve the diffuser, move it as close a possible to the camera lens front without causing shadows, and then make the smallest hole for the camera to peek through.



> How does "Max Vision passes" work, if I understand it right from the https://github.com/openpnp/openpnp/pull/1565,  it should only "try" a "n" amount of time if the fiducial is not recognized in the process right?

The vision must always give a recognized fiducial, otherwise it will fail immediately, so it's not about "not recognizing", it's about iteratively improving the result.

The "ideal" behind all this is symmetry. With symmetry we can eliminate many kinds of errors, because they happen on both side equally, so the can be cancelled out.

With the normal fiducial detector (without parallax) we want the fiducial to be in the center of the camera, or more importantly perpendicularly below the camera position. This way we are sure that any imprecision in the assumed scale (Z of the PCB and/or in the calibration of Units per Pixel), or distortions of the camera lens or whatever do not matter, because however large or small these errors are, they can be assumed to be symmetric, i.e. the same on both sides of the fiducial.

With the parallax fiducial detector, this is even more important, obviously, because these errors (if present) will become quite large due to the large distance, so we absolutely need to cancel them out.

After a vision pass where we detect the fiducial (with either method), we get the detected location. If that location is quite far away from what we expected, we can no longer assume that symmetry helped us cancel out the errors. So we re-center the camera to the detected location and repeat. The errors due to missing symmetry will typically be small in comparison with how far we were off, so we can assume that each time we repeat this, the result will get better and better.

The "Max Vision passes" limits how many times this can happen. However, ideally it will stop before that, due to the detected offsets being small enough.

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

mark maker

unread,
Jul 2, 2023, 8:33:16 AM7/2/23
to ope...@googlegroups.com

> I do have one question - What is the purpose of the Parallax Angle setting?

The Parallax Angle determines the angle at which the opposite view-points are spaced from each other in the X/Y plane. Choose an angle which favors the faster axis of your machine: 0° favors X, 90° favors Y.

Other angles might be used to target a specific LED pair in a LED ring reflection.

Using just a random image from the group here for illustration: As you see, some diffusers cannot completely equalize the brightness (that's okay). So it might make sense to rotate the parallax so it puts a single LED reflection smack on the fiducial.

(image by Philip)

_Mark

--
You received this message because you are subscribed to a topic in the Google Groups "OpenPnP" group.
To unsubscribe from this topic, visit https://groups.google.com/d/topic/openpnp/20rW8feVfbI/unsubscribe.
To unsubscribe from this group and all its topics, send an email to openpnp+u...@googlegroups.com.

Zdenko Stanec

unread,
Jul 2, 2023, 8:47:26 AM7/2/23
to OpenPnP
Hi Mark,

I had a similar design to what you described in the past and I was not so happy because I can see the reflection of the LED-s on the PCB surface. :D

This was the design, close as possible to the camera with M37 thread to screw and test some standard lenses. (there is no diffusor on this picture but I had one).

20230402_184006_1440x1080.jpg

After that, I went with this design which pretty much eliminated reflection in the middle of the PCB, still with M37 thread to test some lenses.

20230512_193054_1440x1080.jpg


Zdenko,

Jim Young

unread,
Jul 2, 2023, 10:20:48 AM7/2/23
to OpenPnP
"The Parallax Angle determines the angle at which the opposite view-points are spaced from each other in the X/Y plane. Choose an angle which favors the faster axis of your machine: 0° favors X, 90° favors Y."

It was the X,Y part I didn't get. Makes perfect sense now. Thanks!

Josef Plasil

unread,
Jul 2, 2023, 11:16:48 AM7/2/23
to OpenPnP
Hi Mark,
thanks for your appreciation :-), I am sending the pictures of construction attached.
The diffusor is made from old LCD TV, where such plastic material (structured plastic glass of 2mm thickness) is available. I milled it in my milling machine, therefore it is accurate. The diffusor is "sticked" by magnets on screws. Everythig is clearly visible at pictures ;-).
I can see two failings in my design up to the moment:
1) Y axis has one stepper motor driving also shaft for 2 linear guide rails (you can see it at picture 1b...) - this is most probably (in combination with TMC2209 driver for this motor,  flexibility of GT2 6mm chain, and 12V of power supply voltage :-o) the reason for error of approx. 0.15 mm in Y movement (you recognized it in other thread ;-) ).
2) strange behaviour of bottom camera components position / rotation compensation ... the components are placed not so accurately (rotation is OK and there are  different position deviations on the PCB approx 0.5 mm). And the issue is here despite the fact button "Test Alignment" works perfectly and also "Position the camera at the placement's location" button works very well. I still don't know, how could I dignose this issue, but I am working on it. If you have some idea, it will be appreciated.
Regards, Josef.
Dne neděle 2. července 2023 v 13:23:23 UTC+2 uživatel ma...@makr.zone napsal:
02_OpenPnP_Machine_TopCamera.jpg
04_OpenPnP_Machine_Diffuser.jpg
03_OpenPnP_Machine_TopCameraWithDiffuser.jpg
01a_OpenPnP_Machine_Front.jpg
01b_OpenPnP_Machine_Back.jpg

Josef Plasil

unread,
Jul 2, 2023, 2:09:40 PM7/2/23
to OpenPnP
I am sending the view on bottom camera with backlight yet - it is completely same as top one. I am using successfully bottom camera without diffuser , I have just decreased exposition.
Regards, Josef.
Dne neděle 2. července 2023 v 17:16:48 UTC+2 uživatel Josef Plasil napsal:
05_Camera_BackLight.jpg

Jorgen Nielsen

unread,
Jul 8, 2023, 2:12:36 PM7/8/23
to ope...@googlegroups.com
Hi Mark


Sorry I have been away then busy catching up with other  stuff.  I will test this coming week.

You received this message because you are subscribed to a topic in the Google Groups "OpenPnP" group.
To unsubscribe from this topic, visit https://groups.google.com/d/topic/openpnp/20rW8feVfbI/unsubscribe.
To unsubscribe from this group and all its topics, send an email to openpnp+u...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/openpnp/2a4aa374-bb13-5d34-349c-e7fd61a6de88%40makr.zone.

Blowtorch

unread,
Jul 10, 2023, 3:15:11 PM7/10/23
to OpenPnP
Hi Mark

Installed latest test version 2023-07-08_18-14-24.8a4e93d

New fiducial locator vision is great - for the first time, I find it fiducials are useable.  Before I was forced to set placement using components.

I generated 3 examples, shared with you via dropbox, each set of pics in own subfolder.  What is interesting with the panel I used, is that the break away rails are covered with dots the same size as fiducials, but it finds them 100% anyway.  Happiness.  Thank you.

Would you like me to do another panel and generate diags?

Regards Jorgen 

Blowtorch

unread,
Jul 10, 2023, 3:41:06 PM7/10/23
to OpenPnP
Hi Mark

OK I did a second panel, uploaded all fiducial images to dropbox folder shared with you.

Regards Jorgen

mark maker

unread,
Jul 11, 2023, 3:35:03 AM7/11/23
to ope...@googlegroups.com

Hi Blowtorch,

> New fiducial locator vision is great - for the first time, I find it fiducials are useable.  Before I was forced to set placement using components.

Very glad to hear that  😅

> I generated 3 examples, shared with you via dropbox, each set of pics in own subfolder. 

Thanks for trying to share the images, however (as already explained in the PM), I would not like to register with Drop Box, so please either use a different service or attach the best few images (before/after) directly to posts here.

> What is interesting with the panel I used, is that the break away rails are covered with dots the same size as fiducials, but it finds them 100% anyway.  Happiness.  Thank you.

Then all is good 😎, but still, I'm also interested. Do you use the latest stock pipeline? With the DetectCircularSymmetry stage?

_Mark

Blowtorch

unread,
Jul 11, 2023, 4:14:55 AM7/11/23
to OpenPnP
OK herewith some pics attached.  The others are similar, shout if I should upload more?

Re pipeline, not sure how to select different pipelies.  I do remember having to create a part and package to define the fiducial, but that was last year sometime and I really cannot remember how I did it.  If I edit the pipeline, here is the text:
<cv-pipeline>
   <stages>
      <cv-stage class="org.openpnp.vision.pipeline.stages.CreateFootprintTemplateImage" name="template" enabled="true" footprint-view="Fiducial" minimal-image-size="false" x-offset="0.0" y-offset="0.0" rotation="0.0" max-width="0.0" max-height="0.0" property-name="footprint">
         <pads-color r="255" g="255" b="255" a="255"/>
         <body-color r="0" g="0" b="0" a="255"/>
         <background-color r="0" g="0" b="0" a="255"/>
      </cv-stage>
      <cv-stage class="org.openpnp.vision.pipeline.stages.ImageWriteDebug" name="debug_template" enabled="true" prefix="fidloc_template_" suffix=".png"/>
      <cv-stage class="org.openpnp.vision.pipeline.stages.ConvertColor" name="template_gray" enabled="true" conversion="Bgr2Gray"/>
      <cv-stage class="org.openpnp.vision.pipeline.stages.ImageCapture" name="image" enabled="true" default-light="true" settle-option="Settle" count="1"/>
      <cv-stage class="org.openpnp.vision.pipeline.stages.ConvertColor" name="image_gray" enabled="true" conversion="Bgr2Gray"/>
      <cv-stage class="org.openpnp.vision.pipeline.stages.ImageWriteDebug" name="debug_original" enabled="true" prefix="fidloc_original_" suffix=".png"/>
      <cv-stage class="org.openpnp.vision.pipeline.stages.MatchTemplate" name="match_template" enabled="true" template-stage-name="template_gray" threshold="0.699999988079071" corr="0.8500000238418579" normalize="true"/>
      <cv-stage class="org.openpnp.vision.pipeline.stages.ImageRecall" name="recall_image" enabled="true" image-stage-name="image"/>
      <cv-stage class="org.openpnp.vision.pipeline.stages.DrawTemplateMatches" name="draw_matches" enabled="true" template-matches-stage-name="match_template"/>
      <cv-stage class="org.openpnp.vision.pipeline.stages.ConvertModelToKeyPoints" name="results" enabled="true" model-stage-name="match_template"/>
      <cv-stage class="org.openpnp.vision.pipeline.stages.DrawKeyPoints" name="draw_keypoints" enabled="true" key-points-stage-name="results"/>
      <cv-stage class="org.openpnp.vision.pipeline.stages.ImageWriteDebug" name="debug_results" enabled="true" prefix="fidloc_results_" suffix=".png"/>
   </stages>
</cv-pipeline> 

fidloc_original_1689015741243379400.png
fidloc_results_1689015741384194900.png
fidloc_results_1689015740662350700.png
fidloc_original_1689015740533157500.png

mark maker

unread,
Jul 11, 2023, 7:22:54 AM7/11/23
to ope...@googlegroups.com

Thanks! Nice case.

First, I think you should add more parallax, the reflection in the green PCB is more intensive out there, and the fiducial is still at "half moon", it should be "full moon" 😁:

> Re pipeline, not sure how to select different pipelines.

This is the old pipeline. Can you please try with the new stock pipeline?

How?

  1. Make sure to have View / Selections in Tables / Linked enabled.
  2. In the Placements table, select the fiducial in question.

Go to the Parts tab, the fiducial part should be selected, and then select the  Stock Fiducial Vision Settings:

Go to the Fiducial Vision Settings detail tab and press the Specialize for ... button:

Then press Pipeline Edit and enable the "deb0" and "deb1" stages, for debug image writing:

Also note the presence of the DetectCircularSymmetry stage that indicates this is in-deed a modern stock pipeline.

Then retry with this pipeline. The source images should now be in color (that's how I like them for the Wiki 😎).

Thanks for your help in testing and documentation! 💯

_Mark

Blowtorch

unread,
Jul 12, 2023, 10:39:51 AM7/12/23
to OpenPnP
Hi Mark

OK, so pulled in the new pipeline.  Set Parallax Diameter to 12, as manually jogging to the left and right revealed the fiducial was well lit at 5mm, but better at 6mm offset.  I placed a ruler with mm marks so you can see exactly what is happening.

Thank you for all the help you have provided!

Regards Jorgen
fidloc_results_1689172480914540600.png
fidloc_results_1689172480135550800.png

mark maker

unread,
Jul 12, 2023, 10:53:49 AM7/12/23
to ope...@googlegroups.com

Wow, now that fiducial is truly "full moon". 😎

But it still uses the old pipeline, as is evident by the rectangles with scores.

And once you've chnaged the pipeline, please also provide

  • Source image of the centered fiducial (no parallax).
  • Source (not result) image of the parallax fiducial

Thank you, 😁

_Mark.

Blowtorch

unread,
Jul 12, 2023, 11:31:03 AM7/12/23
to OpenPnP
Not sure now how I had selected the pipeline previously, but I did do edit and see the correct items.  I think I updated package but then did check from job, where the job maybe had the old defined?

Anyway, did it all again, and here is something interesting.  Using new pipeline, and doing a job based, whole panel fiducial check of all 4 fiducial, the system does NOT correctly find all 4.  It does find something, and end successfully, but with the board location being offset incorrectly.  Not good if a real job!

Now, using the old pipeline, it does find all 4 just fine.  The problem, is that one panel off mine, with the light green dots.  This fools the new pipeline, but not the old one.

The issue now, is that 1 check is generating 29MB of pictures.  I tried running a "resize", but that only brings it down to 15MB.  Can I select specific pics for you and upload, or should I zip and send whole lot?


Blowtorch

unread,
Jul 12, 2023, 12:42:54 PM7/12/23
to OpenPnP
snapshot of fiducial, centred, and snapshot of fiducial, offset by 6mm
Top_2023-07-12_18.41.29.099.png
Top_2023-07-12_18.41.02.999.png

Blowtorch

unread,
Jul 12, 2023, 12:44:31 PM7/12/23
to OpenPnP
Results from testing fiducial, starting +- 0.5mm from actual fiducial... 
fidloc_results_1689179877207677500.png

mark maker

unread,
Jul 12, 2023, 12:44:45 PM7/12/23
to ope...@googlegroups.com

Yeah, I feared as much. That's why I wanted you to try, honestly. 😇

As you correctly guessed, the problem is the many very similar green-coated dots and it seems those are equally attractive for DetectCircularSymmetry.

The "clean" way to adjust this is by reducing the fiducial locator  Max. Distance to be less than half the distance to the nearest green-coated dot of your PCB. From your images, and assuming the typical 1mm fiducial and 2mm mask diameter, it seems the nearest green dot is about 1.5mm away, so ~0.7mm is the Max. Distance you can live with:

Go to Machine Setup / Vision / Fiducial Locator and adjust it accordingly, press Apply:

So you need to make sure, you got your PCB hand-positioned within the ±0.7mm of where the camera will position to each fiducial. Assuming not all the fiducials have green dots so near, this tight tolerance would then also generate a proper error when that is not the case, instead of wrongly positioning (and skewing) the PCB and then messing up placements.

Note, this is a good thing. It was necessary for your "special" PCB. It's and not a flaw of the new pipeline. With 0.7mm it should then work very reliably. Otherwise it's a bug that I'll fix! 😁

Just to illustrate that point: an alternative way would be to make the new pipeline behave like the old one. You can go into the pipeline to the DetectCircularSymmetry stage and increase the maxTargetCount. But before you do that, read on:

The detection then takes the nearest fiducial of the detected target list, so it will work in some cases. But you must note that this actually boils down to the same thing: if the position of the camera is more than half-way from the true fiducial towards a wrong green dot, it will take the wrong one! So you still need to make sure you got your PCB positioned within the ±0.7mm. But what's worse: you won't get the proper error and your placements will be messed up!

And to close the argument: that is actually also true for the old pipeline, for the same reason! 😉

More as a side remark: the DetectCircularSymmetry stage also uses much more computation time when maxTargetCount is more than 1, so we don't want that.

Finally, erm, the whole issue will perhaps teach "somebody" to not design the PCB like that in the future 😇. Even just a significantly different diameter would help...

> The issue now, is that 1 check is generating 29MB of pictures. 

I just use three good images:

  1. Source image without parallax (fiducial centered).
  2. Source images of both sides with parallax (as "full moon" as possible, maybe make the parallax even a bit more) 😎

_Mark

Blowtorch

unread,
Jul 12, 2023, 12:46:57 PM7/12/23
to OpenPnP
fidloc_results_1689179880810339400.png
fidloc_results_1689179877918438200.png
fidloc_results_1689179878559726300.png
fidloc_results_1689179879301767300.png
fidloc_results_1689179880025249800.png

Blowtorch

unread,
Jul 12, 2023, 1:06:15 PM7/12/23
to OpenPnP
Al noted Mark.  It's 7PM here, and I am taking Mrs. Blowtorch for dinner, will resume this later tomorrow.  Thanks for all the good info.  BTW, the stock, old pipeline works 100% with no tweaks that I am aware of, other than the new offset search.

Re that panel, the "somebody" was either JLPCB or PCBWAY.  We submitted gerbers of the PCB for manufacture, and told them to turn the PCB into a panel, with breakaway tabs, fiducials.  None of our other panels are like that. Next time we will panelise ourselves so we have better control.

vespaman

unread,
Jul 12, 2023, 1:54:05 PM7/12/23
to OpenPnP
You are not alone!
I also have those circles on some of my panels from PCBWay, and have had (minor) issues with them as well, but I mostly rely on our own PCB fiducials over panel fiducials.

  - Micael

mark maker

unread,
Jul 12, 2023, 2:32:23 PM7/12/23
to ope...@googlegroups.com

> BTW, the stock, old pipeline works 100% with no tweaks that I am aware of, other than the new offset search.

Read what I wrote carefully, and you'll see where the caveat lies. 😉

And btw. the odl stock pipeline is still available and slightly modernized as Footprint Fiducial Vision Settings.

It also supports non-circular fiducials and now also in their properly rotated and offset form.

Enjoy Mrs. Blowtorch and meal!

🥂 🍗

_Mark

Blowtorch

unread,
Jul 13, 2023, 5:23:41 AM7/13/23
to OpenPnP
Hi Mark

Dinner and Mrs Blowtorch was great, thank you :)

I played around this morning, with updated old pipeline, and the new pipeline.  Reduced the max error distance per your recommendation, and as you say, by placing the panel correctly, everything worked 100% using both vision settings.  

Really annoying the dots!  I reviewed the manufacturing spec, the panel is from PCBWAY, and I could see no difference in the order compared to other, non-dotted panels they have made for us previously. 

I created new fiducial parts and packages, so that for the one job/panel with the little green dots I can assign different vision to them as opposed to the other "default" jobs/panels/fiducials.  Again, just experimenting - it's a good way to learn OpenPnP.      The max error seems to be a global setting, and not assignable to a part / package, but I am good with reducing the max error overall.  

I look forward to my next run.  You can see my method of holding down panels is crude but effective.  The base is galvanized sheet metal epoxied onto MDF.  On the left and bottom side, fixed alignment tabs serve to locate and hold hold the panel.  I slot a panel in place, then use 2 x magnetic holders to keep the pcb locked in place, one on top and one on the bottom.  Very simple 3d printed part with strong neodynium magnet.  I have extra ones for non-rectangular boards.  My machine was supposed to have marine grade SS base, but it arrived with unacceptable warp. 

I would say the new new Parallax View-Points method is a success.  It certainly solved problems that have persisted for me previously.  

Shout if you want more pics / diagnostics?  

mark maker

unread,
Jul 13, 2023, 6:22:02 AM7/13/23
to ope...@googlegroups.com

> The max error seems to be a global setting, and not assignable to a part / package...

Yes, it also occurred to me that this should be moved to the individual settings. I will keep this in mind and change that when I next touch that code.

> Very simple 3d printed part with strong neodynium magnet.

I gave up everything magnets, after I found that they sucked out my 0402 resistors right from the tape pocket, from astonishingly far away, sometimes they were also just flipped in their pocket. Apparently the very plain-vanilla SMT resistors from Digikey have ferro-magnetic contacts.

>I would say the new new Parallax View-Points method is a success.  It certainly solved problems that have persisted for me previously.  

Good!

However, also try it without parallax, but with the new Circular Symmetry pipeline. This might also already solve the problem, because Circular Symmetry should be happy with just a "solar corona" instead of a "full moon", and you seem to get that in the centered image. If this "corona" is always so even, it should work:

Yes, it devalues the parallax extension a bit (and this if what the thread is about 😅), but if it robustly works for you with just the corona, it is faster, of course.


> Shout if you want more pics / diagnostics? 

Thanks for the offer! I was thinking about making an animation out of the images, to illustrate how it works. So I would need:
  1. One centered, source
  2. One centered, result with new pipeline
  3. One left parallax, source
  4. One left parallax, result with new pipeline (getting the right one, of course)
  5. One right parallax, source
  6. One right parallax, result with new pipeline (getting the right one, of course)

No hurry. Thanks again.

_Mark

mark maker

unread,
Jul 13, 2023, 6:27:09 AM7/13/23
to ope...@googlegroups.com

I should have used the term "solar eclipse" instead of "solar corona" 😎

https://upload.wikimedia.org/wikipedia/commons/2/20/Annular_2003-05-31_Culloden.png

https://commons.wikimedia.org/wiki/File:Annular_2003-05-31_Culloden.png

Blowtorch

unread,
Jul 13, 2023, 4:48:50 PM7/13/23
to OpenPnP
Ok on magnets, and thanks for heads up.  Mine are 265mm from feeder pick location, but could be placed as close as +- 10mm to magnet clamp holding PCB.  So the vacuum could be overcome by magnet I guess.  I will keep an eye out for this.  My machine is a bit of a frankenstein, as I built it from scratch out of my head, no plans, without a clear understanding of specific end goal, having never used a PnP machine before.  Just watched YT videos on how they work.  As time passes, I get more inclined to rebuild it, taking into account new knowledge and experience.  But it works, reliably enough to start a job and go make coffee.

Will do the pics tomorrow.   When you say source, you mean jog to position, and take snapshot?

 Solar corona is good.  

Blowtorch

unread,
Jul 14, 2023, 3:12:56 AM7/14/23
to OpenPnP
Centre snapshots, then 3mm and 6mm camera offsets, in x only.
centre.pngleft 3mm.pngleft 6mm.png

Blowtorch

unread,
Jul 14, 2023, 3:14:19 AM7/14/23
to OpenPnP
Centre snapshots, then 3mm and 6mm camera offsets, in x only, this time to the rightcentre.pngright 3mm.pngright 6mm.png

Blowtorch

unread,
Jul 14, 2023, 3:16:22 AM7/14/23
to OpenPnP
pipeline debug images
fidloc_results_1689318379421588600.pngfidloc_results_1689318378742261300.png

mark maker

unread,
Jul 14, 2023, 4:39:26 AM7/14/23
to ope...@googlegroups.com

Thanks a lot! 😎

Jim Young

unread,
Jul 14, 2023, 9:48:36 AM7/14/23
to OpenPnP
Kind of off thread, but it was previously mentioned: Regarding using magnets for fixing stuff to a PnP work area. My first iteration of my LitePlacer setup I had a steel sheet under my work area and used magnets to place strip feeders to the surface. it was a complete disaster. Parts would fly out of their strip sockets with the least provocation. I guess if one used weak enough magnets and had the parts elevated away from them it *might* work, but for me it was a nightmare. 

mark maker

unread,
Jul 14, 2023, 10:32:10 AM7/14/23
to ope...@googlegroups.com

Hi all

I finally made a Fiducial Locator Wiki page. I'm a bit pressed, so i will improve in the coming days.

https://github.com/openpnp/openpnp/wiki/Fiducial-Locator

Comments welcome.

@Blowtorch, if I could bother you one more time... 😇

I would also like to explain the angled parallax. If I judge your images right, the brightest LED reflections are about like this:

So could you please make debug images ones more, with a larger parallax of ~9mm and an angle of maybe 17.5°.

Again the center and left/right parallax images, and for each position both "source" and "result"  would be perfect!

Many thanks for the continued effort 😁!

_Mark

Blowtorch

unread,
Jul 15, 2023, 5:37:25 AM7/15/23
to OpenPnP
No problem.

settings.pngfidloc_source_1689413171296269900.pngfidloc_results_1689413171361248400.pngfidloc_source_1689413172034405500.pngfidloc_results_1689413172099700700.png

Ben

unread,
Jul 16, 2023, 6:04:05 AM7/16/23
to OpenPnP
works great mark, thanks.

jdlv...@gmail.com

unread,
Jul 17, 2023, 5:02:35 AM7/17/23
to OpenPnP
Hi,  kind of off thread too, magnets can be used, as long as you build a magnetic shield as shown in the picture with a piece of iron and 2 magnets of alternated polarity. This arrangement provides a path for the magnetic field, with very little leakage.I'm using a lot of this.magnets.png

mark maker

unread,
Jul 20, 2023, 12:22:44 PM7/20/23
to ope...@googlegroups.com
Message has been deleted

vespaman

unread,
Sep 27, 2023, 5:17:46 PM9/27/23
to OpenPnP
Hi Mark,

I just updated to current version from a version mid-end spring. What a surprise! The fiducial check is so much faster, and looks to be more confident in its way on job startup (HASL board).

Well done!
 Micael

(I wrote this twice, so but first seems to have disappeared somehow)

Balázs Kiss

unread,
Sep 27, 2023, 6:29:38 PM9/27/23
to OpenPnP
Hi Guys,

I can confirm that - the new fiducial checking process works as planned! Our settings with 8 mm diameter and -45 degree takes them all, without mistakes and high accuracy.
Nice job - thank you for your efforts!

PS.: startup of the software is more than 30 secs. Is this normal?

Best regards,
Balázs and Mosso
Reply all
Reply to author
Forward
0 new messages