If I align on Fidicial at 9,9mm and 87,106mm it finds them and locks on.If I tell it to put the camera over the 87,106mm , its off as per the image.
--
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/qL6tzKHOP6U/unsubscribe.
To unsubscribe from this group and all its topics, send an email to openpnp+u...@googlegroups.com.
To post to this group, send email to ope...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/openpnp/f74594f3-e7f6-4be6-9342-e54237a75cf5%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.
Hmmm.. what happens, if you chose another part?
Maybe the fiducials are specially treated as their purpose is to find the offset not being placed at the offset?
I had a quick look at the code but I couldn’t find it in reasonable time.
_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/qL6tzKHOP6U/unsubscribe.
To unsubscribe from this group and all its topics, send an email to openpnp+u...@googlegroups.com.
To post to this group, send email to ope...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/openpnp/019601d419ee%24db15d920%2491418b60%24%40makr.zone.
To view this discussion on the web visit https://groups.google.com/d/msgid/openpnp/fbb6835a-80f9-45ea-b9a3-278475d80fda%40googlegroups.com.
Yeah, but if the non-squareness is off, this would be mostly compensated by the fiducials too.

With reasonably small non-squareness this should be a very small offset. It should only become an issue with very large PCBs or large feeder arrays, where extrapolated coordinates far from the reference fiducials will be off.
_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/qL6tzKHOP6U/unsubscribe.
To unsubscribe from this group and all its topics, send an email to openpnp+u...@googlegroups.com.
To post to this group, send email to ope...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/openpnp/01ad01d419f1%24ce0f29e0%246a2d7da0%24%40makr.zone.
Hi Peter
First I see a non-squareness factor of almost -0.89mm over 117mm = approx. -0.0076, is that correct?
Have you divided with the correct units? Have you double checked the sign?
2018-07-12 15:49:10 ReferenceCamera DEBUG: moveTo((91.609388, 117.164987, NaN, -0.501933 mm), 0.75)
2018-07-12 15:49:10 GcodeDriver DEBUG: sendCommand(G0 X90.7206 Y117.1650 F750, 5000)...
The fiducial was located at 92.273082, 117.975703:
2018-07-12 15:48:55 ReferenceFiducialLocator DEBUG: FIDUCIAL-1X2-FIDUCIAL1X2 located at (92.273082, 117.975703, 0.000000, -0.468732 mm)
But the compensated position is 91.609388, 117.164987
2018-07-12 15:49:10 ReferenceCamera DEBUG: moveTo((91.609388, 117.164987, NaN, -0.501933 mm), 0.75)
That’s way off. It seems OpenPNP has “least-squared” away a hefty error in the three fiducials.
This could perhaps result if you have a sign inversion of the non-squareness factor.
If not, are you sure the fiducial coordinates in the parts list are correct? How good is the PCB?
Finally (I am not sure) but could it be that you haven’t done axis mapping?
See here:
https://github.com/openpnp/openpnp/wiki/FAQ#my-nozzle-moves-in-z-when-the-camera-is-moved
https://github.com/openpnp/openpnp/wiki/GcodeDriver#nozzle-is-moving-or-turning-when-camera-is-moved
It seems your camera is moving with Z only moves (I could be mistaken).
2018-07-12 15:49:10 ReferenceNozzle DEBUG: N1.moveToSafeZ(0.75)
2018-07-12 15:49:10 GcodeDriver DEBUG: sendCommand(G0 Z-1.0000 F750, 5000)...
2018-07-12 15:49:10 GcodeDriver DEBUG: sendCommand(COM3 G0 Z-1.0000 F750, 5000) => [{r:{gc:"G0 Z-1.0000 F750"},f:[2,0,20]}]
2018-07-12 15:49:10 GcodeDriver DEBUG: sendCommand(null, 250)...
2018-07-12 15:49:10 GcodeDriver DEBUG: sendCommand(COM3 null, 250) => [{qr:32,qi:0,qo:1}]
2018-07-12 15:49:10 GcodeDriver DEBUG: sendCommand(null, 250)...
2018-07-12 15:49:10 GcodeDriver DEBUG: sendCommand(COM3 null, 250) => [{sr:{line:0,posx:3.594,posy:11.931,posz:-1.000,posa:-0.502,feed:750.00,vel:0.00,unit:1,coor:1,dist:0,admo:1,frmo:1,momo:0,stat:1}}]
2018-07-12 15:49:10 ReferenceCamera DEBUG: OpenPnpCaptureCamera.moveToSafeZ(0.75)
2018-07-12 15:49:10 GcodeDriver DEBUG: sendCommand(G0 Z0.0000 F750, 5000)...
2018-07-12 15:49:10 GcodeDriver DEBUG: sendCommand(COM3 G0 Z0.0000 F750, 5000) => [{r:{gc:"G0 Z0.0000
This should be irrelevant for the problem here, though.
_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/qL6tzKHOP6U/unsubscribe.
To unsubscribe from this group and all its topics, send an email to openpnp+u...@googlegroups.com.
To post to this group, send email to ope...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/openpnp/01ca01d419f8%241dd26ae0%24597740a0%24%40makr.zone.
To unsubscribe from this group and all its topics, send an email to openpnp+unsubscribe@googlegroups.com.
Yes but OpenPNP doesn’t know that unless you tell it using Axis Mapping.
https://github.com/openpnp/openpnp/wiki/GcodeDriver%3A-Axis-Mapping
See also here:
https://github.com/openpnp/openpnp/wiki/FAQ#my-nozzle-moves-in-z-when-the-camera-is-moved
https://github.com/openpnp/openpnp/wiki/GcodeDriver#nozzle-is-moving-or-turning-when-camera-is-moved
Jason and I are just discussing a possible solution for adding this per default. See here:
https://groups.google.com/d/msg/openpnp/ReY9_ZdwcWw/EOjwKlsjCgAJ
_Mark
> I think my axis mapping is ok as when I move so say 290,290 the cross-hair is still aligned horizontally and vertically and no move in Z.
You would not notice it, unless when doing pickups.
Just check your machine.xml to make sure. Search for “<axes” It should contain “N1” mappings (multiple if you have multiple nozzles):
<axes class="java.util.ArrayList">
<axis name="x" type="X" home-coordinate="210.0">
<head-mountable-ids class="java.util.HashSet">
<string>*</string>
</head-mountable-ids>
</axis>
<axis name="y" type="Y" home-coordinate="600.0">
<head-mountable-ids class="java.util.HashSet">
<string>*</string>
</head-mountable-ids>
</axis>
<axis name="z" type="Z" home-coordinate="0.0">
<head-mountable-ids class="java.util.HashSet">
<string>N1</string>
</head-mountable-ids>
</axis>
<axis name="rotation" type="Rotation" home-coordinate="0.0">
<head-mountable-ids class="java.util.HashSet">
<string>N1</string>
</head-mountable-ids>
</axis>
</axes>
_Mark
> For squareness I used 290mm and it was off by -2.2mm (I have ordered some more accurate graph-paper ).
OK, that’s right. Just to make sure: you moved 290mm in Y and were off -2.2 mm in X, right?
> I have optical homing as well which seems very repeatable and stable (1mm white circle).
That tells us nothing about non-squareness, as it is a single point. But it rules out Vision as the source of the error.
Well, I’m at the end of my Latin, as they say (if I knew Latin J). Perhaps somebody else has an idea. Sorry.
_m
--
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/qL6tzKHOP6U/unsubscribe.
To unsubscribe from this group and all its topics, send an email to openpnp+u...@googlegroups.com.
To post to this group, send email to ope...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/openpnp/01fa01d419fd%24d3b1eb60%247b15c220%24%40makr.zone.
5. Use the formula in the image above to calculate the Non-Squareness Factor and enter it into the GcodeDriver settings panel.
--
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/qL6tzKHOP6U/unsubscribe.
To unsubscribe from this group and all its topics, send an email to openpnp+u...@googlegroups.com.
To post to this group, send email to ope...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/openpnp/fd0d83a8-0b30-4855-884b-841b4d110a3a%40googlegroups.com.
> I had "*" in the Z and rotation entry.
> What difference does that make (only 1 head later multiple nozzles).
When OpenPNP tells your camera to go to the part it will give it all three coordinates X, Y, Z. So without the mapping it would lower the nozzle just for doing vision. This is dangerous as the nozzle has an offset and will potentially crash into nearby obstacles. Sometimes it is also just wasting time, you can see the effect in your log:
2018-07-12 15:49:10 ReferenceNozzle DEBUG: N1.moveToSafeZ(0.75)
2018-07-12 15:49:10 GcodeDriver DEBUG: sendCommand(G0 Z-1.0000 F750, 5000)...
2018-07-12 15:49:10 GcodeDriver DEBUG: sendCommand(COM3 G0 Z-1.0000 F750, 5000) => [{r:{gc:"G0 Z-1.0000 F750"},f:[2,0,20]}]
…
2018-07-12 15:49:10 ReferenceCamera DEBUG: OpenPnpCaptureCamera.moveToSafeZ(0.75)
2018-07-12 15:49:10 GcodeDriver DEBUG: sendCommand(G0 Z0.0000 F750, 5000)...
2018-07-12 15:49:10 GcodeDriver DEBUG: sendCommand(COM3 G0 Z0.0000 F750, 5000) => [{r:{gc:"G0 Z0.0000
You should have noticed Z going up and then immediately 1mm back down. That is completely unnecessary and just comes from a 1mm Z offset in your nozzle to camera offset.
> I altered the focus so the Fiducial is sharper (never change 2 things at once), now I cant get it to recognise the Fiducial.
I do not believe this is the solution of the problem we’re discussing. In your log it was apparent that vision worked before. It did find the fiducial reliably and repeatably. Nota that focus is not very relevant to fiducial finding. In fact the vision pipeline adds blurriness as the first stage.
Please try inversing the non-squareness factor to +
_Mark
>It seems Jog uses the squareness factor and reversing the sign has fixed it.
Yes this seems to confirm that the Wiki is wrong.
Can you tune the fiducial pipeline? It’s probably just a threshold that needs tuning. Can’t help you there right now. Not at the machine.
_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/qL6tzKHOP6U/unsubscribe.
To unsubscribe from this group and all its topics, send an email to openpnp+u...@googlegroups.com.
To post to this group, send email to ope...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/openpnp/021b01d41a04%24773fd390%2465bf7ab0%24%40makr.zone.
So he find another dot on the PCB?
2018-07-12 18:23:08 ReferenceFiducialLocator DEBUG: FIDUCIAL-1X2-FIDUCIAL1X2 located at (82.693667, 107.730947, 0.000000, 0.000000 mm)
2018-07-12 18:23:09 MessageBoxes DEBUG: Error: java.lang.Exception: Located fiducials are more than 1% away from expected.
_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/qL6tzKHOP6U/unsubscribe.
To unsubscribe from this group and all its topics, send an email to openpnp+u...@googlegroups.com.
To post to this group, send email to ope...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/openpnp/022601d41a06%24ab119850%240134c8f0%24%40makr.zone.
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 post to this group, send email to ope...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/openpnp/CAGLOruTzjzM%3Dr8FtQtgA2BCAANHvwU36cm%2B%3DbtLXmUK6r3PSyg%40mail.gmail.com.
paper ones especially were terrible by 250mm
> I find it is best to just set the steps/mm based on pcb size.
Hmmm… then I guess you don’t have permanent feeders and nozzle tip changers. J
Doesn’t Jason’s affine transform solve the issue?
https://www.youtube.com/watch?v=Plz1_8DFCnI
You’d need to roll your own OpenPNP with this merge, though:
https://github.com/openpnp/openpnp/commit/bc4f0e25a0b4d14ea444be93de126b253a8a0116
NOTE: I have never actually placed a PCB or even used fiducials… totally stuck in designing the new PCB… :(
But still…
> Precision is not overrated.. Get a part .3mm out, waste time reworking by hand..
… OK, but I said “normal size” PCB so perhaps a third (~130mm) of the full 390mm, giving an absolute error of 0.1mm. With fiducials, only the “inter-PCB” distances are relevant and they are spread out symmetrically so the error will be ±0.05mm which is fine on the smallest 0.25mm pads, methinks. With the mentioned affine transform even this error is eliminated.
Of course errors from different sources do add up and I agree that one must remain vigilant. But I also think it is one of OpenPNP’s main objectives and achievements(!) to effectively use clever computer vision to get away with a cheap, noob*-made hobby machine.
(*talking about me)
_m
--
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 post to this group, send email to ope...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/openpnp/e5c4fc47-706c-43c7-8474-1ba4d7dbe5ee%40googlegroups.com.
The affline transformation would do the trick. There must be a reason that it is not currently implemented.
--
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 post to this group, send email to ope...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/openpnp/9abb3b8b-c02c-4db7-b0eb-0b93bf4a29a1%40googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/openpnp/fc52f064-c266-4c6c-b9a3-42b79776d650%40googlegroups.com.

--
You received this message because you are subscribed to the Google Groups "OpenPnP" group.
To unsubscribe from this group and stop receiving emails from it, send an email to openpnp+u...@googlegroups.com.
To post to this group, send email to ope...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/openpnp/e5c4fc47-706c-43c7-8474-1ba4d7dbe5ee%40googlegroups.com.
Hi Mark,I think you are correct.... If you agree, please feel free to update the Wiki as you see fit, or let me know where I've gone wrong :)Thanks,Jason
--
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/qL6tzKHOP6U/unsubscribe.
To unsubscribe from this group and all its topics, send an email to openpnp+u...@googlegroups.com.
To post to this group, send email to ope...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/openpnp/f9ae2b42-706c-48e1-9a59-65dd39bdcc61%40googlegroups.com.
@Trampas
> If I was to do it again I would spend $5k on a Chinese machine and convert to OpenPnP. If really wanted to build something I would start with some good aluminum tool base: https://www.midweststeelsupply.com/store/castaluminumplateatp5
> Then I would design in the RoboDigg Yamaha feeder plates, I found that around 80 feeders is a good start. Then I would use large hiwin rails and ideally ball screws. However if not ball screws I would use as wide of belts as I could get, 25mm belts good
>I would do an on-the-fly up looking dual head. The heads would be multiple of feeder widths apart, such both nozzles could pick parts at same time.
I’m sure throwing muscle at the problem will help a lot. And in fact I even agree this might not cost more in the end, especially if you even start thinking about putting a price on your own work hours.
But while I’ve still not really placed my first real board with my machine, I’m still convinced one can throw brains at the problem instead. OpenPNP is the visionary enabler of this. Pun intended, as clever use of computer vision plus some linear algebra are the means.
In fact this very proposition is the main lure of this project for me. Everybody can solve problems with a lot of resources. The cool thing is solving them without.
_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/qL6tzKHOP6U/unsubscribe.
To unsubscribe from this group and all its topics, send an email to openpnp+u...@googlegroups.com.
To post to this group, send email to ope...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/openpnp/00b101d41e78%243aab7150%24b00253f0%24%40makr.zone.
>At the moment I am in the same position as you I havn't been able to place a board.
Just to make it clear: my problem now is not with the machine. I’m stuck designing the new PCB and changing to a new MCU.
I just don’t have enough time. This is 100% hobby for me.
_m
Might have potential for loose part feeding :
https://hackaday.com/2018/07/22/a-3d-printed-bowl-feeder-for-tiny-smd-parts/
--
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 post to this group, send email to ope...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/openpnp/ii49ldlgeuo4m0eim1h99numqjbh42h5e1%404ax.com.